Alan Kay, maker van OOP, over ontwikkeling, Lisp en OOP

Alan Kay, maker van OOP, over ontwikkeling, Lisp en OOP

Als je nog nooit van Alan Kay hebt gehoord, heb je in ieder geval zijn beroemde citaten gehoord. Dit citaat uit 1971 bijvoorbeeld:

De beste manier om de toekomst te voorspellen, is door hem uit te vinden.
De beste manier om de toekomst te voorspellen is door hem uit te vinden.

Alan heeft een zeer kleurrijke carrière in de informatica. Hij ontving Kyoto-prijs и Turing-prijs voor zijn werk aan het objectgeoriënteerde programmeerparadigma. Hij was een van de pioniers op het gebied van personal computers en grafische interfaces die hij ontwikkelde Koetjes en kalfjes is een van de eerste meest invloedrijke programmeertalen aller tijden.

We hebben binnen Hexlet, met name in chatten, wordt de vraag “wat is OOP” en “wat bedoelde Alan Kay werkelijk” voortdurend gesteld. Dit bericht bevat interessante citaten van Alan over de stand van de moderne ontwikkeling, OOP en de Lisp-taal.

Over softwareontwikkeling

Alan Kay gelooft dat de computerrevolutie nog moet komen (De echte computerrevolutie heeft nog niet plaatsgevonden), en de ontwikkeling van software ontwikkelt zich in omgekeerde verhouding tot de wet van Moore: hardware wordt elk jaar beter, maar software wordt onnodig opgeblazen:

het probleem is zwak, slecht schaalbare ideeën en hulpmiddelen, luiheid, gebrek aan kennis, enz.

Deze situatie is goed beschreven korte grap:

Wat Andy geeft, neemt Bill weg
Andy gaf, Bill nam

Andy Grove, CEO van Intel, en Bill Gates, destijds CEO van Microsoft.

Het verbeteren van de huidige staat van ontwikkeling was het doel van het onderzoeksproject STAPPEN naar de heruitvinding van programmeren (pdf). Het doel is om de "wet van Moore" in expressiviteit te bereiken door "de hoeveelheid vereiste code met 100, 1000, 10000 keer of meer te verminderen."

In zijn opzienbarende rapport Programmeren en schalen (video) Dit onderwerp wordt in meer detail besproken. Volgens Alan is software-engineering tot stilstand gekomen en is het een vergeten wetenschap aan het worden die de hardware en andere wetenschappen en technische disciplines niet kan bijhouden. Grote projecten zijn codedumps geworden en hebben een punt bereikt waarop niemand kan 100 miljoen regels MS Vista- of MS Word-code niet begrijpen. Maar in werkelijkheid zou er in dergelijke projecten een orde van grootte minder code moeten zijn.

Alan beschouwt internet, TCP/IP-protocollen, LISP-tolken, Nijl (Math DSL voor vectorafbeeldingen) en OMeta (OO PEG) (PDF) voorbeelden van elegante software met minimale code.

Hij noemt het internet (TCP/IP) een van de weinige grootschalige softwareprojecten die correct zijn ontworpen, en het niveau van complexiteit is in evenwicht met het niveau van complexiteit (complicatie vs. complexiteit). Met minder dan 20 regels code functioneert het project als een levend, dynamisch systeem dat miljarden knooppunten kan ondersteunen, en is het sinds de eerste lancering in september 1969 nooit meer offline gegaan. We zijn simpelweg gestopt met het beschouwen van het internet als een normaal softwareproject dat door mensen is gemaakt:

Het internet is zo goed ontwikkeld dat veel mensen het behandelen als een natuurlijke hulpbron, zoals de Stille Oceaan, en niet als een product van menselijke arbeid. Wanneer hebben we voor het laatst zo’n stabiele, duidelijke en foutloze technologie gezien? Ter vergelijking: het internet is onzin. Het web is gemaakt door amateurs.

Over objectgeoriënteerd programmeren

Het eerste wat mij interesseerde was dat van hem voorletter OOP-visie. Zijn ervaring in de microbiologie speelde een belangrijke rol:

Ik zag objecten als biologische cellen en/of individuele computers in een netwerk die alleen via berichten konden communiceren.

en ervaring in wiskunde:

Mijn ervaring in de wiskunde deed me beseffen dat elk object meerdere algebra's kan hebben, dat ze gecombineerd kunnen worden tot families, en dit kan erg handig zijn.

Ideeën voor late binding en krachtige metafuncties van LISPa:

De tweede fase is het begrijpen van LISPa en het gebruiken van dat begrip om gemakkelijkere, kleinere, krachtigere structuren te creëren en later bindend te zijn.

En al snel begon Alan het idee te ondersteunen dat dynamische talen bestaan de toekomst van softwareontwikkeling (pdf). Voor hem is vooral het gemak van verandering belangrijk:

Door late binding kunnen ideeën die later in het ontwikkelingsproces zijn ontstaan, met minder moeite in het project worden opgenomen (vergeleken met eerder gebonden systemen zoals C, C++, Java, enz.)

En het potentieel voor snelle veranderingen en snellere iteraties:

Een van de belangrijkste ideeën is dat het systeem tijdens het testen moet blijven werken, vooral als er wijzigingen worden aangebracht. Zelfs grote veranderingen moeten geleidelijk gebeuren en niet langer dan een fractie van een seconde duren.

die erin ontbreekt statisch getypeerde talen:

Als je vroegbindende talen gebruikt, zoals de meeste mensen doen, sluit je jezelf op in wat je al hebt geschreven. Het zal niet langer mogelijk zijn om het gemakkelijk te herformuleren.

Verrassend genoeg beperkten zijn gedachten over OOP zich tot dit:

OOP voor mij is berichten, lokaal vasthouden en beschermen, verbergen door de staat en late binding van alles. Dit kan in Smalltalk en in LISP.

En niets over erfenis. Dit is niet de OOP die we vandaag de dag kennen:

Ik wou dat ik de term 'object' al lang geleden voor dit onderwerp had gebruikt, omdat het ervoor zorgt dat veel mensen zich op de mindere ideeën concentreren.

Het grote idee dat moderne statisch getypeerde OO-talen missen:

Het grote idee is "berichten"

Hij gelooft in het focussen op berichten, losse koppelingen en module-interacties in plaats van op de binnenkant van een object:

De sleutel tot het creëren van goede schaalbare systemen is het uitwerken van de communicatiemechanismen tussen modules, en niet het uitwerken van hun interne eigenschappen en gedrag.

Statisch getypeerde talen lijken hem defecte:

Ik ben niet tegen types, maar ik ken geen enkel systeem dat geen pijn veroorzaakt. Dus ik hou nog steeds van dynamisch typen.

Sommige populaire talen gebruiken tegenwoordig de ideeën van Smalltalk voor het doorgeven van berichten, late binding en begrijpt het nietvooruitAanroep в Doelstelling Cmethode_missing в Ruby и geen dergelijke methode op Google pijl.

Vernietig alles en creëer iets beters

Alan heeft een interessante theorie over de ontwikkeling van de informatica:

Het lijkt mij dat er maar één type computerwetenschap bestaat, en dat wetenschap zoiets is als het bouwen van bruggen. Iemand bouwt bruggen, en iemand vernietigt ze en creëert nieuwe theorieën. En we moeten bruggen blijven bouwen.

Over LISP

Alan Kay gelooft Lisp

beste programmeertaal aller tijden

En dat elke afgestudeerde informatica het zou moeten bestuderen:

De meeste mensen die een graad in CS volgen, begrijpen het belang van Lisp niet. Lisp is het belangrijkste idee in de informatica.

Over de juiste sfeer en context

Hij herinnert zich vaak de unieke sfeer in Xerox PARK и ARPA, waar “visie belangrijker is dan doelen” en “mensen financieren, geen projecten.”

Het gezichtspunt is 80 IQ-punten waard.

Alan Kay zegt:

Het ARPA/PARC-verhaal laat zien hoe een combinatie van visie, bescheiden financiering, de juiste context en het juiste proces op magische wijze nieuwe technologieën kan voortbrengen die niet alleen een impact hebben op de beschaving, maar ook enorme waarde voor de samenleving creëren.

En het is waar. Bekijk de indrukwekkende lijst met uitvindingen van PARC, waarvan vele een zeer belangrijke rol speelden in de ontwikkeling van onze wereld. Bijvoorbeeld:

  • Laserprinters
  • Objectgeoriënteerd programmeren / Smalltalk
  • Persoonlijke computers
  • Ethernet / gedistribueerd computergebruik
  • GUI / computermuis / WYSIWYG

En in ARPA gemaakt ARPANET, dat de voorloper van het internet werd.

PS Alan Kay beantwoordt vragen van de Hacker News-gemeenschap.

Bron: www.habr.com

Voeg een reactie