• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Nauka Programowania (doslownie od 0)

VPS Starter Arubacloud
+2 głosów
824 wizyt
pytanie zadane 19 czerwca 2021 w C i C++ przez NaQu121099 Nowicjusz (140 p.)
Czesc mam pytanie zamierzam zaczac nauke C++ czy polecacie jakąś książke/tutorialez tego języka?

Programowanie zaczynam doslownie od 0 i szukalem samodzielnie ksiazek/tutoriali ale wiekszosc osob mowi ze

np. ta ksiazka jest przestarzala i uczy duzo bledow itp.

Najlepiej jesli ksiazki były to ebooki lub po prostu na necie (Nie lubie czytac ksiazek w formie papierowej, uwielbiam je po prostu czytac na ekranie :) lub tutoriale ktore naucza mnie podstaw tylko nie takie co da sie je skonczyc w 2/3 tygodnie najlepiej by cały czas tutorialu dokładnie uczył i był bo ja wiem od 2 do 2,3,4.... miesiecy wazne by uczyl dokladnie :)

 

Spotkałem sie rowniez z opinami ze kursy pana Miroslawa Zelenta z wiekiem lat straciły na wartosci i co najwyzej moga byc dodatkiem badz uzupelnieniem.

Obecnie tez znalazlem ksiazke c++ primer plus 6th Edition ale nie wiem czy tez nie jest przestarzala
 

Z góry dziękuje za odpowiedź

6 odpowiedzi

+6 głosów
odpowiedź 19 czerwca 2021 przez ScriptyChris Mędrzec (190,190 p.)

Skoro zaczynasz naukę programowanie całkowicie od zera, to na początku proponuję sprawdzić, czy programowanie samo w sobie jest w ogóle dla Ciebie. Możesz przerobić sobie kurs C++ od MZ, żeby sprawdzić, czy to polubisz i będziesz w stanie dalej się tego uczyć. Owszem, te kursy są przestarzałe i nie uczą dobrych praktyk, ale na start (żeby choćby spróbować zacząć programować) są ok. Ważna kwestia - pod koniec każdego odcinka warto zapoznać się z ich Code Review, żeby sprawdzić co w kodzie jest do poprawy.

Kursy MZ obejmują nie tylko C++, ale też frontend i backend (w PHP), więc możesz spróbować każdej z tych dziedzin.

Mam natomiast pytanie: dlaczego akurat C++? Skoro zaczynasz całkowicie od zera, to co skłoniło Cię akurat do tego języka? Jeśli to nie jest czynnik zewnętrzny, jak np. szkoła, to może spróbuj zacząć od lżejszego języka?

tutoriale ktore naucza mnie podstaw tylko nie takie co da sie je skonczyc w 2/3 tygodnie najlepiej by cały czas tutorialu dokładnie uczył i był bo ja wiem od 2 do 2,3,4.... miesiecy wazne by uczyl dokladnie

Nie wiem, czy w ogóle są tutoriale kilku miesięczne - prędzej bootcampy. Natomiast te już kosztują po kilka(naście) tysięcy złotych. Tylko, że jeśli programowanie zaczynasz od poziomu zerowego, to naprawdę warto przerobić jakiś mniejszy kurs, żeby w ogóle sprawdzić, czy to Ci się spodoba i czy dany język będzie dla Ciebie interesujący.

Nie wiem też czy przez "dokładnie uczył" rozumiesz prowadzenie za rączkę. Jeśli tak, to jest to trochę złudne nastawienie, bo programowania uczysz się głównie pisząc kod (popełniając przy tym błędy) i warto możliwie jak najszybciej nauczyć się samodzielnego wyszukiwania informacji w Google (lub innej wyszukiwarce) i czytania dokumentacji (nie tylko języka, ale też bibliotek i API, z których pewnie będziesz korzystać) oraz szukania błędów w kodzie (debugowanie), bo z tych umiejętności korzysta się bez względu na poziom doświadczenia. Tego na kursach raczej nie uczą.

+1 głos
odpowiedź 19 czerwca 2021 przez J0ker Pasjonat (15,400 p.)
Jak zaczynasz od 0 to nie trać czasu na C/C++ i ucz się Rusta bo to jest język przyszłości który jest lepszy od C i C++ pod prawie każdym względem a jedynym powodem dla którego ludzie używają C i C++ jest potrzeba utrzymywania programów które już zostały w nich napisane + jest więcej bibliotek więc ludzie wolą skorzystać z gotowego w C++ niż napisać nowe i lepszew Rust.
komentarz 29 czerwca 2021 przez reaktywny Nałogowiec (40,650 p.)

Dzięki za przybliżenie i przypomnienie tych spraw!

Czyli główne przewagi wg. Ciebie to tooling. Narzędzia są bardzo ważne, tego typu rozwiązania (managery) to właściwie standard w nowych i najnowszych językach (Elixir, Ruby, Crystal, Golang, Nim,........). Miałem nadzieję, że wymienisz "fearless concurrency", jak prawie wszyscy zwolennicy Rust. Ale w akapicie "wymagający kompilator" w zasadzie wyjaśniłeś sprawę.

Nie wiem czy zagłębiałeś się np. w enumy, albo wyrażenie match.

W enumy - tak, by połączyć zmienne o podobnym przeznaczeniu. Używałem tylko pewnie podstawowej funkcjonalności, tzn. nie znam ich możliwości w pełni, nie znalazłem na razie też w nich nic nadzwyczajnego, ale dopiero poznaję język. Wiele języków ma enumy, nawet stary Pascal miał rekordy. Być może mnie zaraz poprawisz, ale póki co, nie znalazłem w nich nic niesamowitego, choć dobrze oczywiście, że są częścią języka.

Pattern matching - w Rust (w moim pierwszym i na razie ostatnim programie) jeszcze nie korzystałem. Wiem, że to cecha głównie FP, ale wyczytałem, że w Rust jest to dobrze przemyślane i pozwala skrócić / uprościć kod.

Jak oceniasz możliwości programowania współbieżnego i równoległego w Rust? Ludziska piszą, że np. Golang ma lepiej (głównie łatwiejsze wykorzystanie) gorutyny w stosunku do Rust.

 

1
komentarz 29 czerwca 2021 przez Jakub 0 Pasjonat (23,120 p.)
edycja 30 czerwca 2021 przez Jakub 0

Miałem nadzieję, że wymienisz "fearless concurrency", jak prawie wszyscy zwolennicy Rust  

Jest to takie oczywiste, że nie widziałem potrzeby tego drążyć :)

W enumy - tak, by połączyć zmienne o podobnym przeznaczeniu.

Wspomniałem o enumach, bo w Rust jest to konstrukcja tak samo rozbudowana jak struktury - możesz definiować własne metody dla typu wyliczeniowego oraz umieszczać dodatkowe wartości dla każdego z przypadków. Nie wiem czy jest to coś niesamowitego w porównaniu z innymi językami, ale w Rust spotkałem się z tym po raz pierwszy, w C++ nie znalazłem dla nich tak samo wygodnej alternatywy.

Jak oceniasz możliwości programowania współbieżnego i równoległego w Rust? Ludziska piszą, że np. Golang ma lepiej (głównie łatwiejsze wykorzystanie) gorutyny w stosunku do Rust.

Ciężko mi się tu odnieść do Go, bo go nie znam. Przypuszczam, że na pewno jest w nim wszystko dużo łatwiejsze niż w Rust :)

Jeśli natomiast chodzi o Rust, to bezpieczeństwo i wygoda pisania kodu wielowątkowego z pewnością jest jego wielkim atutem. Najbardziej polubiłem mechanizm kanałów. Ich definiowanie jest dziecinnie proste i są one dostępne w bibliotece standardowej na wciągnięcie ręki.

Ciekawie są też zrealizowane muteksy, w przeciwieństwie do C++, tutaj chronione dane przechowywane są wewnątrz obiektu Mutex. Mutexy mają bardzo podobny interfejs co chronione wskaźniki, by dostać się do danych, konieczne jest wywołanie metody lock() - ponownie, nie ma tu ryzyka, że o tym zapomnisz...

Kiedy wątek, który uzyskał blokadę, zgłosi błąd paniki (dojdzie do awaryjnego zatrzymania jego pracy), mutex staje się "zatruty". Od tej pory, próba zablokowania muteksu przez inne wątki będzie zwracać błąd (lock zwróci wyliczenie Err zamiast Ok). Dzięki temu jesteś zmuszony jakoś to obsłużyć - ponownie, program nie traci nad sobą kontroli.

Oczywiście nie oznacza to, że w Rust nie istnieje żadne ryzyko pisania kodu wielowątkowego. Tu też może dojść do np. deadlock'a z naszej winy. Kompilator nie jest tu w stanie zawczasu dostrzec takiej ewentualności.

Jeśli natomiast chodzi o asynchroniczność, to muszę się przyznać, że nie tworzyłem sam korutyn (mam co nadrobić :) ), korzystam do tego celu z runtime dla rusta jakim jest Tokio. To głównie go wykorzystuje w większości sytuacji.

 

1
komentarz 29 czerwca 2021 przez tkz Nałogowiec (42,000 p.)

@Jakub 0,

Wymagający kompilator - Czasami w C++ w zależności od implementacji, kod różnie się zachowa w różnych warunkach przyrody.

To jest prawda jeżeli nie trzymasz się standardu. Inaczej zaleta c++ jaką jest standaryzacja nie miałaby sensu. 

Myślę, żegdyby Rust nie miał przewag nad C++, to nie był by stosowany: https://serokell.io/blog/rust-companies

Imo, nie do końca tak to działa. 

Wszystko jest idealnie przemyślane i bardzo oszczędza czas.

Czy ja wiem, czy wszystko... Sam język jest czasochłonny, oszczędność czasu widzę jedynie w narzędziach jakie udostępnia.

 

C++ nie rozszerza w takim stopniu użycia enumów. 

1
komentarz 29 czerwca 2021 przez Jakub 0 Pasjonat (23,120 p.)
edycja 29 czerwca 2021 przez Jakub 0

@tkz

To jest prawda jeżeli nie trzymasz się standardu. Inaczej zaleta c++ jaką jest standaryzacja nie miałaby sensu.   

Masz całkowitą racje. Jednak moim zdaniem zawsze łatwo się mówi o przestrzeganiu standardu, w praktyce błąd ludzki jest nieunikniony. Oczywiście Rust nie wyręcza nikogo od ponoszenia skutków za błędy logiczne - jednakże pilnowanie przestrzegania reguł przez kompilator uważam mimo wszystko za niewątpliwy atut.

Sam język jest czasochłonny, oszczędność czasu widzę jedynie w narzędziach jakie udostępnia.

Chyba lepiej poświęcić czas do dobre przemyślenie projektu i na walkę z kompilatorem niż potem przy debuggerze :) Poza tym, jeśli rozumiesz język, to czas pisania w nim kodu też się skraca. Rust ma po prostu bardzo wysoki próg wejścia.

1
komentarz 30 czerwca 2021 przez reaktywny Nałogowiec (40,650 p.)
Dzięki za wypowiedzi! Fajnie się czyta osoby, które znają się na rzeczy ;)

Rusta na razie odstawiam na bok (na rzecz technologii Microsoft i Google), ale niebawem do niego wrócę. Fajny język, warto go poznać. Wypowiedzi Jakub 0, myślę, że nie tylko mnie, przekonują, że warto się przynajmniej zainteresować Rustem.
+1 głos
odpowiedź 19 czerwca 2021 przez reaktywny Nałogowiec (40,650 p.)
Zaczałbym od Opus Magnum i zobaczysz czy się Tobie to podoba.
+1 głos
odpowiedź 21 czerwca 2021 przez tangarr Mędrzec (154,780 p.)
Jeżeli nigdy nie miałeś styczności z programowaniem to wybór C++ może nie być najlepszym pomysłem.

W pierwszej kolejności musisz się nauczyć myśleć i rozwiązywać problemy jak programista. Dopiero wtedy, gdy zrozumiesz algorytmikę powinieneś poszukać języka programowania. Pamiętaj jednak, że język programowania jest tylko narzędziem. Nie musisz się do niego przywiązywać.

Na początek polecam jakiś język z silnym (lub bardzo silnym) typowaniem i przyjaznych komunikatach o błędach. Początkujący programiści robią bardzo dużo literówek i później tracą dużo czasu na znalezienie błędu. Języki silnie typowane bardzo mocno zredukują ten problem.

Kolejną ważną sprawą jest dobór języka dla którego istnieją przyjazne programiście narzędzia programistyczne (uzupełnianie kodu, pokazywanie nagłówków funkcji, opisy funkcji, wbudowana dokumentacja, interaktywny debugger).

Wydaje mi się, że dobrymi językami na początek są: Java i oraz języki na niej bazujące (np Kotlin), C# (łatwe wejście w programowanie graficzne) oraz języki "o zwiększonym bezpieczeństwie" takie jak Ada, Rust czy nawet Turbo Pascal.

Jeżeli jednak zdecydujesz się na naukę C++ to szczerze polecam z zapoznaniem się z dobrymi praktykami programistycznymi https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines oraz używanie narzędzi do statycznej analizy kodu. IDE programistyczne QtCreator posiada wbudowany Clang Model, który wyszukuje błędy (oraz potencjalne problemy) już w trakcie pisania kodu. Kolejnym niezbędnikiem dla programisty C++ są narzędzia pozwalające wykrywać nieprawidłowe użycie pamięci takie jak Valgrind i Memory Sanitizer.
komentarz 28 czerwca 2021 przez reaktywny Nałogowiec (40,650 p.)

Zgadzam się niemal z wszystkim, ale:

Ada, Rust czy nawet Turbo Pascal

Ada i Turbo Pascal to już MZ historia. A Rust z kolei jest dość trudny (może kogoś mocno zniechęcić do programowania!), napisałem parę zdań wyżej na ten temat.

0 głosów
odpowiedź 21 czerwca 2021 przez DariuszZych Początkujący (260 p.)
Cześć, ksiązki są fajne ale do pogłębiania wiedzy. Jeśli dopiero zaczynasz to polecam uczyć się z tutoriali na YT lub z kursów online. Ja naukę C++ zacząłem w szkole (i się wtedy bardzo zniechęciłem), potem przy drugim podejściu zainwestowałem w te kursy https://strefakursow.pl/sciezki_kariery/c_developer.html i ni żałuję. Można wziąć cały pakiet lub kupować pojedynczo, ale osobno jest chyba drożej. Powodzenia w nauce!
0 głosów
odpowiedź 21 czerwca 2021 przez niezalogowany

Podobne pytania

+3 głosów
3 odpowiedzi 1,414 wizyt
pytanie zadane 18 października 2021 w Inne języki przez Conax Nowicjusz (150 p.)
0 głosów
3 odpowiedzi 6,128 wizyt
pytanie zadane 18 marca 2016 w SQL, bazy danych przez jankiel89 Początkujący (450 p.)
0 głosów
0 odpowiedzi 250 wizyt
pytanie zadane 26 kwietnia 2022 w C i C++ przez Maciksa Nowicjusz (120 p.)

92,453 zapytań

141,262 odpowiedzi

319,088 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...