Alan Kay, skapare av OOP, om utveckling, Lisp och OOP

Alan Kay, skapare av OOP, om utveckling, Lisp och OOP

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 Kyoto-priset Đž Turing Award för sitt arbete med det objektorienterade programmeringsparadigmet. Han var en av pionjĂ€rerna inom omrĂ„det persondatorer och grafiska grĂ€nssnitt, han utvecklade SmĂ„prat Ă€r ett av de första mest inflytelserika programmeringssprĂ„ken genom tiderna.

Vi har in Hexlete, speciellt i chattar, 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 (Den verkliga datorrevolutionen har inte hÀnt Àn), 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 kort skÀmt:

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 STEG mot Ă„teruppfinnandet av programmering (pdf). 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 Programmering och skalning (video) 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, Nile (Math DSL for Vector Graphics) och OMeta (OO PEG) (PDF) 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 första 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 framtiden för mjukvaruutveckling (pdf). 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 statiskt skrivna sprÄk:

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 som vi kÀnner till idag:

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 defekt:

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 förstĂ„r inteforwardInvocation ĐČ Objective-Cmethod_missing ĐČ Rubin Đž ingen sĂ„dan metod i Google Dart.

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 Xerox PARK Đž ARPA, 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. Ta en titt pĂ„ PARC:s imponerande lista över uppfinningar, 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 ARPA skapad ARPANET, som blev Internets stamfader.

PS Alan Kay svarar pÄ frÄgor frÄn Hacker News-communityt.

KĂ€lla: will.com

Köp pĂ„litlig hosting för webbplatser med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster