
Om du aldrig har hört talas om Alan Kay, har du Ätminstone hört hans berömda citat. Till exempel detta citat frÄn 1971:
Det bÀsta sÀttet att förutsÀga framtiden Àr att uppfinna den.
Det bÀsta sÀttet att förutsÀga framtiden Àr att uppfinna den.
Alan har en mycket fÀrgstark karriÀr inom datavetenskap. Han fick О för sitt arbete med det objektorienterade programmeringsparadigmet. Han var en av pionjÀrerna inom omrÄdet persondatorer och grafiska grÀnssnitt, han utvecklade Àr ett av de första mest inflytelserika programmeringssprÄken genom tiderna.
Vi har in , speciellt i , frÄgan "vad Àr OOP" och "vad menade Alan Kay egentligen" stÀlls stÀndigt. Det hÀr inlÀgget innehÄller intressanta citat frÄn Alan om tillstÄndet för modern utveckling, OOP och Lisp-sprÄket.
Om mjukvaruutveckling
Alan Kay tror att datorrevolutionen Ànnu inte kommer (), och mjukvaruutveckling utvecklas i omvÀnd proportion till Moores lag: hÄrdvaran förbÀttras varje Är, men mjukvaran blir onödigt uppsvÀlld:
problemet Àr svagt, dÄligt skalbara idéer och verktyg, lÀttja, bristande kunskap osv.
Beskriver denna situation vÀl :
Det Andy ger tar Bill bort
Andy gav, Bill tog
Andy Grove, vd för Intel, och Bill Gates, dÄ vd för Microsoft.
Att förbÀttra det nuvarande utvecklingslÀget var mÄlet med forskningsprojektet . MÄlet Àr att uppnÄ "Moores lag" i uttrycksfullhet genom att "minska mÀngden nödvÀndig kod med 100, 1000, 10000 XNUMX gÄnger eller mer."
I hans ögonöppnande rapport Detta Àmne diskuteras mer i detalj. Enligt Alan har mjukvaruteknik avstannat och hÄller pÄ att bli en bortglömd vetenskap som inte kan hÄlla jÀmna steg med hÄrdvara och andra vetenskaper och ingenjörsdiscipliner. Stora projekt har blivit koddumpar och har nÄtt en punkt dÀr ingen oförmögen att förstÄ 100 miljoner rader MS Vista eller MS Word-kod. Men i verkligheten borde det finnas en storleksordning mindre kod i sÄdana projekt.
Alan funderar över internet, protokoll TCP/IP, LISP-tolkar, exempel pÄ elegant programvara med minimal kod.
Han kallar internet (TCP/IP) Àr ett av fÄ storskaliga mjukvaruprojekt som utformades korrekt, med sin komplexitet balanserad mot sin komplexitetsnivÄ. Detta projekt, med fÀrre Àn 20 000 rader kod, fungerar som ett levande, dynamiskt system som kan stödja miljarder noder, och det har aldrig stÀngts ner sedan dess första lansering i september 1969. Vi slutade helt enkelt betrakta internet som ett normalt mjukvaruprojekt skapat av mÀnniskor:
Internet Àr sÄ vÀlutvecklat att mÄnga mÀnniskor behandlar det som en naturresurs, som Stilla havet, snarare Àn en produkt av mÀnskligt arbete. NÀr sÄg vi senast en sÄ stabil, tydlig och felfri teknik? Som jÀmförelse Àr webben nonsens. Webben skapades av amatörer.
Om objektorienterad programmering
Det första som intresserade mig var hans OOP vision. Hans erfarenhet inom mikrobiologi spelade en viktig roll:
Jag tÀnkte pÄ objekt som biologiska celler och/eller enskilda datorer i ett nÀtverk som bara kunde kommunicera genom meddelanden.
och erfarenhet av matematik:
Min erfarenhet av matematik fick mig att inse att varje objekt kan ha flera algebror, de kan kombineras till familjer, och detta kan vara mycket anvÀndbart.
Idéer för sen bindning och kraftfulla metafunktioner hos LISPa:
Den andra fasen Àr att förstÄ LISPa och anvÀnda den förstÄelsen för att skapa enklare, mindre, kraftfullare strukturer och senare bindning.
Och snart började Alan stödja tanken att dynamiska sprÄk Àr . I synnerhet Àr det viktigt för honom att det Àr lÀtt att byta:
Sen bindning gör att idéer som kom senare i utvecklingsprocessen kan införlivas i projektet med mindre anstrÀngning (jÀmfört med tidigare bundna system som C, C++, Java, etc.)
Och potentialen för förÀndringar i farten och snabbare iterationer:
En av huvudidĂ©erna Ă€r att systemet ska fortsĂ€tta att fungera under testning, sĂ€rskilt nĂ€r förĂ€ndringar görs. Ăven stora förĂ€ndringar bör ske gradvis och inte ta mer Ă€n en brĂ„kdel av en sekund.
som saknas i :
Om du anvÀnder tidigt bindande sprÄk, som de flesta gör, sÄ lÄser du dig till det du redan har skrivit. Det kommer inte lÀngre att vara möjligt att omformulera det enkelt.
Ăverraskande nog var hans tankar om OOP begrĂ€nsade till detta:
OOP för mig Àr meddelanden, lokalt hÄll och skydda, statligt döljande och sen bindning av allt. Detta kan göras i Smalltalk och i LISP.
Och inget om arv. Detta Àr inte OOP :
Jag önskar att jag hade anvÀnt termen "objekt" för detta Àmne för lÀnge sedan eftersom det fÄr mÄnga mÀnniskor att fokusera pÄ den mindre av idéerna.
Den stora idén som moderna statiskt skrivna OO-sprÄk saknar:
Den stora idén Àr "meddelanden"
Han tror pÄ att fokusera pÄ meddelanden, lös koppling och modulinteraktioner snarare Àn pÄ det inre av ett objekt:
Nyckeln till att skapa bra skalbara system Àr att utarbeta kommunikationsmekanismerna mellan moduler och att inte utarbeta deras interna egenskaper och beteende.
Statiskt skrivna sprÄk verkar för honom :
Jag Àr inte emot typer, men jag kÀnner inte till nÄgot typsystem som inte orsakar smÀrta. SÄ jag gillar fortfarande dynamiskt skrivande.
Vissa populĂ€ra sprĂ„k anvĂ€nder idag Smalltalks budskap som skickar idĂ©er, sen bindning och : ĐČ , ĐČ Đž i Google .
Förstör allt och skapa nÄgot bÀttre
Alan har en intressant teori om utvecklingen av datavetenskap:
Det verkar för mig att det bara finns en typ av datavetenskap, och att vetenskap Àr som att bygga broar. NÄgon bygger broar, och nÄgon förstör dem och skapar nya teorier. Och vi mÄste fortsÀtta bygga broar.
Om LISP
Alan Kay tror Lisp
bÀsta programmeringssprÄket genom tiderna
Och att varje utexaminerad datavetenskap bör studera det:
De flesta som lÀser examen i CS förstÄr inte vikten av Lisp. Lisp Àr den viktigaste idén inom datavetenskap.
Om rÀtt atmosfÀr och sammanhang
Han minns ofta den unika atmosfÀren i О , dÀr "vision Àr viktigare Àn mÄl" och "finansiera mÀnniskor, inte projekt."
Synvinkel Àr vÀrd 80 IQ-poÀng.
Alan Kay sÀger:
ARPA/PARC-berÀttelsen visar hur en kombination av vision, blygsam finansiering, rÀtt sammanhang och process magiskt kan föda ny teknik som inte bara pÄverkar civilisationen utan ocksÄ skapar enormt vÀrde för samhÀllet.
Och det Àr sant. , av vilka mÄnga spelade en mycket viktig roll i utvecklingen av vÄr vÀrld. Till exempel:
- Laserskrivare
- Objektorienterad programmering / Smalltalk
- Personliga datorer
- Ethernet / distribuerad datoranvÀndning
- GUI / datormus / WYSIWYG
Och i skapad , som blev Internets stamfader.
PS .
KĂ€lla: will.com
