Wpis z mikrobloga

#codziennylinustorvalds 6/32

C++ is a horrible language. It's made more horrible by the fact that a lot

of substandard programmers use it, to the point where it's much much

easier to generate total and utter crap with it. Quite frankly, even if

the choice of C were to do *nothing* but keep the C++ programmers out,

that in itself would be a huge reason to use C.


gmane.comp.version-control.git, 2007-09-06
#linux #programista15k #komputery #cytatywielkichludzi #cytaty #heheszki #programowanie #cpp
Pobierz y.....m - #codziennylinustorvalds 6/32

C++ is a horrible language. It's made more h...
źródło: comment_obO2JJZmCzSiC2VzmWtyQBYSUlmvNpph.jpg
  • 14
@ProtossTassadar: bo moim zdaniem C++ jest zajebiście dużym i złożonym jezykiem mającym aż za dużo ficzerow. Te ficzery C++ mają różne przypadki brzegowe które niespodziewanie mogą eksplodować w trudny do zrozumienia sposób.

Ja nie jestem żadnym programistą C++, to tylko moja opinia oparta na próbie nauki tego języka jakieś 8 lat temu. Jak sobie przypomnę templaty to mnie do dzisiaj skręca.

Dla porowniania C z którym na codzien mam styczność, jest
C++ jest zajebiście dużym i złożonym jezykiem mającym aż za dużo ficzerow


@yuim: To prawda. Na szczęście nikt nie każe nikomu ze wszystkiego korzystać. Wiele złych osób maczało palce w standardzie i wiele napsuło. To jednak programista decyduje o tym, czego użyje. Osobiście nie uważam, że wysrać okropny kod jest łatwiej z C++, niż w C. Oba języki pod tym względem są siebie warte.

jakieś 8 lat temu. Jak sobie przypomnę
@Gwynblade:

Osobiście nie uważam, że wysrać okropny kod jest łatwiej z C++, niż w C.


Hmm, #!$%@? kod można stworzyć w każdym języku, moim zdaniem w C jednak ciężej stworzyć kod który działa w magiczny sposób, właśnie ze względu na prostackość języka.

z C++98, to jeśli ich nie zrozumiałeś, to znaczy, że nie rozumiałeś jak działa kompilator i linker.


Ja nie byłem nawet w stanie zrozumiec błędu który kompilator wysral, milion
moim zdaniem w C jednak ciężej stworzyć kod który działa w magiczny sposób, właśnie ze względu na prostackość języka.


@yuim: Nie zgadzam się. System typów w C++ jest o wiele bardziej szczelny i pozwala przesunąć część błędów z runtimeu na compile time. Osobiście nie przychodiz mi na myśl sytuacja, w której jakąś rzecz z C++ (która nie jest w C) potrafi sprawić, że wadliwy kod w magiczny sposób działa przez jakiś
@Gwynblade:

Osobiście nie przychodiz mi na myśl sytuacja, w której jakąś rzecz z C++ (która nie jest w C) potrafi sprawić, że wadliwy kod w magiczny sposób działa przez jakiś czas, w danym konkretnym przypadku.


Może exceptions?

Używają tego pewnie dlatego, że nie mają innego wyjścia


Jest rozszerzenie w GCC _attribute_ cleanup, ja nie kojarzę żeby to było używane. Niestety przez najbliższy czas nie będę miał dostępu do komputera
Może exceptions?


@yuim: A konkretnie? Bo to, że np. każda alokacja może wywalić std::bad_aloc, a nikt tego nie obsługuje (bo najczęściej nie ma jak), to jak dla mnie nie podpada pod "magiczne działanie". Ignorować błędy można zarówno poprzez niesprawdzanie error codeów jak i nie łapanie wyjątków.

Jest rozszerzenie w GCC attribute cleanup


Ta, było o tym w artykule, co zalinkowałeś. Jak to jest zaimplementowane? Pewnie tak jak destruktory w C++. Zakładając,
jeśli ich nie zrozumiałeś, to znaczy, że nie rozumiałeś jak działa kompilator i linker. Od C++11 faktycznie dobrze jest wiedzieć więcej, ale przed C++11 templatey po prostu działały. Ot, dajesz definicję do headera i tyle.

C++ to (niestety) jest język, którego podstawy należy nauczyć się od kogoś, a resztę poznać z dobrych książek.


A możesz polecić jakieś książki? Właśnie takie które tłumaczą jak działa kompilator i linker? Bo z tego co widziałem