Kamo nakon PHP-a?
October 25, 2008 – 9:30 am
Ozbiljan ste PHP developer već par godina (dotakli ste se nekoć davno malo i C++-a ili Jave, ali bliski susret vas nije oduševio), ali većinom radite standardne web stvari, upili ste svo znanje koje ste mogli i želite dalje, dosadilo vam je biti fah-idijot i željeli biste naučiti nove, zanimljive stvari i proširiti vidike?
Istu dilemu našao sam jednom blog postu (via Hacker News), napisao komentar, a onda u Berislavovoj maniri odlučio da stvar zavrijeđuje i poseban post.
Dakle, želite above & beyond PHP-a? Preporučam vam nešto od slijedećeg:
- naučite / ponovite C
- I to ne C++, nego baš C, portabilni assembler, s kojim ćete se (ponovno) upoznati što je to računalo, kako rukovodi memorijom i kako izvršava instrukcije koje mu date. Dobro proučite rekurziju, pointere (onima koji prezrivo frkću:
void (**foo)(int, char **) = &main;ftw :-), kompajlirajte dio koda (bez optimizacije) u assembler i proučite cdecl, petlje i ako/onda blokove) - ako već niste, upoznajte se s raznim algoritmima i strukturama podataka
- Svi već znaju sve o linkanim listama, ali proučite i algoritmime na grafovima, balansirana stabla, bloom filtere, DHT-ove i ostale čudne stvari)
- naučite Python (ili Ruby)
- Ne samo ispisivati “hello world” ili isprogramirati igricu pogađanja brojeva. Naučite što su to dekoratori, generatori, razlika između *args i **kwargs, list comprehensioni i razlika između klasičnih i new-style klasa (u Rubyu, shvatite closure i razliku između metoda i poruka objektima). Provedite neko vrijeme s Twistedom i njegovim deferredima, napišite mrežni server ili dva…
- eksperimentirajte sa data-mining algoritmima
- Vrlo zanimljive stvari kriju se iza ovog vrlo dosadnog imena. Imate gomilu raw podataka, a vaš cilj je saznati nešto novo (i korisno) ih te gomile, dakle igrati se hackera-detektiva. Preporučam O’Reillyev Programming Collective Intelligence kao sidekicka.
- pročitajte SCIP
- Cijeli, od početka do kraja, radeći sve vježbe. Čak i ako nikad više u životu ne napišete niti jednu liniju LISP-a, zauvijek ćete biti promjenjeni. Knjiga je dostupna online, a postoje čak i video snimke predavanja (cijeli predmet/semestar).
- napravite svoj kompajler
- …ili virtualnu mašinu, koristeći LLVM, i usput naučite razliku između register-based i stack-based virtualnih mašina, razliku između AOT, JIT kompajliranja i interpretiranja, i štošta još
- isprogramirajte kernel modul
- Pisanje dummy filesystem drivera za Linux je lagani uvod u kernel programiranje pod Linuxom (a pogledajte i ovo)
- naučite Haskell
- Taman nakon što ste se navikli na dinamički-tipizirane jezike, uskočite u Haskell, naučite razliku između
Bool->Int->IO() StringiBool->Int->String, naviknite se na type-inferrence, postanite ovisni o pattern matchingu i saznajte sve što niste željeli znati o teoriji kategorija - napišite svoj OS
- Napišite svoj microkernel-based operacijski sustav, fokusirajući se na zanimljive stvari a koristeći gotove komponente za ono što vam se ne da ručno programirati.
Nadam se da ćete u gornjoj listi naći nešto zanimljivo za sebe. Čak i ako nešto od navedenog radite iz čiste zabave i nikad to konkretno ne iskoristite (ili ako ne dođete niti do pola knjige / projekta), novo iskustvo i novo znanje promjenit će vaš način gledanja na svijet i rješavanja stvari i u “običnijim” situacijama, npr slijedećem PHP projektu od kojeg zarađujete za život.
Još na kraju samo napomena da sam Python fan, a day job mi je alternirajuće C, PHP i Python programiranje, pa sam sigurno bar malo neobjektivan. Zato bih volio čuti i druge ideje za zabavne i poučne projekte, te vaše mišljenje o mojoj listi; komentari su otvoreni ;-)


One Response to “Kamo nakon PHP-a?”
Zanimljivo, 8 sati dnevno radim u PHP-u i baš i nisam stekao dojam da je moguće doći do toga da se iz tog područja ’stekne svo znanje koje se moglo’ - uvijek ima nešto novo za naučiti (npr. trenutno bi mi tu dobro došlo još dublje poznavanje Zend Frameworka, a i iskustvo sa ‘automated unit testingom’ bi mi bilo poprilično korisno), tako da…
Ipak, ima nečeg u tvom postu - u posljednje vrijeme sam izvukao neke svoje stare C programe i počeo se ponovno poigravati s njima (Gtk je krivac za to što sam odabrao C, a ne C++). Isto tako, ovaj tjedan sam počeo ponovo upoznavati s pythonom - za to je kriva jedna backup skripta koja mi je zatrebala… :-D
Sve u svemu - nekako mi se sve više čini da taj PHP baš i nije nešto najzanimljivije u čemu se može programirati i ako se netko želi nečim baviti u slobodno vrijeme, ovo navedeno u postu je jako, jako dobar izbor (barem koliko ja poznajem pojedina navedena područja - neka bolje, neka slabije).
By Siniša Habek on Oct 25, 2008