Te same instrukcje inaczej w każdym języku

Odpowiedz Nowy wątek
2017-11-25 17:44
0

Dodawanie do seta w C++: insert
Dodawanie do seta w Pythonie: add

Długość wektora w C++: size()
Długość tablicy w Pythonie: len(tablica)
Długość tablicy w JS: length

Dodawanie do wektora w C++: push_back
Dodawanie do tablicy w JS: push
Dodawanie do talicy w Pythonie: append

Poważnie, zaczynam być wściekły, że musiałem mniej więcej zapoznać się z tymi 3 językami na raz. Bez przerwy mi się to koci. Mam dosyć pisania już w C++ s.add(coś) gdy s jest setem i pisania w JS arr.size().

Nie rozumiem, czemu nie powstała jednorodna konwencja na nazewnictwo tych analogicznych operacji??

Pozostało 580 znaków

2017-11-25 17:54
0

Nie rozumiem, czemu nie powstała jednorodna konwencja na nazewnictwo tych analogicznych operacji??

Pewnie dlatego, że w momencie powstawania tych funkcji nie stały za nimi żadne komitety standaryzacyjne. A teraz już jest za późno by cokolwiek zmieniać.

Poza tym nikt nikomu nie broni stworzenia jednorodnej nakładki na wszystkie te języki (czyli dla każdego języka osobna wersja nakładki, ale z tymi samymi nazwami funkcji).


"Programs must be written for people to read, and only incidentally for machines to execute." - Abelson & Sussman, SICP, preface to the first edition
"Ci, co najbardziej pragną planować życie społeczne, gdyby im na to pozwolić, staliby się w najwyższym stopniu niebezpieczni i nietolerancyjni wobec planów życiowych innych ludzi. Często, tchnącego dobrocią i oddanego jakiejś sprawie idealistę, dzieli od fanatyka tylko mały krok."
Demokracja jest fajna, dopóki wygrywa twoja ulubiona partia.
edytowany 1x, ostatnio: Wibowit, 2017-11-25 17:55

Pozostało 580 znaków

2017-11-25 18:00
0

C# Convert.ToInt32(value)

C++ podobno
std::stoi( str )
lub
atoi( str.c_str() )
lub
std::istringstream ss(thestring); ss >> thevalue;

edytowany 2x, ostatnio: WeiXiao, 2017-11-25 18:01
Pokaż pozostałe 2 komentarze
ZUE zduplikowane ficzery dinozaury z czasów C!! Każdy wie że używać należy TYLKO nowych zduplikowanych ficzerów z czasów C++!! Tylko stringstream są prawilne! stoi dali chyba tylko dlatego żeby nabufonowate staruchy pamiętające czasy K&R przestały narzekać że std::istringstream ss(thestring); ss >> thevalue pisze się dłużej niż atoi. I ten sam cyrk z dodawaniem literki oznaczającej typ na końcu, tfu tfu, to powinno się samo robić za pomocą template'ow, tak jak wtedy gdy mamy istringstream operator>> - kmph 2017-11-25 18:16
trzeba by poczytać proposal i co tam się działo, czemu zamiast tego nie wrzucili jakiegoś std::string_to<T>(std::string src, T default) (czy czegoś co będzie dobrze wyglądać przy wywołaniu z dedukcją z defaulta) - spartanPAGE 2017-11-25 18:23
Szczerze, to gdyby to ode mnie zależało, to trzeba by jakoś tak zrobić, by można było po prostu napisać string s = "54"; int i; i = s; Nie obchodzi mnie jak to zaimplementować, C++ jest już dość zabałaganiony, zabałaganienie go jeszcze trochę bardziej by pozwolić na naturalną i prostą konstrukcję, zgodną (chyba) z C++-owską filozofią automatycznych konwersji wydaje się być dobrym pomysłem. Zarówno funkcje pozbawione automatycznej dedukcji typów jak i konieczność pośredniej konwersji do strumienia wydają mi się być przesadną komplikacją dla programisty. - kmph 2017-11-25 18:34
CHociaż teraz pewnie zostanę zjedzony za to, że propaguję crypic, unreadable code, bo nie widać, że jest konwersja. Ale jeszcze raz, idąc tym tropem należałoby wyrzucić z C++ automatyczne konwersje w ogóle. - kmph 2017-11-25 18:35
@kmph: nie ma czegoś takiego jak „czasy C”, bo język C jest wciąż rozwijany, prace nad nowym standardem trwają. w Boost masz całkiem wygodny w użyciu lexical_cast, np. i = lexical_cast<int>(str);, str = lexical_cast<string>(i); co się dobrze komponuje z konwencją innych rzutowań w C++. - Azarien 2017-11-28 09:16

Pozostało 580 znaków

2017-11-25 18:39
0

Mieszkańcy całej ziemi mieli jedną mowę, czyli jednakowe słowa. A gdy wędrowali ze wschodu, napotkali równinę w kraju Szinear i tam zamieszkali. I mówili jeden do drugiego: „Chodźcie, wyrabiajmy cegłę i wypalmy ją w ogniu”. A gdy już mieli cegłę zamiast kamieni i smołę zamiast zaprawy murarskiej, rzekli: „Chodźcie, zbudujemy sobie miasto i wieżę, której wierzchołek będzie sięgał nieba, i w ten sposób uczynimy sobie znak, abyśmy się nie rozproszyli po całej ziemi”. A Pan zstąpił z nieba, by zobaczyć to miasto i wieżę, które budowali ludzie, i rzekł: „Są oni jednym ludem i wszyscy mają jedną mowę, i to jest przyczyną, że zaczęli budować. A zatem w przyszłości nic nie będzie dla nich niemożliwe, cokolwiek zamierzą uczynić. Zejdźmy więc i pomieszajmy tam ich język, aby jeden nie rozumiał drugiego!” W ten sposób Pan rozproszył ich stamtąd po całej powierzchni ziemi, i tak nie dokończyli budowy tego miasta. Dlatego to nazwano je Babel, tam bowiem Pan pomieszał mowę mieszkańców całej ziemi. Stamtąd też Pan rozproszył ich po całej powierzchni ziemi.

Czy dobrze zrozumiałem, że nie podoba Ci się fakt, że jest wiele języków programowania? Jeśli dobrze zrozumiałem, to I challenge you: Stwórz JEDEN język, który będzie się nadawał do WSZYSTKIEGO, zarówno pisania mikrokontrolerów w asemblerze, statystycznej analizy danych, wielkich systemów pisanych zwykle w Javie czy C#, stron internetowych. - kmph 2017-11-25 18:43
Źle zrozumiałeś i zacząłeś budować - ja ci przeszkadzać nie będę, zostawię taką małą wskazówkę - przeczytaj nazwę tematu :) - loza_szydercow 2017-11-25 18:55

Pozostało 580 znaków

2017-11-25 19:19
1

Jak już miałbym się czegoś czepiać to sprawdzenia czy kolekcja jest pusta:
C++, PHP, Elixir: empty()
Java/Scala: isEmpty()
Rust: is_empty()
Julia: isempty
Haskell: null
Python: nazwa obiektu w if: http://www.pythoncentral.io/h[...]ictionary-is-empty-in-python/
JavaScript: to skomplikowane: https://helloacm.com/how-to-c[...]bject-is-empty-in-javascript/

+ za Julię :) - Julian_ 2017-12-06 22:17

Pozostało 580 znaków

2017-11-27 02:37
1
kmph napisał(a):

Nie rozumiem, czemu nie powstała jednorodna konwencja na nazewnictwo tych analogicznych operacji??

Bo nie powstały w Związku Radzieckim.


"HUMAN BEINGS MAKE LIFE SO INTERESTING. DO YOU KNOW, THAT IN A UNIVERSE SO FULL OF WONDERS, THEY HAVE MANAGED TO INVENT BOREDOM."
Ja tam był powiedział że dlatego że praktycznie każdy z tych języków powstawał jako dzieło studenta na zaliczenie albo eksperyment znudzonego programisty :) Tych które powstały pod ścisłe potrzeby przemysłu jest chyba tylko parę. - loza_szydercow 2017-11-27 07:05

Pozostało 580 znaków

2017-11-27 08:22
0

...ale to kurcze naprawdę aż tak przeszkadza? Kto by się tego wszystkie uczył na pamięć w ogóle? Sam jak czegoś nie pamiętam to szukam w InteliSense czy w dokumentacji. Tak już jest i trzeba się z tym pogodzić, bo dzisiaj raczej nikt tego nie będzie zmieniał.

Bez przerwy mi się to koci.

Kiedyś miałem nawet wyrzuty, że nie mogę tego wszystkie zapamiętać. Dzisiaj nam to w nosie i jak nie pamiętam to patrzę np. w MSDN. Myślę, że problem tutaj przedstawiony jest jednak przesadny, bo to tak jakby mylić się przy wpisywaniu cp na Linuksie i copy na Windowsie. Nie ma się czym przejmować. :)

Bo nie powstały w Związku Radzieckim.

Wiadomo, że co sowieckie to "najlepsze". Mieli kiedyś komputery RIAD na całe RWPG. Co z tego, że nasze, rodzime maszyny były lepsze i szybsze jak ich były "lepsze i szybsze". Rzecz jasna trzeba było dostosować się do "standardów". :)

edytowany 4x, ostatnio: grzesiek51114, 2017-11-27 08:28

Pozostało 580 znaków

2017-11-28 12:27
1
kmph napisał(a):

Nie rozumiem, czemu nie powstała jednorodna konwencja na nazewnictwo tych analogicznych operacji??

To może od razu: dlaczego nie powstał jeden, jedyny język programowania którego wszyscy by używali? :-)

Bo ludzki język jest upośledzony i nadmiarowy. - loza_szydercow 2017-11-28 12:30

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0