Back to site
Since 2004, our University project has become the Internet's most widespread web hosting directory. Here we like to talk a lot about web servers, web development, networking and security services. It is, after all, our expertise. To make things better we've launched this science section with the free access to educational resources and important scientific material translated to different languages.

Stretch jezici, odnosno 28 godina programiranja


Nedavno sam pregledao programske jezike koji se koriste više od 28 godina1 moje karijere u programiranju. Rezultat je prikazan u tabeli. (Kliknite na sliku da vidite punu veličinu).



Postoje neki očigledni trendovi ovde2. Jezicima se većinom podiže nivo. Postoji nekoliko "preživelih" jezika koji se koriste više od jedne decenije, iako sa prekidima: C/C++, Common Lisp i Java. Java je zamenila C (osim oko 2000., kada sam se vratio na grafički program najnižeg nivoa, Alphamask) i skripting jezici su preuzeti iz Common Lisp - spori, ali koncizni, imaju dobre biblioteke, i lakše se rade.

Nije me iznenadilo da postoji toliko jezika. Prvo, ja volim jezike i uživam u učenju kako da programiram, učenjem novih. Drugo, sa promenom vremenana dolaze i bolji programski jezicima. Trebalo bi da budeš lud da programiraš u Basic-u iz 1970. ovih dana. (Ovo je osnovni, a ne Visual Basic. Jezik u koji sam zario zube nije imao funkcije ili strukture.) I jednostavno nema mnogo potrebe za Z80 skupovima.

Ali zašto toliko jezika odjednom?

Razlog je u tome što su različiti jezici dobri u različitim stvarima. Kada sam prvi put saznao da programiram, BASIC sam koristio za sve. Onda sam počeo da koristim sklopove kodova koji su trebalo da budu brzi, ali sam zaglavio sa BASIC-om za domaći zadatak. (U desetom razredu sam napisao programe za množenje i inverziju matrica, da mi ne bi bilo dosadno da radim ručno. Trajalo je duže, ali je mnogo zabavnije.).

Ovo je ono što pokazuje drugi dijagram. Ponovo kliknite na sličicu da biste videli verziju pune veličine. I pazite se! - Boja ne znači isto što i na grafikonu gore. (Žao mi je.)



Ja koristim četiri različita jezika: Korisne jezike, za pisanje instrumenata i rešavanje problema; jezik aplikacija za pisanje distributivnih aplikacija, sistemske jezike za programiranje za realizaciju operativnih sistema i biblioteka niskog nivoa i četvrta kategorija, jezici koje ja nazivam "Razvučeni jezici" za učenje programiranja. (Takođe sam se bavio bash shell programiranjam i R-om za statistiku, ali ja stvarno ne mislim da je način na koji sam ih koristio, u stvari programiranje.)

Korisni jezik se koristi za male probleme, za istraživanje oblasti problema. To je ono što ste napisali u desetominutni program. Ako možete da koristite svoj jezik kao sredstvo za manipulaciju fajlovima i za jezik izgradnje, još bolje. (Tada sam radio dosta programiranja u C, onda Java). Sada kada koristim Rubi kao korisni jezik, mada sam mnogo srećniji kada koristim Rake umesto njega).

Jezik aplikacija je za izgradnju većih, potpunijih, funkcionalnih programa koje drugi ljudi koriste. (Ovo je moja upotreba termina. Misli, "desktop aplikacija" ili "web aplikacija".) Jezik aplikacija ima često ima zahteve u vezi brzine, integracije OS, kao i upotrebljivost, koju korisni jezik nema.

( "Aplikacija" je za mene značila, desktop aplikacija. U skorije vreme sam pisao samo veb aplikacije - mada sam napisao MacOS veb-alikaciju pre nekoliko meseci, kako bi saznao više o alatima MacOS. Dakle, kategorija "Desktop Aplikacija" u drugom grafikonu nestaje i biva zamenjena jezikom za pisanje Web aplikacija i klijentu baziranom na pregledaču koji ih povezuje).

Na kraju, poenta Razvučenog jezika je da me nauči novim načinima programiranja. To je suprotno od korisnog jezika iako se Razvučeni jezik može pretvoriti u korisni jezik nakon što apsorbuje svoje koncepte. Korisni jezik olakšava da se izrazim o programima koje imam u vidu; to se sklanja sa puta, pa sam morao da razmišljam o oblasti problema, a ne o programiranju. Razvučeni jezik može da oteža lake stvari, jer još uvek učim koncepte koji su potrebni da se koristi idiomatski ili ponekad da se koristi uopšte.

Ponekad Razvučeni jezik postaje Korisni jezik ili Jezik aplikacije. To je bio slučaj sa Common Lisp, za šta mi je trebalo vremena da shvatim, ali za kratko vreme je postao moj najproduktivniji jezik.

Često koncepti koje učim iz Razvučenog jezika mogu je da pomogne u upotrebi drugih jezika, čak i ako moram da izrazim ove pojmove pisanjem ekvivalenta makro-proširenog koda ili VM. Na primer, ja sam napisao pandan zasnovan na zajedničkom modelu i Common Lisp, kao i logički program u Javi, iako nijedan jezik ne podržava ove funkcije. Dizajniranje programa, iako je bilo problema, omogućilo je da se teški problemi pronađu.

I konačno, koncepti učenja iz jednog jezika olakšavaju prepoznavanje i početak korištenja kada su dostupni u mejnstrim jeziku ili onome sa boljim karakteristikama realizacije. Oni od nas koji su bili upoznati sa Clos MOP imali su razumevanje kako da koriste AOP kada je došlao do Jave. Moderni tokovi skripting jezika (Python 2.k i Rubi) imaju MOPS - ako ste upoznati sa njima iz Smalltalk, znate kako da ih iskoriste u Python i Rubi. Ako ikada budem morao da koristim C++ opet, barem ću znati iz Haskell-a da tražim implementaciju šablona kombinatornih biblioteka.

Ovde su jezici koje sam naučio tokom godina, i šta sam naučio iz svakog3. Neki od jezika koji nisu u mojoj listi jezika mogu biti savršeno respektabilan Razvučeni jezik za nekog drugog - dogodilo se da budem upoznat sa njihovim konceptima, dok sam stigao do njih. Na primer, Python je verovatno odgovarajući način da saznate više o OO(i moj sin je naučio mnogo o OO konceptima od Microworlds Logo), a ja sam mogao naučiti iz metaobjektivnog programiranja u Rubi, da nisam već naučio iz Smalltalk i Common Lisp.
  • BASIC: Osnovno Programiranje

  • Z80: ADTs,

  • Prolog: logičke promenljive, apstrahujuća kontrola protoka

  • Clu: rukovanje izuzecima , ko-rutine, parametrizovani tipovi podataka

  • Smalltalk: OOP

  • Common Lisp: funkcionalni objekti, metaobjektivno programiranje

  • Java: konkurentnost

  • Ajfel: dizajn po ugovoru

  • Haskell: lenja evaluacija, ukucajte klase

  • LZX (OpenLaszlo) na osnovu ograničenja programa
Sada je moj Razvučeni jezik Haskell. Kada pišem u Haskell-u, osećam se ponovo kao programer iskušenik. Ja ne mogu da ga koristim kada sam u žurbi, već ga koristim kad sam više zainteresovan za problem nego za programiranje. Haskell je kao čitanje poezije (ja sam veoma spor u tome, a gustina novog koncepta je veoma visoka), a Haskell je kao pisanje poezije (nešto što će trajati zauvek). Za razliku od Python-a i Rubi, koji su više prozaični, Java Enterprise, što je više kao poreski obrazac.
  1. ..Naučio sam prvi program u sedmom razredu, na TRS-80 Level i Basic reference. To me čini (1) da imam skoro 30, i (2) innumerate
  2. ..U ovom eseju, ja kvantifikujem jezike koje koristim i kako ih koristim. IMMV
  3. .. Ova lista uključuje više jezika od grafikon jer uključuje jezik koji ja nikada ne koriste komercijalno. Prolog i CLU sam koristio samo za fakultetske projekte, na primer, ali ipak sam naučio puno od njih.




Published (Last edited): 10-09-2012 , source: http://osteele.com/archives/2006/02/stretch-languages