Alan Kay, skaberen af ​​OOP, om udvikling, Lisp og OOP

Alan Kay, skaberen af ​​OOP, om udvikling, Lisp og OOP

Hvis du aldrig har hørt om Alan Kay, har du i det mindste hørt hans berømte citater. For eksempel dette citat fra 1971:

Den bedste måde at forudsige fremtiden er at opfinde den.
Den bedste måde at forudsige fremtiden er at opfinde den.

Alan har en meget farverig karriere inden for datalogi. Han modtog Kyoto-prisen и Turing-prisen for sit arbejde med det objektorienterede programmeringsparadigme. Han var en af ​​pionererne inden for personlige computere og grafiske grænseflader, han udviklede Small talk er et af de første mest indflydelsesrige programmeringssprog nogensinde.

I vores Hexlete, især i snak, bliver spørgsmålet "hvad er OOP" og "hvad mente Alan Kay egentlig" konstant rejst. Dette indlæg indeholder interessante citater fra Alan om tilstanden af ​​moderne udvikling, OOP og Lisp-sproget.

Om softwareudvikling

Alan Kay mener, at computerrevolutionen er endnu ikke kommet (Den rigtige computerrevolution er ikke sket endnu), og softwareudvikling udvikler sig i omvendt proportion til Moores lov: hardware forbedres hvert år, men software bliver unødigt oppustet:

problemet er svagt, dårligt skalerbare ideer og værktøjer, dovenskab, manglende viden mv.

Beskriver denne situation godt kort joke:

Hvad Andy giver, tager Bill væk
Andy gav, Bill tog

Andy Grove, CEO for Intel, og Bill Gates, daværende CEO for Microsoft.

Målet med forskningsprojektet var at forbedre den nuværende udviklingstilstand TRIN mod genopfindelsen af ​​programmering (pdf). Målet er at opnå "Moores lov" i udtryksfuldhed ved at "reducere mængden af ​​påkrævet kode med 100, 1000, 10000 gange eller mere."

I sin øjenåbnende rapport Programmering og skalering (video) Dette emne diskuteres mere detaljeret. Ifølge Alan er softwareteknologi gået i stå og er ved at blive en glemt videnskab, der ikke kan følge med hardware og andre videnskaber og ingeniørdiscipliner. Store projekter er blevet kodedumper og er nået til et punkt, hvor ingen ude af stand til at forstå 100 millioner linjer MS Vista eller MS Word-kode. Men i virkeligheden burde der være en størrelsesorden mindre kode i sådanne projekter.

Alan overvejer internettet, TCP/IP-protokoller, LISP-tolke, Nile (Math DSL for Vector Graphics) og OMeta (OO PEG) (PDF) eksempler på elegant software med minimal kode.

Han kalder internettet (TCP/IP) for et af de få storstilede softwareprojekter, der er designet korrekt, og dets kompleksitetsniveau er i balance med kompleksitetsniveauet (komplikation vs. kompleksitet). Med færre end 20 linjer kode fungerer projektet som et levende, dynamisk system, der er i stand til at understøtte milliarder af noder, og det er aldrig gået offline siden dets første lancering i september 1969. Vi holdt simpelthen op med at betragte internettet som et normalt softwareprojekt skabt af mennesker:

Internettet er så veludviklet, at mange mennesker behandler det som en naturressource, som Stillehavet, snarere end et produkt af menneskelig arbejdskraft. Hvornår har vi sidst set en så stabil, klar og fejlfri teknologi? Til sammenligning er nettet noget vrøvl. Nettet er skabt af amatører.

Om objektorienteret programmering

Det første, der interesserede mig, var hans original OOP vision. Hans erfaring inden for mikrobiologi spillede en vigtig rolle:

Jeg tænkte på objekter som biologiske celler og/eller individuelle computere på et netværk, der kun kunne kommunikere gennem beskeder.

og erfaring med matematik:

Min erfaring med matematik fik mig til at indse, at hvert objekt kan have flere algebraer, de kan kombineres til familier, og det kan være meget nyttigt.

Idéer til sen binding og kraftfulde metafunktioner i LISPa:

Den anden fase er at forstå LISPa og bruge denne forståelse til at skabe lettere, mindre, mere kraftfulde strukturer og senere binding.

Og snart begyndte Alan at støtte ideen om, at dynamiske sprog er fremtiden for softwareudvikling (pdf). Især er det vigtigt for ham at være let at ændre:

Sen binding tillader ideer, der kom senere i udviklingsprocessen, at blive inkorporeret i projektet med mindre indsats (sammenlignet med tidligere bundne systemer som C, C++, Java osv.)

Og potentialet for ændringer i farten og hurtigere iterationer:

En af de vigtigste idéer er, at systemet skal fortsætte med at fungere under test, især mens der foretages ændringer. Selv større ændringer bør være gradvise og ikke tage mere end et splitsekund.

som mangler i statisk indtastede sprog:

Hvis du bruger tidligt bindende sprog, som de fleste gør, så låser du dig fast i det, du allerede har skrevet. Det vil ikke længere være muligt at omformulere det nemt.

Overraskende nok var hans tanker om OOP begrænset til dette:

OOP for mig er beskeder, lokalt hold og beskyt, statsskjul og sen binding af alt. Dette kan gøres i Smalltalk og i LISP.

Og intet om arv. Dette er ikke OOP som vi kender i dag:

Jeg ville ønske, at jeg havde brugt udtrykket "objekt" for dette emne for længe siden, fordi det får mange mennesker til at fokusere på den mindste af ideerne.

Den store idé, som moderne statisk indtastede OO-sprog mangler:

Den store idé er "beskeder"

Han tror på at fokusere på beskeder, løs kobling og modulinteraktioner snarere end på det indre af et objekt:

Nøglen til at skabe gode skalerbare systemer er at udarbejde kommunikationsmekanismerne mellem moduler, og ikke at udarbejde deres interne egenskaber og adfærd.

Statisk maskinskrevne sprog forekommer ham defekt:

Jeg er ikke imod typer, men jeg kender ikke til noget typesystem, der ikke forårsager smerte. Så jeg kan stadig godt lide dynamisk skrivning.

Nogle populære sprog bruger i dag Smalltalks budskabsformidlingsideer, sen binding og Forstår Ikkefremkaldelse в Objective-Cmetode_mangler в Rubin и ingen sådan metode i Google Dart.

Ødelæg alt og skab noget bedre

Alan har en interessant teori om udviklingen af ​​datalogi:

Det forekommer mig, at der kun er én type datalogi, og at videnskab er som at bygge broer. Nogen bygger broer, og nogen ødelægger dem og skaber nye teorier. Og vi skal blive ved med at bygge broer.

Om LISP

Alan Kay tror på Lisp

det bedste programmeringssprog nogensinde

Og at enhver kandidat i datalogi bør studere det:

De fleste mennesker, der forfølger grader i CS, forstår ikke vigtigheden af ​​Lisp. Lisp er den vigtigste idé inden for datalogi.

Om den rette atmosfære og kontekst

Han husker ofte den unikke atmosfære i Xerox PARK и ARPA, hvor "vision er vigtigere end mål" og "finansiering af mennesker, ikke projekter."

Point of view er 80 IQ-point værd.

Alan Kay siger:

ARPA/PARC-historien demonstrerer, hvordan en kombination af vision, beskeden finansiering, den rigtige kontekst og proces på magisk vis kan føde nye teknologier, der ikke kun påvirker civilisationen, men også skaber enorm værdi for samfundet.

Og det er sandt. Tag et kig på PARCs imponerende liste over opfindelser, hvoraf mange spillede en meget vigtig rolle i udviklingen af ​​vores verden. For eksempel:

  • Laser printere
  • Objektorienteret programmering / Smalltalk
  • Personlige computere
  • Ethernet / distribueret databehandling
  • GUI / computermus / WYSIWYG

Og i ARPA har oprettet ARPANET, som blev stamfader til internettet.

PS Alan Kay besvarer spørgsmål fra Hacker News-fællesskabet.

Kilde: www.habr.com

Tilføj en kommentar