Alan Kay, OOP:n luoja, kehityksestä, Lispistä ja OOP:sta

Alan Kay, OOP:n luoja, kehityksestä, Lispistä ja OOP:sta

Jos et ole koskaan kuullut Alan Kaystä, olet ainakin kuullut hänen kuuluisat lainaukset. Esimerkiksi tämä lainaus vuodelta 1971:

Paras tapa ennustaa tulevaisuutta on keksiä se.
Paras tapa ennustaa tulevaisuutta on keksiä se.

Alanilla on erittäin värikäs ura tietojenkäsittelytieteessä. Hän vastaanotti Kioton palkinto и Turing-palkinto työstään olio-ohjelmoinnin paradigman parissa. Hän oli yksi edelläkävijöistä henkilökohtaisten tietokoneiden ja graafisten käyttöliittymien alalla, jonka hän kehitti Pieni keskustelu on yksi kaikkien aikojen ensimmäisistä vaikutusvaltaisimmista ohjelmointikielistä.

Meillä on sisällä Hexlete, erityisesti chattailuun, kysymys "mikä on OOP" ja "mitä Alan Kay todella tarkoitti" herätetään jatkuvasti. Tämä viesti sisältää mielenkiintoisia lainauksia Alanilta modernin kehityksen tilasta, OOP:sta ja Lisp-kielestä.

Tietoja ohjelmistokehityksestä

Alan Kay uskoo, että tietokonevallankumous on vielä tulossa (Todellinen tietokonevallankumous ei ole vielä tapahtunut), ja ohjelmistokehitys kehittyy käänteisessä suhteessa Mooren lakiin: laitteisto paranee joka vuosi, mutta ohjelmisto turvotetaan tarpeettomasti:

ongelma on heikko, huonosti skaalautuvat ideat ja työkalut, laiskuus, tiedon puute jne.

Kuvaa hyvin tätä tilannetta lyhyt vitsi:

Mitä Andy antaa, Bill ottaa pois
Andy antoi, Bill otti

Andy Grove, Intelin toimitusjohtaja ja Bill Gates, Microsoftin silloinen toimitusjohtaja.

Tutkimusprojektin tavoitteena oli nykyisen kehitystilan parantaminen ASKEET kohti ohjelmoinnin uudistamista (pdf). Tavoitteena on saavuttaa "Mooren laki" ilmeisyydessä "vähentämällä vaaditun koodin määrää 100, 1000, 10000 XNUMX kertaa tai enemmän".

Hänen silmiä avaavassa raportissaan Ohjelmointi ja skaalaus (video) Tästä aiheesta keskustellaan tarkemmin. Alanin mukaan ohjelmistotekniikka on pysähtynyt ja siitä on tulossa unohdettu tiede, joka ei pysy laitteiston ja muiden tieteiden ja tekniikan tieteenalojen perässä. Suurista hankkeista on tullut koodikaappauksia ja ne ovat saavuttaneet pisteen, jossa kukaan ei ymmärrä 100 miljoonaa riviä MS Vistan tai MS Wordin koodia. Mutta todellisuudessa tällaisissa projekteissa pitäisi olla suuruusluokkaa vähemmän koodia.

Alan harkitsee Internetiä, TCP/IP-protokollia, LISP-tulkkeja, Nile (Math DSL vektorigrafiikkaa varten) ja OMEta (OO PEG) (PDF) esimerkkejä tyylikkäistä ohjelmistoista minimaalisella koodilla.

Hän kutsuu Internetiä (TCP/IP) yhdeksi harvoista oikein suunnitelluista suurista ohjelmistoprojekteista, ja sen monimutkaisuus on tasapainossa monimutkaisuuden tason kanssa (komplikaatio vs. monimutkaisuus). Alle 20 1969 koodiriviä sisältävä projekti toimii elävänä, dynaamisena järjestelmänä, joka pystyy tukemaan miljardeja solmuja, eikä se ole koskaan mennyt offline-tilaan sen ensimmäisen julkaisun jälkeen syyskuussa XNUMX. Emme yksinkertaisesti enää pitäneet Internetiä normaalina ihmisten luomana ohjelmistoprojektina:

Internet on niin hyvin kehittynyt, että monet ihmiset pitävät sitä luonnonvarana, kuten Tyynellämerellä, eikä ihmistyön tuotteena. Milloin näimme viimeksi näin vakaan, selkeän ja virheetöntä tekniikkaa? Vertailun vuoksi netti on hölynpölyä. Verkko on amatöörien luoma.

Tietoja olio-ohjelmoinnista

Ensimmäinen asia, joka minua kiinnosti, oli hänen alkukirjain OOP visio. Hänen kokemuksellaan mikrobiologiasta oli tärkeä rooli:

Ajattelin esineiden olevan kuin biologisia soluja ja/tai yksittäisiä verkossa olevia tietokoneita, jotka pystyivät kommunikoimaan vain viestien kautta.

ja kokemusta matematiikasta:

Kokemukseni matematiikasta sai minut ymmärtämään, että jokaisessa objektissa voi olla useita algebraa, ne voidaan yhdistää perheiksi, mikä voi olla erittäin hyödyllistä.

Ideoita myöhäiseen sidontaan ja LISPa:n tehokkaat meta-ominaisuudet:

Toinen vaihe on LIPan ymmärtäminen ja sen käyttäminen luomaan helpompia, pienempiä, tehokkaampia rakenteita ja myöhemmin sidontaa.

Ja pian Alan alkoi tukea ajatusta siitä, että dynaamiset kielet ovat ohjelmistokehityksen tulevaisuus (pdf). Erityisesti muutoksen helppous on hänelle tärkeää:

Myöhäinen sidonta mahdollistaa myöhemmin kehitysprosessin aikana tulleiden ideoiden sisällyttämisen projektiin pienemmällä vaivalla (verrattuna aikaisempiin sidottuihin järjestelmiin, kuten C, C++, Java jne.)

Ja mahdolliset muutokset lennossa ja nopeammat iteraatiot:

Yksi keskeisistä ajatuksista on, että järjestelmän pitäisi jatkaa toimintaansa testauksen aikana, varsinkin kun muutoksia tehdään. Jopa suurten muutosten tulisi olla asteittaisia ​​ja kestää enintään sekunnin murto-osan.

joka puuttuu staattisesti kirjoitetut kielet:

Jos käytät varhaisia ​​sitovia kieliä, kuten useimmat ihmiset tekevät, lukitut siihen, mitä olet jo kirjoittanut. Sitä ei enää voi helposti muotoilla uudelleen.

Yllättäen hänen ajatuksensa OOP:sta rajoittuivat tähän:

OOP on minulle viestejä, paikallista pitoa ja suojaa, valtion piilottamista ja kaiken myöhäistä sidontaa. Tämä voidaan tehdä Smalltalkissa ja LISP:ssä.

Eikä mitään perinnöstä. Tämä ei ole OOP jonka tunnemme tänään:

Toivon, että olisin käyttänyt termiä "objekti" tästä aiheesta kauan sitten, koska se saa monet ihmiset keskittymään pienempään ideaan.

Suuri idea, joka nykyaikaisista staattisesti kirjoitetuista OO-kielistä puuttuu:

Suuri idea on "viestit"

Hän uskoo keskittyvän viesteihin, löyhään kytkentään ja moduulien vuorovaikutukseen objektin sisäosien sijaan:

Avain hyvien skaalautuvien järjestelmien luomiseen on moduulien välisten kommunikaatiomekanismien selvittäminen, ei niiden sisäisten ominaisuuksien ja käyttäytymisen selvittäminen.

Staattisesti kirjoitetut kielet näyttävät hänestä viallinen:

En vastusta tyyppejä, mutta en tiedä yhtään tyyppijärjestelmää, joka ei aiheuta kipua. Pidän siis edelleen dynaamisesta kirjoittamisesta.

Jotkut suositut kielet käyttävät nykyään Smalltalkin viestinvälitysideoita, myöhäistä sidontaa ja ei ymmärräeteenpäin Invocation в Objective-Cmethod_missing в Rubiini и noSuchMethod Googlessa Tikka.

Tuhoa kaikki ja luo jotain parempaa

Alanilla on mielenkiintoinen teoria tietojenkäsittelytieteen kehityksestä:

Minusta näyttää siltä, ​​että on olemassa vain yksi tietotekniikan tyyppi, ja että tiede on kuin siltojen rakentamista. Joku rakentaa siltoja, joku tuhoaa ne ja luo uusia teorioita. Ja meidän on jatkettava siltojen rakentamista.

Tietoja LISP:stä

Alan Kay uskoo Lispin

kaikkien aikojen paras ohjelmointikieli

Ja että jokaisen tietojenkäsittelytieteen valmistuneen pitäisi opiskella sitä:

Useimmat CS-tutkintoa suorittavat ihmiset eivät ymmärrä Lispin merkitystä. Lisp on tietojenkäsittelytieteen tärkein idea.

Oikeasta ilmapiiristä ja kontekstista

Hän muistaa usein ainutlaatuisen tunnelman Xerox PARK и ARPA, jossa "näkemys on tärkeämpää kuin tavoitteet" ja "ihmisten rahoittaminen, ei projekteja".

Näkökulma on 80 IQ-pisteen arvoinen.

Alan Kay sanoo:

ARPA/PARC-tarina osoittaa, kuinka vision, vaatimattoman rahoituksen, oikean kontekstin ja prosessin yhdistelmä voi taianomaisesti synnyttää uusia teknologioita, jotka eivät vain vaikuta sivilisaatioon vaan myös luovat valtavaa arvoa yhteiskunnalle.

Ja se on totta. Katso PARCin vaikuttava keksintöluettelo, joista monilla oli erittäin tärkeä rooli maailmamme kehityksessä. Esimerkiksi:

  • Lasertulostimet
  • Olio-ohjelmointi / Smalltalk
  • Henkilökohtaiset tietokoneet
  • Ethernet / hajautettu laskenta
  • GUI / tietokoneen hiiri / WYSIWYG

Ja ARPA luotu ARPANET, josta tuli Internetin kantaisä.

PS. Alan Kay vastaa Hacker News -yhteisön kysymyksiin.

Lähde: will.com

Lisää kommentti