Strona 3 z 3
Odp: Programowanie w C++ - czy warto na Linuksie?
: 21 sie 2009, 19:54
autor: Hauleth
Może nie od razu, najpierw lepiej wziąć np lekkie ruby lub python, ale co do społeczności i bibliotek to się nie zgodzę ( dsource.org ).
Odp: Programowanie w C++ - czy warto na Linuksie?
: 21 sie 2009, 22:18
autor: Borsuk_
C++ : Spotkanie z tym językiem przygotowuje daną osobę do poznania kolejnych języków, ponieważ wtedy bazujemy na podobnych konstrukcjach, technikach jakie żyją w popularnych językach. To oznacza, że myśląc w sposób analogiczny jesteśmy w stanie przyspieszyć tempo przyswajania nowych języków. Chciałbym również zwrócić uwagę na publikacje, bowiem po czasie stwierdzisz, że okrojone teksty na www to dla Ciebie zbyt mało, a specjalistyczne księgi operujące na temacie: linuksa, gier, sieci, bezpieczeństwa czy też algorytmiki to literatura podająca 'przepisy' głównie w C++. Tak więc przechodząc obojętnie obok tego języka utracisz możliwość czerpania wiedzy z wielu książek. Poza tym spójrz okiem na przyszłość. Konkursy algorytmiczne najczęściej oferują możliwość kodowania w C/C++. Znając np. Ruby masz wątpliwe szanse, że uzyskasz możliwość przesłania własnego rozwiązania w tym języku. To samo tyczy się matury. Kolejnym wątkiem są fora. Załóżmy, że masz problem z budowaniem graficznego interfejsu do swej aplikacji. Chcesz zgłosić błąd na forum i uzyskać odpowiedz. Jeśli kodujesz właśnie w C++ możesz liczyć na aktywną pomoc innych internatów.
Przedstawiłem ci jak wygląda ten język w społeczności. Zdecydowanie gorzej jest gdy mrugasz okiem w stronę własnego kodu. C++ adoptował C i tym samym akceptuje możliwość kodowania różnymi stylami. Scenka, która mnie wyjątkowo drażni to projekt tworzony w C++, który opiera się na bibliotekach C. Wynik taki, że tworząc projekt techniką OOP podpieramy się strukturalnym kodowaniem. To pospolity widok w tym języku jaki zobaczysz pewnie nie raz. Co w tym złego? Moim zdaniem ta szopka pozbawia kod jakości i przyczynia się do pogorszenia czytelności. Następny element to szablony. Fakt mechanizm jest ciekawy i warty użytkowania, lecz są momenty w których kod rozwala się na cały ekran. Całość wygląda jak kąpiel w błocie, a jedynym ratunkiem są aliasy i oszczędność literek w zmiennych. Drażni mnie też sposób instalowania libów. Zawsze było z tym zdecydowanie więcej nerwów niż zakładałem, zawsze coś nie tak w tym kierunku szło i to był powód największej frustracji.
Ja nie lubię w tym języku kodować, lecz znajomość tego języka otwiera furtki do wielu bram. Pytanie tylko co bardziej Ciebie interesuje te bramy czy może kodowanie i klepanie instrukcji godzinami.
Była mowa również o lekkiej jeździe jaką niewątpliwie jest python. Język charakteryzuje się prostą nauką, nakazem pisania czytelnego kodu, a także zręcznością, która ułatwia obracaniem danych. To są cechy, które bardzo usprawniają kodowanie. Język oferuje możliwość kodowania wielu rzeczy. O tym możesz poczytać na google. Ja chciałbym ukazać tutaj rzecz wręcz przeciwną do C++. Idąc ku Pythonowi. Nie będziesz miał się czym podpierać. Moim zdaniem mało jest artykułów, książek na temat pythona. Fora na temat pythona głównie śpią co oznacza, że jeśli nie będziesz uczył się angielskiego to masz marne szanse, by energicznie rozwijać się w tym języku.
Odp: Programowanie w C++ - czy warto na Linuksie?
: 21 sie 2009, 23:33
autor: Kokosek
A ja tak sobie myślę, że na początek bardzo dobry jest PHP, chociażby ze względu na brak typizacji
Tak jak w szkole najpierw się uczymy o liczbach a dopiero potem poznajemy całkowite, rzeczywiste, zespolone...
Nie wiem, czy wyrabia złe nawyki, ale chyba łatwo jest potem przejść na inny język
Odp: Programowanie w C++ - czy warto na Linuksie?
: 22 sie 2009, 07:14
autor: kabanek
PHP jak się uczy to wyrabia się w sobie nawyk dbania o szczegóły, bo przecież jak zrobimy małą literówkę, to nie ma kompilatora, który powie, że coś jest nie tak, tylko sami musimy szukać błędu. Im dłużej się szuka tym większą lekcję się z tego wyciąga.
Co do typizacji też się zgodzę, bo nie trzeba bawić się w konwersję int->string i na odwrót. No ale jak się chce nauczyć pisać programy użytkowe (nie strony) i gry, to lepiej zabrać się za język docelowy od razu a nie błądzić w gąszczu języków.
Jak się chce nauczyć pisać programy/gry pod linuxa/wina to się uczyć c++, strony to w PHP (choć w c++ podobno tez się da;p)
Ważne jest co się chce robić i od tego uzależnić swój 1 wybór

Odp: Programowanie w C++ - czy warto na Linuksie?
: 22 sie 2009, 11:21
autor: Hauleth
PHP nie, bo uczy złych nawyków.To jest język, w którym tylko pr00 napisze ładny i przejrzysty kod, a jak dostaniesz kod od kogoś innego to będzie masakra, bo więcej czasu zajmie ci zrozumienie co i jak to robi niż poprawa i usprawnienie kodu.
Odp: Programowanie w C++ - czy warto na Linuksie?
: 22 sie 2009, 18:13
autor: mikolajs
Co do typizacji też się zgodzę, bo nie trzeba bawić się w konwersję int->string i na odwrót. No ale jak się chce nauczyć pisać programy użytkowe (nie strony) i gry, to lepiej zabrać się za język docelowy od razu a nie błądzić w gąszczu języków.
Ale jak zaczniesz np. od Pythona, to zawsze Ci się przyda nawet jeżeli później zdecydujesz, że chcesz douczyć się języka operującego na niższym poziomie.
Odp: Programowanie w C++ - czy warto na Linuksie?
: 22 sie 2009, 18:34
autor: luzakwielki
Hauleth pisze:Może nie od razu, najpierw lepiej wziąć np lekkie ruby lub python, ale co do społeczności i bibliotek to się nie zgodzę ( dsource.org ).
No dobra nie brak, ale w porównaniu z C/C++ ich wielkość/ilość jest bardzo bliska zeru. Ruby, python, php się nadają na pierwszy język jeśli chcesz poznać jakiś język i nie wiedzieć praktycznie nic i przy nauce innego języka potrzebować tyle samo czasu na naukę co gdybyś nic nie potrafił i jeśli chciałbyś szybko zniechęcić się do programowania (brak debbugerów i brak typów przez co mały błąd do wychwycenia przez kompilator/debugger może się okazać nie do wykrycia). W innym wypadku raczej jest słabym wyborem ;]
Odp: Programowanie w C++ - czy warto na Linuksie?
: 22 sie 2009, 20:01
autor: Borsuk_
Nie sądzę, by python był skąpo odziany w biblioteki. Ja przynajmniej w swym kodowaniu nie miałem nigdy problemów z doszukaniem się wartościowej biblioteki. Ta kwestia w pythonie zawsze gładko się układała. Poza tym mówimy tu o pierwszym języku, języku w którym stawia się pierwsze kroki. W tym etapie nie korzysta się z rodzynek, a raczej implementuje na nowo znane nam już koła. Po za tym chciałbym zwrócić uwagę na pewien dodatkowy aspekt. Idąc ku pythonowi szybciej się pozna wartościowe mechanizmy do obracania tekstem, o choćby wyrażenia regularne.
@
luzakwielki Nie bardzo rozumiem co chcesz powiedzieć poprzez "nie wiedzieć praktycznie nic". Nie sądzę, by człowiek uczący się na pythonie był swego rodzaju programistą-idiotą.
'brak debbugerów i brak typów przez co mały błąd do wychwycenia przez kompilator/debugger może się okazać nie do wykrycia'
Ja np. mam Eclipse z wtyczką pod pythona. Kod w trakcie pisania mam sprawdzany, a wszelkie błędy jakie się pojawią są podkreślane i wyjaśnione.
@
luzakwielki W czym teraz widziałbyś problem?
Odp: Programowanie w C++ - czy warto na Linuksie?
: 22 sie 2009, 20:35
autor: Struchu
Borsuk_ pisze:Kod w trakcie pisania mam sprawdzany, a wszelkie błędy jakie się pojawią są podkreślane i wyjaśnione.
@luzakwielki W czym teraz widziałbyś problem?
Myślę, że Luzakowi chodziło nie tyle o błędy w składni, co raczej o błędy logiczne (których kompilatory czy parsery raczej nie wychwytują - na nic więc się zda podkreślający na bieżąco literówki Eclipse).
Odp: Programowanie w C++ - czy warto na Linuksie?
: 22 sie 2009, 21:00
autor: Borsuk_
Od błędów semantycznych chroni nas powłoka pythona, w końcu gdy interpreter potknie się o niespójny kod to melduje o tym fakcie dość wyraźnie: podaje rodzaj błędu, a także funkcje/metody przez które wyleciał wyjątek. Po tym zdarzeniu Eclipse pozwala za pomocą pojedynczego kliknięcia odwołać się do wskazanego miejsca. Jeśli mowa o debuggerze to także ten mechanizm wbudowany jest w to IDE.
Odp: Programowanie w C++ - czy warto na Linuksie?
: 22 sie 2009, 22:11
autor: luzakwielki
@Borsuk_: Programowanie skryptów jest na wyższym poziomie niż w wypadku C/C++ - to tak jak powiedzieć, że po nauczeniu się C/C++ bez problemu nauczysz się Asemblera (okaże się, że nie wiesz nic o programowaniu... w drugą stronę dużo łatwiej (pisząc w asm wiesz więcej jak wykonuje rzeczy maszyna i wiesz coś może działać w C/C++ tylko łatwiej będzie to zapisane), ale C/C++<->ASM to trochę bardziej kontrastowy przykład, ale podobnie wygląda to w Python<->C/C++ (tu też wiesz dużo więcej na temat programowania i sprzętu, bo mimo wszystko jesteś blisko niego... w pythonie jesteś bardzo daleko)).
Gdyby nie wyłapywał błędów w składni to byłoby dziwne (jak by uruchamiał, gdyby sam nie wiedział czy są błędy w kodzie?). Chodzi mi o błędy gdzie do zmiennej jednego typu zapiszesz innego typu (przez przypadek), to python Ci tego błędu nie wyłapie tylko zrobi nie jawną konwersję co może powodować bardzo nieoczekiwanymi skutkami których nie będziesz się mógł doszukać (no może mógłbyś się doszukać szybciej z debuggerem (już nie mówiąc o tonach innych błędów których wyłapanie jest możliwe w sekundy z debuggerem zamiast w godziny ręcznie), a tego o tego w językach skryptowych, albo ciężko, albo działają słabo).
Debbuger jest w eclipse do Javy i do C/C++ (CDT korzysta z GDB), ale nie słyszałem żeby była integracja z pdb (który jest dodatkowo dosyć słaby nawet przy gdb o którego wadach wcześniej pisałem ;]).
//edit: jednak do PyDev dodano korzystanie z debuggera jednak ze strony rozszerzenia wynika, że dalej działa słabo (integracja... nie mówiąc o samym debuggerze).
Odp: Programowanie w C++ - czy warto na Linuksie?
: 22 sie 2009, 23:04
autor: Borsuk_
Różnica względem poziomu C++, a Pythona jest ta sama. Oba języki pozwalają kodować w sposób zorientowany obiektowo, a to się wiąże z ludzkim, a nie maszynowym spojrzeniem na problem. Tą wspomnianą 'wyższością' może być co najwyżej ten dynamiczny system typów. On nieco zmienia postać rzeczy. Na przykład, ty go obwiniasz o źródło niepotrzebnych błędów, a ja po prostu to traktuje jako wspomagacz polimorfizmu. Ty możesz wykonać błąd źle posługując się wskaźnikiem, a ja mogę wykonać błąd w postaci tego omówionego typu. Jak dotąd nie zdarzyło mi się wyklinać takiego przypadku.
Ogólnie nie zamierzam debatować na temat, który język jest najlepszy. Znaną prawdą jest fakt, iż taki nie istnieje. W całości chce po prostu podkreślić fakt, iż python jest wart uwagi, bo umożliwia wiele, a język, który zostanie wybrany leży głównie w guście Autora wątku.
Odp: Programowanie w C++ - czy warto na Linuksie?
: 22 sie 2009, 23:30
autor: luzakwielki
Borsuk_ pisze:Różnica względem poziomu C++, a Pythona jest ta sama. Oba języki pozwalają kodować w sposób zorientowany obiektowo, a to się wiąże z ludzkim, a nie maszynowym spojrzeniem na problem. Tą wspomnianą 'wyższością' może być co najwyżej ten dynamiczny system typów. On nieco zmienia postać rzeczy. Na przykład, ty go obwiniasz o źródło niepotrzebnych błędów, a ja po prostu to traktuje jako wspomagacz polimorfizmu. Ty możesz wykonać błąd źle posługując się wskaźnikiem, a ja mogę wykonać błąd w postaci tego omówionego typu. Jak dotąd nie zdarzyło mi się wyklinać takiego przypadku.
Wysokość poziomu języka nie jest to w jaki sposób piszesz, a poziom co robi za Ciebie język (np. w C/C++ sam zarządzasz pamięcią, w pythonie pamięcią zarządza python (GC), w C znasz typ, w pythonie zarządzaniem typami zajmuje się python - takich rzeczy jest mnóstwo i znając pythona nie masz pojęcia jak to jest zorganizowane w innych językach i przy nauce musisz się uczyć wszystkiego od początku - przypadku przechodzenia z C/C++ na pythona masz większą wiedzę i nic w pythonie Cię nie zaskoczy - poza wspomnianymi błędami typów, słabym debuggerem czy jak źle postawisz spację/tab (lub zniknie gdzieś przy edycji) to cały algorytm/program się sypie, a nie możesz łatwo się dowiedzieć w którym miejscu (bloki danych jako wcięcia i wystarczy brak spacji, żeby wszystko co napisałeś, działało zupełnie inaczej)).
Nie mówię, że python jest zły - wręcz przeciwnie jest całkiem fajny , ale tylko do małych skryptów/programików (sam go przez jakiś czas używałem w swoim silniku i grach - ale był za wolny oraz przy większych projektach sprawiał problemy przez swoje udziwnienia i wygrał z nim angel script)... jednak python imo jest zły na początek bo skutecznie może uprzykrzyć programowanie początkującemu właśnie przez brak typów czy brak bloków danych opisanych widocznymi znakami - brak narzędzi dodatkowych jak dobry debugger, profiler czy słaba wydajność i większa pamięciożerność dla początkującego pewnie nie byłyby przeszkodą, bo nie ma porównania i nie zna tych narzędzi (ale tym bardziej będą przeszkadzać te cechy języka, które wymieniłem).
Odp: Programowanie w C++ - czy warto na Linuksie?
: 22 sie 2009, 23:48
autor: Borsuk_
: - ) Tutaj przyznaje ci niewątpliwie racje. W tym przypadku C++ jest zdecydowanie lepszym rozwiązaniem. Jego nauka oferuje poruszenie zdecydowanie większej porcji zagadnień związanych z programowaniem. Po pewnym czasie można wybrać sobie temat i dostosować sobie do niego najskuteczniejszy język, a jego poznanie z pewnością nie będzie sprawiać wielu problemów.
Odp: Programowanie w C++ - czy warto na Linuksie?
: 23 sie 2009, 10:46
autor: Fanael
Wspominałem o
http://yosefk.com/c++fqa/? Polecam poczytać, zanim się coś dobrego powie o C++

.
Odp: Programowanie w C++ - czy warto na Linuksie?
: 23 sie 2009, 15:42
autor: luzakwielki
Rzeczy w tym linku opisują błędy, które dotyczą wszystkich języków (jest to spowodowane ograniczeniami technicznymi), większość to mała znajomość języka/zastosowań dla tego języka (np. brak GC z jednej strony jest wadą, bo może spowodować wycieki pamięci i wymaga zatroszczenia się o usunięcie tego co zaalokowaliśmy (pomijam to, że wystarczy użyć biblioteki Bohem GC i mieć GC w C++ (libgc))... z drugiej odciąża procesor z myślenia nad tym czy danej rzeczy będziemy jeszcze używać, zwalniania pamięci w trakcie kiedy potrzebna nam wydajność, a nie pamięć (podczas gry w strzelarkę, gdyby gc zaczął działać zabiłbyś programistę, który użył języka z GC ;p) - dodatkowo w językach z GC często stosuje się prealokację co z jednej strony przyspiesza alokację, z drugiej dramatycznie zwiększa wymagania programu na pamięć)... reszta z tych zarzutów to po prostu widok języka ze strony osoby, która nigdy nie pisała programu wymagającego wydajności (to co on uznaje za wadę, bo utrudnia, programiści gier otaczają Czcią, bo gdyby nie to działałoby wielokrotnie wolniej) i jest dosłownie kilka prawdziwych wad języka.
Język powinno się wybierać do zastosowań - C/C++ nie użyjesz jako języka stron internetowych (tam dodatkowo nie ma głównej zalety C/C++ czyli wydajności (bo cgi i fast cgi są bardzo powolne w porównaniu z php czy jsp)), bo pisanie w tych językach byłoby dużym utrudnieniem w porównaniu do języków które powstały do tego celu, pisać program gdzie masz jedno okienko i parę przycisków w C/C++ byłoby złym pomysłem, bo taki program można szybciej napisać w python+pyQT/pyGTK/py... (lub php+phpQT, tlc/tk, perl...) niż w C/C++, gdy potrzeba napisać większy program, ale tak jak w przypadku poprzedniego przykładu nie jest ważna wydajność, to piszesz w Java lub .Net bo trudniej popełnić ciężkie do wyłapania błędy i są lepsze narzędzia... jeśli jednak potrzebujesz napisać wydajny program to nic nie zastąpi C/C++ bo oferują wydajność porównywalną do ASM (a nawet większą dzięki optymalizacją w kompilatorach), a pisze się dużo łatwiej - w takich programach wady C/C++ stają się nieocenionymi zaletami.