Strona 1 z 3

Programowanie w C++ - czy warto na Linuksie?

: 14 sie 2009, 19:31
autor: Phight3r
Uczę się obecnie C++ i tak się zastanawiam, czy opłaca się pisać na Linuksie programy w C++. Z tego co widzę to większość aplikacji i tak jest napisana w C. Proszę o odpowiedź, czy warto uczyć się C++.

Odp: Programowanie w C++ - czy warto na Linuksie?

: 14 sie 2009, 20:03
autor: kabanek
to wszystko zależy od tego, co chcesz pisać, tzn do jakich celów chcesz język wykorzystywać

w czystym C są pisane sterowniki, albo w dużej części jądro linuxa. Dlaczego? Bo jest szybki.

c++ - on też nie grzeszy szybkością, ale ma więcej możliwości (składnię), co sprawia, że programowanie w c++ jest wygodniejsze od ANSI C. W czystym C nie masz czegoś takiego jak klas a co za tym idzie dziedziczenia (co jest bardzo pomocne np w grach)

różnicy pomiędzy C a C++ jeśli chodzi o szybkość to nie ma dużej, przynajmniej wg mnie. Ja na co dzień programuję w C++ i nigdy nie narzekałem na ten język.

hmm... a jakie programy chcesz pisać?

Moim zdaniem opłaca się uczyć c++, bo on daje swobodną drogę do nauki JAVY, PHP i innych C++-podobnych, bo składnia się dużo od nich nie różni.

Odp: Programowanie w C++ - czy warto na Linuksie?

: 14 sie 2009, 20:11
autor: Phight3r
Myślałem, że jak będę go dobrze umiał i nauczę się programować aplikacje okienkowe w GTK lub Qt4 to może np. jakiś prosty komunikator, jakiś program narzędziowy, itp. Może jakąś prostą grę.

A gdybym znał dobrze C++, to czy mógłbym dołączyć do jakiegoś projektu, np. gnome, xfce, kde, pidgin?

Odp: Programowanie w C++ - czy warto na Linuksie?

: 15 sie 2009, 01:41
autor: f00sek
Możesz się dołączyć do wszystkich projektów open source;)

Odp: Programowanie w C++ - czy warto na Linuksie?

: 15 sie 2009, 04:57
autor: Kokosek
Jak zobaczyłem nazwę tematu to pomyślałem, że zastanawiasz się nad jakimiś językami 'wyższego' poziomu niż C++ :P Natomiast z tych języków co podałeś wybór powinien paść na C++ ;)

Odp: Programowanie w C++ - czy warto na Linuksie?

: 15 sie 2009, 10:50
autor: kabanek
widzę, że wszyscy polecają Ci c++ :D

myślę, że c++ ma tak duże możliwości i jest na tyle powszechny, że jest bardzo dobrym wyborem :)

Odp: Programowanie w C++ - czy warto na Linuksie?

: 15 sie 2009, 12:54
autor: Phight3r
Dzięki za odpowiedzi. Zostaję przy C++.

Odp: Programowanie w C++ - czy warto na Linuksie?

: 15 sie 2009, 13:30
autor: el.pescado
A gdybym znał dobrze C++, to czy mógłbym dołączyć do jakiegoś projektu, np. gnome, xfce, kde, pidgin?
Gnome i pidgin są pisane w C.

A co do C++. Zależy od tego, co chcesz pisać. Jeżeli gry, albo aplikacje, w których wydajność jest krytyczna (biblioteki numeryczne, kodeki, bazy danych), C++ jest dobrym wyborem. We wszystkich innych przypadkach - inwestycja w naukę C++ po prostu się nie zwróci.

Do tego uważam, że C++ jest kiepskim kandydatem na pierwszy język programowania. Lepiej nauczyć się jakiegoś prostszego języka (Java, C#) i na jego przykładzie poznać pewne koncepcje, a później przejść do C++, jeżeli przyjdzie taka potrzeba, niż porywać się z motyką na słońce;)

Odp: Programowanie w C++ - czy warto na Linuksie?

: 15 sie 2009, 15:45
autor: kabanek
c++ był moim 1 językiem którego się uczyłem i nie narzekam :D na początku było trudno, ale nie widzę przeciwwskazań, żeby c++ był pierwszym językiem

Odp: Programowanie w C++ - czy warto na Linuksie?

: 15 sie 2009, 19:06
autor: el.pescado
c++ był moim 1 językiem którego się uczyłem i nie narzekam
Jakbyś się uczył czegoś innego, byłoby jeszcze lepiej;)

Odp: Programowanie w C++ - czy warto na Linuksie?

: 15 sie 2009, 19:49
autor: kabanek
el.pescado pisze:Jakbyś się uczył czegoś innego, byłoby jeszcze lepiej;)
a od jakiego wg Ciebie najlepiej zacząć?

Odp: Programowanie w C++ - czy warto na Linuksie?

: 15 sie 2009, 20:09
autor: el.pescado
Najlepiej chyba od jakiegoś dynamicznego, w stylu Pythona. Ze statycznie typowanych to coś w stylu Javy albo C#. Ewentualnie, jak ktoś marzy o karierze informatyka, to można zacząć od klasyka - Pascala:)

Odp: Programowanie w C++ - czy warto na Linuksie?

: 15 sie 2009, 20:38
autor: Szmitas
Ewentualnie, jak ktoś marzy o karierze informatyka, to można zacząć od klasyka - Pascal
Samobójstwo :) Nauka Pascala to jakby cofanie się w rozwoju :)

Odp: Programowanie w C++ - czy warto na Linuksie?

: 15 sie 2009, 21:43
autor: kabanek
pascal to strata czasu

c++ jest na początek tak samo dobry jak JAVA, czy C#
a jak ktoś chce zostać informatykiem to Pascal mu na nic nie jest przecież potrzebny, bo i tak z niego nigdy więcej nie skorzysta, a później będzie musiał się odzwyczajać od Pascalowych nawyków

Odp: Programowanie w C++ - czy warto na Linuksie?

: 15 sie 2009, 22:12
autor: leon1313
Ja polecam PERL-a: jedyny język, w którym kod po przepuszczeniu przez RSA wygląda tak samo jak wcześniej...
A serio to Ruby robi ostatnio furorę...

Odp: Programowanie w C++ - czy warto na Linuksie?

: 15 sie 2009, 23:14
autor: dyschemist
Ja tam od siebie tylko dodam, że znając C++, rozumiesz większość kodów javowy i C, więc siłą rzeczy łatwo byś potem je uzupełnił.

Odp: Programowanie w C++ - czy warto na Linuksie?

: 16 sie 2009, 06:14
autor: luzakwielki
Phight3r pisze:Uczę się obecnie C++ i tak się zastanawiam, czy opłaca się pisać na Linuksie programy w C++. Z tego co widzę to większość aplikacji i tak jest napisana w C. Proszę o odpowiedź, czy warto uczyć się C++.
Jeśli poznasz C++ to musisz znać C (C jest częścią C++, dla zachowania kompatybilności - tylko nagłówki biblioteki standardowej C mają inną nazwę (np. w c "stdio.h", w c++ "cstdio")).
Pisz w C/C++ (jako że C++ zawiera w sobie C to możesz mieszać zalety obu języków). Dodatkowo dobrym wyborem będzie język D, ale on póki co jest młody i dopiero zdobywa popularność (a co za tym idzie nie masz tylu bibliotek co w c/c++ - niby możesz użyć bibliotek pisanych w c, ale konwersja plików nagłówkowych nie zawsze działa (czytaj w praktyce zawsze musisz poprawiać ręcznie ;p)).
OFC nie może być tak pięknie, że c++ to wybór idealny...bo chcąc pisać w C++ (razem z kontenerami, string, map, vector, list etc) zamiast w C, będziesz miał kłopot z debuggerem gdb (będziesz musiał na linuksie używać tych od sun lub intel), bo nie wyświetli Ci tego co zawierają tylko krzaki - na szczęście to się zmieni z wydaniem gdb 7.0 (czyli włączeniem projektu archer rozwijanego przez redhat do gdb), a można powiedzieć nawet, że już się zmieniło dla niektórych (fedora (czytaj poligon doświadczalny redhata) już ma branch archer w stabilnej dystrybucji, i użytkownicy robią za beta testerów) - jeśli ktoś chce widzieć jakie są różnice pomiędzy informacjami z gdb teraz, a Pretty Printing z archer to odsyłam na http://people.redhat.com/ebachalo/. Żeby nie skończyć na "chwilowych" problemach to powiem, że na linuksie masz tą zaletę, że jest Valgrind (jest on często powodem, dla którego firmy robią specjalnie port dla linuksa mimo że nie wydają oficjalnie - po prostu na windowsie czy macos takiego narzędzia brak) czyli narzędzie do profilowania pamięci i automatycznego szukania wycieków pamięci (ofc możesz załatwić to używając GC np. http://www.hpl.hp.com/personal/Hans_Boehm/gc/, które jest standardowo w GCC (i jest wykorzystywane przez mono dla C#), ale będzie wolniej ;]) - jak to razem z integracją do Eclipse (oraz integracją z profilerem (oprofile) pisanym dla jądra linuksa (ale nie tylko tam przydatnego)) możesz zobaczyć pod filmikami z GDB Archer.
kabanek pisze:c++ - on też nie grzeszy szybkością, ale ma więcej możliwości (składnię), co sprawia, że programowanie w c++ jest wygodniejsze od ANSI C. W czystym C nie masz czegoś takiego jak klas a co za tym idzie dziedziczenia (co jest bardzo pomocne np w grach)
Możesz napisać w którym miejscu nie grzeszy szybkością? Fakt jest kilka takich miejsc, jak np. obsługa strumieni wejścia/wyjścia... ale jak znasz język to wiesz, że wystarczy wyłączyć synchronizację i porównywalnie do C ;]. Co do klas to fakt są one bardzo przydatne wszędzie, nie tylko w grach (chociaż sam programuję gry i muszę potwierdzić, że bez nich to byłaby katorga (ale ofc da się - patrz Quake3 pisane jest w czystym C)).
el.pescado pisze:Najlepiej chyba od jakiegoś dynamicznego, w stylu Pythona. Ze statycznie typowanych to coś w stylu Javy albo C#. Ewentualnie, jak ktoś marzy o karierze informatyka, to można zacząć od klasyka - Pascala:)
Python + pierwszy większy projekt skutkowałby harakiri lub zaprzestaniem programowania (brak typów oraz wcięcia jako bloki danych powodują, że błąd który można by w C/C++ wyłapać w 10s debuggerem będzie Ci spędzał sen z powiek ;p). Java na początek słaba bo ma bardzo specyficzne założenia i trudniej będzie przejść na inne języki z niej niż z innych do niej ;] (wszystko jest obiektem, każdy plik musi mieć nazwę taką jak klasa w nim, wymuszenie działania GC (niby prosto, bo alokować nie trzeba, ale powolne i zabiera dużo nieużywanego ramu (no chyba że przy starcie skonfigurujesz, jvm (ale będzie jeszcze wolniej ;p), poza tym sam mechanizm dziedziczenia wielokrotnego jest IMO, skopany (tzn nie ma wcale dziedziczenia wielokrotnego, a jest tylko jednokrotne i wprowadzenie Interfejsów)))). C# pod linuksem to pomysł bardzo kiepski, a pascal mimo, że łatwy, i ostatnio jego rozwój znowu przyspieszył to raczej nie ma sensu się go uczyć, bo w praktyce jest językiem martwym, ale lepiej nie szukać w nim takich rzeczy jak OpenMP 3.0, czy rzeczy z nieoficjalnego rozszerzenia c++ (biblioteki boost), nie mówiąc już o rzeczach, które wejdą/wchodzą już do języka i kompilatorów c++ razem ze standardem c++0x (mimo że okaże się on c++1x ;p).
Warto znać wiele języków w tym python, jave, przyszłościowy d i inne jednak to nie zmienia faktu, że każdy z nich jest inny, a wspólnym mianownikiem jest C/C++ i trzeba go znać najlepiej, żeby nie mieć problemów z przyswajaniem innych języków (java to rozszerzony c++, z kilkoma ułomnościami i fajnymi dodatkami których brak w standardzie C++ (co nie znaczy, że ich nie ma), python to biblioteka standardowa C minus bloki danych i typy, oraz plus kilka rzeczy, D to taki C++ + dodatki z Javy, języki shaderów (Cg, GLSL, HLSL), czy języki obliczeń na GPU (OpenCL, Cuda) to nic innego jak składnia C + kilka rzeczy do grafiki (jak typy wektorów i macierzy)).

Odp: Programowanie w C++ - czy warto na Linuksie?

: 16 sie 2009, 11:02
autor: kabanek
luzakwielki czytając Twojego posta to nawet ja się momentami zamieszałem xD

kolega się pytał, czy lepiej się uczyć c++ czy czyste C. Przeoczyłem fakt, że ucząc się C, to uczysz się też C++, a ucząc się C++, to po części jest w tym i samo C :P

wg mnie lepszym wyborem pomiędzy tymi 2 językami jest C++, bo ma bardziej rozwiniętą składnię (klasy, wyjątki itp)

Odp: Programowanie w C++ - czy warto na Linuksie?

: 16 sie 2009, 12:19
autor: luzakwielki
kabanek pisze:wg mnie lepszym wyborem pomiędzy tymi 2 językami jest C++, bo ma bardziej rozwiniętą składnię (klasy, wyjątki itp)
Przecież to właśnie napisałem ;p - praktycznie wszystkie języki które są warte zainteresowania pochodzą od C lub C++, a ucząc się C++ musisz się nauczyć też C - więc znając C++ znasz najpopularniejszy i najczęściej wykorzystywany język, a przy okazji masz drogę otwartą do nauki innych w kilka dni (bo przeważnie różnic pomiędzy C/C++, a pochodnymi jest tak niewiele, że możesz pisać praktycznie bez nauki, aby tylko mieć dokumentację pod ręką).

Odp: Programowanie w C++ - czy warto na Linuksie?

: 16 sie 2009, 12:46
autor: el.pescado
a jak ktoś chce zostać informatykiem to Pascal mu na nic nie jest przecież potrzebny, bo i tak z niego nigdy więcej nie skorzysta, a później będzie musiał się odzwyczajać od Pascalowych nawyków
Jeżeli ktoś się misi "oduczać pascalowych nawyków" to nie będzie dobrym programistą.Pascala dobrze jest znać, nie tyle, żeby w nim pisać, co żeby potrafić zrozumieć programy w nim napisane. Dużo książek zawiera algorytmy w Pascalu (choćby N. Wirth "Algorytmy + struktury danych = programy"), względnie w pseudokodzie wzorującym się na Pascalu (Cormen), do tego Pascal do dziś przewija się jeszcze w publikacjach naukowych. Poza tym, Pascal został stworzony jako pomoc do nauki programowania, dzięki czemu pozwala uniknąć kilku podstawowych błędów, które zwykle się popełnia zaczynając przygodę z programowaniem. Nie mówiąc już o tym, że kompilatory Pascala są szybkie (w porównaniu do kompilatorów C++ piekielnie szybkie), co ma znaczenie w momencie, gdy nie bardzo wie się co się chce kompilować;)