Przejście z Pythona na C++

1

Od 6 miesięcy, jestem nazwijmy to początkującym programistą/juniorem etap poszukiwania pracy mam już za sobą.

Wszystkie zrealizowane dotąd przeze mnie projekty pisałem w Pythonie.

Po drodze trafiło mi się rozwijanie dość zaawansowanego projektu w Django( o którym uprzednio nie miałem żadnego pojęcia, oprócz tego że jest i do czego służy), czy też napisanie dość prostego skryptu, który rozrósł się na wiele funkcji, i jak dotąd nie trafiłem na problem którego nie dało by się rozwiązać.

Aczkolwiek teraz wszystko wskazuje na to, że przydałoby mi się przejść na pisanie w C++,i tutaj zaczyna się mój problem.

I o ile dla mnie python, był językiem o niskim progu wejścia, w którym wszystko było dość intuicyjne, o tyle nie mam pojęcia jak zacząć swoją przygodę z C++ ( oczywiście na studiach miałem 6 msc kurs z c++, ale jego poziomu wolałbym nie komentować).

Zaczynając swoją przygodę, z Pythonem oglądałem dość dużą ilość tutoriali co jak i z czym, oraz rozwiązałem sporą ilość zadań na platformach (w moim przypadku był to codewars), o tyle teraz rozwiązywanie ich za pomocą C++, uważam za nieefektywne, bo są to w większości problemy analityczne (wykorzystujące głównie logiczne myślenie a sama umiejętność pisania jak dla mnie jest tam umiejętnością poboczną.

Rozwiązywanie problemów wymagających analitycznego myślenia za pomocą C++, sprowadza się w moim przypadku do sprawdzania jak wygląda składnia dla tego języka, ewentualnie odświeżanie składni C++, która pamiętam z pierwszego roku studiów.

Nie bardzo wiem jakie podejście do tematu początków pisania w C++ byłoby najbardziej efektywne, z możliwych rozwiązań widzę:

  • oglądanie ogólno dostępnych tutoriali (większość z początku skupia się na tym czym są zmienne, jakie są ich typy itp, potem są wszelkiego rodzaju pętle, a o tym słyszałem już niejednokrotnie.

  • podejście drugie proponowane przez ludzi w pracy to napisz prosta aplikacje pokroju zwykłej gry w węża

  • trzecia opcja to odwołanie się do literatury (Symfonia C++ itp)

Szukam podejścia najbardziej efektywnego, które w dość krótkim czasie (około 3 msc pozwoli mi pisać niezbyt zaawansowany kod)

Może, ktoś z forumowiczów spotkał się z podobnym problem i znalazł jakiś fajny pomysł jak ugryźć temat.

Z góry przepraszam, za wszelkie błędy ortograficzno/interpunkcyjne, ale niestety z polskim nigdy nie było mi po drodze.

1

IMHO bardzo istotne jest aby zacząć uczyć się właściwego (najnowszego) standardu C++.
Język ten powstał w latach 80 i od tego czasu sporo się zmienił - dzisiaj obowiązującym standardem jest C++ 17 a w przyszłym roku wchodzi C++ 20 (który wprowadza sporo istotnych zmian).
Niestety wiele kursów, książek i materiałów dostępnych w internecie jest już mocno nieaktualnych. Ucząc się z nich, ryzykujesz że, będziesz poznawał archaiczny standard języka C++, którego nie za bardzo można użyć w nowoczesnym programowaniem.

Dla przykładu można tutaj przedstawić sposób wykorzystywania wskaźników.
Żeby utworzyć dynamiczną tablicę posiadającą 20 elementów (typu int) na stercie, należało utworzyć ją za pomocą operatora new oraz później zadbać o usunięcie. (w przeciwnym wypadku groził by wyciek pamięci).

{
   int *tab = new int[20]; // tworzymy tablicę przy pomocy tzw. gołego wskaźnika
   tab[2] = 5 ;
   .....
   delete []tab;  // programista nie może zapomnieć o posprzątaniu po sobie
}

Aby rozwiązać ten problem w dzisiejszym standardzie do dyspozycji mamy tzw. inteligentne wskaźniki, które odpowiedzialne są za posprzątanie po sobie pamięci w momencie usunięcia obiektu.

{
   auto tab = make_unique<int[]>(20); // tworzymy tablicę przy pomocy inteligentnego wskaźnika i nie musimy już martwić się o zwolnienie tego zasobu
   tab[2] = 5 ;
   .....
   
}

Jak widać rozwój C++ języka doprowadził do sytuacji, w której nie zalecane jest już używanie gołych wskaźników w programowaniu, gdyż zwiększa to prawdopodobieństwo wycieku pamięci.
Dlatego tak ważne jest aby uczyć się w oparciu o najnowsze rozwiązania dostępne dla danego języka.
Ze swojej strony mogę polecić stronę https://www.learncpp.com.

0

Nie znajdziesz lepszego podejścia niż praktyka. Możesz czytać dowolną ilość literatury i oglądać tutoriale nawet w WC, ale jak nie będziesz programował, to nic z tej wiedzy nie utrwalisz.

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