Inceput in C++:cum creez grafica?

Sunt clasa a 11-a mate info iar la scoala invat c++ dar merge cam incet(momentan facem doar tablouri dimensionale cu numere si text).Vreau sa avansez si sa invat cum sa creez aplicatii (cu grafica),nu doar chestii in consola.Ce librarii de C++ ar trebui sa invat/ce altceva ar trebui sa invat(OpenGl etc)?Pentru a crea diverse aplicatii(ex:calculatorul de pe windows 7 sau o chestie din asta).De unde sa incep?

Am invatat si am facut niste practica cu javascript respectiv jquery cateva luni dar m-am plictisit(nu prea ma atrage designul,vreau ceva cu mai multa matematica),vreau sa ma orientez pe partea astea de software.Una dintre aplicatiile(daca o pot numi asa) facute cu jquery este asta.Nustiu cat de utila ar putea fi cuiva dar am facuto doar pentru practica.

Din javascript am invatat cum sta treaba cu tipurile de date,array-urile,functiile etc.

Deci de unde incep?ce trebuie sa invat?

Prin grafica banuiesc ca intelegi GUI, nu 3D. Îţi sugerez să începi cu QT, este un framework crossplatform (Windows, Linux, MacOSX, alte *nix-uri, chiar si Android) extrem de capabil. Eu in tinereţile mele am realizat cu el QFaxReader (cand fax-ul mai era la moda :slight_smile:).

Majoritatea aplicatiilor C++ folosesc Chromium Embedded Framework sau CEF pentru interfete (chiar si Qt trece usor pe el). Iar pentru jocuri se foloseste in general Unreal Engine 4 sau Cocos2d-x.
Eu personal nu folosesc C++ dar acum lucrez la ceva scris in C++ care integreaza CEF si node.js ca limbaj de scripting,

Ce inveti la scoala e C cu cout si cin. C++ -ul standard de azi e C++ 11 si C++14 (C++17).
De exemplu nu cred ca initializati variabilele cu { } in loc de = ca sa fie respectate tipurile la compilare, nu folositi auto in loc de tipuri ca sa nu aveti probleme cu alocarea memoriei. Sa nu mai zic nimic de int i = (int) x; in loc de int i = static_cast<int>(x);

Deci prima data invata C++, treci peste asta rapid : (daca nu intelegi ceva -> Google)

https://lefticus.gitbooks.io/cpp-best-practices/content/01-Preface.html
(cartea aceasta mi se pare foarte faina, citeste tot incepand cu capitolul style)

sau


Care e ceva mai detaliat.

Gasesti aici orice altceva :

Dupa ce iti va fi util daca vrei sa faci ceva fain :

  1. Implementeaza un server web gen civet
  2. Parsing la TXT, CSV, JSON, YAML si JSON.
  3. Baze de date, in special sqlite si mysql.
  4. Regex
  5. Invata sa folosesti Visual Studio Community.
  6. Invata C#, mult mai multe resurse, pe Windows aplicatiile si interfetele native se fac cel mai usor cu C#.
1 Like

Eu nu m-as incurca cu C#, in 2017 nu prea iti mai permiti sa fii captiv pe o singura platforma…

Xamarin e imens, .NET Core e din ce in ce mai bun, nu as zice ca esti captiv pe o singura platforma.

Chiar o sa zic ca Microsoft ofera suport pentru linux cu .NET Core cel putin la fel de bun ca Qt. Poti dezvolta pe linux de pe windows. (invers e mai greu)

2 Likes

Pai si ce sa faci cu .NET Core? Asta parca nu are si parte de GUI.

GUI-ul nu mai e nativ in 2017, GUI-ul ti-l faci cu HTML, CSS, JS, JSX sau ceva limbaj bazat pe XML.

Poate sunt eu de modă veche, dar prefer ca aplicatiile mele sa fie lightweight :slight_smile: Cu toate ca masinile actuale au RAM si putere de procesare din belşug, sunt sigur ca utilizatorii prefera aplicatiile foarte sprintene. Mi se pare total exagerat ca o aplicatie sa vina cu zeci sau sute de megabytes de biblioteci…

3 Likes

+1 pentru C++/Qt. E mai mult decat GUI, o sa te ajute enorm sa intelegi si sa aprofundezi mai mult concepte legate de OOP, arhitectura MVC. Tot in liceu am inceput si eu cu el si sansele sunt sa ti se potriveasca ca o manusa.

Daca tot a deviat @isti37 discutia … Intr-adevar C# cu .NET este inca destul de limitat in ceea ce priveste platformele pe care pot rula, asta pentru ca nu a fost gandit de la inceput sa ruleze in mai multe ecosisteme, dar este mai cautat la noi in tara pentru ca e putin mai accesibil deja ai Microsoft peste tot, so why bother? am I right? ).

Totusi, pentru chestiile serioase, o sa se foloseasca C++/Qt in continuare … Automotive, Embedded, IoT. Interfetele in Qt merg bine peste tot, iar sansele sunt ca tu sa ai Qt/Qml in bordul masinii.

QML vs HTML5: http://blog.qt.io/blog/2017/07/28/qml-vs-html5/
QT Embedded: https://www.youtube.com/watch?v=iE8quCit4vM

3 Likes

Multumesc tuturor pt raspunsuri,de asemenea am auzit de SFML.L-ati folosit careva?daca da cum vi se pare?

Pe Windows mai ai si WPF si UWP.

Dar cam tot ce tine de windows desktop development e pe duca. Aplicatii de business s-au mutat toate pe web. Iar multe dintre cele care inca mai sunt native pentru o platforma sau alta sunt construite pe Electron sau pe vre-un framework urias gen Qt. “Aplicatii” in sensul non-web se fac pentru Android si iOS daca chiar ai nevoie de 100%-ul platformei. Iar daca nu, sunt de multe ori aplicatii web impachetate ca o aplicatie normala.

2 Likes

Well, idea ar fi să ai logica separată de interfață.

Logica o poți face în C/C++ și interfața să fie HTML/Javascript.