“Venitada” Keelt, või, 28 aastat programmeerimine

Link: https://blog.osteele.com/2006/02/stretch-languages

Viimasel ajal olen läbi programmeerimiskeeled olen kasutanud üle 28 aastat1 minu programmeerimine karjääri. Tulemus on näidatud alltoodud joonisel. (Kliki pildil, et näha seda täissuuruses.)

1

 

Seal on mõned ilmne suundumusi siin2. Keeled on enamasti saada kõrgema taseme. Seal on mõned “ellujäänute”: keeled, mida olen kasutanud üle muidugi kümnendil, kuigi discontiguously: C/C++, Common Lisp ja Java. Java on asendatud C (välja arvatud pihistellä umbes 2000, kui ma läksin tagasi, et madala graafika programmeerimine kell AlphaMask), ja skriptimise keelt on üle võetud ühistest Lisp — nad on aeglasemad, aga nad on napisõnaline, on parem raamatukogud, ja on lihtsam kasutada.

See ei üllata mind, et seal on nii palju erinevaid keeli. Üks asi, mulle meeldib keeli, ja ma naudin õppimist, kuidas programm õppida uusi. Teine asi, korda muutused ja programmeerimiskeelte paremaks. Sa pead olema hull, et programmi 1970 BASIC nendel päevadel. (See on PÕHILINE, mitte Visual Basic. Keel, ma katkesta minu hambad ei pea funktsioone või struktuure.) Ja seal lihtsalt ei ole, palju kõne Z80 assamblee enam.

Aga miks nii palju keeli korraga?

Põhjus on see, et eri keeltes on hea erinevaid asju. Kui ma esimest õppinud programmi, ma kasutatavad PÕHILISED kõike. Siis ma hakkasin kasutades assamblee kood, mis tuli kiiresti, aga ma ummikus PÕHILISED teed oma kodutöö. (Kümnes klass kirjutasin programmid paljunema ja teistpidi maatriksid, nii et ma ei oleks igav, rumal teeb seda käsitsi. See võttis kauem aega, aga mul oli lõbus.)

See on see, mida teine graafik näitab. Taas, kliki thumbnail, et näha täissuuruses versiooni. Ja ole ettevaatlik! — värvid ei tähenda, et sama asi nagu graafiku. (Vabandust.)

2

 

Ma kasutan nelja tüüpi keeled: utiliit keeled, kirjutus vahendid ja probleemide lahendamiseks; application keeled, kirjutus-jaotatava integreeritud rakendused; system programming keeled, rakendamise operatsioonisüsteemide ja madalal tasemel raamatukogud; ja neljas kategooria keeles, millest ma teile kõne “venitada keeled”, õppimiseks, kuidas programmi. (Ma ka võõpama koos bash shell programmide ja R statistika, aga tegelikult ma ei mõtle nii, nagu ma neid kasutada nagu programmeerimine.)

utiliit keel on kasulik lahendada väikesed probleeme ja uurida probleemi domeene. See, mida sa kirjutad oma kümme-minutilise programmi. Kui te saate kasutada oma kasuliku keele kui teie fail manipuleerimise keel ja ehitada oma keel, on kõigil parem. (Kuigi ma ei teinud palju programmeerimine C-keeles ja siis Java, ja ma proovisin kasutada, muuta ja sipelgas neid. Nüüd, et ma kasutan Ruby nagu minu utility keel, ma olen palju õnnelikum, kasutades Kümnise asemel.)

rakenduse keelt on hoone suuremat täis-funktsioon programmid, et teised inimesed saavad kasutada. (See on minu termin. Arvan, et “töölaua rakendus” või “web application”.) Taotluse keel on sageli nõuded kiiruse, OS integratsiooni ja kasutamisvõimalusi, et kasuliku keeles ei ole.

(“Taotlus” minu jaoks kasutada tähenda töölaua rakendusi. Hiljuti olen ainult kirjutanud, web-rakendused — kuigi ma ei kirjuta MacOS app paar kuud tagasi, et õppida MacOS tööriistakast. See on põhjus, miks “Töölaua Rakendus” kategooria teises chart trails maha, et asendada keeles kirjutamiseks veebi rakendusi ja veebipõhine kliente, et ühendada neid.)

Lõpuks, punkt a venitada keel on õpetada mulle uusi viise, kuidas mõelda programmeerimine. See on vastupidine utiliit keel, kuigi venitada keel võib muutuda utility keele pärast ma neelavad selle põhimõtted. Kasuliku keel teeb lihtsaks express programmid, mida ma silmas pead; ta saab välja, nii et mul on ainult mõelda, probleem domeeni, ja mitte seda, kuidas teha programmi. Venitada keelt saab muuta seda raske teha, isegi lihtsaid asju, sest ma olen ikka veel õppe mõisted, mis on vajalikud selleks, et seda kasutada idiomatically või, mõnikord, et kasutada seda üldse.

Mõnikord venitada keel muutub kasuliku keeles või taotluse keeles. See juhtus Common Lisp, mis võttis mind mõnda aega, et aru saada, aga samal ajal oli minu kõige produktiivsemad keeles.

Sagedamini, kontseptsioone, mida ma õppida venitada keel on abiks kasutada ka teisi keeli, isegi kui mul on väljendada neid mõisteid kirjutades samaväärne makro-laiendatud koodi või VM. Näiteks mina olen kirjutanud jätkamine-põhine muster matcher Common Lisp ja loogika programmi Java, kuigi kumbki keel toetab neile vastavaid funktsioone. Projekteerimine programmid nagu oleks funktsioonid olemas teinud kõva probleem tractable.

Ja lõpuks, koolituspõhimõtteid ühest keelest lihtsam minu jaoks neid ära tunda ja alustada, kasutades neid siis, kui nad on olemas rohkem mainstream keeles või ühes parema kasutuselevõtu omadused. Need meist, kes olid tuttavad nõu ja CLOS MOP oli jamas mõista, kuidas kasutada AOP, kui ta tuli ümber Java. Tänapäeva vooru skriptimine keeles (Python 2.x ja Ruby) on Mopid — kui sa oled tuttav nende Smalltalk, sa tead, kuidas kasutada ära neid Python ja Ruby liiga. Ja kui ma kunagi kasutada C++ jälle, vähemalt ma tean Haskell otsima mall variantidega combinator raamatukogud.

Siin on keeled, mida ma olen õppinud aastate jooksul, ja mida ma olen õppinud igast üks3. Mõned keeled, mis ei asu minu nimekiri oleks täiesti soliidne venitada keeles keegi teine — ma lihtsalt juhtus olema tuttav nende mõistete selleks ajaks, kui ma sain neile. Näiteks Python on ilmselt trahvi viis õppida OO (ja minu poeg, õppinud palju OO kontseptsioone Logo MicroWorlds), ja ma ei ole õppinud metaobject programmeerimine Ruby kui ma poleks juba õppinud seda Smalltalk ja Common Lisp.

  • BASIC: basic programmeerimine
  • Z80: ADTs; rekursioon
  • Prolog: loogika muutujad; abstracting üle kontrolli voolu
  • CLU: välja arvatud käitlemine; coroutines; parameterized andmetüübid
  • Smalltalk: OOP
  • Common Lisp: funktsionaalne objekte; meta-objekti kavandamise
  • Java: concurrency
  • Eiffeli: projekteerimine lepingu
  • Haskell: laisk hindamine; tüüp klassid
  • LZX (OpenLaszlo): piiraja põhinev programmeerimine

Praegu minu venitada keel on Haskell. Kui ma kirjutada Haskell, ma tunnen ennast nagu alguses programmeerija uuesti. Ma ei saa seda kasutada, kui mul on kiire, ja ma ei kasuta seda, kui ma olen rohkem huvitatud probleem domeeni kui käsitöö-programmeerimine. Lugemine Haskell on nagu lugemine luule (ma olen väga aeglane on see, ja ma ei saa koorima, sest uus-mõiste tihedus on väga suur) ja kirjutamise Haskell on nagu kirjutamine luule (midagi muud, et võtab mind igavesti). Erinevalt Python ja Ruby, mis on proosaline, ja Enterprise Java, mis on rohkem nagu maksu kujul.

Tõlked

Serbo-Croation: Tänu Jovana Milutinovich Ülikooli Belgradis Serbia tõlkimine selle artikli arvesse Serbo-Croatin.

Ma õppisin programmi seitsmenda klassi, alates TRS-80 I Taseme nõutavaks. See teeb mind nii (1) peaaegu 30, ja (2) innumerate.

Kogu see essee, ma olen suuruse üle keeles, mida ma kasutada ja kuidas ma neid kasutada. YMMV.

See loetelu sisaldab rohkem keeli, kui graafikuid teha, sest see hõlmab keeli, et ma pole kunagi kaubanduslikult kasutatavad. Ma olen ainult kunagi kasutada Prolog ja CLU kolledži projekte, näiteks, kuid ma sain teada, palju neid niikuinii.

Leave a Reply