Czy C++ będzie dobrym językiem na początek z programowaniem

0
PerlMonk napisał(a):

@KamilAdam: Nie pisałem nic o trudności C++.

No to w zasadzie o czym piszesz?

Żeby nie było, nie chcę tu polecać C++ jako pierwszy język. Po prostu na pewnym poziomie nie różni się on od Javy czy C#. Da się nauczyć C++ jako pierwszy.

No ale ktoś zaraz będzie chciał przekroczyć ten pewny poziom i zrobić Hello World z dynamicznym stringiem. (np sklejanie stringów) I rozwali się o bagno C++. O to że większość tutoriali uczy zarządzania wskaźnikami w starym stylu. O to że C++ ma X implementacji Stringa. itd itd. A w Javie i C# (tfu, tfu) to po prostu działa. I nie musimy się przejmować czy String jest zaalokowany na stosie czy stercie itd itd

3

@mx100: Poszukaj sobie kursów do C++, Pythona, Javy, etc. i po tygodniu sam się przekonasz, który język Tobie najbardziej podchodzi.

Nie ma sensu się wykłócać o "lepszość", bo każdy język ma jakieś wtf. Co z tego, że forum powie Ci, żebyś brał X, skoro będziesz się przy nim męczył i pisanie nie będzie Ci dawało żadnej satysfakcji. To nie lata '90, gdzie zbytnio nie było wyboru i człowiek uczył się TP, bo tylko to mógł sobie załatwić. Teraz jest internet, multum języków dostępnych od ręki wraz z kursami, jutubami, blogami... Skorzystaj z tego.

1

@KamilAdam: "No to w zasadzie o czym piszesz?"
O umiejętności rozwiązywania problemów (w pierwszym poście o tym wspomniałem). Można w sobie ją rozwinąć na tyle, że używany język stanie się sprawą drugorzędną.
Dlatego polecam naukę algorytmiki, żeby nauka jakiegokolwiek języka nie sprawiała trudności.

0

@tajny_agent:
Najlepsza rada spośród wszystkiego co można tutaj przeczytać - chociaż czasowo może mu to długo zająć

@KamilAdam

Uważam że C++ jest w cholerę trudny i przekracza możliwość mojego pojmowania

moje zdanie jest takie. C++ nie jest trudny bo zależy kto ciebie uczy.

Jeżeli C++ uczył ciebie jakiś typ co miał manię wyższości i potrafił skomplikować prostą rzecz do rangi absurdu w taki sposób by nikt tego nie zrozumiał i tym samym podniósł swoje ego jaki jest "mundry" to się nie dziwię, że połamałeś na tym zęby...

Ja byłem laikiem jeżeli chodzi w ogóle o programowanie. Nawet nie miałem pojęcia co to jest zmienna, nie mówiąc już o tym gdzie zaczyna i kończy program... Sięgnąłem po książkę Grębosza (tak wszyscy będą gadać jak gość nie trzyma się standardów, bo w sumie w nauce na początku nie chodzi o trzymanie się standardów ale o zrozumienie istoty programowania) i w sumie dzięki niemu nauczyłem się programować w miarę dobrze.

4

Jeśli warto zacząć od C żeby nauczyć się o pamięci, to czemu nie od assemblera? Dla mnie poziom argumentacji taki sam. Język za służyć rozwiązywaniu problemów. Jak ktoś chce ogarniać pamięć to niech obejrzy ciekawy wykład o Garbage Collector-ach, albo może pobawić się wskaźnikami jak już coś będzie umiał. A kolekcje są dla mnie bardziej podstawowym elementem niż wskaźniki.
Generyki w C++ to dramat pod względem błędów kompilatora.
Dla mnie zaczynanie od C to kult cargo.

1

Zanim zaczniemy konstruować chochoły, że naukę programowania najlepiej rozpocząć od skonstruowania własnego komputera z worka tranzystorów wypada zaznaczyć, że chodzi mi raczej o to, że C jest dla mnie najbardziej optymalnym kompromisem tej początkowej wysokości na potrzeby nauki - a nie rozwiązywania konkretnych problemów, bo to zupełne inne zagadnienie. Każda rzecz, którą dostajemy już gotową, zaimplementowaną w jakiejś bibliotece to rzecz, co do której przeważnie nie wiemy za działa - ot, czarna skrzynka z magią, wstawiamy dane, zbieramy wyniki. Akurat proces nauki powinien jednak według mnie polegać na tym, że zaglądamy za te kulisy i próbujemy zmierzyć z surową techniką, a nie wiecznie składać domki z gotowych klocków. I taki asembler też ma swój walor edukacyjny, więc też pożytecznym może być zaglądnięcie kiedyś jak on wygląda, jak i chociażby jak wygląda proces w pamięci. Skoro jednak nie jako pierwszy język (bo tego przecież nikt, łącznie ze mną, nie będzie zalecał), to pozostaje pytanie o tą początkową, optymalną wysokość, czy jeszcze warto zobaczyć te "przerażające" wskaźniki, czy udawać, że ich nie ma. Jak dla mnie jak najbardziej warto.

3

Polecanie w dzisiejszych czasach 40-sto letniego C do nauki programowania (algorytmy, instrukcje kontrolne, operowanie na zbiorach, metody numeryczne, struktury danych, obsługa plików itd) to czysty sadyzm.
Ale to tylko moja opinia.

3

Jako programista c++ uważam że nie powinno się zaczynać od tego języka, bo jest zbyt trudny mimo tego że uczą go na uczelniach.
Najlepiej zacząć od pythona i dopiero po jakimś czasie brać się za języki obiektowe jak np Java/C# a dopiero później jak już się coś ogarnia to można sobie wziąć tego C albo C++, żeby zrozumieć jak działa zarządzenia pamięcią, co to są wskaźniki itd

1
Czitels napisał(a):

Jako programista c++ uważam że nie powinno się zaczynać od tego języka, bo jest zbyt trudny mimo tego że uczą go na uczelniach.

Najlepiej zacząć od pythona i dopiero po jakimś czasie brać się za języki obiektowe jak np Java/C# a dopiero później jak już się coś ogarnia to można sobie wziąć tego C albo C++, żeby zrozumieć jak działa zarządzenia pamięcią, co to są wskaźniki itd

Zwłaszcza, ze ogrom programów szkolno-studenckich w C ma to zrobione źle, ma leaki, ma buffer overflowy itd - tylko są w małej skali i wykonują się krótko, jednorazowo, i się nie doświadcza błędu. Sławny zwrot "uindefined behaviour" się kłania.
I potem "uczenie" przyklepuje wrażenie, że "piszę bezbłędnie bo program działa"

2

Nie wiem skąd to zafiksowanie na punkcie wskaźników i obsługi pamięci, bo IMHO o wiele ciężej jest ogarnąć np. ADL, move semantics czy szablony. Tym bardziej, że smart-pointery i kontenery pozwalają ograniczyć żonglowanie wskaźnikami do minimum.

1

Nie jestem zawodowym programista C++, ale we własnym zakresie uczyłem się C++ około dwa lata w tym napisałem kilka programów okienkowych i parę pomniejszych gier.

Nauka od C++ na sam start ma pewne plusy

wpływ na charakterek
  • nie ma szybkich efektów więc c++ hartuje cierpliwość + samodzielność
  • linkowanie bibliotek wymaga czasu i jeszcze większej cierpliwość + samodzielność
  • połapanie się w winapi, i innych niskopoziomowych biblitekach hartuje cierpliwość i samodzielność,
  • komunikaty komplilacji bywają długie i często nic nie mówią, ale to hartuje znowu cierpliwość + samodzielność
  • jak błąd w trakcie wykonania to program leży i ciężej się połapać o co chodzi, ale tak człowiek namacalnie przekonuje się do pracy z debugerem, preprocesorem czy valgrindem i to też hartuje.. eh

Po C++ na przestrzeni 10 lat nie miałem takiego problemu który powaliłby mnie na kolana. Tylko w c++ spotkałem się z różnymi zagadnieniami które bite przez 2-3 dni nie pozwalały mi się poruszyć do przodu nawet o krok.

wpływ na obszary zainteresowań
  • w c++ wiele rzeczy jest trudnych na start stąd łatwiej jest się przekonać do tematów związanych z algorytmami
  • dawniej książki od algorytmiki głównie przykłady miały w c/c++ albo pascalu więc ktoś kto unika c++ traci dostęp do ciekawszych książek (i poza tym książki w c++ poruszały ciekawsze tematy np. seria perełki programowania dotycząca programowania gier)
  • analogicznie jeśli kogoś interesuje opengl lub rzeczy specyficzne dla c/c++, dzisiaj to początkujący wybierze pythona ale domyślnie będzie omijał te tematy, które były super ciekawe w c++
wpływ na naukę kolejnych języków
  • po c++ wszystkie pozostałe języki imperatywne wyglądają jak zabawki przeznaczone dla dzieci, i z perspektywy c++ łatwiej jest pojąć o co chodzi np. u mnie wystarczył w zasadzie 1 dzień na pythona, by pisać komercyjne programy, a w przypadku javy niecały tydzień.

Ogólnie jak ktoś wyjdzie z C++ to moim zdaniem szybciej przekona się do tematów związanych z współbieżnością, projektowaniem klas, używaniem systemowego api.

EDIT:

C++ jest trudniejszym językiem i zaczynanie od niego jest bardziej wymagające - to fakt, ale poziom wejścia w takie tematy jak pisanie kompilatora, serwera ala apache/nginx, czy rzeczy na bazie opengl nie są lżejsze ani trochę więc jeśli ktoś się obawia C++ to w sumie co mu zostanie? Klepanie formularzy dla Grażynek bądź scalanie gotowych libów? I nie chodzi mi o to, że c++ jest najlepszy itp, bo nie jest, też nie jestem zakochany w tym języku bo od lat w nim nie koduje, ale c++ to wystarczająco dobry język do rzeczy mniej oklepanych.

7

A ja uważam, że c++ na początku to idiotyzm.
To tak jak nauka jazdy samochodem od gabarytowego tira, na oblodzonej drodze.

Argumenty za są zawsze takie same: wymaga dużej wiedzy i zrozumienia procesów, żeby go stosować - jest bardzo trudny, wiec jak sie go nauczysz, to wszystko bedziesz umiał.
Gdyby podążać za tą logiką w innych branżach: nauka czytania - Ulises, nauka pływania - otwarty ocean, nauka jazdy konno - ujeżdżanie byka, itp.
Nie lepiej uczyć się od czegoś prostszego, np. c#, js, python?

0

Dziś wydano QtCreator 4.14 czy on ma wsparcie dla C++20 i Rust?

1

QtCreator to tylko IDE, kwestia bardziej tego, którą wersję bibliotek ściągniesz i kompilatora.

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