Superigi la mezumon

Ĉi tio estas traduko de artikolo de Paul Graham. La originala en la angla estas ĉe http://www.paulgraham.com/avg.html

(La artikolo estas el prezentaĵo donita ĉe la 2001 Franz Developer Symposium.)

Dum la somero de 1995, mia amiko Robert Morris kaj mi komencis ekfirmaon nomitan Viaweb . Nia plano estis skribi programaron kiu lasus uzantojn konstrui retbutikojn. Kio estis la nova pri ĉi programaron, tiutempe, estis ke ĝi kuris je nia servilo, uzante ordinara TTT paĝoj kiel la interfaco.

Multaj homoj povus havi tiun ideon samtempe, kompreneble, sed de kiom mi scias, Viaweb estis la unua TTT-bazita programo. Ŝajnis tiel novan ideon, ke ni nomis la firmaon per tio: Viaweb, ĉar nia programaro funkciis per la reto, anstataŭ kurado je via labortablo komputilo.

Alia nekutimaĵo pri tiu programaro estis ke ĝi estis verkite ĉefe en programlingvo nomita Lisp. Ĝi estis unu el la unuaj grandaj uzantaj programaj skribita en Lisp, kiu ĝis tiam uziĝis plejparte en universitatoj kaj esploraj laboritorioj. 1.

La Sekreta Armilo

Eric Raymond skribis eseon nomitan "Kiel Fariĝu Kodemulo", kaj en ĝi, interalie, li diras estontajn kodemulojn kiun lingvon ili devas lerni. Li sugestas komenci kun Pitono kaj Ĝavo, ĉar ili estas facile lernebla. La serioza kodemulo ankaŭ volas lerni C, por programi Unikson kaj Perlo por sistemo administrado kaj CGI skriptoj. Fine, la vere seriozaj kodemuloj devas konsideri lerni Lisp:

Lisp estas lerninda por la profunda klerisma sperto vi havos kiam vi fine akiri ĝin; tiu sperto farigos vin pli bona programisto por la cetero de via vivo, eĉ se vi neniam fakte uzas Lisp mem multe.
Tiu estas la sama argumento vi aŭdas por lerni la latinan. Ĝi ne helpos vin akiri laboron, krom eble kiel klasikaĵa instruisto, sed ĝi plibonigos vian menson kaj fari vin pli bona verkisto en lingvoj kiujn vi volas uzi, kiel la angla.

Sed atendu minuton. Tiu metaforo ne etendos tiom. La kialo kial la latina ne helpas vin akiri laboron estas ke neniu parolas ĝin. Se vi skribas en la latina, neniu povas kompreni vin. Sed Lispon estas komputila lingvo, kaj komputiloj parolas kiujn ajn lingvojn vi, la programisto, diras al ili.

Do se Lispon plibonigas vin kiel programisto, kiel li diras, kial vi ne volas uzi ĝin? Se oni ofertas al pentristo penikon kiu farus lin pli bona pentristo, ŝajnas al mi ke li volas uzi ĝin en ĉiuj siaj pentraĵoj, ĉu ne? Mi ne penas moki Eric Raymond. Ĝenerale, liaj konsiloj estas bonaj. Kion li diras pri Lispo estas pli malpile la kutima saĝeco. Sed ekzistas kontraŭdiro en la kutima saĝeco: Lispo farigas vin pli bona programisto, sed tamen vi ne uzas ĝin.

“Kial ne?” Programlingvoj nur estas iloj, efektive. Se Lispo ja liveras bonajn programojn, vi devus uzi ĝin. Kaj se ne, kiu bezonas ĝin?

Tio ne estas nur teoria demando. Programaro estas tre konkura negoco, inklina al naturaj monopoloj. Firmoa kiu verkas programaron pli rapidan kaj pli bonan, ĉiuj aliaj egala, venkos supel siaj konkurantoj. Kaj kiam vi komencas ekfirmaon, vi tre akre sentos tion. Ekfirmaoj emas ĉio aŭ nenio. Vi aŭ riĉiĝas aŭ vi ricevas neniom. En ekfirmao, se vi vetas sur la malĝusta teknologio, viaj konkursantoj venkos super vi.

Robert kaj mi ambaŭ sciis Lispon bone kaj ni ne povis vidi kialon ne fidi niajn antaŭsentojn kaj uzi Lispon. Ni sciis ke ĉiuj aliaj verkis sian programaron en C ++ aŭ Perlon. Sed ni ankaŭ sciis ke tio signifis nenion. Se vi elektis teknologion tiel, vi uzus Vindozon. Kiam vi elektas teknologion, vi devas ignori kio aliaj personoj faras kaj konsideri nur kio laboros plej bone.

Tio estas aparte vera en la ekfirmao. En granda firmao, vi povas fari tiun, kiun ĉiuj aliaj grandaj firmaoj faras. Sed ekfirmao ne povas fari tion, kion ĉiuj aliaj ekfirmao faras. Mi ne kredas multaj homoj rimarkas tion, eĉ en ekfirmaoj.

La mezuma granda firmao kreskas je proksimume dek elcento jare. Do se vi estras grandan firmaon kaj vi faros ĉion en la maniero de mezuma granda kompanio, vi povas atendi la rezultoj de mezumo granda company-- t.e. kreski ĉirkaŭ dek elcento jare.

La samo okazos se vi faras ekfirmaon, kompreneble. Se vi faros ĉion en la maniero la mezuma ekfirmao, vi devas atendi mezuman rezultojn. La problemo estas ke mezumaj rezultoj signifas ke vi malsukcesos. La transviva probaleco por ekfirmao estas multe malpli ol kvindek elcento. Do se vi faras ekfirmaon, vi devas fari ion nekutiman. Se ne, vi havas problemon.

Antaŭe en 1995, ni konis iun, kiun mi ne pensas niaj konkurantoj komprenis, kaj malmultaj komprenis eĉ nun: kiam vi verkas programaron kiu nur devas kuri en via propraj serviloj, vi povas uzi ajnan lingvon kiun vi volas. Kiam vi skribas labortablan programaron, estas forta emo skribi programojn en la sama lingvo kiel la operaciuma sistemo. Antaŭ dek jaroj, verki programojn signifis skribi ilin en C. Sed kun retbazitaj programaj, aparte kiam vi havas la fontkodon de kaj la lingvo kaj la operaciuma sistemo, vi povas uzi kion ajn lingvon vi volas.

Tiu nova libereco estas duopa-ĉirkaŭtranĉita glavon, tamen. Nun ke vi povas uzi ajnan lingvon, vi devas pripensi kiun uzi. Firmaoj kiuj klopodas kredi ke nenion ŝanĝiĝis riskas trovi ke siaj konkursantoj ne kredas tion.

Se vi povas uzi ajnan lingvon, kiun uzi? Ni elektis Lispon. Unue, estis memevidente ke rapida disvolviĝo graviĝus en tiu merkato. Ni ĉiuj ekas de nulo, do firmao kiu povus akiri novajn funkciojn antaŭ siaj konkurantoj havus grandan avantaĝon. Ni sciis ke Lispon estis vere bona lingvo por verki programaron rapide, kaj servilo-bazita programojn altigas la efikon de rapida disvolviĝo, ĉar vi povas liveri programaron tuj kiam ĝi finiĝas.

Se aliaj firmaoj ne volas uzi Lispon, des pli bone. Ĝi povus doni al ni teknologian avantaĝon, kaj ni bezonas ĉian helpon ni povus akiri. Kiam ni komencis Viaweb, ni havis neniun sperton pri komerco. Ni scias nenion pri surmerkatiĝo, aŭ dungi homojn, aŭ kvestadon, aŭ akiri klientojn. Nek unu nek la alia el ni eĉ havis kion vi nomas vera dungo. Niaj solaj lertecoj estas ke ni povas verki programojn bone. Ni esperis tiu savus nin. Iu ajn avantaĝo ni povis gajni en la programado, ni prenus.

Do, vi povas diri ke uzi Lispon estis eksperimento. Nia antaŭsupozo estis ke se ni verkas nian programon en Lispo, ni kapablas akiri trajtojn pli rapide ol nia konkurantoj, kaj ankaŭ plenumi aferojn en nia programo kiun ili ne povis fari. Kaj ĉar Lispo estis tiom alta nivelo, ni ne bezonas grandan disvolviĝa teamo, do niaj kostoj estus pli malaltaj. Se tio veras, ni povus proponi pli bonan produkton por malpli da mono kaj ankoraŭ faras profiton. Ni fine ricevus ĉiujn uzantojn, kaj nia konkurantoj akirus neniun, kaj eventuale malsukcesos. Ni esperis tion, iuokaze.

Kio estis la rezultoj de tiu eksperimento? Iom surprize, ĝi funkciis. Ni eventuale havis multajn konkursantojn, je la ordo de dudek ĝis tridek, sed neniu el ilia programaro povus konkuri kun nia. Ni havis WYSIWYG surretan konstruilon de vendejoj kiu kuris sur la servilo kaj ankoraŭ sentis kiel labortabla programo. Niaj konkurantoj havis CGI skriptojn. Kaj ni ĉiam estis antaŭen de ili pri trajtoj. Kelkfoje, en malespero, konkurantoj penis enkonduki funkciojn, kiujn ni ne havis. Sed kun Lispon nia disvolviĝa ciklo estis tiel rapida, ke ni foje povis refari la novan trajton ene de unu aŭ du tagoj de kiam nia konkuranto anoncis ĝin en gazetara eldono. Kiam ĵurnalistoj kiuj kovris la gazetara eldono vokis nin, ni havus la novan trajton ankaŭ.

Certe ŝajnis al niaj konkurantoj ke ni havis ian sekretan armilon-- ke ni malkodigas siajn Enigma trafikon aŭ ion. Fakte ni ja havis sekretan armilon, sed ĝi estis pli simpla ol ili rimarkis. Neniu disdonis novaĵojn de siaj funkcioj al ni. Ni nur povos disvolvi programaron pli rapide ol iu ajn pensis ebla.

Kiam mi havis proksimume naŭ jarojn, mi hazarde akiris kopion de The day of the Jackal de Frederick Forsyth. La ĉeffiguro estas murdisto kiu estas kontraktita por mortigi la prezidanto de Francio. La murdisto devas preteriri la polico por supreniri al apartamento kiuj preteratentas la prezidantan planvojon. Li marŝas ĝuste preter ili, vestata kiel maljunulo kun lambastonoj, kaj ili neniam suspektis lin.

Nia sekreta armilo estis simila. Ni verkis niajn programaron per stranga manfarita intelekta lingvo, kun stranga sintakso plena de krampoj. Cetere oni jam tedis min aŭdi Lispon priskribita tiel. Sed nun ĝi laboras por nia profito. En negoco estas nenio pli valora ol teknika avantaĝo kiun viaj konkursantoj ne komprenas. En negoco, kiel en milito, surprizo valoras tiom kiom forto.

Do, mi diras iom embarase, mi neniam diris ion publike pri Lispo dum ni laboris je Viaweb. Ni neniam menciis ĝin al la gazetaro, kaj se vi serĉis Lispo sur nia retejo, ĉiujn vi trovus estis la titoloj de du libroj en mia librolisto. Tio ne estis akcidento. A ekfirmao devas doni al sia konkurantoj tiel malmulta da informo kiel ebla. Se ili ne scias en kiu lingvo ni verkis nian programaron, aŭ ne prizorgas, mi volis konservi ĝin tiel. [2]

La homoj kiuj komprenis nian teknologion la plej bone estis la klientoj. Ili ne zorgan en kiu lingvo Viaweb estis verkita, sed ili rimarkis ke ĝi funkciis tre bone. Permesis ilin konstrui tre belajn retkutikojn aktuale dum minutoj. Do, buŝe plejparte, ni akiris pli kaj pli da uzantoj. Fine de 1996 ni havis ĉirkaŭ 70 retbutikoj. Fine de 1997 ni havis 500. Ses monatoj poste, kiam Yahoo aĉetis nin, ni havis 1070 uzantojn. Hodiaŭ, kiel Yahoo Store, tiu programaro daŭre regas ĝian merkaton. Ĝi estas unu el la pli profitodonaj pecoj de Yahoo, kaj la retbutikoj konstruita per ĝi estas la fundamento de Yahoo! Shopping. Mi forlasis Yahoo en 1999, do mi ne scias precize kiom da uzantoj ili havas nun, sed la lasta mi aŭdis ekzistis proksimume 20,000.

La Bluba Paradokso

Kio estas tiel bona pri Lisp? Kaj se Lisp estas tiel bona, kial ne ĉiuj uzas ĝin? Tiuj ŝajnas kiel retorikajn demandojn, sed fakte ili havas rektajn respondojn. Lisp estas tiel bona ne ĉar ia magia kvalito videbla nur al devotuloj, sed ĉar ĝi estas simple la plej pova lingvo havebla. Kaj la kialo ke ne ĉiuj uzas ĝin estas ke programlingvoj ne estas nur teknologioj, sed ankaŭ kutimoj de menso, kaj nenio ŝanĝas pli malrapide. Kompreneble, ambaŭ de tiuj respondoj bezonas klarigadon.

Mi komenciĝas kun ŝoke polemika frazo: programlingvoj varias pove.

Kelkaj pridisputus, almenaŭ, ke altnivelaj lingvoj estas pli povaj ol maŝinlingvoj. La plejmulto de programistoj hodiaŭ konsentus ke vi, ordinare, ne volas programi per maŝinlingvo. Anstataŭe, vi devus programi per altnivela lingvo, kaj per tradukilo traduki ĝin en maŝinlingvon por vi. Tiu ideo estas eĉ konstruita en la aparatoj ekde la 1980-aj jaroj, instrukciaroj estis desegnitaj por tradukiloj anstataŭ homaj programistoj.

Ĉiuj scias ke estas erare verki tutan programon mane per maŝinlingvo. Kio estas malpli ofte komprenata estas pli ĝenerala principo: se vi havas elekton de pluraj lingvoj, estas, ĉio aliaj egala, eraro programi per iu programlingvo krom la plej pova. [3]

Jen multaj esceptoj al la regulo. Se vi verkas programon kiu devas funkcii tre lige kun programo verkita per alia lingvo, eble estas bona ideo verki la novan programon per la sama lingvo. Se vi skribas programon kiu nur devas plenumi ion tre simpla, kiel numera kalkulado aŭ bitoka manipulado, vi povas ankaŭ uzi malpli abstrakta lingvo, precipe kiam ĝi povas esti iam pli rapida. Kaj se vi verkas mallongan forĵetindan programon, vi verŝajne povas uzi iujn ajn lingvon kiu havas la plej bonajn kodarajn funkciojn por la tasko.. Sed ĝenerale, por apliko programaro, vi volas uzi la plej pova (racie efika) lingvo vi povas kaj uzi ion alian estas eraro. Tia eraro, almenaŭ eble malpli, ol programi per maŝinlingvo.

Oni povas vidi ke maŝino lingvo estas tre baza nivelo. Sed, almenaŭ kiel ia socia konvencio, altnivelaj lingvoj estas ofte traktataj kiel egalaj. Ili ne estas. Teknike la termino "altnivela lingvo" signifas nenion tre difina. Ne estas ia disiga linio inter maŝinaj lingvoj kaj ĉiuj altnivelaj lingvoj. Lingvoj sekvas kontinuumo [4] de abstraktaĵo de la plej povaj ĝis maŝinaj lingvoj, kiuj mem varias povece.

Konsideru Cobol. Cobol estas altnivela lingvo, tiusenco ke ĝi tradukiĝas en maŝinan lingvon. Ĉu iu serioze proponas ke Cobol estas egalpova al, ni diru, Pitonan? Ĝi verŝajne estas pli proksima al maŝina lingvo ol Pitona.

Aŭ kio pri Perl 4? Inter Perl 4 kaj Perl 5, leksikaj fermoj aldoniĝis al la lingvo. La plejmulto de Perla programistoj konsentus ke Perl 5 estas pli pova ol Perl 4. Sed se vi jam akceptis tion, vi akceptas ke unu altnivela lingvo povas esti pli pova ol alia. Kaj sekvas nehaltigeble ke, krom en specialaj okazoj, vi devus uzi la plej povaj lingvoj eblaj.

Oni malofte sekvas tiun ideon ĝis la fino. Post certa aĝo, programistoj malofte ŝanĝas lingvojn libervole. Iu ajn lingvo homo hazarde alkutimiĝas, ili emas konsideri sufiĉe bona.

Programistoj alkroĉitas al siaj preferataj lingvoj, kaj mi ne volas vundi ies sentojn, do por klarigi tiun punkton mi tuj uzas hipoteza lingvo nomata Blub. Blub restas ĝuste en la mezo de la abstrakteca kontinuumo. Ĝi ne estas la plej pova lingvo, sed ĝi estas pli pova ol Cobol aŭ maŝina lingvo.

Kaj fakte, nia supoza Blub programisto ne uzus iun el ili. Kompreneble li ne programes per lingvo maŝina. Oni havas tradukilojn por tio. Kaj pri Cobol, li ne scias kiel iu ajn povas plenumi ion per ĝi. Ĝi eĉ ne havas x (Blub trajto de via pliŝata elekto).

Tiel longe kiel nia hipoteza Blub programisto rigardas malsupre de la pova kontinuumo, li scias ke li rigardis malsupren. Lingvoj malpli povaj ol Blub estas evidente malpli povaj, ĉar al ĝi mankas iu trajto li alkutimiĝas. Sed kiam nia hipoteza Blub programisto rigardas alidirekte, supren de la pova kontinuumo, li ne rimarkas ke li rigardas supren. Kion li vidas certe estas nur strangaj lingvoj. Li verŝajne konsideras ilin egale en povo al Blub, sed kun ĉiuj ĉi aliaj strangaj aferoj enĵetataj ankaŭ. Blub sufiĉe bonas por li, ĉar li pensas per Blub.

Kiam ni ŝanĝos al la vidpunkto de programisto kiu uzas iun el la lingvoj pli alte la pova kontinuumo, tamen, oni trovas ke li laŭvice rigardas malsupren je Blub. Kiel vi povas plenumi ion ajn per Blub? Ĝi eĉ ne havas y.

Indukte, la solaj programistoj en loko por vidi ĉiujn malsamecojn en povo inter la diversaj lingvoj estas tiuj, kiuj komprenas la plej pova. (Tio estas verŝajne kio Eric Raymond signifis pri Lispo igas vin pli bona programisto.) Vi ne povas fidi je la opinioj de la aliaj, pro la Blub paradokso: ili estas kontentas je kio ajn lingvo ili hazardas uzi, ĉar ĝi diktas iliajn pensmanierojn pri programoj.

Mi scias tion el mia propra sperto, kiel mezlerneja knabo verkanta programojn per Basic. Tiu lingvo ne eĉ apogas rekursion. Estas malfacile imagi skribi programojn sen la uzado de rekursio, sed al mi ne mankis ĝi tiutempe. Mi pensis per Basic. Kaj mi estis magiisto per ĝi. Mastro de ĉio mi vidis.

La kvin lingvoj rekomendataj de Eric Raymond por kodemuloj lokas ĉe diversaj punktoj sur la povo kontinuumo. Kie lokas rilate al unu la alia estas taktoplena temo. Kion mi diros estas ke miaopinie Lisp estas ĉe la supro. Por subteni tiun diraĵon mi pridiros unu el la trajtoj mi ne trovas kiam mi rigardas la aliajn kvar lingvojn. Kiel oni povas plenumi ion ajn per ili, miopinie, sen makroojn? [5]

Multaj lingvoj havas ion nomatan makroon. Sed Lispaj makrooj estas solaj. Kaj kredu aŭ ne, kion ili faras rilatas al la krampoj. La kreantoj de Lispo ne metis ĉiujn tiujn krampojn en la lingvo simple por esti malsamaj. Al la Blub programisto, Lispa kodo aspektas strange. Sed tiuj krampoj estas tie por kialo. Ili estas la eksteraj signoj de fundamenta malsameco inter Lispo kaj aliaj lingvoj.

Lispa kodo fariĝas el Lispaj informobjektoj. Kaj ne en la simpla senco ke la fontaj dosieroj enhavas karakterojn, kaj ĉenoj estas unu el la datumtipoj apogataj de la lingvo. Lispa kodo, post legado de la sintaksa analizilo, fariĝas el datumstrukturoj ke vi povas trairi.

Se vi komprenas kiel tradukiloj funkcias, kio vere okazas ne estas ke Lispo havas strangan sintakson sed ke Lispo ne havas sintakson. Vi skribas programojn per la sintaksaj arboj kiuj aliaj tradukiloj generas ene de la tradukilo kiam ili analizas la fontkodon. Sed tiuj sintaksaj arboj estas plene alirebla al viaj programoj. Vi povas verki programojn kiuj manipuli ilin. En Lisp, tiuj programoj estas nomitaj makrooj. Ili estas programoj kiuj verkas programojn.

Programoj kiuj verkas programojn? Kiam ajn vi volas fari tion? Ne tre ofte, se vi pensas per Cobol. La tutan tempon, se vi pensas per Lispo. Estus oportune se mi povus doni ekzemplon de pova makroo, kaj diru tie! kiel pri tio? Sed se mi faras tion, ĝi nur aspektus kiel nesencaĵo al iu kiu ne konas Lispon; ne ekzistas spacon klarigi ĉion vi bezonus scii por kompreni kio estas kio. En ANSI Common Lisp mi provis komprenigi aferojn tiel rapide kiel mi povis, kaj eĉ tiam mi ne traktis makroojn ĝis paĝo 160.

Sed mi kredas ke mi povas doni ian argumenton ke povus esti konvinkiga. La fontkodo de la Viaweb redaktili estis verŝajne proksimume 20-25% makrooj. Makrooj estas pli malfacila verki ol ordinaraj Lispaj funkcioj, kaj oni konsideras ĝin malbona stilo uzi ilin kiam ili ne estas necesaj. Tiel ĉiuj makrooj en tiu kodaro estas tie ĉar ĝi devas esti tie. Tio signifas ke almenaŭ 20-25% de la kodo en tiu programo faras tion, kion vi ne povas facile fari en ajna alia lingvo. Tamen dubema la Blub programisto povus esti pri miaj asertoj por la mistera povo de Lispo, tio devas fariig lin scivola. Ni ne skribas tiun kodon por nia propra amuziĝo. Ni estis eta ekfirmao, programanta tiom kiom ni povis por meti teknikajn barojn inter ni kaj niaj konkurantoj.

Suspektema homo povus ekscivoli se ekzistis iu interligo tie. Granda parto de nia kodo plenumis aferojn kiu estas tre malfacile plenumi per aliaj lingvoj. La rezulta programaro faris ion programaro de niaj konkurantoj ne povis plenumi. Eble estis ia rilato. Mi instigas vin sekvi tiun fadenon. Tie povas esti pli al tiu maljunulo lamanta ol renkontas la okulon.

Aikido por ekfirmaoj

Sed mi ne antaŭvidas konvinki iun ajn ( pli aĝa ol 25 ) por eklerni Lispon. La celo de ĉi tiu artikolo ne estas por ŝanĝi ies menson, sed por trankviligi homojn kiuj jam interesiĝas uzi Lispon-- homoj kiuj scias ke Lispo estas pova lingvo, sed zorgas, ĉar ĝi ne amplekse uzata. En konkureca situacio, jen avantaĝo. La povo de Lispo estas multobligata per la fakto ke viaj konkursantoj ne komprenas ĝin.

Se vi pripensas uzi Lispon en ekfirmao, vi ne devas maltrankviligi ke ĝi ne estas vaste komprenata. Vi devas esperi ke ĝi restas tiel. Kaj ĝi verŝajna estos. Ĝi estas la naturo de programlingvoj igi la plej homoj kontenta kun kion ili nuntempe uzas. Komputila aparataro ŝanĝas tiel pli rapide ol kutimoj de homoj ke programada praktiko estas kutime dek ĝis dudek jaroj post la procezilo. Ĉe lokoj kiel MIT ili verkis programojn per altnivelaj lingvoj en la fruaj 1960-aj jaroj, sed multaj firmaoj daŭrigis verki kodon en maŝina lingvo ja en la 1980-ajn jarojn. Mi vetas multajn homojn daŭrigis verki maŝinan lingvon ĝis la procezilo, kiel kelnero avidaj fermi frue kaj iri hejmen, fine piedbatis ilin eksteren ŝanĝante al RISC instrukciaro.

Ordinare teknologio ŝanĝas rapide. Sed programlingvoj estas malsamaj: programlingvoj ne nur estas teknologio, sed per kio programistoj pensas. Ili estas duone teknologio kaj duone religio. [6] Do la mezan lingvon, signifante ajnan lingvon la mezuma programisto uzas, moviĝas tiel malrapida kiel glaciaro. Senrubigo, enkondukita de Lispo ĉirkaŭ 1960, nun estas vaste konsiderata bona afero. Rultempa tajpadon, ankaŭ, kreskas en populareco. Leksika fermaĵoj, enkondukita de Lispo dum la fruaj 1970-aj jaroj, estas nun, nur apenaŭ, sur la radaro. Makrooj, enkondukitaj de Lispo en la meza 1960-aj jaroj, estas ankoraŭ neeksplorataj.

Evidente, la meza lingvo havas grandegan impeton. Mi ne proponas ke vi povas lukti la pova forto. Kion mi proponas estas ĝuste la malo: ke, kiel praktikanto de Aikido, vi povas uzi ĝin kontraŭ viaj kontraŭuloj.

Se vi laboras por granda firmoa, tio povas esti malfacile. Vi havos malfacilan tempon konvinkanta la pinta harara estro lasi vin konstrui aferojn per Lispo, kiam li ĵus legis en la gazeto ke iu alia lingvo estas preta, kiel Ada antaŭ dudek jaroj, por venki la mondon. Sed se vi laboras por ekfirmao kiu ne havas pinta hara estroj tamen, vi povas, kiel ni faris, turni la Blub paradokso al via avantaĝo: vi povas uzi teknologion ke viaj konkurantoj, gluita senmove al la meza lingvo, neniam povos egali.

Se vi iam trovas vin laborantan por ekfirmao, jen oportuna punkto por taksi konkurantojn. Legi iliajn laborajn petlistojn. Ĉio alia sur ilia retejo eble estos stokaj fotoj aŭ la prozo ekvivalento, sed la laboran petliston devas temi specifa pri kion ili volas, aŭ ili ricevos malĝustan kandidatoj.

Dum la jaroj ni laboris je Viaweb mi legis multajn laboron priskriboj. Novaj konkurantoj ŝajnis elveni el la lignaĵo ĉiumonate aŭ tiel. La unua afero mi faris, post kontroli por vidi ĉu ili havis surreta provversio, estis rigardi ilian laboran petliston. Post kelkaj jaroj mi povus diri pri kiuj firmaoj maltrankviligi kaj kiuj ne. Ju pli la labora priskribo estis IT-a, des malpli danĝera la firmao estis. La plej sekura estis tiaj kiuj volis Oracle sperton. Vi neniam devis maltrankviligi pri tiuj. Vi ankaŭ sekuris se ili diris ke ili volis C++ aŭ Ĝava programistojn. Se ili volis Perlan aŭ Pitonan programistojn, ke estus iom timiga-- tio ekŝajnas kiel firmao kie la teknika flanko, almenaŭ, estas prizorgita kun veraj kodemuloj. Se mi iam vidis laboran petaĵon kiu serĉas Lispajn kodemulojn, mi vere timegus.

Notoj

[1] Viaweb unue havis du partojn: la redaktilo, skribita en Lisp, kiun homoj uzis por konstrui iliajn lokojn, kaj la mendsistemo, skribita en C, kiu pritraktis mendojn. La unua versio estis plejparte per Lisp, ĉar la orda sistemo estis malgranda. Poste ni aldonis du pli moduloj, bildo generilo skribita per C, kaj malantaŭa parto estrilo skribita plejparte en Perl.

En januaro 2003, Yahoo publikigis novan version de la redaktilo skribita per C ++ kaj Perl. Estas malfacile diri, ĉu la programo ne ankoraŭ estas verkata per Lisp ĉar traduki tiun programon en C++ ili aktuale bezonas verki Lispan tradukilon: la fontaj dosieroj de la paĝgeneraj ŝablonoj estas ankoraŭ, kiel mi scias, Lispa kodo. (Vidu La deka regulo de Greenspun .)

[2] Robert Morris diras ke mi ne bezonas esti kaŝema ĉar eĉ se niaj kunkurantoj komprenus ke ni uzis Lispon, ili ne komprenis kial: "Se ili estis tiom inteligentaj ili jam programas per Lispo."

[3] Ĉiuj lingvoj estas egale povas en la senco de la egaleco de Turing, sed tio ne estas la senco de la vortoj programistoj prizorgi. (Neniu volas verki Maŝino de Turing.) Tiajn povojn programistoj prizorgas ne estas formale difinebla, sed iel klarigi ĝin estus diri ke ĝi rilatas al trajtoj vi povus akiri en la malpli pova lingvo estas verki tradukilon por la pli pova lingvo per ĝi. Se lingvo A havas operaĵo por forigado spacojn de ĉenoj kaj lingvo B ne havas, tio verŝajne ne faras A pli potenca, ĉar vi verŝajne povas skribi subprogrameto por fari ĝin en B. Sed se A apogas, ni diru, rekursio kaj B ne apogas, tio verŝajna ne estas in oni povas ripari per kodaraj funkcioj.

[4] Notu al lertuloj: aŭ eble krado, mallarĝante je la supro; ĝi ne estas la formo kiu gravas sed la ideo, ke ekzistas almenaŭ parta ordo.

[5] Ĝi estas iom iluzia trakti makrooj kiel aparta trajto. Praktike ilia utileco estas tre plifortigata per aliaj Lispaj trajtoj kiel leksikaj fermoj kaj ceteraj parametroj.

[6] Kiel rezulto, komparoj de programlingvoj aŭ preni la formon de religiaj militoj aŭ studantaj lernolibroj tiel vole neŭtrala ke ili estas vere verkoj de homesploro. Homoj kiuj taksas sian pacon, aŭ volas daŭrigi sian fakon, evitas la temon. Sed la demando nur estas duone religia; estas io tie kio valoras studi, speciale se vi volas krei novajn lingvojn.