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 överväger Internet, TCP/IP-protokoll, 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) för ett av få storskaliga programvaruprojekt som utformats korrekt, och dess komplexitetsnivå är i balans med komplexitetsnivån (komplikation vs. komplexitet). Med färre än 20 1969 rader kod fungerar projektet som ett levande, dynamiskt system som kan stödja miljarder noder och har aldrig gått offline sedan det första lanseringen i september XNUMX. Vi slutade helt enkelt betrakta internet som ett normalt programvaruprojekt 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

Lägg en kommentar