C++ a przyszłosc. Czyli jak to wyglada w praktyce?

0

Udało mi się przejść z większym lub mniejszym powodzeniem przez odcinki youtubowego kursu Pana Mirosława Zelenta najpierw zwykłego c++ a potem obiektowego. Doszedłem do lekcji z programami okienkowymi a tu... WHAT?! Nagle poczułem się jakbym z profesjonalisty któremu wydaje sie ze rozumie polimorfizm, dziedziczenie, rekurencje, został sprowadzony do tutoriala obsługi painta i stosowania jakiś wymyślonych instrukcji. Czy w życiu normalnego, przeciętnego programisty też to tak zwykle wygląda? W sensie używa się jakiegoś gotowego środowiska i "bezmyślnie" koduje kolejne rzeczy instrukcjami których teoretycznie nawet nie trzeba do końca rozumieć?

2

W pracy programisty c++ zazwyczaj jedyne, co możesz sobie wyklikać to skróty klawiszowe w środowisku.

0

Mógłbyś szerzej? Bo nie za bardzo rozumiem...

3

Dopiero co skończyłeś kurs wprowadzający do języka i już czujesz się profesjonalistą? Jeszcze nic nie napisałeś a już masz podejrzenia, że w C++ głównie się klika? Przedwczesne Twe podejrzenia padawanie.

0

no jak ktoś pracuje jako programista to raczej powinien wiedzieć co pisze a nie kopiować z neta kawałki kodu nie wiedząc o co chodzi

0

Źle odebrałeś to co napisałem. Chodziło mi o kontrast, to było takie porównanie zeby lepiej zoobrazowac o co mi chodzi. Dlatego chciałbym się dowiedzieć jak to wygląda w praktyce ;)

0

poszczególne biblioteki mają inną składnię i jak przerabiasz nową to zawsze jest niespodzianka... największą niespodziankę jaką spotkałem było tworzenie i obsługa okna w winapi ale pewnie są i inne (jeśli teraz to dobrze zrozumiałem)

1

Praktyka to najczęściej szok, niedowierzanie i poryty kod ;) Klikanie uświadczysz tylko podczas przerabiania podstaw tworzenia okienek właśnie.

3

W C++ musisz rozumiec jak dziala wszystko to co piszesz, jak nie rozumiesz lub nie chcesz zrozumiec to nie powinienes uzywac C++.

0

Bo przyznam się szczerze oczekiwałem, że będę musiał jakoś sam np. zdefiniować jak wygląda przycisk. A tu klikam wpisuje nazywe, podpinam pod cos i... koniec zabawy :) No ale skoro mowicie ze to jest tylko po to żeby zrozumieć to będę parł dalej do przodu i się nie poddawał ;)

0

A w czym wyklikiwanie interfejsu jest gorsze od wklepywania? Jak chcesz to możesz klepać ręcznie pisząc np w WinAPI.

1

Nie musisz rozumiec w 100% bibliotek z ktorych korzystasz, ale sam jezyk tak. Warto tez znac jak robic UI na niskim poziomie czyli np. pod Windowsem warto napisac (i zrozumiec) przynajmniej prosta apke w WinAPI, ktora pokazuje jeden przycisk i cos robi jak sie na niego wcisnie. To jest przydatne zeby zrozumiec i moc wydedukowac co biblioteka prawdopodobnie robi.

1
andrzejugdziejestes napisał(a):

Udało mi się przejść z większym lub mniejszym powodzeniem przez odcinki youtubowego kursu Pana Mirosława Zelenta najpierw zwykłego c++ a potem obiektowego. Doszedłem do lekcji z programami okienkowymi a tu... WHAT?! Nagle poczułem się jakbym z profesjonalisty któremu wydaje sie ze rozumie polimorfizm, dziedziczenie, rekurencje, został sprowadzony do tutoriala obsługi painta i stosowania jakiś wymyślonych instrukcji. Czy w życiu normalnego, przeciętnego programisty też to tak zwykle wygląda? W sensie używa się jakiegoś gotowego środowiska i "bezmyślnie" koduje kolejne rzeczy instrukcjami których teoretycznie nawet nie trzeba do końca rozumieć?

Pewnie. Ja to na ten przykład w ogóle nie znam składni C++. Połowę kodu kopiuję z SO, a drugą połowę podpowiada mi vim (ycm). Czasami to w ogóle nie programuję tylko kopiuję gotowe UMLe i z nich generuję kod. Jasne, że nie trzeba nic rozumieć z tego co się naklepie, bo po co to komu wiedzieć, jak coś tam działa? No chyba, że ktoś jest profesjonalistą i oglądał kursy Pana Mirosława Zelenta. Bądźmy jednak szczerzy, takich kozaków to nie ma za wielu : /

0

Widzę , że zadanie pytania oprócz fali hejtu niczego do mojego życia nie wniosło.

0

@andrzejugdziejestes tego nalezy sie spodziewac zanim zaczyna sie wypisywac farmazony. Jak nie wiesz o czym mowisz to mozesz spodziewac sie wszystkiego i nie powinienes miec tego nikomu za zle. To jest na tej samej zasadzie jakby na srodku ulicy pojawil sie muzulmanin i zaczal krzyczec na ludzi zeby nie jedli kielbasy bo to nie ma sensu i ze jest nieczysta.

0

Ale czy ktoś mówi że ja wiem o czym mowie? ZADAŁEM PYTANIE! Bo byłem ciekawy jak to działa. Twojego porównania niestety nie rozumiem :(

0

Eeem, a mi się wydaje że odpowiedź na swoje pytanie dostałeś nawet więcej niż dosadną :P A reszta to nie hejt. Hejt jest wycelowany w osobę, Ty uświadczyłeś jedynie niegroźnego naigrywania się ;)

0
andrzejugdziejestes napisał(a):

Czy w życiu normalnego, przeciętnego programisty też to tak zwykle wygląda? W sensie używa się jakiegoś gotowego środowiska i "bezmyślnie" koduje kolejne rzeczy instrukcjami których teoretycznie nawet nie trzeba do końca rozumieć?

Jakby to było takie proste to już byśmy mieli Windows-a 15, który się nie krzaczy i wymiata ;-)

2

@andrzejugdziejestes

Nie odbierz tego jako atak na Ciebie, to co napisze. Jest po prostu rzeczywistoscia.

Nie znasz C++. Poznales podstawy jezyka programowania obiektowego (dowolnego... i tak to sa podstawy). Ja programuje w C++ z jakies 5 lat (3 lata zawodowo)... czy go umiem? Bron boze... ten jezyk jest tak pokrecony, ze bez jakiegos guru przy boku nigdy sie go nie naucze zeby byc zadowolony z wiedzy.

Teraz analogicznie, skoro ja pisze ze go nie znam na profesjonalnym poziomie (w sensie znam go 9/10) to uwierz mi, ze Ty tym bardziej go nie znasz. Autor C++ wypowiedzial sie kiedys ze zna swoj jezyk na 7/10...

Pobawiles sie z C++, fajnie. Jezeli nie masz kogos kto Ci pomoze w nauce (a widac ze nie masz skoro ogladales kurs na yt) to porzuc C++. Sam staram sie to nawet zrobic... (w sensie nie pracowac w tym jezyku).

Nie nie pytaj co sie uczyc. Uzyj szujaki albo google. Na to pytanie sam odpowiadalem z 20 razy na tym forum

0

GUI w dobrym środowisku (np. C++ Builder / RAD Studio C++) robi się bez napisania grama kodu.
Może nawet z tego powstać aplikacja bazodanowa umożliwiająca przeglądanie bazy i jej modyfikację. Nadal bez naciśnięcia jednego przycisku na klawiaturze.

Ale to nie jest programowanie. Schody zaczynają się gdy musisz cokolwiek policzyć albo np. współdzielić kalkulacje między dwoma oknami. Co w każdej aplikacji biznesowej niechybnie nastąpi.

0

Wszyscy czytelnicy pierwszego posta źle odebrali mój przekaz, ale to moja wina... no cóż. Nigdzie nie stwierdziłem, że go znam! Gdzie ja stwierdziłem, że go znam? Stworzyłem tylko porównanie, które miało odzwierciedlić to co chciałem przekazać, żeby ładnie zobrazować co poczułem. Już pomijam fakt, że jak bardzo musiałbym być niedorozwinięty żeby twierdzić po trzech tygodniach nauki, że znam język i uważać się za profesjonalistę?????????? @fasadin Dzięki za odpowiedź, załatwiłem sobie lekcje z gościem który podobno świetnie przekazuje wiedze, zobaczymy czy to coś da ;)

EDIT: @vpiotr O to własnie mi chodziło, o taką odpowiedź ;) Ale czy takie aplikacje typu z C++ bulidera nie są tak bardzo niedopracowane i z bugowane jak kod strony HTML z jakiegoś generatora?

1

jak nie stwierdziles ze go znasz

"Nagle poczułem się jakbym z profesjonalisty któremu wydaje sie ze rozumie polimorfizm, dziedziczenie, rekurencje, został sprowadzony do tutoriala obsługi painta "

to sa Twoje slowa.

0
andrzejugdziejestes napisał(a):

@vpiotr O to własnie mi chodziło, o taką odpowiedź ;) Ale czy takie aplikacje typu z C++ bulidera nie są tak bardzo niedopracowane i z bugowane jak kod strony HTML z jakiegoś generatora?

Jeśli chodzi o wersję Pascal-ową (Delphi) to kod był jak najbardziej OK (praktycznie go nie było w takiej demo-aplikacji, w normalnej aplikacji kod generowany był minimalny i można go było zmienić po swojemu).

Natomiast co wyprawiał C++ Builder nie wiem, bo używałem go tylko w celach testowych, demo-aplikacja (przeglądanie bazy) wyglądała podobnie - praktycznie zero kodu (AFAIR).

0

Wszystko zależy od tego co i jak się koduje. Jeżeli chodzi o interfejs graficzny to można go sobie wyklikać myszką, ale równie dobrze można go sobie wpisać z palca. Jedni powiedzą, że lepszy jest edytor tekstowy a inni, że nie ma sensu tracić czasu na wklepywanie kodu, skoro korzystając z RAD uzyska się dokładnie taki sam efekt. Jest wybór i każdy powinien sam dojść do tego co dla niego wygodniejsze. Jednak programowanie to nie tylko tworzenie GUI i wypełnianie okien danymi. To przede wszystkim przetwarzanie danych, a tego środowisko RAD za nas nie zrobi.

1

Z kursów na polskim youtubie nie można nauczyć się nawet podstaw C++. Podstawy można znaleźć np. w książce "Szkoła Programowania C++ 11" Stephena Praty zaledwie nieco ponad 1000 stron pisane drobnym maczkiem ;) Ja po przeczytaniu dziesiątek książek o programowaniu PHP, JavaScript, Objective C, Java i C/C++ i napisaniu również wielu programów dalej twierdzę, że jest mi daleko do choćby nazywania siebie programistą :) nie wspominając już o bycie "profesjonalistą". O profesjonalnym podejściu do programowania sporo napisał Robert C. Martin w książce "Mistrz czystego kodu". Bycie programistą to nie tylko posiadanie ogromnej wiedzy ale również nauczenia się pokory i wytrwałości :) Bycie programistą to pewien "stan umysłu" ;)

2

to jest Polska i tu się "hejtuje", 95% ludzi w Polsce to poirytowane zranione kiedyś bachory umysłowe, przyzwyczaj się do tego (zobacz na wyniki wyborów, na Bronka nie oddali głosów tylko ludzie bez perspektym (takie moje zdanie, czyli lekko ponad 50%);

a co do Twojego pytania, tutaj właśnie nie ma bezmyślnego kodowania;

cpp jest bardzo trudnym językiem no i bardzo rozległym, sam Bjarne przyznał, że nie wie o nim wszystkiego, chociaz go wynalazł :D

tam nie ma co klikać, jedynym przypadkiem gdzie sobie klikam to, gdy buduję symulatory aplikacji, z którymi będę się komunikował (juz ktoś wspomniał o aplikacjach okienkowych)

ostatnio oddałem projekt dla bardzo dużej firmy niemieckiej i muszę Ci powiedzieć, że śmiga niesamowicie, włożyłem w niego mnóstwo pracy, ale satysfakcja jest wielka i myślę, że moje cv teraz wygląda bardzo atrakcyjnie jeżeli chodzi o rynek zachodni, i duzo lepiej mieć expa w cpp niż w c# czy javie, bo jeżeli znasz dobrze cpp to nauka c# to jest pikuś;

programować nauczyłem się dopiero w pracy (no bo ciężko jest wyskrobać coś w domu bez większej motywacji), z tego co pamiętam siedziałem przez pierwsze 2 tygodnie nad jedną funkcją w projekcie firmowym, próbując zrozumieć sekcje krytyczne, scope i innych mnóstwo ważnych w programowaniu wielowątkowym aspektów, dzisiaj to się odwdzięcza możliwością pracowania nad mega super ciekawymi projektami, po 1 miesiącu chcieli mi podziękować pewnie, ale umowa była na 3; Po kolejnych 2 miesiącach kiedy zdaliśmy odbiory a ja przepisałem pół aplikacji, która przejąłem dostałem nawet podwyżkę; (tak wkuwałem po godzinach ile mogłem)

teraz jeżdżę na konferencje cpp w Polsce i słucham wykładów największych postaci tego środowiska, na cpp con też chciałem pojechać wraz z mentorem, ale wizy nas skutecznie zniecheciły;

dla chcącego nic trudnego i to chyba dotyczy każdego języka, główne pytanie to takie czy będziesz kodował w pracy, czy będziesz siedział i czytał logi;

jak chcesz kodować i rozwijać się -> wybierz firmę małą (na dłuższą metę to się bardzo opłaci), jak chcesz bimbać i kasować ciepłe 3-4k na rękę nie potrafiąc nic, wybierz korpo

język nauki to wyłącznie angielski, zapomnij o polskich kursach czy książkach;

pomocne źródła:
http://www.reddit.com/r/cpp
irc.freenode.net -> ##c++ ##c++-general ##c++-beginners #algorithms #qt

ale się wypłakałem w połowie tylko na temat :D

za błędy w pisowni przepraszam, nie chce mi się czytać 2 raz tego co napisałem

0

Nie przesadzajmy jest kilka ciekawych pozycji w rodzimym języku o C/C++ bo jak ktoś nie zna angielskiego albo zna tylko podstawy to nie ma szans na przeczytanie książki w języku angielskim. Angielskiego też się nie nauczy w 14 dni jak to niektóre szkoły reklamują. To są długie lata katorżniczej nauki, zresztą zarówno do języków programowania czy języków obcych trzeba mieć predyspozycje, jeśli się ich nie ma trzeba być cholernym uparciuchem i naukę rozłożyć na dekady a nie na lata ;) - wiem nie jest to zbyt pocieszające :) Ale ponoć uparciuchy żyją nieco dłużej ;) Zgadzam się natomiast, że nie ma co porównywać zasobów anglojęzycznych w necie do polskich bo to jest przepaść.

4

Aj... każdy "ciągnie kołdrę" w swoją stronę a niektórzy nie widzą że to koc :-)

Znać język C++ - co to znaczy?
Znać konstrukcje językowe w C++ to jedno, jak współpracują ze sobą to rzecz inna a jeszcze inna jakie są adekwatne dla danego problemu w trakcie implementacji to zagadnienie z innej bajki.
Z tutoriali możesz poznać tylko niektóre konstrukcje językowe. Z samej definicji tutorial posiada luki w wiedzy (bo presja czasu, bo wiedza autora, bo... bo .. bo... ). I wywołany do tablicy Zelent, także kilka ich popełnił co nie umniejsza w żaden sposób jego pracy.
Z książek możesz uzyskać (w miarę) kompletną wiedzę co do konstrukcji językowych. Nawet jednak pojedyncza książka nie jest w stanie pokazać Ci wszystkich aspektów współpracy mechanizmów (np. styk STL'a z klasami w trakcie wykonania, podejście funkcyjne na poziomie szablonów, mechanizmy dziedziczenia/wymazywania typu itp.. ).
Już do zupełnych perełek należy literatura zajmująca się aspektem doboru adekwatnych rozwiązań na poziomie języka programowania do rzeczywistego problemu. Jest to tak rzadkie że są tacy którzy twierdzą że przychodzi to tylko i wyłącznie w trakcie praktyki (nie do końca tak myślę).
Jeszcze innym aspektem jest zanurzenie w kodzie odziedziczonym (ang. legacy), napisanym przez kogoś innego. Jeśli będziesz chciał go zreafaktoryzować, wiele się nauczysz (albo osiwiejesz :-) ). Wtedy z całą pewnością będziesz wiedział jak nie programować :-)

Drugi aspekt Twojego pytania dotyczył "klikania".
Programując zawodowo, pracujesz z czasem. Jeśli masz do wyboru napisanie czegoś od podstaw lub użycie wystarczająco dobrego dla określonego kontekstu rozwiązania, wybierasz to drugie. Każda więc oszczędność czasu przy akceptowalnej jakości jest pożądana. Programując stosujesz więc frameworki co do których wiesz ogólnie jak działają a jeśli jest problem, czytasz kod i masz go rozumieć aby obejść problem lub go naprawić nie tworząc nowych bo to jest być albo nie być :-) No i sam sobie odpowiedz (biorąc dowolne źródła nietrywialnego kodu w C++ .. np. Qt czy biblioteki Boost), czy rozumiesz dlaczego ktoś wybrał takie rozwiązanie i jak to zrobił. Będziesz miał odpowiedź czy już jesteś profesjonalistą i czy znasz język C++ :-) Dostaniesz także odpowiedź jaka jest przepaść między tutorialem, prostym przykładem ... a być może także projektami na uczelni :-/

0

@Mokrowski Dzięki za odpowiedź ;) Własnie o to mi chodziło :D Z książkami z tego co się staram znaleźć jakąś dla siebie jest ten problem, iż niektóre są nieaktualne co do niektórych opinie są skrajne i każdy ma odmienne zdanie. Ciężko jest zdecydować, nie mogę też sobie pozwolić żeby kupić od razu 3 ponieważ nie kosztują 10 zł...

0

Też kiedyś przechodząc z pascala na dosa na c++ builder z VCL byłem jakiś zawiedziony. Interfejs - coś co zabierało mnóstwo czasu, nagle jest do wyklikania w parę sekund i to bez żadnej wiedzy
Bo nabyciu jednak wiedzy dochodzi się do tego że ogólny interfejs aplikacji jest praktycznie niczym i nie powinien zabierać za dużo czasu - najważniejsza jest logika aplikacji.
Jeżeli programiści mieliby rysować każdy przycisk z osobna i z kodu go ustawiać wymyślając współrzędne i wygląd bez żadnego podgląduto bylibyśmy o 20 lat do tyłu jeśli chodzi o software

1 użytkowników online, w tym zalogowanych: 0, gości: 1