w jakim j

Wszystko Off Topic
Rad
Member
Posty: 1208
Rejestracja: 28 czerwca 2006, 15:05

Post autor: Rad »

Awatar użytkownika
grzesiek
Junior Member
Posty: 932
Rejestracja: 06 stycznia 2008, 10:41
Lokalizacja: Białystok

Post autor: grzesiek »

Tak to ciekawy temat z tym C i jego nieśmiertelnością. OD siebie dodam jeszcze jedną przyczynę - przyzwyczajenie. Większość programistów zaczynała od C, niektórzy z nich (mówię o deweloperach różnych projektów opensouce) jest w wieku 40-50 lat. Nie potrzebują C++ aby osiągnąć konkretny cel. Prawie w każdym z tych projektów co najmniej raz padło pytanie/propozycja aby pisać w C++. Odpowiedz jest krótka. Oni wolą wymyślać nowe języki, pisać wrappery (np. Vala, PyGTK) niż zmieniać przyzwyczajenia. Poza tym to prawda, że C++ wymaga więcej czasu do pisania niż w C, a czas jest ważny. A jeżeli chodzi o brak OOP w C to kwestia wyobraźni, przecież kod C++ również jest tłumaczony na assemblera - tak skomplikowane i złożone klasy wraz z przeciążeniami operatorów itp. ostatecznie są wyrażane w assemblerze. Więc czym są taki aby C++ miało na nie wyłączność - to tylko ABSTRAKCJA!
Może to wszystko zabrzmiało jak bym był zagorzałym wrogiem C++, ale to nie prawda. Otóż ja zaczynałem od C++ i byłem nim zachwycony oh ah, ale kiedy zanurkowałem w otwartym kodzie stanąłem przed wielkim dylematem. Okazał się, że w odpowiednich rękach kod w C może obsługiwać równie skomplikowane zadania a jednocześnie być obiektowym i prostszy w czytaniu.
Obecnie sam jak mi się zechce poprogramować to wole C, bo i tak będzie mi wszystko działało i nie muszę się bawić w te klasy, bo czasami to naprawdę to przyrost treści nad formą. Gdzieś przeczytałem, że klasy w C++ są dobrym rozwiązaniem dla bibliotek, ale nie koniecznie dla programów.
wojak
Beginner
Posty: 129
Rejestracja: 04 lutego 2009, 15:59

Post autor: wojak »

Dziękuję Rad za odnośnik. Dziękuję też reszcie za wyjaśnienia.

Bardzo ciekawa dyskusja na kerneltrap.
Dlaczego zdaniem Linusa Torvaldsa C++ nie nadaje się do pisania jądra:
1) zasadniczo cała obsługa wyjątków w C++ jest zepsuta;
2) nie jest dobrym wyborem jakikolwiek język, który cokolwiek ukrywa przed programistą, np. elementy odpowiedzialne za alokację pamięci,
3) da się pisać obiektowo orientowany kod w C (m. in. przydatne dla systemów plików).

Skoro takie opinie wyraża genialny programista jakim jest bez wątpienia Linus Torvalds, to coś w tym musi być.
Awatar użytkownika
grzesiek
Junior Member
Posty: 932
Rejestracja: 06 stycznia 2008, 10:41
Lokalizacja: Białystok

Post autor: grzesiek »

Jeszcze jedna ważna sprawa mi się przypomniała, zresztą w tym artykule jest link do tego. Znaczną częścią jądra są sterowniki, czyli niskopoziomowy dostęp do sprzętu, i tu się wszystko składa.
giaur
Member
Posty: 1915
Rejestracja: 25 maja 2007, 22:16

Post autor: giaur »

Skoro takie opinie wyraża genialny programista jakim jest bez wątpienia Linus Torvalds, to coś w tym musi być ;)
Tak, ale pamiętaj, że rozmawiamy o pisaniu kodu jądra. Z drugiej strony, pisanie aplikacji użytkowych w czystym C jest znacznie głupszym pomysłem niż pisanie jądra w C++
Awatar użytkownika
grzesiek
Junior Member
Posty: 932
Rejestracja: 06 stycznia 2008, 10:41
Lokalizacja: Białystok

Post autor: grzesiek »

giaur pisze:...pisanie aplikacji użytkowych w czystym C jest znacznie głupszym pomysłem niż pisanie jądra w C++
Nieprawda! Tak się składa, że właśnie piszę kalkulator na wikibooks. Obecnie w wolnym czasie rozwijam ten program i poprawiłem wiele rozwiązań (np. znacznie skróciłem kod).
To teraz powiedz mi co straciłem przez to, że podjąłem tak głupią decyzje i napisałem go w C? Nie wypieraj się wielkością projektu, bo duże projekty dzieli się na moduły (dziel i żądź) i da się to opanować - dowód np. Firefox.
giaur
Member
Posty: 1915
Rejestracja: 25 maja 2007, 22:16

Post autor: giaur »

Powiedz to w jakiejkolwiek firmie zajmującej się tworzeniem oprogramowania. W C możesz sobie spisać hobbystycznie, amatorsko, ale nikt nie tworzy dziś dużych projektów w czystym C, bo zwyczajnie się to nie opłaca. Mało tego, odchodzi się już nawet od C++ na rzecz C# oraz javy, o tworzeniu aplikacji desktopowych w czystym C nikt dziś nawet nie pomyśli.

Poza tym Firefox jest pisany w C++ a nie w C.
Awatar użytkownika
grzesiek
Junior Member
Posty: 932
Rejestracja: 06 stycznia 2008, 10:41
Lokalizacja: Białystok

Post autor: grzesiek »

Dobrze, tu masz racje, co do firm i Firefoksa (kiedyś gdzieś podczas podobnej dyskusji ktoś napisał, że w C, a tu zonk - wszystko trzeba samemu sprawdzać).
To prawda, że na rynku bardzo popularna jest Java - w końcu tym się chwali, że skrócili cenny czas tworzenia.
Niemniej jednak uważam, że do pisania niektórych programów klasy wcale nie są potrzebny, kod pisany w C++ gdy używa się wszystkich jego możliwości jest nie łatwy do analizowania.
Jak popatrzyłem w ten kod Firefoksa to bardzo duży projekt. Widać, że mają do niego full oprzyrządowania, bo inaczej to by się nie połapali.
Do pisania w C mają bardziej tendencje deweloperzy Linuksa, Ci od Gimpa jakoś się nie garną do C++. Pewnie tak jak napisałeś, dlatego, że u nich czas to nie pieniądz.
giaur
Member
Posty: 1915
Rejestracja: 25 maja 2007, 22:16

Post autor: giaur »

To prawda, że na rynku bardzo popularna jest Java - w końcu tym się chwali, że skrócili cenny czas tworzenia.
Wlasnie. I co wazniejsze - krotszy czas tworzenia bez pogorszenia jakosci produktu. Czyli gdyby ten sam wielki projekt napisac w C zamiast w C++, nie bylby ani wydajniejszy ani pod zadnym wzgledem lepszy od stworzonego w C++, a nawet by byl duzo gorszy i zawierałby duzo wiecej błędów.
Dlaczego? Ano na przykład dlatego, ze C++ dostarcza wiele gotowych, przetestowanych bibliotek do obslugi wielu rzeczy - wystarczy wspomniec chociazby STL czy Boost - piszac w C i chcac osiagnac taki sam efekt jak z wykorzystaniem w/w programista musi sam zaimplementowac rzeczy, ktore w C++ ma juz gotowe. A biorac pod uwage, ze STL albo Boost byl tworzony przez dziesiatki ludzi przez kilka lat, trudno zeby jeden czy nawet kilku programistow stworzylo rozwiazanie co najmniej tak samo dobre, a najpredzej bedzie gorsze i z błędami.
Do pisania w C mają bardziej tendencje deweloperzy Linuxa, Ci od Gimpa jakoś się nie garną do C++.
No nie do końca - weź pod uwagę KDE i QT, Firefoxa, prawdopodobnie Operę, Skype, VLC, Kadu - jak sie tak zastanowic, to wiekszosc projektow powstaje jednak w C++ a nie w C. Jezeli chodzi o gimpa to jeden z wyjątków, ale tez gdzies widzialem dyskusje dlaczego nie C++ i wyszlo, ze sie nie oplaca tego przepisywać na C++ od początku, a faktem jest ze rozwoj gimpa coraz bardziej się spowalnia właśnie z tego powodu ze jest pisany w C.
Awatar użytkownika
grzesiek
Junior Member
Posty: 932
Rejestracja: 06 stycznia 2008, 10:41
Lokalizacja: Białystok

Post autor: grzesiek »

To ja swój kalkulator też przepisałem w C++, że nikt nie powiedział, że w GTK+ to w C się programuje ;-)
ODPOWIEDZ