Zaloguj się, aby obserwować  
Kryst90

Game Design - studia

14 postów w tym temacie

Witam!

Widziałem jedynie temat dotyczący ogólnie studiów, ale żadnego dotyczącego bezpośrednio kierunku projektowania gier w Polsce. Z tego powodu iż sam za rok mam zamiar spróbować swoich sił w tym kierunku (nie tylko ze względu na sam fakt projektowania gier) chciałbym się was zapytać co o tym sądzicie, jakie dokładnie uczelnie oferują taki kierunek oraz jakie są wrażenia.

Jeśli temat już taki jest to proszę moderatorów o usunięcie i przepraszam za spam.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

/.../

W naszym kraju NIE MA dobrych studiów tego typu. Kręci cię tworzenie gier? To idź na informatykę do dobrej uczelni (Politechnika Wrocławska czy Warszawa choćby). I w przerwach pomiędzy zajęciami zacznij samemu coś tworzyć.

Bo w prawdziwym nieakademickim świecie w prawie każdej branży IT twoje wykształcenie jest w zasadzie bezużyteczne. Może i spytają o dyplom i magisterkę ale sekundę później pojawi się pytanie... "A portfolio Pan jakieś ma?". I to ono zdecyduje. Studia o kierunku "tworzenia gier" ci tego portfolio nie dadzą. Informatyka zresztą czysta też nie.

To jest taki kierunek do którego uczysz się samodzielnie (jak zresztą ogólnie w informatyce) - poczytaj o polskich game jamach i spróbuj wziąć w jakimś udział, może dołącz do jakiegoś projektu Indie, naucz się programować (nie, tego na studiach tak naprawdę nie uczą) czy jakieś popularne frameworki typu Unreal Engine... i wtedy masz szanse. Ale na uczelnię nie licz - te dobre i uznane nauczą cię matematyki i ogólnej informatyki. Te "dziwne" typu "tworzenie gier" nie nauczą cię nawet tego. Największe szanse na zdobycie pracy w tej branży będziesz mieć zresztą podczas stażów (a firmy w Polsce zajmujące się tym typu CDP Red jeśli już jakiegoś studenta wezmą to raczej z Warszawy i Politechniki a nie bliżej nieznanej uczelni która się chwali "tworzeniem gier") zazwyczaj jednak zaczynając od samego dna jakim jest "tester gier"... które w rzeczywistości graniczy z sadomasochizem.

Bo tworzenie gier to pojęcie NIEZWYKLE szerokie. Jaki element masz na myśli - projektowanie map? AI? Engine? Oskryptowanie? Elementy sieciowe? Animacja? Udźwiękowienie? A może fizyka? Żadne studia nie nauczą cię nawet jednego z nich a zapewne ograniczą się do wspomnienia o wszystkich ale bez szczegółów które są niezbędne w pracy. Zwłaszcza że wiążą się z zupełnie innym zakresem wymaganej wiedzy.

Ogółem więc - po prostu dobra uczelnia i kierunek informatyczny + mnóstwo samodzielnej nauki. Zanim pojawi się prawdziwy game development u nas na studiach to minie jeszcze wiele wiele lat. Zresztą to problem globalny a nie tylko w Polsce, program zawsze jest przestarzały o wiele lat.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Ja zawsze niezmiennie będę polecał coś takiego.

Edytor do którejś z gier, im większą dający swobodę w tworzeniu określonego elementu rozgrywki tym lepiej.
Jeśli będziesz w stanie ckolwiek w nim tworzyć na dłuższą metę, to możesz drążyć temat swojej przyszłości jako "twórcy gier" dalej.

Wrażenie pewności że tworzenie gier to prosta, łatwa i przyjemna sprawa szybko zderza się z rzeczywistością właśnie podczas prób stworzenia czegoś samemu, mając do dyspozycji nawet tak proste narzędzie jak edytor dołączany do którejś z gier.
Jeśli przyszłość wiążesz z "tworzeniem gier", a nie masz najmniejszego pojęcia już teraz jak ów proces produkcyjny wygląda, ani nie masz określonego konkretnego elementu gry przy którym chciałbyć brać udział w tworzeniu, to raczej najlepiej sobie odpuścić całą sprawę.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

>
Na UJ lub AGH był chyba jakiś kierunek z tym związanym. Co do uczelni, to nie jest istotne czy to Uniwersytet czy Politechnika ważne, żeby była dobra. UW/PW nie gra roli patrząc na renomę to UW lepszy ale trudniejszy.
Na UWr też znam sporo osób, które tworzyły gry więc ważne jest tylko, żeby dobra uczelnia była.

Moim zdaniem są dwie drogi pierwsza stricte techniczna i tu idziesz na politechnikę i robisz ambitne projekty. Druga to techniczno-teoretyczna i tu idziesz na uniwerek i łączysz technikę z teorią. Jeśli nie masz takiej teoretycznej rozkminy, to lepiej iść na politechnikę. Jeśli masz i jesteś jakiś zdolny, to brałbym Uniwerek bo poradzisz sobie wszędzie.

Osobiście bym wybrał Politechnikę jakbym chciał tworzyć gry i skupił się na projektach.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Dzięki za odpowiedzi i sugestie. Było to tylko takie luźne pytanie co o tym myślicie w Polsce. Jasne, że wiem, że projektowanie gier nie jest łatwe i słowo "projektowanie" posiada ogromny zakres. Programowanie i czysta informatyka (jako kierunek) niestety mnie nie interesują, nie wiem dlaczego, po prostu nie mogę się do tego przemóc.

Trochę programowałem (głównie na lekcjach informatyki), nie powiem, sprawia ogromną frajdę gdy coś jednak działa ale nie posiadam takiego wewnętrznego do tego zapału. Może posiadacie jakieś tutoriale lub poradniki, które stricte idą w kierunku gamingu (tak wiem, że najpierw trzeba opanować podstawy itp., ale osobiście lubię się uczyć przez potrzebę i podczas tworzenia niż wykonywać poszczególne lekcje i opanowywać jakieś elementy).

Wracając do tematu. Najbardziej interesowała by mnie grafika. Głównie siedzę w 2d - photoshop/illustrator, ale też posiadam całkiem niezłe umiejętności w 3d. Sądząc po waszych odpowiedziach jest tak jak się spodziewałem - czyli w tej branży po prostu osiąga się coś samodzielną nauką i imponującym portfolio (tak jak w grafice). Dzięki jeszcze raz za sugestie. Jeśli posiadacie jakieś materiały/artykuły dotyczące projektowania (w każdym tego słowa znaczeniu) gier prosił bym o dzielenie się z nimi.

Pozdrawiam!

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

/.../

Co do programowania - zapewne zaczynałeś od złej strony aka jakiegoś Pascala, C czy innego szajsu. Gdzie czasem rzeczywiście potrzeba 500 linii kodu na coś co powinno być możliwe do zrobienia w 1-5. Jeśli myślisz bowiem o nauce programowania - spróbuj Pythona albo Ruby. To bardzo proste języki do nauki i choć kilkadziesiąt razy wolniejsze od jakiegoś C/C++ to... w dzisiejszych czasach i przy prostszych grach często nie ma to znaczenia. Zwłaszcza jeśli w zamian osiągasz to samo w kilkukrotnie mniejszej ilości kodu.

Oczywiście, nadal PEWNE podstawy opanować musisz. Niezły jest "Learn Python the hard way" czy "Programowanie w Ruby. Od Podstaw." Są to podręczniki niezbyt grube (przynajmniej w stosunku do C++ gdzie potrzeba 2000 stron żeby ogarnąć składnię) i omawiające dość dogłębnie dany język.

Oczywiście, potem trzeba w tym dopiero znaleźć coś co ułatwi tworzenie gry. Bo oczywiście można być masochistą i od podstaw pisać engine ale bez przesady. Dla Pythona niezłym silnikiem jest PyGame, dla Rubiego np. Gosu.

W przypadku PyGame i Pythona to widzę że nawet jest do niego darmowa książka i kilka minigier jako przykłady:
http://inventwithpython.com/pygame/chapters/

Jeśli aspirujesz do roli grafika w tej dziedzinie to o studiach okołoinformatycznych w ogóle radzę zapomnieć, już widziałem takich którzy próbowali czegoś takiego. A potem brutalna rzeczywistość pokazała im że "grafika" na informatyce oznacza generowanie jej matematyką a nie Photoshopa. Tutaj liczy się TYLKO portfolio a jeśli dodatkowo szukasz studiów które miałyby ci pomóc się w tym rozwinąć to one jak najbardziej istnieją i noszą nazwę Akademia Sztuk Pięknych. Tylko uwaga bo egzaminy wstępne są trudne jak diabli a potem jeszcze dochodzi "bonus" w postaci "przynieś mi 100 szkiców tygodniowo" itp.
Fakt że potem rzeczywiście miałbyś sensowną bazę by wejść na rynek gier komputerowych i to bez problemu - o wiele częściej widzę programistów szukających grafików do pomocy (zwłaszcza ostatnimi czasy z uwagi na popularność gier indie gdzie starczają 2-3 osoby do zrobienia czegoś fajnego) aniżeli odwrotnie.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

/.../

Właśnie szczerze to z programowaniem miałem styczność jedynie w szkole - c++, który jest obowiązkowy. Tak jak wcześniej wspomniałem efekty są fajne gdy coś wychodzi, ale mi szybko z głowy to wypadało i jakoś nigdy nie czułem wewnętrznej chęci w kierunku tego ponieważ może dlatego, że wszystko sprowadzało się do obliczeń matematycznych. Niezbyt mnie po prostu to ciekawiło.

Właśnie mój znajomy, który również zajmuje się grafiką poszedł na taką ogólną informatykę i taki szok i męczarnia, że grafika jedynie generowana poprzez programowanie. Co do ASP tak jak wspomniałeś - szkice, rysunki. Miałem nadzieje, że w Polsce jest stricte grafika do gier czy coś w tym stylu.

Dzięki wielkie za propozycje i linki, na pewno coś popatrzę i jeszcze sam poszukam.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 20.07.2014 o 21:19, kryst90 napisał:

Właśnie szczerze to z programowaniem miałem styczność jedynie w szkole - c++, który jest
obowiązkowy.


Kazanie komuś rozpocząć próby programowania w C++ jest najlepszym sposobem by ta osoba uznała że to jest jakaś czarna magia. I mówię to jako osoba z pewnym realnym doświadczeniem w nim (włącznie z tworzeniem gier) - C++ jest po prostu trudny. Bo bądźmy szczerzy, to język który powstał w 1983 na bazie C (a ten to już wywodzi się aż z 1972). W międzyczasie dodano do niego 200 różnych "ficzerów" i jest idealnym rozwiązaniem jeśli chcesz się pogubić na śmierć. I jest to język do tego stopnia wymagający że nigdy nie spotkałem programisty który z czystym sumieniem może powiedzieć że zna dogłębnie ten język i wszystkie jego niuanse.

Nie pomaga to że C++ po prostu na mało co standardowo pozwala - w takim Ruby wygenerowanie sobie dużego ładnego "ekranu" po którym będą np. latać jakieś ładne animowane napisy to kwestia 5 linii kodu. W przypadku C++... cóż, na pewno nie uzyskasz tego bez pomocy dodatkowych bibliotek których nauka zajmuje częściej tygodnie/miesiące niż dni.

Dlatego właśnie na start polecam właśnie języki pokroju Pythona/Rubiego. Jak się w nich poczujesz w miarę pewnie to możesz skręcić w stronę C#/Javy bądź C++. Ale na pewno nie odwrotnie, to jest po prostu strata czasu i jakiejkolwiek motywacji.

Dnia 20.07.2014 o 21:19, kryst90 napisał:

Tak jak wcześniej wspomniałem efekty są fajne gdy coś wychodzi, ale mi szybko
z głowy to wypadało i jakoś nigdy nie czułem wewnętrznej chęci w kierunku tego ponieważ
może dlatego, że wszystko sprowadzało się do obliczeń matematycznych.


Ech, bo to jest właśnie problem ze szkołami - zamiast pokazać jakieś fajne elementy programowania to każą ci robić jakieś śmieci które nikogo nigdy nie zainteresują. A w praktyce to jakąś prostą gierkę to można napisać w porównywalnej ilości kodu...

Dnia 20.07.2014 o 21:19, kryst90 napisał:

Właśnie mój znajomy, który również zajmuje się grafiką poszedł na taką ogólną informatykę
i taki szok i męczarnia, że grafika jedynie generowana poprzez programowanie. Co do ASP
tak jak wspomniałeś - szkice, rysunki. Miałem nadzieje, że w Polsce jest stricte grafika
do gier czy coś w tym stylu.


Ale... nie ma czegoś takiego jak "grafika stricte do gier". No bo jak to niby miałoby działać? Mamy przygodówkę - ręcznie rysowane tła i postacie które są po prostu sprite''ami. Albo jakieś Age of Empires - rzut perspektywiczny i jedziesz.

Gra typu Crysis? Tam to się robi raczej tekstury i elementów do "normalnego" rysowania zostaje oczywiście odpowiednio mniej. Ale mniej nadal oznacza mnóstwo - wszystkie concept arty postaci, lokacji, przeciwników... Śmiem twierdzić że największe szanse to miałbyś właśnie po ASP bo tak naprawdę do tego sprowadza się "grafika do gier", tutaj nie ma jakiejś wiedzy "tajemnej".

Jak w swoim czasie tworzyłem platformówkę (niestety leży w większości niedokończona) to grafiki wyglądały tak - na bohaterkę przypadało koło 100 osobnych rysunków (wszystkie te animacje!), do tego osobny rysunek na każdą mapkę i takie na obiekty które można przesuwać...plus przeciwnicy, też w dziesiątkach rysunków. Osoba odpowiedzialna za grafikę wręcz płakała bo myślał że będzie mieć mało roboty a w zasadzie nie odstawało to ilością pracy od napisania całej logiki gry którą zajmowałem się ja. I z tego co widziałem to nie wymaga to jakiejś magicznej "grafiki do gier" a po prostu talentu do tworzenia ''płynnych'' rysunków klatka po klatce.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Spoko, ogólnie masz rację, ale nie demonizuj AŻ TAK starego dobrego C++. Ja i wielu moich kolegów z informatyki od tego zaczynaliśmy, ludzie z innych kierunków (głównie z okolic elektroniki itd.) znają tylko języki z rodziny C i dali radę się ich nauczyć, nie twierdząc, że to rzeźnia i masochizm.
Może to i trudniejsze na początek od paru innych języków, ale rozpoczęcie przygody z programowaniem od C++ ma też swoje plusy - z takim backgroundem nauka nowego języka i jego najpopularniejszego frameworku do rozpoczęcia wykonania jakiegoś projektu w tym to proces zajmujący około tygodnia, przy czym Pythonowcy i inni nie bywają tak elastyczni. Dodatkowo znajomość tego co siedzi pod spodem wielu funkcjonalności zapewnianych od razu przez inne języki/popularne biblioteki nikomu nie zaszkodzi.

Ja na pewno nie żałuję tego, że wybrałem na początek Cpp. Gdyby nie to, byłbym teraz na pewno gorszym programistą, bo już na początku wyrobiłem sobie pogląd na wiele rzeczy i korzyści z tego odczuwam każdego dnia.

Nie twierdzę, że to najlepszy wybór na początek - bo i ludzie są różni, każdy ma inne uczucia, ale na pewno daleki bym był od tego, by ludziom to odradzać.

A co do zabijania motywacji - ludzie, którym brakuje samozaparcia i możliwości samodzielnego rozgryzania takich rzeczy, są średnim materiałem na zawodowych programistów i zwykle stanowią słabsze ogniwa w zespołach. A i lepiej dowiedzieć się, że się do czegoś nie nadaje po paru miesiącach, a nie paru latach (znam takie przypadki), bo zmarnowanego czasu nikt nam nie odda.

P. S. Jeszcze raz podkreślam, że ogólnie się z Tobą zgadzam - i jakiejś świętej wojny o startowy język nie chcę tu wywoływać ;)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 21.07.2014 o 09:46, Strange101 napisał:

Spoko, ogólnie masz rację, ale nie demonizuj AŻ TAK starego dobrego C++. Ja i wielu moich
kolegów z informatyki od tego zaczynaliśmy, ludzie z innych kierunków (głównie z okolic
elektroniki itd.) znają tylko języki z rodziny C i dali radę się ich nauczyć, nie twierdząc,
że to rzeźnia i masochizm.


To spytam w ten sposób - ilu z was potrafi skutecznie używać C++11 i C++14? I radzi sobie z całym std - czyli tuple, programowanie generyczne, variadic templates itp? Nie demonizuję tego języka, po prostu stwierdzam fakt - jego poziom trudności w opanowaniu pełnego zakresu składni i możliwości jest bliski Haskellowi. Tylko że Haskell jak już go ogarniesz to pozwala osiągać to samo w mniej niż połowie linii kodu.

Dalej - biblioteka standardowa C++ jest jedną z najgorszych jakie obecnie istnieją. Do niedawna kompletny brak zunifikowanej i multiplatformowej obsługi sieci czy wielowątkości. Nawet prostego graficznego okna dialogowego nie zrobisz bez zewnętrznej biblioteki (a przynajmniej nie takiego którego nie bedziesz musiał pisać dwukrotnie na Linuxie i Windowsie). Brak narzuconego paradygmatu sprawia że zawsze znajdą się ludzie którzy piszą funkcyjnie/liniowo/proceduralnie a nie w OOP. Praktycznie NIC nie da się zrobić bez pomocy z zewnętrznych bibliotek a najlepiej całych kilkugigabajtowych frameworków pokroju Qt.

Ot, proste zadanie na 5-10 linii kodu w innych językach - pobierz odpowiedź z serwera www (format json) z wykorzystaniem https post, zamień tę odpowiedź na mapę hashową. I bum, trafiamy na kilka problemów:
- zintegrowane rozwiązania w C++ to Boost. Napisanie w nim czegoś co potrafi pobrać odpowiedź poprzez HTTPS to kwestia 100 linii kodu.
- JSON? Jaaasne. Ręcznie pisz parser.

Dobra powiesz, ale przecież nie musisz używać zintegrowanych rozwiązań, wystarczy zgooglować i...
- pobranie pliku - curl - to pozwoli nam coś pobrać.
- json - w użyciu fajny jest jsoncpp - jedno ale - żeby skompilować sobie tę bibliotekę... musisz mieć Pythona w kompie. WAT.
- A, zaraz dostaniemy w łeb jeszcze "you need openSSL libraries, download binaries IN THE CORRECT version from: https://www.openssl.org/related/binaries.html). A potem się okazuje że twojego kompilatora (np. MSVC 2013 x64) nie ma na liście. To co robisz? Ręczna kompilacja. Najlepiej na Linuxie + Cygwynie i crosscompiling bo w Windowsie instalacja niezbędnych bibliotek żeby coś skompilować przez ./configure i make zajęłaby całą wieczność...

To mamy dwie zewnętrzne biblioteki (plus potencjalnie kilka godzin straconych na walkę z OpenSSL-em) na coś co w C#/Javie/Ruby jest po prostu wbudowane.

Zresztą jest BARDZO duża różnica między "dać radę się nauczyć języka na poziomie starczającym na uniwerku" a "potrafić go stosować w prawdziwych sytuacjach". Zwłaszcza że tutaj mówimy o dość konkretnym zagadnieniu - tworzeniu gier. Jest sporo dobrych i rozbudowanych bibliotek które mogą w tym pomóc (choćby Allegro, Ogre3D)...tylko że zdecydowanie nie nazwałbym ich prostymi. Zwłaszcza że zaraz się okaże że potrzebne nam jeszcze OpenAL i 20 kolejnych.

Dnia 21.07.2014 o 09:46, Strange101 napisał:

Może to i trudniejsze na początek od paru innych języków, ale rozpoczęcie przygody z
programowaniem od C++ ma też swoje plusy - z takim backgroundem nauka nowego języka i
jego najpopularniejszego frameworku do rozpoczęcia wykonania jakiegoś projektu w tym
to proces zajmujący około tygodnia, przy czym Pythonowcy i inni nie bywają tak elastyczni.


Jest tylko jedno ale - żeby opanować C++ bez żadnej wcześniejszej styczności w programowaniu do poziomu który pozwala w krótkim czasie napisać pełnoprawną gierkę potrzeba będzie nie mniej niż roku-dwóch.

Dnia 21.07.2014 o 09:46, Strange101 napisał:

Dodatkowo znajomość tego co siedzi pod spodem wielu funkcjonalności zapewnianych od razu
przez inne języki/popularne biblioteki nikomu nie zaszkodzi.


To półprawda - jeśli korzystasz C++ to często kończysz używając Qt/wxWidgets + 50 różnych bibliotek i bardzo rzadko się zastanawiasz jak działają "u podstaw". Różnica jest taka że w C# masz je na wyciągnięcie ręki i jedną komendę using a tutaj musisz je zdobywać samemu.

Dnia 21.07.2014 o 09:46, Strange101 napisał:

Ja na pewno nie żałuję tego, że wybrałem na początek Cpp. Gdyby nie to, byłbym teraz
na pewno gorszym programistą, bo już na początku wyrobiłem sobie pogląd na wiele rzeczy
i korzyści z tego odczuwam każdego dnia.

O, ale to samo możesz powiedzieć o każdym języku, ja osobiście uważam że najwięcej dała mi nauka Scali. Zupełnie inne podejście od C++ i jak już ją jako tako ogarnąłem to uznałem że te wszystkie MVC, dziedziczenie itd są diabelnie nieefektywne. Co zresztą bardzo fajnie podsumowuje np. ten blog:
http://japgolly.blogspot.com.au/2014/06/a-year-of-functional-programming.html
Bo jasne, najlepiej mieć obycie na każdym poziomie programowania, począwszy od czegoś na poziomie Capers Jones 1 a skończywszy na 20 i dobrze znać wszystkie paradygmaty. Ale jeśli mówimy o kimś początkującym to niech to będzie chociaż ten 14-15 typu Python-Ruby. Do 6 jakim jest C++ można zejść potem. A do Assemblerowej 1 jeszcze później.

Dnia 21.07.2014 o 09:46, Strange101 napisał:

Nie twierdzę, że to najlepszy wybór na początek - bo i ludzie są różni, każdy ma inne
uczucia, ale na pewno daleki bym był od tego, by ludziom to odradzać.


No i tu się różnimy - osobiście uważam że jeśli zaczynać zabawę w programowanie to od elementów prostych które narzucają ci możliwie najnowocześniejszy paradygmat. Na "wolność" ma przyjść czas gdy już rozumiesz jak to działa, wtedy jeśli chcesz to i Haskella, Assemblera czy D (swoją drogą mówi się o nim w bardzo pozytywnym świetle ostatnimi czasy, aż szkoda że nie jest popularny) się ucz. A C++ jest językiem pułapką jeśli nie masz kogoś kto ci powie że twój kod jest śmierdzącym kawałkiem szajsu - umieszczanie całej logiki w jednej funkcji main, nadużywanie zmiennych globalnych, raczej też nie zobaczysz zbyt szybko dlaczego "to OOP jest niby takie fajne, przecież tylko dokłada mi linii kodu". Przy okazji tego ostatniego to w swoim czasie czytałem jak bodajże Microsoft przyjmował kandydatów i jakie kwiatki tam wychodziły (a mówimy o absolwentach uczelni wyższych właśnie) - dostawał taki zadanie żeby napisać przykładowy zbiór klas z dziedziczeniem... i "samochód pochodzi z fabryki":

class fabryka{};
class samochód : public fabryka
{};

"Genialne"! Nie mówię że tak jest w twoim przypadku oczywiście. Chodzi mi tylko o to że bardzo wiele rozwiązań w C++ jest bardzo abstrakcyjnych i niewłaściwie wyjaśnionych (np. template). Zresztą jako język "obiektowy" to C++ jest jednym z gorszych w tym aspekcie i raczej nie może się równać z C#, sporą rolę odgrywa w tym jego (na tym etapie już bardzo iluzoryczna i w sumie nie wiem po co podtrzymywana) kompatybilność ze zwykłym C. To IMHO byłby dobry język gdyby Stroustrup wreszcie wyrżnął wszystkie śmieci pozostałe po C (aka te wszystkie malloci, null_ptr i inne dziwactwa), dodał CHOĆBY coś tak głupiego jak unicode (bo jego brak w C++ to już jest nawet nie kiepski dowcip: http://stackoverflow.com/questions/17103925/how-well-is-unicode-supported-in-c11) i ogółem doprowadził ten język do bycia konsekwentnym (cztery rodzaje castowania, referencje i stałe wskaźniki), oficjalna SPECYFIKACJA ma już ponad 1000 stron, jest try ale nie ma finally i tak dalej... Z tym można się nauczyć żyć, jasne. Ale to głupie.

To trochę tak... wyobraź sobie że masz skrzynkę z narzędziami. Wyciągasz śrubokręt a tu ci się trafia taki z trójkątnym końcem prawie nigdzie nie używany. Chcesz młotka? Dostajesz taki z ostrymi końcami, gwoździe możesz wbijać tylko waląc jego środkiem. Teoretycznie rozszerzenia C++11 i C++14 mają tutaj dodawać trochę "normalnych" narzędzi a nie standardowo dostępnego syfu ale... Boost jest po prostu trudny w użyciu a te rozszerzenia tylko dodają funkcje zamiast zastępować i poprawiać stare. A zanim dojdziesz do poziomu w którym możesz używać C++14 to minie NAPRAWDĘ dużo czasu, zwłaszcza że w podręcznikach jeszcze go nie ma, co najwyżej wzmianki o C++11 a większość to C++03.

I tak dalej. Dlatego na dzień dzisiejszy nie mogę szczerze komuś polecić rozpoczęcia nauki programowania w C++. Chcesz czegoś pełnoprawnego - C# bądź Java. Chcesz czegoś prostszego - Python, Ruby. Jedyną realną zaletą C++ w dzisiejszych jest jego wydajność - nawet mimo JIT-a kod pośredni jeszcze nie jest tak szybki jak czysty binarny. Tylko że... to powoli też przestaje mieć znaczenie i nawet 50x wolniejszy Python zazwyczaj już starcza do szczęścia.

Jestem oczywiście jak najbardziej otwarty na argumenty na korzyść C++, byleby w miarę konkretne i pokazujące konkretne zastosowania tego języka w których jest on po prostu skuteczniejszy od C#/Javy. Najlepiej też to coś "rzeczywistego" a nie pisanie systemu operacyjnego (tu nie ukrywam, i tak najlepsze jest czyste C a Javy raczej nie użyjesz) ;)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 21.07.2014 o 11:10, ziptofaf napisał:

To spytam w ten sposób - ilu z was potrafi skutecznie używać C++11 i C++14?


Starsi o rok koledzy bez problemu dostali się w te wakacje na praktyki do CERNu dzięki znajomości Cpp, o ile to jakiś wyznacznik.

Dnia 21.07.2014 o 11:10, ziptofaf napisał:

Jest tylko jedno ale - żeby opanować C++ bez żadnej wcześniejszej styczności w programowaniu
do poziomu który pozwala w krótkim czasie napisać pełnoprawną gierkę potrzeba będzie
nie mniej niż roku-dwóch.


Dla mnie to nie minus. Jak zależy nam na czasie to prototyp gry można zrobić w Unity po paru dniach ogarniania (wiem, bo sami się zaczęliśmy w to bawić po tegorocznej sesji i nawet nam coś wychodzi), bez żadnych podstaw powiedzmy, że po miesiącu - no ale jakoś wielkiej wartości edukacyjnej w tym nie widziałem.

Dla jasności - jak mam napisać aplikację webową to do pracy zaprzęgam Ruby on Rails, a nie robię wszystko od zera, ale uważam, że warto jednak wiedzieć co i jak te wszystkie frameworki za nas robią - choć może i w codziennej pracy aż tak wiele się o tym nie myśli. Tak samo jak przyszło napisać coś niskopoziomowego na uczelni - jedni siedli i napisali, inni jęczeli, że nagle czegoś nie ma out of the box no i tak się pracować nie da. Przy tym jak to wygląda i jak coś, co w okresie, kiedy zaczyna się edukację jest hitem, a kiedy się kończy studia jest już praktycznie nieużywane - nie żałuję obranej drogi.

Jeśli miałbym wskazać język, który wydaje się aż szkodzić w edukacji - byłaby to Java. Ludzie produkują w tym masę brzydkiego kodu, myślą, że GC zwalnia ich całkiem z rozsądku w zarządzaniu zasobami, zadania, które powinny mieć złożoność liniową potrafią doprowadzić do sześciennej i tak dalej. Ale nie będę jej odradzał do rozpoczynania nauki, bo to i tak wszystko zależy od warsztatu jaki ktoś ma.

P. S. Nie wyznaję zasady, że na początku ma być łatwo i potem stopniowo należy stopniować trudność - i może w tym naprawdę leży nasza niezgoda.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 21.07.2014 o 13:45, Strange101 napisał:

Starsi o rok koledzy bez problemu dostali się w te wakacje na praktyki do CERNu dzięki
znajomości Cpp, o ile to jakiś wyznacznik.


A bo TAM akurat się C++ przydaje, z kilku powodów:
- wysoka wydajność
- 90% ich kodu to pewnie czyste C
- dobrze działa na unixach

Tak samo jak chcesz pracować w banku to musisz znać Cobola mimo tego że ten język to reinkarnacja szatana. W takich zastosowaniach to fakt, C++ się przydaje. W końcu to się nie różni poziomem abstrakcji od pisania systemu operacyjnego.

Dnia 21.07.2014 o 13:45, Strange101 napisał:

Dla jasności - jak mam napisać aplikację webową to do pracy zaprzęgam Ruby on Rails,
a nie robię wszystko od zera, ale uważam, że warto jednak wiedzieć co i jak te wszystkie
frameworki za nas robią - choć może i w codziennej pracy aż tak wiele się o tym nie myśli.


O, ktoś poza mną kto lubi Railsa :P W sumie dobry przykład na to jak MOŻE wyglądać programowanie obiektowe zrobione nieźle.

Dnia 21.07.2014 o 13:45, Strange101 napisał:

Przy tym jak to wygląda i jak coś, co w okresie, kiedy zaczyna się edukację jest hitem, a
kiedy się kończy studia jest już praktycznie nieużywane - nie żałuję obranej drogi.


Ależ ja nie mówię że sama droga jest do gruntu zła, mówię po prostu że jest jedną z najtrudniejszych. Na poziomie uniwersyteckim C++ ma sens. Haskell też - w końcu pierścienie masz na matmie, podobnie logarytmy, całki i ciągi. Jakoś da się tego nauczyć, chwilę później będziesz mieć zresztą staże i praktyki to ci największe idiotyzmy przy odrobinie szczęścia zostaną wytknięte.

Ale jeśli uczysz się czegoś "samemu" i "dla siebie" to staje się on wielokroć gorszym wyborem - brak narzuconego paradygmatu sprawi że prawdopodobnie nawet nie będziesz myśleć o użyciu obiektowości. Nie ma dobrych podręczników na rynku które omawiają bardziej złożone problemy (z bardzo prostego powodu - olbrzymiej wielkości oficjalna dokumentacja i mnóstwo różnych funkcji samego języka) itd.

Dnia 21.07.2014 o 13:45, Strange101 napisał:

Jeśli miałbym wskazać język, który wydaje się aż szkodzić w edukacji - byłaby to Java.

Ja osobiście twierdziłbym że najbardziej szkodliwym językiem jest PHP :P Bo jeśli jego OFICJALNA dokumentacja zawiera takie kwiatki:

http://use.perl.org/use.perl.org/_Aristotle/journal/33448.html

...Tak, test sprawdzał czy coś typu int jest WIĘKSZE OD INT_MAX. Poza tym jeszcze całkowity brak przeciążania nazw funkcji (aka jeśli masz np reverse() to będzie toto działać tylko na zwykłym stringu ale już nie na utf8, do tego jest zupełnie osobna funkcja, na tablice innych typów jest jeszcze inna), brak importowania poszczególnych modułów (w przestrzeni globalnej jest coś koło 1000 różnych funkcji)... nie jestem pewny czy jakikolwiek język poza nim będący takim śmieciem jest wciąż w praktycznym użytkowaniu. A, masz jeszcze po DWIE wersje większości funkcji - jedna "obiektowa" a druga "funkcyjna"! A w sumie to często i po 3-4 bo jeśli np. chcesz mieć zabezpieczenie przed SQL Injection przy pracy z bazą danych to musisz użyć JESZCZE innej!

Tyle dobrego że Twitter uciekł od niego najpierw do Railsa a potem do Scali, facebook przepisał połowę od początku w C++, Youtube i Google chyba siedzą obecnie na Django... Ale i tak jak widzę fragment kodu pisany w czystym PHP (bo Zenda czy CodeIgnitera jeszcze toleruję) to zazwyczaj myślę o zabójstwie autora.

Dnia 21.07.2014 o 13:45, Strange101 napisał:

Ludzie produkują w tym masę brzydkiego kodu, myślą, że GC zwalnia ich całkiem z rozsądku
w zarządzaniu zasobami, zadania, które powinny mieć złożoność liniową potrafią doprowadzić
do sześciennej i tak dalej. Ale nie będę jej odradzał do rozpoczynania nauki, bo to i
tak wszystko zależy od warsztatu jaki ktoś ma.


Z drugiej jednak strony - źle napisany kod w C++ nie będzie działać wcale - GC w Javie może nie jest optymalny (choć ostatnimi czasy jego wydajność naprawdę nie jest zła) ale jest lepszy niż nieusunięte wskaźniki z C++. Czy tego chcesz czy nie - musisz tam też programować obiektowo. Masz mniejszą szansę na to że ci tej pamięci zabraknie bo wszystko jest automatycznie pakowane do heapa a nie do stacka (a ilość pamięci dostępnej w stacku w C++ to coś ciekawego bo NIKT nie wie ile tam jej dokładnie jest dostępnej, różni się zależnie od 500 czynników). Dalej - jeśli spróbujemy choćby wczytać literę do inta to dostaniemy ładny i klarowny wyjątek. A nie "program has stopped working". Zresztą akurat system wyjątków w C++ jest... no, jest. I niewiele ponad to - często nawet olbrzymie frameworki klasy Qt nawet z niego nie korzystają. Prawdopodobnie też to co będziesz chcieć zrobić jest w bibliotece standardowej - w przypadku C++ szanse na to są dużo mniejsze. A wtedy albo piszesz to samemu (a gdy jesteś początkującym programistą to pewnie będzie to syf, trąd, zaraza i malaria) albo szukasz zewnętrznej biblioteki (która, jeśli masz farta, jest napisana dobrze. Ale może ci się też trafić taka pisana przez podobnego początkującego - wyjątków zero, try i catch nie istnieje itd).

Dnia 21.07.2014 o 13:45, Strange101 napisał:

P. S. Nie wyznaję zasady, że na początku ma być łatwo i potem stopniowo należy stopniować
trudność - i może w tym naprawdę leży nasza niezgoda.


No nie będę ukrywać, ja jestem zwolennikiem agile, szybko zmieniających się specyfikacji itp. A tam... C++ się często nie sprawdza. Cóż, tutaj do zgody nie dojdziemy - jakby z C++ wywalić "pseudokompatybilność z C", posprzątać trochę ten kod, dodać kilka dość krytycznych elementów do biblioteki standardowej (jak choćby obsługę unicode...), wywalić preprocesor (bo już poważnie - po coś te template''y chyba są a wstawianie dziwactw pokroju #ifndef przy każdej bibliotece pewnie można by zrealizować dużo prościej... ba, to nawet przez jakiś czas istniało, zwało się #pragma once... a sam preprocesor najczęściej widzę wykorzystywany w roli podobnej do #define FALSE TRUE i generując dziwaczne bugi trudne do wychwycenia), poprawić iteratory (bo bądźmy szczerzy, jedynym który działa dobrze jest: http://www.boost.org/doc/libs/1_55_0/libs/iterator/doc/index.html) to wtedy uznam że to dobry język którego warto się uczyć. Jasne, w pojedynkę każdy z tych błędów jest akceptowalny. Ale ich połączenie daje mieszankę wybuchową.

Nie mówię że Java czy C# są idealne, daleko im od tego (zamiast tej pierwszej i tak wolę Scalę) ale nie cierpią aż tak z nadmiaru nieprzydatnych już funkcji trzymanych tylko po to żeby zapewnić kompatybilność ze starym kodem sprzed 10 lat.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 21.07.2014 o 15:48, ziptofaf napisał:

Ja osobiście twierdziłbym że najbardziej szkodliwym językiem jest PHP :P Bo jeśli jego
OFICJALNA dokumentacja zawiera takie kwiatki:

http://use.perl.org/use.perl.org/_Aristotle/journal/33448.html

First - gdzie ty tutaj masz dokumentację?
Second - jeśli musisz wyciągać takie wiekowe kwiatki sprzed ponad 7 lat, to najwyraźniej aktualnie PHP to cud miód i orzeszki, skoro nie ma się do czego przyczepić. :D

Dnia 21.07.2014 o 15:48, ziptofaf napisał:

brak importowania poszczególnych modułów (w przestrzeni
globalnej jest coś koło 1000 różnych funkcji)...

Noi? Po co szatkować bibliotekę standardową, bo chyba nie dla oszczędności pamięci? :D To co z pewnością można jej zarzucić, to kompletny syf w nazwach funkcji - zero konwencji i konsekwencji - po 4-5 latach siedzenia w PHP dalej nie pamiętam jak dokładnie nazywają się niektóre rzadziej wykorzystywane funkcje do operacji na stringach.

Dnia 21.07.2014 o 15:48, ziptofaf napisał:

A, masz jeszcze
po DWIE wersje większości funkcji - jedna "obiektowa" a druga "funkcyjna"! A w sumie
to często i po 3-4 bo jeśli np. chcesz mieć zabezpieczenie przed SQL Injection przy pracy
z bazą danych to musisz użyć JESZCZE innej!

To się nazywa wsteczna kompatybilność. A co do SQLI - nie wiem o czym mówisz.

Dnia 21.07.2014 o 15:48, ziptofaf napisał:

Ale i tak jak widzę fragment kodu pisany w czystym PHP (bo Zenda czy CodeIgnitera jeszcze
toleruję) to zazwyczaj myślę o zabójstwie autora.

Zend i CodeIgniter to obecnie chyba najgorsze frameworki PHP. Ciężko mi nawet sobie wyobrazić przez jaki pryzmat ty patrzysz na PHP, skoro podajesz je jako jasne strony PHPowego softu.

A co do twojej propagandy łatwych i przyjemnych wysokopoziomowych języków programowania - to naprawdę pięknie wygląda, szczególnie jak się człowiek zachłyśnie możliwościami i łatwością robienia niektórych rzeczy. Problem w tym, że później na takich łatwych i przyjemnych językach kształcą się programiści z kilkuletnim doświadczeniem, którzy nie wiedzą jak działa float, albo jakie są konkretne implikacje korzystania z referencji. Ułatwiacze są dobre tak długo, jak wiesz co one tak naprawdę robią i dotyczy to nie tylko języków, ale też frameworków a nawet wzorców. Np taki ORM to jest fajna sprawa, chyba że zapomnisz, że pod tym wszystkich siedzi jednak baza danych i zaspamujesz ją masą zapytań traktując wszystko jak zwykłe obiekty. IMO każdy powinien pokodzić trochę w C/C++, żeby zrozumieć jak niektóre rzeczy działają, ułatwiacze powinny być ułatwieniem, a nie lekarstwem na lenistwo i ignorancję.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Dnia 22.07.2014 o 11:41, rob006 napisał:

Zend i CodeIgniter to obecnie chyba najgorsze frameworki PHP. Ciężko mi nawet sobie wyobrazić
przez jaki pryzmat ty patrzysz na PHP, skoro podajesz je jako jasne strony PHPowego softu.


Cóż, po prostu nie lubię PHP! Ale mogę się przyczepić też do jego ostatnich problemów - on po dziś dzień nie przechodzi WŁASNYCH testów... A wymieniłem dwa losowe frameworki - po prostu chodziło mi o to że kod w nich pisany (jak i w Symphony 2/CakePHP itp) przynajmniej spełnia jakieś standardy. A nie miesza logikę aplikacji z tym co widzi uytkownik w jednym wielgaśnym pliku .php który odpowiada jeszcze jednocześnie za jakieś metody POST/GET. Ot, dla mnie PHP jest językiem pułapką - kupi sobie ktoś książkę "PHP5 Poradnik", zainstaluje WAMP-a i... działa. Wali errorami i wyjątkami tu i tam, wycieka mu pamięć ale działa! Dobry programista PHP jest zjawiskiem dużo (imho) rzadszym niż np. dobry programista w Scali, w przypadku tych pierwszych często mówimy o osobach po prostu niedouczonych które żadnego frameworka nie widziały. I wychodzą "kwiatki" i dziurawe biblioteki pisane przez nich.

Dnia 22.07.2014 o 11:41, rob006 napisał:

A co do twojej propagandy łatwych i przyjemnych wysokopoziomowych języków programowania
- to naprawdę pięknie wygląda, szczególnie jak się człowiek zachłyśnie możliwościami
i łatwością robienia niektórych rzeczy.

Dnia 22.07.2014 o 11:41, rob006 napisał:

Problem w tym, że później na takich łatwych i
przyjemnych językach kształcą się programiści z kilkuletnim doświadczeniem, którzy nie
wiedzą jak działa float, albo jakie są konkretne implikacje korzystania z referencji.

Ach, stare dobre:
for (float a = 0.1; a!=10.0 ; a+=0.1){}
A potem narzekania że wychodzi pętla nieskończona ;p Jasne więc - masz rację. I się z tobą zgodzę.

Dnia 22.07.2014 o 11:41, rob006 napisał:

Ułatwiacze są dobre tak długo, jak wiesz co one tak naprawdę robią i dotyczy to nie tylko
języków, ale też frameworków a nawet wzorców. Np taki ORM to jest fajna sprawa, chyba
że zapomnisz, że pod tym wszystkich siedzi jednak baza danych i zaspamujesz ją masą zapytań
traktując wszystko jak zwykłe obiekty. IMO każdy powinien pokodzić trochę w C/C++, żeby
zrozumieć jak niektóre rzeczy działają, ułatwiacze powinny być ułatwieniem, a nie lekarstwem
na lenistwo i ignorancję.


A czy ja piszę że nie?
"Bo jasne, najlepiej mieć obycie na każdym poziomie programowania, począwszy od czegoś na poziomie Capers Jones 1 a skończywszy na 20 i dobrze znać wszystkie paradygmaty. Ale jeśli mówimy o kimś początkującym to niech to będzie chociaż ten 14-15 typu Python-Ruby. Do 6 jakim jest C++ można zejść potem. A do Assemblerowej 1 jeszcze później. "

Ot, po prostu od C++ zdecydowanie bym nie zaczynał. Bo on jest dość upierdliwym językiem jednak zwłaszcza jeśli uczyć się go na własną rękę i na efekty się trochę czeka. I o wiele bardziej na start zalecałbym coś czysto obiektowego z bogatszą biblioteką standardową.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Utwórz konto lub zaloguj się, aby skomentować

Musisz być użytkownikiem, aby dodać komentarz

Utwórz konto

Zarejestruj nowe konto na forum. To jest łatwe!


Zarejestruj nowe konto

Zaloguj się

Masz już konto? Zaloguj się.


Zaloguj się
Zaloguj się, aby obserwować