Wpis z mikrobloga

Najgorzej, gdy jest wybor

Jednym z czesto przewijajacych sie pytan i problemow, co ciekawe, nie tylko wsrod poczatkujacych, to jakiego jezyka sie uczyc, w jakim frejmworku robic gre, czy szybciej bedzie dzialac w node czy w pythonie.
Jest to swojego rodzaju pulapka, ktora ja nazywa pulapka wyboru albo efektem railsow. Otoz chodzi zwyczajnie o to, ze JAK staje sie zdecydowanie wazniejsze, niz CO - wiekszosc czasu poswieca sie na analizowanie za i przeciw, przeszukiwanie internetu, opinie, wytyczne, przyklady - a wlasciwy produkt nie powstaje albo nigdy, albo powstaje w 6 niedokonczonych wersjach. Najpopularniejsze to chyba:

Obawa o zmarnowanie czasu - o przyczynach powinien pewnie wypowiadac sie psycholog - ale, szczegolnie jak sie zaczyna - NIE DA SIE zmarnowac czasu. Ja wiem, ze zaraz wyskoczy tu setka znawcow, ze od dzisiaj uzywa sie takiej a nie innej biblioteki a w pozostalych to nie ma pracy a jutro i tak bedzie zmiana - ale - tak jak kiedys pisalem - magii nie ma - i kazda, absolutnie kazda wiedza - jest cenna. Sam mialem okazje pracowac wiele lat temu w Strutsie - w wersji pierwszej, ktora i tak byla juz wtedy przestarzala. No i oczywiscie, troche się z tym uzeralem - niemniej jednak - sporo nauczylem sie generalnie o zasadzie dzialania MVC, servletow w Javie. No i znowu ktos zakrzyknie, ze przeciez servletow to sie w Javie nie pisze od lat - no i zgoda, tyle, ze one nadal sa fundamentem wiekszosci rozwiazan. Ba - jest spora analogia miedzy servletami a takim node.js - i tu i tu masz request, response, okreslony cykl, szablony. 20 lat roznicy, a zasady dzialania w zasadzie te same. I zgadnijcie - tak tak, chyba wszystkie frameworki webowe maja te same mechanizmy, no bo i tak dzialaja w tym samym srodowisku. Zaryzykuje stwierdzenie, ze warto nawet php sie poduczyc - raz, ze bedzie z czym porownac normalne jezyki (hehehe) a na serio - koncepcje, zasady dzialania - sa praktycznie takie same jak wszedzie indziej. Nawet typy sa podobne, klasy sa i tak dalej. Owszem, szczegoly sie beda roznic - ale koncepcje pozostaja te same.

Drugi - rzucanie jest na niepotrzebne biblioteki - tutaj znowu w swiecie Javy takim cudem jest Spring. Mam wrazenie, ze Spring Boot to najgorsze co moglo sie przytrafic zaczynajacym - bo paradoksalnie daje prosty dostep do bardzo zaawansowanych narzedzi.. i na tym konczy. Latwy start, a potem ciezko. Inny przyklad to rzucanie sie na robienie pierwszej gry w takim Unity albo nie daj boze Unreal Engine. No i jasne, da sie, tak samo jak da sie robic strone-wizytówke w Springu MVC - ale efekt bedzie taki, ze zamiast zrozumiec podstawy wklika sie troche magii, skopiuje pare skryptow... bo nie oszukujmy sie, nikt nie spedzi miesiaca na poznaniu niuansow bibliotek przed napisaniem pierwszego projektu. Zdecydowanie lepiej nauczyc sie, nie wiem, dzialania spriteów w jakims libgdx czy innym tam stencylu przed rzucaniem sie na CryEngine.... no ale libgdx nie wspiera PS4... ;)
Duzo lapiej zalapiesz dzialadnie Spring DI gdy bedzie potrafil recznie podzielic swoj kod na sensowne klasy, bez znajomosci czym jest singleton i proxy - za wiele tez nie zrozumiesz...

Trzeci - przedwczesna optymalizacja i planowanie na przyszlosc - O rany, temat rzeka. Cos w stylu - oohhh, robie swoj wlasny engine do bloga, bo chce sie nauczyc, ale czytalem ze node jest szybsze i obsluzy wiecej requestow niz ASP.NET, ale slyszalem ze C bedzie jeszcze szybcsze wiec lepiej byc gotowym na przyjecie miliona reuqestow na minute zamiast tylko 2000. Dywagacje, czy wiecej requestow obsluzy redis czy mysql, a w sumie Oracle to sie lepiej klastruje... A mongo... taki schemat elastyczny no i szybkie.. A jak bedzie trzeba bloga podlaczyc pod SAPa to w Springu jest gotowy modul, a podpiecie Droolsow ulatwi dalszy rozwoj strony "O mnie" i ulatwi sortowanie po tagach...
Brzmi absurdalnie? No bo takie jest wiekszosc tego typu wydwagacji. To straszna pulapka, wpadaja w nia czesto i powazne firmy, ktorym sie wydaje, ze sa google. Generalnie kwestie optymalizacji i testowania wydajnosci to temat tak bardzo szeroki i tak bardzo blednie robiony nawet przez "profesjonalistow" - ze pewnie doczeka sie swojego wpisu.

Czy to znaczy, ze biblioteki sa do niczego i nie warto? Bron boze, warto i trzeba. Ale gorsze od przepisywania istniejacej biblioteki jest tylko korzystanie z biblioteki bo "taka moda" albo da ci niesamowite mozliwosci ktorych nie rozumiesz i nie potrzebujesz. Na studiach przerabia sie pisanie samemu nie wiem, list czy innych prostych struktur - oczywiscie, od czasu studiow malo kto pisal wlasne listy - ale za to rozumie jak taka lista dziala, jaka ma zlozonosc i jakie sa warianty.

Reasumujac - jak chcesz spedzac tydzien szukajac "tego" jedynego jezyka - po prostu sie jakiegos naucz. Nie boj sie robic aplikacji czy stron bez bibliotek albo ograniczajac ich ilosc. To, ze sam bedziesz plul HTMLem w servlecie to nic zlego - oczywiscie dopoki sie uczysz. Ale za to, jak zaladujesz potem Spring MVC to zrozumiesz jak tak naprawde dziala szablon i jaka "magia" wklada do niego wartosci. Napisanie prostego snake nawet w konsoli pozwoli ci zrozumiec podstawowe koncepty robienia gier (input, glowna petla etc). I tak dalej i tak dalej.
Slowem - jakkolwiek banalnie by to nie brzmialo - odloz myslenie o 15k i pobrudz sobie rece. Nigdy nie zaszkodzi.

#abstrakcjaprogramowania #naukaprogramowania
  • 3
  • Odpowiedz
@M4ks: Ja nigdy nie żałowałem, że zacząłem od cpp pomimo tego, że nic w nim sensownego nie stworzyłem ani nie planuję wiązać z nim przyszłości. Teraz nauka każdego innego języka to pikuś.
  • Odpowiedz
@M4ks: No elo, przy akapicie "Drugi" chyba słówko jest trzeba zamienić na się (nie mogłem przestać o tym myśleć, aż do końca wpisu :D). Jak zawsze tekst na poziomie, tak trzymać :P
  • Odpowiedz
przy akapicie "Drugi" chyba słówko jest trzeba zamienić na się (nie mogłem przestać o tym myśleć, aż do końca wpisu :D).


@kubabe: masz racje. Ale teraz juz po ptakach niestety.
  • Odpowiedz