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
1

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.


--
Annuit Coeptis
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
2

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