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

Nauka Programowania (doslownie od 0)

Object Storage Arubacloud
+2 głosów
878 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.
8
komentarz 19 czerwca 2021 przez tkz Nałogowiec (42,000 p.)

Ale bajadurzenie.

Rusta bo to jest język przyszłości który jest lepszy od C i C++ pod prawie każdym względem

Jakaś lista? 

C/C++ pełna standaryzacja, Rust się dopiero rozwija. Od niedawna jest bezpieczny biznesowo po wydzieleniu od Mozilli. Rust jest okey do projektów pobocznych. Pisanie systemu z wykorzystaniem samego rusta obecnie nie wypali. Przyszłościowy język, ale obecnie mówiąc, że jest lepszy/gorszy od C++ jest pokazem ignoranctwa. 

1
komentarz 19 czerwca 2021 przez J0ker Pasjonat (15,400 p.)
Java należy do firmy Oracle a ludzie i tak jej używają, więc nie wiem czemu Rust był niedobry dopóki był "w Mozilli".

Zwrócę uwagę, że ten człowiek który napisał pytanie zaczyna od 0, wiec nie będzie pisać całych systemów przez najbliższe kilka lat.

Kilka zalet Rust:

- brak dungling pointerów

- system własności

- brak wyścigu do danych w programowaniu wielowątkowym
2
komentarz 19 czerwca 2021 przez tkz Nałogowiec (42,000 p.)

Java należy do firmy Oracle a ludzie i tak jej używają, więc nie wiem czemu Rust był niedobry dopóki był "w Mozilli".

Nie napisałem tego. Stał się niezależny biznesowo pod względem rozwoju. Rust jest stosunkowo młody. Jest w wersji 0.X, różne rzeczy mogły go spotkać w molochu. 

Kilka zalet Rust:

- brak dungling pointerów

Inteligentne wskaźniki. 


- system własności

Semantyka wartości. 


- brak wyścigu do danych w programowaniu wielowątkowym

mutexy. 

Wszystko, co podałeś jako plusy, jest możliwe w C++. Rust jest "lepszy" w braku new, co oczywiście da się powierzchownie rozwiązać w C++. Rust jest bardziej "idioto odporny", w C++ łatwiej strzelić sobie w stopę. Według mnie, największą zaletą Rusta jest statyczna analiza kodu. 

2
komentarz 21 czerwca 2021 przez Comandeer Guru (600,810 p.)

Java należy do firmy Oracle a ludzie i tak jej używają, więc nie wiem czemu Rust był niedobry dopóki był "w Mozilli".

Oracle, jaki by nie był, zapewnia de facto nieograniczone środki na rozwój Javy. Głównym zagrożeniem jest bardziej zawirowanie w licencjonowaniu języka niż sam jego rozwój, który tego typu korpo jednak jest w stanie zapewnić. A Mozilla oddała Rusta po fali dużych i głośnych zwolnień. To nieco daje wyobrażenie o tym, jak mogłaby wyglądać przyszłość Rusta z powodu niestabilności finansowej i kadrowej Mozilli.

A tak BTW: dla mnie Rust jest po prostu… brzydki.

komentarz 21 czerwca 2021 przez Jakub 0 Pasjonat (23,120 p.)

A tak BTW: dla mnie Rust jest po prostu… brzydki.

Tak z czystej ciekawości... co jest brzydkiego dla Ciebie w Rust? Bo zakładam, że nie chodzi o składnie :)

1
komentarz 21 czerwca 2021 przez Comandeer Guru (600,810 p.)
Właśnie o nią ;) Nie podoba mi się wizualnie – po prostu.
komentarz 28 czerwca 2021 przez reaktywny Nałogowiec (40,990 p.)

Nie będę wchodził w tematykę co jest lepsze: Rust vs C++ (bo w sumie nie wiem :)  ), ale ciekawi mnie to co napisał tkz. Oznaczałoby to, że Rust stracił przewagę nad nowoczesnym C++, skoro większość wymienionych rzeczy można uzyskać także w najnowszym C++?

Co do składni Rust, rzeczywiście momentami jest udziwniona. W niektórych miejscach przypomina Javę. Ale ogólnie da się przyzwyczaić :)

Trochę próbowałem coś zrobić w Rust, ale muszę powiedzieć, że nie jest to łatwy język. Nie poleciłbym go jako pierwszy język do nauki. Mało jest bibliotek, a te które są mają często słabą dokumentację.

Przykładem niech będzie obsługa stringów (w Rust są chyba trzy rodzaje: String, str i &str). Nie dotarłem do funkcji Trim (jak w .NET) czy strip (python). Nie znalazłem nic w rodzaju f-stringów (python, C#), to jest chyba interpolacji stringów. Nie wiem czy można konkatenować w prosty sposób łańcuchy znaków? Ogólnie brakuje podstawowych funkcjonalności.

Co się może mniej podobać, to rozwiązanie problemu Null, przez wprowadzenie Option(), Some(),... To wprowadza z kolei inne problemy ;) Sytuację Rust psuje też kilka wersji / edycji niezgodnych ze sobą. Duża część kodu w Internecie jest już prawie bezużyteczna, bo nie jest zgodna z nowszym Rustem.

Mam też wrażenie, że zainteresowanie Rust trochę osłabło w ostatnim czasie.

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

@reaktywny

Zgadzam się z Tobą, że Rust nie jest dobry na początek. IMO Rust nie jest nawet dobry dla kogoś kto wcześniej pisał w językach wysokopoziomowych. Tylko programista systemowy może w pełni zrozumieć i docenić ten język po spędzeniu z nim jakiegoś czasu.

Kilka sprostowań:

w Rust są chyba trzy rodzaje: String, str i &str

W Rust &str to po prostu niemutowana referencja na stringa (w uproszczeniu). W przeciwieństwie do char* w C/C++, &str w Rust jest wskaźnikiem grubym, zawiera on dodatkowe informacje na temat przechowywanej pamięci. Jest to więc nie tyle referencja na sam adres, co na cały podzbiór. String to wysokopoziomowy wrapper (jak std::string w C++). Nie istnieje coś takiego jak samo str bez znaku referencji.

Nie dotarłem do funkcji Trim (jak w .NET) czy strip (python).

Klasycznie wystarczy dokumentacja: https://doc.rust-lang.org/std/string/struct.String.html#method.trim

Nie znalazłem nic w rodzaju f-stringów (python, C#), to jest chyba interpolacji stringów. Nie wiem czy można konkatenować w prosty sposób łańcuchy znaków?

Tu też trzeba poszukać: https://doc.rust-lang.org/std/fmt/

Ogólnie brakuje podstawowych funkcjonalności.

Ten wniosek jest wyssany z palca. Jakich funkcjonalności niby brakuje? Rust dysponuje m.in:

  • Własnym managerem paczek.
  • Mnóstwem funkcji dostępnych na iteratorach pomagających w programowaniu funkcyjnym.
  • Domknięciami (funkcje lambda w C++, funkcje anonimowe w JS).
  • Złożonym wsparciem dla programowania wielowątkowego w bibliotece standardowej (słyszałeś na przykład o kanałach?)
  • Wbudowanymi funkcjonalnościami do pracy z siecią.

Co się może mniej podobać, to rozwiązanie problemu Null, przez wprowadzenie Option(), Some(),... To wprowadza z kolei inne problemy ;)

To rozwiązanie ma wady jak każde inne. Ma jednak podstawowe zalety: standaryzacja i przymus obsługi błędów. Funkcje zwracają wartości typu Option lub Result. Nie możesz dostać się do pożądanych danych, dopóki samemu nie odwrapujesz takiego obiektu, nie ma więc przy tej metodzie czegoś takiego jak nieobsłużony wyjątek lub błąd Null Pointer Exception tak dotkliwy nawet w Javie.

Sytuację Rust psuje też kilka wersji / edycji niezgodnych ze sobą. Duża część kodu w Internecie jest już prawie bezużyteczna, bo nie jest zgodna z nowszym Rustem.

To niestety prawda, nie jest to problem tylko Rusta, podobne konflikty zachodzą m.in. w środowisku Flutter/Dart. Nie unikniesz tego w szybko rozwijającym się języku. Dużym problemem jest nadmiar niedojrzałych paczek w fazie alfa oraz tych porzuconych przez twórców. To nie znaczy bynajmniej, że nie mamy stabilnych i niezwykle użytecznych bibliotek, przykładem może być np. Tokio.

Mam też wrażenie, że zainteresowanie Rust trochę osłabło w ostatnim czasie.

Też nie wiem na jakich danych jest to oparte.

*Tak z ciekawości, gdzie niby składnia Rusta przypomina Jave?

1
komentarz 29 czerwca 2021 przez reaktywny Nałogowiec (40,990 p.)

+1

Dzięki wielkie za sprostowania, wyjaśnienia i przede wszystkim, że pociągnąłeś dalej ten wątek, ciekawy wątek!

Rusta nie znam, próbowałem napisać prosty scraper (pierwszy mini programik w Rust w moim życiu), ale nie jestem z niego zadowolony. Zabrakło kilku rzeczy. Dzięki za info o method.trim i fmt. Nie mogłem tego znaleźć. Szukając trafiłem na macro format! ale okazało się nieprzydatne (lub po prostu nie potrafię z niego korzystać). A w przypadku trim znalazłem wątek na forum rust, jak napisać własną metodę trim i się załamałem :)

Tak z ciekawości, gdzie niby składnia Rusta przypomina Jave?

Przy generykach widać trochę podobieństwa. Nie mówię, że składnia jest identyczna do Javy, tylko jest to ten sam "poziom udziwnienia" :)

Fajnie, że jest ktoś na forum kto zna Rust - będzie kogo zapytać ;) w razie napotkanych problemów.

Chciałbym zapytać @Jakub 0, czy znasz także C++ i czy mógłbyś porównać je - oczywiście tak z grubsza, najważniejsze cechy. Jakie zalety Rust wciąż ma nad nowoczesnym C++ (17 / 20)? Zalety C++ nad Rust są raczej oczywiste (standaryzacja, duża liczba bibliotek/frameworków/ ogromne community + wiele ofert pracy).

 

 

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

Jakie zalety Rust wciąż ma nad nowoczesnym C++ (17 / 20)? 

Nie orientuje się bardzo dobrze w C++ powyżej standardu 11. Moim zdaniem jednak ewentualne zalety Rusta są następujące:

Cargo - To prawda, że dla C++ mamy narzędzia takie jak CMake i managery paczek (np. https://conan.io/). Nie są one zbyt proste w nauce, z cargo bardzo łatwo zacząć, a prostota jego użytkowania jest zbliżona do pip lub npm. W przeciwieństwie do C++, nie musisz mordować się z ręczną instalacją bibliotek lub uczyć się złożonych narzędzi tylko po to żeby dodać jakąś zależność. Tu przeważnie po prostu kopiujesz linijkę tekstu do pliku Cargo.toml.

Testy i dokumentacja - Rust i Cargo posiadają wbudowane narzędzia do tworzenia testów jednostkowych i integracyjnych. Do wygenerowania dokumentacji na podstawie komentarzy wystarczy jedna komenda:

cargo doc --no-deps --open

Zadziała to niezależnie od platformy, bo jest wbudowane w standardowe narzędzia.

Wymagający kompilator - Czasami w C++ w zależności od implementacji, kod różnie się zachowa w różnych warunkach przyrody. Kompilator Rusta wymusza, by kod zachowywał się w sposób przewidywalny. W C++ osiągniesz to samo stosując się do dobrych praktyk, w Rust po prostu musisz się zastosować. Jest to język gdzie na nowo cieszysz się z tak prostej rzeczy, że program się w ogóle skompilował :) Ma to największe znaczenie przy programowaniu wielowątkowym. Ogólnie restrykcje jakie wprowadza rust, sprawiają, że zanim zaczniesz pisać kod, musisz poważnie zastanowić się nad jego strukturą.

Rozbudowany mechanizm makr - Marka w Rust są używane trochę jak dekoratory w Python czy TS i są dosłownie wszędzie. Ich zaletą jest oczywiście zero-cost abstraction.

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

Ja po prostu lubię Rust za jego piękną i bardzo konsekwentną składnie, dużo wygodniej mi się w nim pisze niż w C++. Nie wiem czy zagłębiałeś się np. w enumy, albo wyrażenie match. Wszystko jest idealnie przemyślane i bardzo oszczędza czas.

komentarz 29 czerwca 2021 przez reaktywny Nałogowiec (40,990 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,990 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,990 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,990 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,442 wizyt
pytanie zadane 18 października 2021 w Inne języki przez Conax Nowicjusz (150 p.)
0 głosów
3 odpowiedzi 6,179 wizyt
pytanie zadane 18 marca 2016 w SQL, bazy danych przez jankiel89 Początkujący (450 p.)
0 głosów
0 odpowiedzi 257 wizyt
pytanie zadane 26 kwietnia 2022 w C i C++ przez Maciksa Nowicjusz (120 p.)

92,555 zapytań

141,403 odpowiedzi

319,554 komentarzy

61,940 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

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy 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!

...