Alan Kay, skaperen av OOP, om utvikling, Lisp og OOP

Alan Kay, skaperen av OOP, om utvikling, Lisp og OOP

Hvis du aldri har hørt om Alan Kay, har du i det minste hørt hans berømte sitater. For eksempel dette sitatet fra 1971:

Den beste måten å forutsi fremtiden er å finne den opp.
Den beste måten å forutsi fremtiden er å finne den opp.

Alan har en veldig fargerik karriere innen informatikk. Han mottok Kyoto-prisen и Turing-prisen for sitt arbeid med det objektorienterte programmeringsparadigmet. Han var en av pionerene innen personlige datamaskiner og grafiske grensesnitt, utviklet han Småprat er et av de første mest innflytelsesrike programmeringsspråkene gjennom tidene.

I vår Hekslete, spesielt i chatte, spørsmålet "hva er OOP" og "hva mente Alan Kay egentlig" blir stadig reist. Dette innlegget inneholder interessante sitater fra Alan om tilstanden til moderne utvikling, OOP og Lisp-språket.

Om programvareutvikling

Alan Kay tror at datarevolusjonen ennå ikke kommer (Den virkelige datamaskinrevolusjonen har ikke skjedd ennå), og programvareutvikling utvikler seg i omvendt proporsjon med Moores lov: maskinvare forbedres hvert år, men programvare blir unødvendig oppblåst:

problemet er svakt, dårlig skalerbare ideer og verktøy, latskap, mangel på kunnskap, etc.

Beskriver denne situasjonen godt kort vits:

Det Andy gir, tar Bill bort
Andy ga, Bill tok

Andy Grove, administrerende direktør i Intel, og Bill Gates, daværende administrerende direktør i Microsoft.

Å forbedre den nåværende utviklingstilstanden var målet med forskningsprosjektet TRINN mot gjenoppfinnelsen av programmering (pdf). Målet er å oppnå "Moores lov" i uttrykksfullhet ved å "redusere mengden nødvendig kode med 100, 1000, 10000 XNUMX ganger eller mer."

I hans øyeåpnende rapport Programmering og skalering (video) Dette emnet diskuteres mer detaljert. Ifølge Alan har programvareteknikk stanset og er i ferd med å bli en glemt vitenskap som ikke kan holde tritt med maskinvare og andre vitenskaper og ingeniørdisipliner. Store prosjekter har blitt kodedumper og har nådd et punkt hvor ingen ikke i stand til å forstå 100 millioner linjer med MS Vista- eller MS Word-kode. Men i virkeligheten burde det være en størrelsesorden mindre kode i slike prosjekter.

Alan vurderer Internett, TCP/IP-protokoller, LISP-tolker, Nile (Math DSL for Vector Graphics) og OMeta (OO PEG) (PDF) eksempler på elegant programvare med minimal kode.

Han kaller Internett (TCP/IP) et av få storskala programvareprosjekter som ble designet riktig, og kompleksitetsnivået er i balanse med kompleksitetsnivået (komplikasjon vs. kompleksitet). Med færre enn 20 1969 linjer med kode, fungerer prosjektet som et levende, dynamisk system som kan støtte milliarder av noder, og har aldri gått offline siden den første lanseringen i september XNUMX. Vi sluttet rett og slett å betrakte Internett som et normalt programvareprosjekt laget av mennesker:

Internett er så godt utviklet at mange mennesker behandler det som en naturressurs, som Stillehavet, snarere enn et produkt av menneskelig arbeidskraft. Når var siste gang vi så en så stabil, klar, feilfri teknologi? Til sammenligning er nettet tull. Nettet ble laget av amatører.

Om objektorientert programmering

Det første som interesserte meg var hans opprinnelig OOP visjon. Hans erfaring innen mikrobiologi spilte en viktig rolle:

Jeg tenkte på objekter som biologiske celler, og/eller individuelle datamaskiner på et nettverk som bare kunne kommunisere gjennom meldinger.

og erfaring i matematikk:

Min erfaring i matematikk fikk meg til å innse at hvert objekt kan ha flere algebraer, de kan kombineres til familier, og dette kan være veldig nyttig.

Ideer for sen binding og kraftige metafunksjoner til LISPa:

Den andre fasen er å forstå LISPa og bruke den forståelsen til å skape enklere, mindre, kraftigere strukturer og senere binding.

Og snart begynte Alan å støtte ideen om at dynamiske språk er fremtiden for programvareutvikling (pdf). Spesielt er enkel endring viktig for ham:

Sen binding gjør at ideer som kom senere i utviklingsprosessen kan inkorporeres i prosjektet med mindre innsats (sammenlignet med tidligere bundne systemer som C, C++, Java, etc.)

Og potensialet for endringer i farten og raskere iterasjoner:

En av hovedideene er at systemet skal fortsette å fungere under testing, spesielt mens endringer gjøres. Selv store endringer bør skje gradvis og ikke ta mer enn et brøkdel av et sekund.

som mangler i statisk skrevet språk:

Bruker du tidlig bindende språk, som de fleste gjør, så låser du deg til det du allerede har skrevet. Det vil ikke lenger være mulig å omformulere det enkelt.

Overraskende nok var tankene hans om OOP begrenset til dette:

OOP for meg er meldinger, lokalt hold og beskytte, statsskjul og sen binding av alt. Dette kan gjøres i Smalltalk og i LISP.

Og ingenting om arv. Dette er ikke OOP som vi kjenner i dag:

Jeg skulle ønske jeg hadde brukt begrepet "objekt" for dette emnet for lenge siden fordi det får mange til å fokusere på den minste av ideene.

Den store ideen som moderne statisk skrevet OO-språk mangler:

Den store ideen er "meldinger"

Han tror på å fokusere på meldinger, løs kobling og modulinteraksjoner i stedet for på det indre av et objekt:

Nøkkelen til å skape gode skalerbare systemer er å utarbeide kommunikasjonsmekanismene mellom moduler, og ikke utarbeide deres interne egenskaper og oppførsel.

Statisk skrevet språk virker for ham defekt:

Jeg er ikke imot typer, men jeg vet ikke om noe typesystem som ikke forårsaker smerte. Så jeg liker fortsatt dynamisk skriving.

Noen populære språk bruker i dag Smalltalks budskapsformidlingsideer, sen binding og forstår ikkeforwardInvocation в Objective-Cmetode_mangler в Rubin и ingen slik metode i Google dart.

Ødelegg alt og skap noe bedre

Alan har en interessant teori om utviklingen av informatikk:

Det virker for meg som om det bare finnes én type informatikk, og at vitenskap er som å bygge broer. Noen bygger broer, og noen ødelegger dem og lager nye teorier. Og vi må fortsette å bygge broer.

Om LISP

Alan Kay tror Lisp

tidenes beste programmeringsspråk

Og at enhver nyutdannet informatikk bør studere det:

De fleste som tar grader i CS forstår ikke viktigheten av Lisp. Lisp er den viktigste ideen innen informatikk.

Om den rette atmosfæren og konteksten

Han husker ofte den unike atmosfæren i Xerox PARK и HARPE, der «visjon er viktigere enn mål» og «finansiering av mennesker, ikke prosjekter».

Point of view er verdt 80 IQ-poeng.

Alan Kay sier:

ARPA/PARC-historien viser hvordan en kombinasjon av visjon, beskjeden finansiering, riktig kontekst og prosess på magisk vis kan skape nye teknologier som ikke bare påvirker sivilisasjonen, men også skaper enorme verdier for samfunnet.

Og det er sant. Ta en titt på PARCs imponerende liste over oppfinnelser, hvorav mange spilte en svært viktig rolle i utviklingen av vår verden. For eksempel:

  • Laserskrivere
  • Objektorientert programmering / Smalltalk
  • Personlige datamaskiner
  • Ethernet / distribuert databehandling
  • GUI / datamus / WYSIWYG

Og i HARPE opprettet ARPANET, som ble stamfaderen til Internett.

PS Alan Kay svarer på spørsmål fra Hacker News-fellesskapet.

Kilde: www.habr.com

Legg til en kommentar