VadoÅ”Ä filozofija
1. ProgrammÄÅ”anas valodas cilvÄkiem
ProgrammÄÅ”anas valodas ir veids, kÄ cilvÄki runÄ ar datoriem. Dators ar prieku runÄs jebkurÄ valodÄ, kas nav viennozÄ«mÄ«ga. Iemesls, kÄpÄc mums ir augsta lÄ«meÅa valodas, ir tas, ka cilvÄki nevar rÄ«koties ar maŔīnvalodu. ProgrammÄÅ”anas valodu mÄrÄ·is ir novÄrst to, ka mÅ«su nabadzÄ«gÄs, trauslÄs cilvÄka smadzenes tiek nomÄktas ar pÄrÄk daudzÄm detaļÄm.
Arhitekti zina, ka dažas dizaina problÄmas ir ikdieniŔķÄkas nekÄ citas. Dažas no skaidrÄkajÄm un abstraktÄkajÄm dizaina problÄmÄm ir tiltu projektÄÅ”ana. Å ajÄ gadÄ«jumÄ jÅ«su uzdevums ir veikt nepiecieÅ”amo attÄlumu, izmantojot pÄc iespÄjas mazÄk materiÄlu. Spektra otrÄ galÄ ir krÄslu dizains. KrÄslu dizaineriem vajadzÄtu pavadÄ«t laiku, domÄjot par cilvÄku dibeniem.
ProgrammatÅ«ras izstrÄdei ir lÄ«dzÄ«ga atŔķirÄ«ba. Algoritmu izstrÄde datu marÅ”rutÄÅ”anai tÄ«klÄ ir jauka, abstrakta problÄma, piemÄram, tiltu projektÄÅ”ana. SavukÄrt programmÄÅ”anas valodu projektÄÅ”ana ir kÄ krÄslu projektÄÅ”ana: jÄtiek galÄ ar cilvÄka vÄjÄ«bÄm.
LielÄkajai daļai no mums to ir grÅ«ti saprast. Elegantu matemÄtisko sistÄmu projektÄÅ”ana lielÄkajai daļai no mums izklausÄs daudz pievilcÄ«gÄka nekÄ cilvÄku vÄjo vietu pielÄgoÅ”ana. MatemÄtiskÄs elegances loma ir tÄda, ka zinÄma elegance padara programmas vieglÄk saprotamas. Bet tas nav viss par eleganci.
Un, kad es saku, ka valodas ir jÄveido tÄ, lai tÄs atbilstu cilvÄka vÄjÄ«bÄm, es nedomÄju, ka valodÄm jÄbÅ«t izstrÄdÄtÄm sliktiem programmÄtÄjiem. PatiesÄ«bÄ jums vajadzÄtu izstrÄdÄt programmatÅ«ru labÄkajiem programmÄtÄjiem, taÄu pat labÄkajiem programmÄtÄjiem ir savas robežas. NedomÄju, ka kÄdam patiktu programmÄÅ”ana valodÄ, kurÄ visi mainÄ«gie bÅ«tu apzÄ«mÄti ar burtu "x" ar veseliem skaitļu apakÅ”indeksiem.
2. Dizains sev un draugiem
Ja paskatÄs uz programmÄÅ”anas valodu vÄsturi, lielÄkÄ daļa labÄko valodu bija paredzÄtas to autoriem, un lielÄkÄ daļa sliktÄko bija paredzÄtas citiem cilvÄkiem.
Kad valodas ir paredzÄtas citiem cilvÄkiem, tÄ vienmÄr ir noteikta cilvÄku grupa: cilvÄki nav tik gudri kÄ valodas radÄ«tÄji. TÄdÄ veidÄ jÅ«s iegÅ«stat mÄli, kas runÄ ar jums. Kobols ir visievÄrojamÄkais piemÄrs, taÄu lielÄkÄ daļa valodu ir piesÄtinÄtas ar Å”o garu.
Tam nav nekÄda sakara ar valodas lÄ«meni. C lÄ«menis ir diezgan zems, taÄu tas tika izveidots, lai to izmantotu tÄ autori, tÄpÄc hakeriem tas patÄ«k.
Arguments valodu izstrÄdei sliktiem programmÄtÄjiem ir tÄds, ka sliktu programmÄtÄju ir vairÄk nekÄ labu. VarbÅ«t tas tÄ ir. Bet Å”is mazais labo programmÄtÄju skaits raksta nesamÄrÄ«gi vairÄk programmatÅ«ras.
Mans jautÄjums ir, kÄ izveidot valodu, kas patÄ«k labÄkajiem hakeriem? Man Ŕķiet, ka Å”is jautÄjums ir identisks jautÄjumam par to, kÄ izveidot labu programmÄÅ”anas valodu?, bet pat ja tÄ nav, tas ir vismaz interesants jautÄjums.
3. Dodiet programmÄtÄjam pÄc iespÄjas lielÄku kontroli
Daudzas valodas (Ä«paÅ”i tÄs, kas paredzÄtas citiem cilvÄkiem) darbojas kÄ auklÄ«tes: tÄs cenÅ”as jÅ«s brÄ«dinÄt no lietÄm, kuras, viÅuprÄt, jums nebÅ«s noderÄ«gas. Man ir pretÄjs viedoklis: dodiet programmÄtÄjam tik daudz kontroles, cik varat.
Kad es pirmo reizi uzzinÄju Lispu, man visvairÄk patika tas, ka mÄs runÄjÄm kÄ lÄ«dzvÄrtÄ«gi. CitÄs valodÄs, kuras es lÄ«dz tam biju iemÄcÄ«jies, bija valoda, un tajÄ bija mana programma, un tÄs pastÄvÄja diezgan atseviŔķi. Bet programmÄ Lisp funkcijas un makro, ko es uzrakstÄ«ju, bija tÄs paÅ”as, kurÄs tika rakstÄ«ta pati valoda. Es varÄtu pÄrrakstÄ«t paÅ”u valodu, ja es gribÄtu. Tam bija tÄda pati pievilcÄ«ba kÄ atvÄrtÄ pirmkoda programmatÅ«rai.
4. ÄŖsums ir talanta mÄsa
ÄŖsums ir nenovÄrtÄts un pat nicinÄts. Bet, ja ieskatÄ«sies hakeru sirdÄ«s, redzÄsi, ka viÅiem ļoti patÄ«k Ä«sums. Cik reižu esat dzirdÄjuÅ”i, ka hakeri mīļi runÄ par to, kÄ, piemÄram, APL, viÅi var paveikt pÄrsteidzoÅ”as lietas, izmantojot tikai dažas koda rindiÅas? Es domÄju, ka patieÅ”Äm gudriem cilvÄkiem patÄ«k tam pievÄrst uzmanÄ«bu.
Es uzskatu, ka gandrÄ«z viss, kas padara programmas Ä«sÄkas, ir laba lieta. BibliotÄkas funkcijÄm vajadzÄtu bÅ«t daudzÄm, visam, kas var bÅ«t netieÅ”s, tÄ jÄbÅ«t; sintaksei jÄbÅ«t kodolÄ«gÄkai; pat entÄ«tiju nosaukumiem jÄbÅ«t Ä«siem.
Un ne tikai programmÄm jÄbÅ«t Ä«sÄm. RokasgrÄmatÄm arÄ« jÄbÅ«t Ä«sÄm. Liela daļa rokasgrÄmatu ir piepildÄ«ta ar paskaidrojumiem, atrunÄm, brÄ«dinÄjumiem un Ä«paÅ”iem gadÄ«jumiem. Ja jums ir jÄsaÄ«sina rokasgrÄmata, vislabÄkais risinÄjums ir labot valodu, kas prasa tik daudz paskaidrojumu.
5. Atzīstiet, kas ir uzlauŔana
Daudzi cilvÄki vÄlÄtos, lai uzlauÅ”ana bÅ«tu matemÄtika vai vismaz kaut kas lÄ«dzÄ«gs zinÄtnei. Es domÄju, ka uzlauÅ”ana ir vairÄk kÄ arhitektÅ«ra. ArhitektÅ«ra ir par fiziku tÄdÄ ziÅÄ, ka arhitektam ir jÄprojektÄ Äka, kas nekritÄ«s, bet arhitekta patiesais mÄrÄ·is ir radÄ«t lielisku Äku, nevis veikt atklÄjumus statikas jomÄ.
Hakeriem patÄ«k radÄ«t lieliskas programmas. Un es domÄju, ka vismaz mÅ«su paÅ”u domÄs mums vajadzÄtu atcerÄties, ka lielisku programmu rakstÄ«Å”ana ir brÄ«niŔķīga lieta, pat ja Å”o darbu nav viegli pÄrvÄrst parastajÄ zinÄtnisko rakstu intelektuÄlajÄ valÅ«tÄ. No intelektuÄlÄ viedokļa ir tikpat svarÄ«gi izstrÄdÄt valodu, kas programmÄtÄjiem patiks, kÄ arÄ« izstrÄdÄt Å”ausmÄ«gu valodu, kas iemieso ideju, par kuru varat publicÄt rakstu.
AtvÄrt problÄmas
1. KÄ organizÄt lielas bibliotÄkas?
BibliotÄkas kļūst par svarÄ«gu programmÄÅ”anas valodu sastÄvdaļu. Tie kļūst tik lieli, ka var bÅ«t bÄ«stami. Ja ir nepiecieÅ”ams ilgÄks laiks, lai bibliotÄkÄ atrastu funkciju, kas dara to, kas jums nepiecieÅ”ams, nekÄ paÅ”am rakstÄ«t Å”o funkciju, viss kods nedara neko citu, kÄ tikai padara rokasgrÄmatu biezÄku. (Simbolikas rokasgrÄmatas bija piemÄrs tam.) TÄtad mums bÅ«s jÄatrisina bibliotÄkas organizÄcijas problÄma. IdeÄlÄ gadÄ«jumÄ noformÄjiet tos tÄ, lai programmÄtÄjs varÄtu uzminÄt, kura bibliotÄkas funkcija ir piemÄrota.
2. Vai tieÅ”Äm cilvÄki baidÄs no prefiksu sintakses?
TÄ ir atklÄta problÄma tÄdÄ ziÅÄ, ka es par to domÄju jau vairÄkus gadus un joprojÄm nezinu atbildi. Prefiksu sintakse man Ŕķiet pilnÄ«gi dabiska, izÅemot varbÅ«t tÄs izmantoÅ”anu matemÄtikÄ. Bet var gadÄ«ties, ka liela daļa Lispa nepopularitÄtes ir vienkÄrÅ”i nepazÄ«stamÄs sintakses dÄļ... Vai mums kaut kas bÅ«tu jÄdara lietas labÄ, ja tÄ ir taisnÄ«ba, tas ir cits jautÄjums.
3. Kas nepiecieŔams servera programmatūrai?
Es domÄju, ka lielÄkÄ daļa lietojumprogrammu, kas tiks rakstÄ«tas nÄkamo divdesmit gadu laikÄ, bÅ«s tÄ«mekļa lietojumprogrammas tÄdÄ nozÄ«mÄ, ka programmas atradÄ«sies serverÄ« un sazinÄsies ar jums, izmantojot tÄ«mekļa pÄrlÅ«kprogrammu. Un, lai rakstÄ«tu Å”Ädus pieteikumus, mums ir vajadzÄ«gas jaunas lietas.
Viena no Ŕīm lietÄm ir atbalsts jaunam servera lietojumprogrammu izlaiÅ”anas veidam. Viena vai divu lielu izlaidumu vietÄ gadÄ, piemÄram, galddatoru programmatÅ«ra, servera programmatÅ«ra tiks izlaista ar virkni nelielu izmaiÅu. Jums var bÅ«t pieci vai desmit izlaidumi dienÄ. Un visiem vienmÄr bÅ«s jaunÄkÄ versija.
Vai jÅ«s zinÄt, kÄ izveidot programmas, lai tÄs bÅ«tu apkopjamas? Servera programmatÅ«ra ir jÄveido tÄ, lai tÄ bÅ«tu mainÄma. Jums vajadzÄtu bÅ«t iespÄjai to viegli mainÄ«t vai vismaz zinÄt, ko nozÄ«mÄ nelielas izmaiÅas un kas ir svarÄ«gi.
VÄl viena lieta, kas var bÅ«t noderÄ«ga servera programmatÅ«rÄ, pÄkÅ”Åi ir piegÄdes nepÄrtrauktÄ«ba. TÄ«mekļa lietojumprogrammÄ varat izmantot kaut ko lÄ«dzÄ«gu
4. KÄdas jaunas abstrakcijas vÄl ir jÄatklÄj?
Es neesmu pÄrliecinÄts, cik saprÄtÄ«ga ir Ŕī cerÄ«ba, bet personÄ«gi es patieÅ”Äm vÄlÄtos atklÄt jaunu abstrakciju - kaut ko tÄdu, kas varÄtu bÅ«t tikpat nozÄ«mÄ«gs kÄ pirmÄs klases funkcijas vai rekursija vai vismaz noklusÄjuma parametri. VarbÅ«t tas ir neiespÄjams sapnis. TÄdas lietas bieži netiek atklÄtas. Bet es nezaudÄju cerÄ«bu.
Maz zinÄmi noslÄpumi
1. Varat izmantot jebkuru valodu, kuru vÄlaties
IepriekÅ” lietojumprogrammu izveide nozÄ«mÄja darbvirsmas programmatÅ«ras izveidi. Un galddatoru programmatÅ«rÄ ir liela nosliece uz lietojumprogrammu rakstÄ«Å”anu tajÄ paÅ”Ä valodÄ kÄ operÄtÄjsistÄma. TÄtad pirms desmit gadiem programmatÅ«ras rakstÄ«Å”ana kopumÄ nozÄ«mÄja programmatÅ«ras rakstÄ«Å”anu C valodÄ. Galu galÄ tradÄ«cija attÄ«stÄ«jÄs: lietojumprogrammas nedrÄ«kst rakstÄ«t neparastÄs valodÄs. Un Ŕī tradÄ«cija ir attÄ«stÄ«jusies tik ilgi, ka arÄ« netehniskie cilvÄki, piemÄram, vadÄ«tÄji un riska kapitÄlisti, to ir apguvuÅ”i.
Servera programmatÅ«ra pilnÄ«bÄ iznÄ«cina Å”o modeli. Izmantojot servera programmatÅ«ru, varat izmantot jebkuru valodu, kuru vÄlaties. To vÄl gandrÄ«z neviens nesaprot (Ä«paÅ”i vadÄ«tÄji un riska kapitÄlisti). Bet daži hakeri to saprot, tÄpÄc mÄs dzirdam par indy valodÄm, piemÄram, Perl un Python. MÄs nedzirdam par Perl un Python, jo cilvÄki tos izmanto, lai rakstÄ«tu Windows lietojumprogrammas.
Ko tas nozÄ«mÄ mums, programmÄÅ”anas valodas dizaina interesentiem, ka mÅ«su darbam ir potenciÄlÄ auditorija.
2. Ätrums nÄk no profilÄtÄjiem
Valodu izstrÄdÄtÄjiem vai vismaz valodas ieviesÄjiem patÄ«k rakstÄ«t kompilatorus, kas Ä£enerÄ Ätru kodu. Bet es domÄju, ka tas nav tas, kas padara valodas lietotÄjiem Ätras. Knuts jau sen atzÄ«mÄja, ka Ätrums ir atkarÄ«gs tikai no dažÄm vÄjajÄm vietÄm. Un ikviens, kurÅ” ir mÄÄ£inÄjis paÄtrinÄt programmu, zina, ka jÅ«s nevarat uzminÄt, kur ir vÄjÄ vieta. Profiler ir atbilde.
Valodu izstrÄdÄtÄji risina nepareizu problÄmu. LietotÄjiem nav nepiecieÅ”ami etaloni, lai tie darbotos Ätri. ViÅiem ir vajadzÄ«ga valoda, kas var parÄdÄ«t, kuras viÅu programmas daļas ir jÄpÄrraksta. Å ajÄ brÄ«dÄ« praksÄ ir nepiecieÅ”ams Ätrums. TÄpÄc varbÅ«t bÅ«tu labÄk, ja valodas ieviesÄji pusi no laika veltÄ«tu kompilatora optimizÄÅ”anai un tÄrÄtu to laba profilÄtÄja rakstÄ«Å”anai.
3. Jums ir nepiecieŔama lietotne, kas attīsta jūsu valodu
TÄ var nebÅ«t galÄ«gÄ patiesÄ«ba, taÄu Ŕķiet, ka labÄkÄs valodas attÄ«stÄ«jÄs kopÄ ar lietojumprogrammÄm, kurÄs tÄs tika izmantotas. C rakstÄ«ja cilvÄki, kuriem bija nepiecieÅ”ama sistÄmu programmÄÅ”ana. Lisp daļÄji bija paredzÄts simboliskai diferencÄÅ”anai, un Makartijs tik ļoti vÄlÄjÄs sÄkt darbu, ka viÅÅ” pat sÄka rakstÄ«t diferenciÄcijas programmas pirmajÄ Lisp dokumentÄ 1960. gadÄ.
Tas ir Ä«paÅ”i labi, ja jÅ«su lietojumprogramma atrisina dažas jaunas problÄmas. Tas liek jÅ«su valodai iegÅ«t jaunas funkcijas, kuras vÄlas programmÄtÄji. Man personÄ«gi interesÄ uzrakstÄ«t valodu, kas derÄs servera lietojumprogrammÄm.
[Diskusijas laikÄ Gajs StÄ«ls arÄ« norÄdÄ«ja uz Å”o punktu, piebilstot, ka lietojumprogramma nedrÄ«kst sastÄvÄt no kompilatora rakstÄ«Å”anas jÅ«su valodai, ja vien jÅ«su valoda nav paredzÄta kompilatoru rakstÄ«Å”anai.]4. Valodai jÄbÅ«t piemÄrotai vienreizÄju programmu rakstÄ«Å”anai.
JÅ«s zinÄt, ko nozÄ«mÄ vienreizÄja programma: tas ir tad, kad jums Ätri jÄatrisina kÄda ierobežota problÄma. Es uzskatu, ka, palÅ«kojoties apkÄrt, jÅ«s atradÄ«sit daudzas nopietnas programmas, kas sÄkÄs kÄ vienreizÄjas. Es nebÅ«tu pÄrsteigts, ja lielÄkÄ daļa programmu tiktu sÄktas kÄ vienreizÄjas. TÄdÄjÄdi, ja vÄlaties izveidot valodu, kas bÅ«s piemÄrota programmatÅ«ras rakstÄ«Å”anai kopumÄ, tad tai vajadzÄtu bÅ«t piemÄrotai arÄ« vienreizÄju programmu rakstÄ«Å”anai, jo tas ir daudzu programmu sÄkuma posms.
5. Sintakse ir saistīta ar semantiku
TradicionÄli tiek uzskatÄ«ts, ka sintakse un semantika ir ļoti dažÄdas lietas. Tas var izklausÄ«ties Å”okÄjoÅ”i, bet tÄ nav. Es domÄju, ka tas, ko vÄlaties sasniegt savÄ programmÄ, ir saistÄ«ts ar to, kÄ jÅ«s to paužat.
Es nesen runÄju ar Robertu Morisu, un viÅÅ” atzÄ«mÄja, ka operatora pÄrslodze ir liels pluss valodu uzvarai ar infix sintaksi. ValodÄs ar prefiksa sintaksi jebkura jÅ«su definÄtÄ funkcija faktiski ir operators. Ja vÄlaties pievienot jauna veida numuru, ko izdomÄjÄt, varat vienkÄrÅ”i definÄt jaunu funkciju, lai to pievienotu. Ja to darÄt valodÄ ar infix sintaksi, jÅ«s redzÄsit, ka pastÄv liela atŔķirÄ«ba starp pÄrslogota operatora izmantoÅ”anu un funkcijas izsaukÅ”anu.
Idejas, kas laika gaitÄ atgriežas
1. Jaunas programmÄÅ”anas valodas
Atskatoties uz 1970. gadiem, modÄ bija izstrÄdÄt jaunas programmÄÅ”anas valodas. Tagad tas tÄ nav. Bet es uzskatu, ka serveru programmatÅ«ra atkal atgriezÄ«s jaunu valodu radÄ«Å”anas modi. Izmantojot servera programmatÅ«ru, jÅ«s varat izmantot jebkuru valodu, kuru vÄlaties, tÄpÄc, ja kÄds izveido valodu, kas Ŕķiet labÄka par pÄrÄjÄm, bÅ«s cilvÄki, kas izlems to izmantot.
2. Laika dalīŔana
RiÄards Kelsijs nÄca klajÄ ar Å”o ideju, kuras laiks atkal ir pienÄcis, un es to pilnÄ«bÄ atbalstu. Mans minÄjums (un arÄ« Microsoft) ir tÄds, ka liela daļa skaitļoÅ”anas tiks pÄrvietota no darbvirsmas uz attÄliem serveriem. Citiem vÄrdiem sakot, laika dalÄ«Å”ana ir atgriezusies. Es domÄju, ka tam bÅ«s nepiecieÅ”ams atbalsts valodu lÄ«menÄ«. PiemÄram, RiÄards un Džonatans RÄ«vi ir paveikuÅ”i daudz darba, lai ieviestu procesa plÄnoÅ”anu shÄmÄ 48.
3. EfektivitÄte
Nesen Ŕķita, ka datori jau ir pietiekami Ätri. MÄs arvien vairÄk dzirdam par baitkodu, kas vismaz man nozÄ«mÄ, ka mums ir rezerves jauda. Bet es domÄju, ka ar servera programmatÅ«ru mums tÄs nav. KÄdam bÅ«s jÄmaksÄ par serveriem, kuros darbojas programmatÅ«ra, un lietotÄju skaits, ko serveris var atbalstÄ«t uz vienu maŔīnu, dalÄ«s viÅu kapitÄla izmaksas.
Es domÄju, ka efektivitÄtei bÅ«s nozÄ«me, vismaz skaitļoÅ”anas vÄjajÄs vietÄs. Tas bÅ«s Ä«paÅ”i svarÄ«gi I/O operÄcijÄm, jo āāserveru lietojumprogrammas veic ļoti daudz Å”Ädu darbÄ«bu.
Galu galÄ var izrÄdÄ«ties, ka baitkods nav risinÄjums. Å Ä·iet, ka Sun un Microsoft Å”obrÄ«d sadarbojas baitkoda laukÄ. TaÄu viÅi to dara tÄpÄc, ka baitkods ir Ärta vieta, kur sevi iegult procesÄ, nevis tÄpÄc, ka pats baitkods ir laba ideja. Var izrÄdÄ«ties, ka visa Ŕī cÄ«Åa paliks nepamanÄ«ta. Tas bÅ«tu smieklÄ«gi.
Lamatas un lamatas
1. Klienti
Tas ir tikai minÄjums, taÄu vienÄ«gÄs lietojumprogrammas, kas gÅ«s labumu, ir tÄs, kuras ir pilnÄ«bÄ servera puses. ProgrammatÅ«ras izstrÄde, kas darbojas, pamatojoties uz pieÅÄmumu, ka ikvienam bÅ«s klients, ir kÄ veidot sabiedrÄ«bu, pamatojoties uz pieÅÄmumu, ka visi bÅ«s godÄ«gi. Tas noteikti bÅ«tu Ärti, bet jÄpieÅem, ka tas nekad nenotiks.
Es domÄju, ka strauji pieaugs tÄ«mekļa ierÄ«Äu skaits, un mÄs varam pieÅemt, ka tÄs atbalstÄ«s pamata html un formas. Vai jÅ«su tÄlrunÄ« ir pÄrlÅ«kprogramma? Vai jÅ«su PalmPilot bÅ«s tÄlrunis? Vai jÅ«su Blackberry bÅ«s lielÄks ekrÄns? Vai jÅ«s varÄsiet piekļūt internetam no sava spÄlÄtÄja? No jÅ«su pulksteÅa? es nezinu. Un man nebÅ«s jÄnoskaidro, ja es derÄÅ”u, ka viss bÅ«s serverÄ«. Ir tikai daudz uzticamÄk, ja visas smadzenes atrodas serverÄ«. .
2. ObjektorientÄtÄ programmÄÅ”ana
Es saprotu, ka tas ir pretrunÄ«gs paziÅojums, bet es nedomÄju, ka OOP ir tik svarÄ«gs. Es domÄju, ka Ŕī ir piemÄrota paradigma konkrÄtÄm lietojumprogrammÄm, kurÄm nepiecieÅ”amas noteiktas datu struktÅ«ras, piemÄram, logu sistÄmas, simulÄcijas, CAD sistÄmas. Bet es nesaprotu, kÄpÄc tai vajadzÄtu bÅ«t piemÄrotai visÄm programmÄm.
Es domÄju, ka cilvÄkiem lielos uzÅÄmumos daļÄji patÄ«k OOP, jo tas padara daudzas lietas, kas izskatÄs pÄc darba. To, ko dabiski varÄtu attÄlot kÄ, teiksim, veselu skaitļu sarakstu, tagad var attÄlot kÄ klasi ar visdažÄdÄkajÄm sastatnÄm, kÅadu un burzmu.
VÄl viena pievilcÄ«ga OOP iezÄ«me ir tÄ, ka metodes sniedz daļu no pirmÄs klases funkciju efekta. Bet tas nav jaunums Lisp programmÄtÄjiem. Ja jums ir patiesas pirmÄs klases funkcijas, varat tÄs vienkÄrÅ”i izmantot jebkurÄ veidÄ, kas atbilst konkrÄtajam uzdevumam, tÄ vietÄ, lai visu ievietotu klaÅ”u un metožu kopsavilkumÄ.
Es domÄju, ka valodas dizainam tas nozÄ«mÄ, ka nevajadzÄtu tajÄ pÄrÄk dziļi iegult OOP. VarbÅ«t atbilde ir piedÄvÄt vispÄrÄ«gÄkas, pamata lietas un ļaut cilvÄkiem veidot jebkuras objektu sistÄmas kÄ bibliotÄkas.
3. Komitejas dizains
Ja jÅ«su valodu ir izstrÄdÄjusi komiteja, jÅ«s esat iesprostoti, un ne tikai iemeslu dÄļ, ko visi zina. Ikviens zina, ka komitejas mÄdz veidot nevienmÄrÄ«gus, nekonsekventus valodas dizainus. Bet es domÄju, ka liela bÄ«stamÄ«ba ir tajÄ, ka viÅi neriskÄ. Kad viena persona ir atbildÄ«ga, viÅÅ” uzÅemas riskus, ko komiteja nekad nepiekristu uzÅemties.
Vai jums ir jÄuzÅemas risks, lai izveidotu labu valodu? Daudziem cilvÄkiem varÄtu bÅ«t aizdomas, ka valodas dizains ir vieta, kur jums ir jÄpaliek diezgan tuvu tradicionÄlajai gudrÄ«bai. Varu derÄt, ka tas tÄ nav. VisÄ pÄrÄjÄ, ko cilvÄki dara, atlÄ«dzÄ«ba ir proporcionÄla riskam. TÄtad, kÄpÄc valodas dizainam vajadzÄtu atŔķirties?
Avots: www.habr.com