Nauka C++ a później biblioteka Qt


(quantumrush) #1

Czy dobrym połączeniem jest nauka C++ (właśnie się uczę) a później biblioteka Qt? Czy jakąś inną blblioteką? Zamierzam pisać programy dla Windowsa i Linuxa. Zastanawiam się też nad Pythonem, ale to chyba przeważnie Linux.


(Fizyda) #2

Python to język skryptowy więc uruchomisz go na każdym systemie. Co do C++ to Qt jest biblioteką dla C++ więc połączenie jak najbardziej dobre. Pisząc w C++ będziesz musiał skompilować program pod odpowiednie platformy i w zależności od stopnia złożoności kodu (wykorzystanych rzeczy) mogę być różnice pomiędzy pisaniem kodu dla poszczególnych systemów więc będziesz musiał albo użyć preprocesora do kompilacji kodu pod konkretny system, albo napisać dwie wersja jakiegoś fragmentu kodu dla poszczególnych OS’ów. Dodatkowo jeśli będziesz używał specyficznych bibliotek dostępnych na jeden system, to musisz poszukać alternatywy dla niej też na drugi system, a to wiąże się z tym że twój kod musi umieć obsłużyć zapewne dwa różne API biblioteki ponieważ wątpię by dwie różne biblioteki na różne systemy miały identyczne API.
Jak widzisz jest więcej zabawy i trzeba więcej wiedzieć w przypadku C/C++ dla multiplatformowego kodu, nie zmienia to faktu że jest to jak najbardziej możliwe.

Python ma zupełnie inną składnię niż C++ więc jeśli Ci to nie odpowiada, a do tego nie chcesz używać skryptowego jeżyka programowania możesz zainteresować się Java. Język “kompilowany”, a do tego składnia prawie identyczna jak w przypadku C++, a jeden kod uruchomisz też na każdym systemie.


(olszam) #3

Tu zależy co chcesz robić? QT bardziej jest kojarzone z środowiskiem multiplatformowym więc prawdopodobnie kompilowany kod będzie działał pod wszystkie systemy(chyba bo nie sprawdzałem). Z qt korzysta się właśnie z myślą o multiplatformowości i powiedzmy z początku do tworzenia okienkowych programów.Ja ogólnie bym C++ wsadził do kategorii z grami gdzie ktoś chce tworzyć gry. W sumie to ja bym się zastanowił najpierw co chcesz robić bo nic na siłę.


(Fizyda) #4

Tak ponieważ jako biblioteka został przystosowany do różnych systemów operacyjnych. Ale to nie jest jakaś magiczna właściwość, lecz to że Qt jest warstwą abstrakcyjną dla różnych interfejsów do budowania interfejsu na różnych systemach. Nie zmienia to faktu że trzeba mieć odpowiednią wersję Qt na odpowiedni system, czyli skompilować ją na dane środowisko. Qt w dużym uproszczeniu to wspólny interfejs dla wielu środowisk graficznych na różnych systemach i zawiera duża ilość if-else-if preprocesora który wybiera odpowiedni fragment kodu który pasuje do danego systemu.


(nintyfan) #5

Python, jak Javę, też można skompilować. Domyślnie interpreter Pythona kompiluje kod do plików .pyo, a jeszcze jest program py2exe.


(Fizyda) #6

Ciekawe, człowiek to się nigdy nie przestaje uczyć ;). Powiem szczerze nie wiedziałem z tego powodu że raz w życiu pisałem kod w pythonie i szczerze mówiąc do gustu mi nie przypadł, ale dobrze wiedzieć, dzięki ;).


(quantumrush) #7

W C++ zamierzam pisać gry, robić Demoscenę, a w Pythonie skrypty w Linuksie


(olszam) #8

skoro tak to, z C++ najlepiej poznać podstawy tego języka i potem najlepiej już uczyć się pisania pod Qt, na koniec w wolnym czasie poćwiczyć sobie coś z pythona bo jego można się szybko nauczyć jak już ma się jeden jakikolwiek język programowania ogarnięty.


(Fizyda) #9

Może o czymś nie wiem bo nie znam za dobrze Qt, ale wydaje mi się że nie służy ono do pisania gier lecz do tworzenia UI.


(quantumrush) #10

To co byś polecił, jaką bibliotekę, tylko nie Allegro bo zamierzam tworzyć trochę ambitniejsze gry 3D. A co z Javą?

//Edit
Potrzebna będzie znajomość Open GL - nie chcę DX. Czy OpenGL jest trudny


(Fizyda) #11

Ja bym w Javie gier nie robił, ale pewnie zaraz ktoś wyskoczy, że minecraft jest napisany w Javie.

Mówiąc szczerze z własnego doświadczenia nic nie polecę bo nigdy gier nie pisałem. Allegro jest w ogóle rozwijane? Bardziej bym chyba patrzył coś w stronę Unity, dużo zależy od tego czy to projekt komercyjny czy nie, czy open source czy nie oraz tego na jakiej licencji silnika potrzebujesz. Druga sprawa na jakie systemy ma być silnik.
Myślę że nie da się jednoznacznie odpowiedzieć, może będziesz musiał napisać swój silnik. Może Source, albo jakiś mały projekt open source. Ciężko powiedzieć.

Jedno i drugie to tylko biblioteka, więc trudność nauki biblioteki tylko zależy od jej wielkości - dużych uczysz się dłużej. W obu przypadkach nadal będziesz musiał mieć dość dobrą wiedzę z algebry matematycznej, a nawet i momentami z analizy matematycznej. W przypadku silników gier (bo silniki gier wykorzystują właśnie OpenGL/CL, DX do generowania obrazu) liczy się tylko i wyłącznie matematyka, operacje na macierzach (te matematyczne) i wektorach to trzeba umieć nawet w środku nocy obliczać.