O programskim jezicima
July 5, 2008 – 3:04 am
Ukoliko se profesionalno ne bavite programiranjem, a čak i ako da ali ste u konvencionalnijim programerskim vodama, moguće da vam je promakla sva sila zanimljivih programskih jezika i načina razmišljanja. Kod programskih jezika, kao i kod ljudskih jezika, vrijedi da svaki jezik donosi neke nove spoznaje i način gledanja na svijet, čisto zato što ih je većina nastala kao rezultat više ili manje posebnog načina razmišljanja.
Kako ne biste radi opće programerske kulture morali satima proučavati opskurne programske jezike da biste shvatili njihov smisao, potrudio sam se i to učinio za vas. Ovo što slijedi potpuno je subjektivan oneliner opis pojedinih jezika, koji odražava koliko god je to moguće pravo stanje (ako ne već pravo stanje, onda bar moje mišljenje i poznavanje dotičnog jezika).
- Assembler
- Zašto bi pamtili opkodove kad ih možemo nazvati imenima
- Fortran
- Matematičke formule koje računalo zna izvršavati
- C
- Portabilni assembler
- Smalltalk
- Objekti koji međusobno pričaju
- C++
- Portabilni assembler s objektima koji umjesto pričanja skakuću po tablicama u memoriji, sa Turing-complete sintaksom
- Objective C
- Portabilni assembler s objektima koji međusobno pričaju, osim što nije baš jako portabilan
- Basic
- Programski jezik za učenje programiranja koji će vas naučiti užasno lošem načinu programiranja
- Pascal
- Mogućnosti Basica s jednostavnošću C-a
- Forth
- Vidi što sve mogu sa stackom
- Lisp
- Program je podatak
- LOGO
- Lisp za djecu u kornjačinom oklopu
- Scheme
- Lisp je kompliciran
- Prolog
- Ako je Pero stariji od Branka, a Marko je brat od Petre, tko od njih pije Karlovačko?
- ML
- Lisp + Prolog
- Haskell
- Kategorija je sustav objekata s morfizmima, a morfizmi kategorije kategorija su funktori. Monoidi su specijalne vrste kategorija…
- Visual Basic
- Hrpa GUI kontrola s Basicom kao skriptnim jezikom
- Delphi
- Visual Basic, ali varijanta sa Pascalom
- Perl
- Postoji više od jednog načina da se to napravi, i svaki od njih ima svoj posebni operator
- Python
- Perl je ružan, whitespace indentacija je lijepa, eskplicitno je bolje od implicitnog, a namespaceovi su super
- Ruby
- Objekti, poruke, closures (zatvori? :D ), kontinuacije, omg web2.0 rails!!!one
- Java
- Enterprise-grade objekti, XML konfiguracijske datoteke i Eclipse IDE koji će tih par megabajta boilerplatea ionako sam generirati
- C#
- Microsoftova Java
- PHP
- Visual Basic za web
- JavaScript
- Lisp sa vitičastim zagradama, za browsere
- Erlang
- Deset tisuća procesa od kojih svaki izvršava 10 linija koda
- D
- Java/C# s kojim možete pisati čak i kernel ako baš želite, i na kraju ga i kompajlirati u izvršni kod
- Lua
- Skriptni jezik namjenjen embeddanju u aplikacijama
- Modula-2
- Objective C + Pascal
- COBOL
- Moć Basica uz jezgrovitost SQL-a
- BASH
- Glavno da program čita sa stdin, piše na stdout i radi exit s nekom vrijednošću, možemo ga iskoristiti kao naredbu
Bonus:
- Brainfuck
- Turingov stroj je user-friendly
- LOLCODE
- CEILING CAT SAYZ, LOL, I CAN HAZ BRAINFUCK COMPILER. SRYSL.
Kao što vidite, svijet programskih jezika stvarno je raznolik. Kako znati koji od njih je najbolji? To naravno ovisi o samoj primjeni, uvjetima i programima koje treba izvesti, ali nerjetko se među ljubiteljima pojedinih programskih jezika javlja uvriježeno mišljenje o drugim programskim jezicima. Na osnovu toga, evo neslužbene ljestvice popularnosti:
- Samo dno rezervirano je za BASIC i PHP o kojima nitko ne želi reći ništa lijepo, a oni koji ih prakticiraju (mea culpa za PHP) vade se na to da su prisiljenk…
- Statički/sistemski jezici (C, C++, FORTRAN) - Hardcore programeri, ne priznaju ništa što se ne da kompajlirati u izvršni kod, kunu se u brzinu i performanse i podsmjehuju tamo nekim skriptnim jezicima.
- Dinamički jezici (Perl, Python, Ruby) - Iskreno žale programere koji moraju ručno rukovati memorijom, a nemaju niti tako osnovni tip podataka kao što je string. No za sebe smatraju da su praktični i iako se dive dijelovima LISP-a, smatraju njegove ljubitelje čudacima koji baš i nisu u doticaju s realnošću.
- LISPeri se drže one stare “Any sufficiently complicated C or Fortran program contains an ad-hoc, informally-specified bug-ridden slow implementation of half of Common Lisp.”, a dinamičke jezike iz prethodne točke smatraju upravo tim “informally-specified bug-ridden sporim implementacijama”.
- Haskell-ovci smatraju LISP priprostim, a ostale uopće ne žele komentirati (shvatiti ovo u kontekstu: haskell ionako koriste samo matematičari u duši, koji su i inače poznati po skromnim izjavama tipa “Bog bi htio biti matematičar”)
Nadam se da će vam ove kratke liste i opisi korisno poslužiti slijedeći put kad se budete zatekli na nekom geek partyu i tražili temu za neobavezan chitchat s pripadnicom suprotnog spola. Kako su opisi proizašli iz mojeg velebnog, ali ipak ne i sveobuhvatnog znanja o programskim jezicima, pozivam vas da ispravke netočnih navoda kao i svoja razmišljanja na ovu temu podijelite sa mnom u komentarima.


6 Responses to “O programskim jezicima”
Heh, na kraju se sve svodi na “right tool for the job”, koliko god mi šutjeli o tome. :)
Kad si već spomenuo LOGO, nedavno sam naletio na neku verziju za Windowse (možda čak i Microsoftovu) i na moje ogromno razočaranje - nema kornjače! Pokazivač je neki bezvezni trokut. Fuj.
Odličan pregled. Kod LISP-a bih još spomenuo da je to navodno jezik u kojem je Bog napisao svemir. ;)
By Nikola Plejić on Jul 5, 2008
Pada mi na pamet da si zaboravio Actionscript..
By carr on Jul 10, 2008
odlična usporedba…
By nikola on Jul 16, 2008
a bash sam se pitao kojim putem da krenem u svijet programiranja…uz povrsno poznavanje asemblera za 6502 i Motorolu 680×0
http://www.hermann-uwe.de/taxonomy/term/388
a bila je i ona zgodna shemica iz kojeg je koji jezik vukao korijene…
http://bluebones.net/evolution/evo-prog-lang.png
By drGspot on Jul 16, 2008
@carr: istina, iako actionscript i javascript su dovoljno slični da to mogu pod isti koš svrstati…
By senko on Jul 19, 2008