C++ od podstaw


(hyouka) #1

Hejka co polecacie do nauki c++ na myśli mam publikacje raczej po polsku choć angielskim także nie gardzę. Chodzi mi o aktualne kursy, bo wiadome są pewne drobne różnice między wersjami c++.

Z góry dzięki za info z aktualną dokumentacją, wolę info od Dev niż wujka Google, pewnie ktoś już gryzie c++ więc jego opinia będzie bezcenna.


Różnice między C,C# a C++
(Fizyda) #2

http://www.cplusplus.com/


(Rolek0) #3

Polecam:

Czasem warto zerknąć też do standardu:

C++11 http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3337.pdf

C++14 https://github.com/cplusplus/draft/raw/master/papers/n4140.pdf

C++17 http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/n4606.pdf

Miłej nauki :slight_smile:


(GioWDS) #4

Jak od podstaw to chyba najlepsza wydaje się Symfonia C++.


(pionner) #5

Polecam na youtube filmy Mirosława Zelenta. O ile są spory o dalsze materiały i ich kwestie merytoryczne, to pierwszy kurs C++ jest perfekcyjny :slight_smile:


(hyouka) #6

Sorka za odkop ale symfonia jest jednak trochę przestarzała, ogólnie podstawy już ogarniam, aczkolwiek najwięcej zabawy zajmują nowe wyzwania, szczególnie część logiczna, czyli jak to rozwalić by było w miarę wydajnie. Tak się zastanawiam czy nie ma czegoś o jakby sztuce pisania efektywnych programów, czego unikać by nie pisać mułów. Zauważyłem że wiele rzeczy z c++ działa podobnie w sensie logiki jak w bashu, pythonie itd. oczywiście piszę o podstawach, czyli potwierdza się że programowanie jest w pewnym stopniu uniwersalne. 

Dzięki za informację, wiem że na początku to takie proste skrypt, ale od razu Rzymu nie zbudowano, powoli a do przodu, grunt to znać biegle fundamenty by potem budować na czymś solidnym, te poradniki na yt są bardzo pomocne, a co do wersji c++ to raczej używam tej najnowszej. 


(Fizyda) #7

Nie zgodzę się, że symfonia jest przestarzała. Świetnie uczy programowania i podstaw C++. Wątpię by kiedyś była przestarzała, jedynie w momencie gdy odjedzie się od OOP. Symfonia daje dobry start zarówno w ogólnym pojęciu programowania, jak i w C++. Nowe standardy których nie opisano w symfonii łatwo jest się ich nauczyć po poznaniu podstaw ponieważ zawarte w nich jest to co zostało opisane w symfonii.

Symfonia jest świetną książką jeśli chodzi o naukę programowani i poznanie podstaw C++. Jeśli ktoś umie programować i zna, a przede wszystkim rozumie i umie myśleć niskopoziomowo, to pozostaje tylko kwestia poznania reszty stl’a i nowych standardów C++03 C++11 czy C++14. W kolejnych standardach dochodzą tylko nowe rzeczy lub stare są zastępowane przez wygodniejsze elementy.


(hyouka) #8

Pisanie kodu który był w przykładach to nie problem, ale napisanie czegoś od zera z  nietypowym problemem do rozwiązania to już wyzwanie.

Porównywałem kilka kursów na raz, i są pewne drobne różnice, aczkolwiek to chyba kwestia wersji c++, np. w pewnych kursach wymaga się dodania pewnych bibliotek a w innych już nie, jakby były już dostępne. Główny problem jaki napotykam, to to jeżeli, jakby szukam każdej możliwości jaka może spowodować błąd w działaniu skryptu, pisanie kodu to nie problem, ale stworzenie jak już pisałem tego logicznie to wyzwanie, biorąc pod uwagę pewne rzeczy jakie może zrobić użytkownik by skrypt nie działał jak powinien, wtedy dodajemy te wyjątki do wykluczenia. 

Trochę dużo tego logicznego myślenia jak na takie proste skrypty, a co tu myśleć o takich dużych programach, aż się zastanawiam ile czasu pisze się okienkowe aplikację heh.

Te skróty w c++ to pewien plus ale też minus, bo można się pogubić w kodzie, co się czasem zdarza. 

 


(Fizyda) #9

Dlatego powstały wzorce projektowe takie jak mvc i mvvm, albo chociaż model warstwowy. Dodatkowo stosuje się coś takiego jak walidację danych.

Jeśli aplikacja jest dobrze zaprojektowana to to o czym piszesz nie jest jakimś większym problemem.

 

Jedyny problem C++ to to że jedną rzecz można zrobić zazwyczaj na co najmniej na 3 sposoby, przez co czytając czy modyfikując cudzy kod czy kod tworzony bez przyjętych standardów trzeba znać praktycznie wszystko by wiedzieć co za co odpowiada.

Dodatkowo trzeba wiedzieć jakie są plusy i minusy wyboru pewnych rzeczy - wybierać sposób realizacji czegoś świadomie, a nie przypadkowo.


(hyouka) #10

Czyli jeśli dobrze rozumiem, to większość elementów jest jak klocki lego, tylko musimy je zmodyfikować pod dany cel jaki ma program, czy funkcja wykonywać. Te skróty są mylące, ale cóż szukanie jak to działa uczy najlepiej. 


(Fizyda) #11

Nie wiem o jakie skróty Ci chodzi, ale faktycznie można porównać trochę programowanie do klocków lego - im więcej bibliotek znasz w danym środowisku (klocków) tym szybciej, łatwiej i ciekawsze rzeczy możesz zrobić. Oczywiście zawsze możesz odlać własny klocek którego będziesz używał w wielu programach.


(Rolek0) #12

Jeśli już znasz język programowania, to dalej warto iść w algorytmy i struktury danych (np. http://wazniak.mimuw.edu.pl/index.php?title=Algorytmy_i_struktury_danych ; http://eduinf.waw.pl/inf/alg/001_search/index.php ) oraz wzorce projektowe (np. http://wazniak.mimuw.edu.pl/images/8/80/Io-8-wyk.pdf ; http://coach.kis.p.lodz.pl/index_powp.html (wcześniej warto zapoznać się z podstawami UML https://github.com/iis-io-team/pio/raw/master/UML/wyk_UML.pdf )).