Alan Kay, az OOP alkotója a fejlesztésről, a Lispről és az OOP-ról

Alan Kay, az OOP alkotója a fejlesztésről, a Lispről és az OOP-ról

Ha még soha nem hallott Alan Kayről, legalább hallotta híres idézeteit. Például ez az idézet 1971-ből:

A jövő megjósolásának legjobb módja, ha feltalálod.
A jövő megjósolásának legjobb módja, ha feltalálod.

Alan nagyon színes karriert futott be a számítástechnikában. Megkapta Kiotói díj и Turing-díj az objektum-orientált programozási paradigmával kapcsolatos munkájáért. A személyi számítógépek és a grafikus felületek egyik úttörője volt, ő fejlesztette Csevej minden idők egyik első legbefolyásosabb programozási nyelve.

Benne van Hexlete, főleg abban csevegés, folyamatosan felvetődik a „mi az OOP” és a „mit is értett valójában Alan Kay” kérdés. Ez a bejegyzés érdekes idézeteket tartalmaz Alantól a modern fejlődés állapotáról, az OOP-ról és a Lisp nyelvről.

A szoftverfejlesztésről

Alan Kay úgy véli, hogy a számítógépes forradalom még várat magára (Az igazi számítógépes forradalom még nem történt meg), a szoftverfejlesztés pedig fordított arányban fejlődik a Moore-törvénnyel: a hardver évről évre javul, de a szoftverek szükségtelenül felduzzadnak:

a probléma gyenge, rosszul skálázható ötletek és eszközök, lustaság, tudáshiány stb.

Jól leírja ezt a helyzetet rövid vicc:

Amit Andy ad, Bill elveszi
Andy adott, Bill elvett

Andy Grove, az Intel vezérigazgatója és Bill Gates, a Microsoft akkori vezérigazgatója.

A fejlesztés jelenlegi állapotának javítása volt a kutatási projekt célja LÉPÉSEK A programozás újjászületése felé (pdf). A cél a "Moore-törvény" kifejezőképességének elérése azáltal, hogy "a szükséges kód mennyiségét 100-ra, 1000-re, 10000 XNUMX-re vagy még többre csökkentik".

Szemet nyitó riportjában Programozás és skálázás (videó) Ezt a témát részletesebben tárgyaljuk. Alan szerint a szoftverfejlesztés megtorpant, és elfeledett tudománygá válik, amely nem tud lépést tartani a hardverrel és más tudományokkal és mérnöki tudományokkal. A nagy projektek kóddumpokká váltak, és elérték azt a pontot, ahol senki képtelen megérteni 100 millió sornyi MS Vista vagy MS Word kódot. De a valóságban egy nagyságrenddel kevesebb kódnak kellene lennie az ilyen projektekben.

Alan figyelembe veszi az internetet, a TCP/IP protokollokat, a LISP tolmácsokat, Nile (Math DSL vektorgrafikához) és OMEta (OO PEG) (PDF) Példák elegáns szoftverekre minimális kóddal.

Az Internetet (TCP/IP) azon kevés nagyszabású szoftverprojektek egyikének nevezi, amelyeket helyesen terveztek meg, és bonyolultsága egyensúlyban van a bonyolultsági szinttel (bonyolultság vs. bonyolultság). A kevesebb mint 20 1969 kódsorral rendelkező projekt élő, dinamikus rendszerként működik, amely több milliárd csomópontot képes támogatni, és XNUMX szeptemberi indulása óta soha nem vált offline állapotba. Egyszerűen felhagytunk azzal, hogy az internetet egy normális szoftverprojektnek tekintsük, amelyet emberek hoztak létre:

Az internet olyan jól fejlett, hogy sokan természeti erőforrásként kezelik, mint a Csendes-óceán, nem pedig emberi munka termékeként. Mikor láttunk utoljára ilyen stabil, tiszta, hibamentes technológiát? Ehhez képest a web nonszensz. A webet amatőrök készítették.

Az objektum-orientált programozásról

Az első dolog, ami érdekelt, az övé volt a kezdeti OOP látás. Mikrobiológiai tapasztalatai fontos szerepet játszottak:

Úgy gondoltam, hogy az objektumok olyanok, mint a biológiai sejtek és/vagy a hálózaton lévő egyes számítógépek, amelyek csak üzeneteken keresztül tudnak kommunikálni.

és matematikai tapasztalat:

A matematikában szerzett tapasztalataim ráébredtek arra, hogy minden objektumnak több algebra is lehet, ezek családokba vonhatók, és ez nagyon hasznos lehet.

Ötletek a késői kötéshez és a LIPa erőteljes metafunkcióihoz:

A második fázis a LIPa megértése, és ennek felhasználása könnyebb, kisebb, erősebb struktúrák és későbbi kötések létrehozására.

És hamarosan Alan elkezdte támogatni azt az elképzelést, hogy a dinamikus nyelvek azok a szoftverfejlesztés jövője (pdf). Különösen fontos számára a könnyű változtatás:

A késői kötés lehetővé teszi, hogy a fejlesztési folyamat későbbi szakaszában született ötletek kevesebb erőfeszítéssel beépüljenek a projektbe (összehasonlítva a korábban kötött rendszerekkel, mint a C, C++, Java stb.).

És a menet közbeni változások és a gyorsabb iterációk lehetősége:

Az egyik kulcsgondolat az, hogy a rendszernek továbbra is működnie kell a tesztelés alatt, különösen a változtatások alatt. Még a nagyobb változtatásoknak is fokozatosnak kell lenniük, és legfeljebb a másodperc töredékéig tarthatnak.

ami hiányzik belőle statikusan gépelt nyelvek:

Ha korai kötési nyelveket használ, mint a legtöbb ember, akkor bezárkózik abba, amit már írt. A továbbiakban nem lesz könnyű újrafogalmazni.

Meglepő módon az OOP-ról alkotott gondolatai erre korlátozódtak:

Az OOP számomra az üzenetek, a helyi tartás és védelem, az állapot elrejtése és mindennek késői kötése. Ez megtehető a Smalltalk-ban és a LISP-ben.

És semmi az öröklődésről. Ez nem az OOP amelyet ma ismerünk:

Bárcsak régen használtam volna a "objektum" kifejezést erre a témára, mert ez arra készteti az embereket, hogy a kisebbik ötletekre összpontosítsanak.

A nagy ötlet, amely hiányzik a modern statikusan gépelt OO nyelvekből:

A nagy ötlet az "üzenetek"

Úgy véli, hogy az üzenetekre, a laza csatolásokra és a modulok interakcióira kell összpontosítani, nem pedig egy objektum belső elemeire:

A jó skálázható rendszerek létrehozásának kulcsa a modulok közötti kommunikációs mechanizmusok kidolgozása, nem pedig a belső tulajdonságaik és viselkedésük kidolgozása.

Statikusan gépelt nyelvek tűnnek neki hibás:

Nem vagyok a típusok ellen, de nem ismerek olyan típusrendszert, ami nem okoz fájdalmat. Szóval továbbra is szeretem a dinamikus gépelést.

Néhány népszerű nyelv manapság a Smalltalk üzenettovábbítási ötleteit, késői kötést és nem értielőre Invocation в Objective-Cmethod_missing в Rubin и noSuchMethod a Google-ban Dárda.

Pusztíts el mindent, és alkoss valami jobbat

Alannak van egy érdekes elmélete a számítástechnika fejlődéséről:

Számomra úgy tűnik, hogy csak egyfajta számítástechnika létezik, és a tudomány olyan, mint a hidak építése. Valaki hidakat épít, valaki lerombolja azokat, és új elméleteket alkot. És továbbra is hidakat kell építenünk.

A LISP-ről

Alan Kay hisz Lispnek

minden idők legjobb programozási nyelve

És hogy minden számítástechnikát végzettnek tanulnia kell:

A legtöbb CS diplomát szerző ember nem érti a Lisp fontosságát. A Lisp a számítástechnika legfontosabb gondolata.

A megfelelő légkörről és kontextusról

Gyakran felidézi az egyedülálló légkört Xerox PARK и HÁRFA, ahol „a jövőkép fontosabb, mint a célok” és „az emberek finanszírozása, nem a projektek”.

A nézőpont 80 IQ pontot ér.

Alan Kay azt mondja:

Az ARPA/PARC történet bemutatja, hogy a jövőkép, a szerény finanszírozás, a megfelelő kontextus és folyamat kombinációja varázslatos módon új technológiákat hozhat létre, amelyek nemcsak a civilizációra hatnak, hanem óriási értéket teremtenek a társadalom számára.

És ez igaz. Vessen egy pillantást a PARC lenyűgöző találmánylistájára, amelyek közül sok nagyon fontos szerepet játszott világunk fejlődésében. Például:

  • Lézernyomtatók
  • Objektum-orientált programozás / Smalltalk
  • Személyi számítógépek
  • Ethernet / elosztott számítástechnika
  • GUI / számítógépes egér / WYSIWYG

És HÁRFA létre ARPANET, amely az Internet ősévé vált.

PS Alan Kay válaszol a Hacker News közösség kérdéseire.

Forrás: will.com

Hozzászólás