Alan Kay, Erfinder von OOP, über Entwicklung, Lisp und OOP

Alan Kay, Erfinder von OOP, über Entwicklung, Lisp und OOP

Wenn Sie noch nie von Alan Kay gehört haben, haben Sie zumindest seine berühmten Zitate gehört. Zum Beispiel dieses Zitat aus dem Jahr 1971:

Der beste Weg, die Zukunft vorherzusagen, besteht darin, sie zu erfinden.
Der beste Weg, die Zukunft vorherzusagen, besteht darin, sie zu erfinden.

Alan hat eine sehr abwechslungsreiche Karriere in der Informatik. Er erhielt Kyoto-Preis и Turing-Preis für seine Arbeit zum objektorientierten Programmierparadigma. Er war einer der Pioniere auf dem Gebiet der von ihm entwickelten Personalcomputer und grafischen Schnittstellen Smalltalk ist eine der ersten einflussreichsten Programmiersprachen aller Zeiten.

In unserer Hexlete, besonders in ChatDie Frage „Was ist OOP“ und „Was meinte Alan Kay wirklich?“ wird ständig aufgeworfen. Dieser Beitrag enthält interessante Zitate von Alan über den Stand der modernen Entwicklung, OOP und die Lisp-Sprache.

Über Softwareentwicklung

Alan Kay glaubt, dass die Computerrevolution noch bevorsteht (Die wahre Computerrevolution hat noch nicht stattgefunden), und die Softwareentwicklung entwickelt sich umgekehrt proportional zum Mooreschen Gesetz: Hardware verbessert sich jedes Jahr, aber Software wird unnötig aufgebläht:

Das Problem sind schwache, schlecht skalierbare Ideen und Tools, Faulheit, mangelndes Wissen usw.

Beschreibt diese Situation gut kurzer Witz:

Was Andy gibt, nimmt Bill weg
Andy gab, Bill nahm

Andy Grove, CEO von Intel, und Bill Gates, damals CEO von Microsoft.

Ziel des Forschungsvorhabens war es, den aktuellen Entwicklungsstand zu verbessern SCHRITTE zur Neuerfindung der Programmierung (pdf). Das Ziel besteht darin, das „Mooresche Gesetz“ in der Ausdruckskraft zu erreichen, indem „die Menge des erforderlichen Codes um das 100-, 1000-, 10000-fache oder mehr reduziert wird“.

In seinem aufschlussreichen Bericht Programmierung und Skalierung (Video) Dieses Thema wird ausführlicher besprochen. Laut Alan ist die Softwaretechnik ins Stocken geraten und wird zu einer vergessenen Wissenschaft, die nicht mit der Hardware und anderen Wissenschaften und Ingenieurdisziplinen mithalten kann. Große Projekte sind zu Code-Dumps geworden und haben einen Punkt erreicht, an dem keiner Ich bin nicht in der Lage, 100 Millionen Zeilen MS Vista- oder MS Word-Code zu verstehen. Aber in Wirklichkeit müsste in solchen Projekten eine Größenordnung weniger Code vorhanden sein.

Alan denkt über das Internet, TCP/IP-Protokolle, LISP-Interpreter, Nile (Math DSL für Vektorgrafiken) und OMeta (OO PEG) (PDF) Beispiele für elegante Software mit minimalem Code.

Er nennt das Internet (TCP/IP) eines der wenigen großen Softwareprojekte, das korrekt konzipiert wurde und dessen Komplexitätsgrad im Gleichgewicht mit dem Komplexitätsgrad (Komplikation vs. Komplexität) steht. Mit weniger als 20 Codezeilen arbeitet das Projekt als lebendiges, dynamisches System, das Milliarden von Knoten unterstützen kann, und ist seit seinem ersten Start im September 1969 nie offline gegangen. Wir haben einfach aufgehört, das Internet als ein normales, von Menschen geschaffenes Softwareprojekt zu betrachten:

Das Internet ist so weit entwickelt, dass viele Menschen es wie eine natürliche Ressource wie den Pazifischen Ozean und nicht wie ein Produkt menschlicher Arbeit behandeln. Wann haben wir das letzte Mal eine so stabile, klare und fehlerfreie Technologie gesehen? Im Vergleich dazu ist das Web Unsinn. Das Web wurde von Amateuren erstellt.

Über objektorientierte Programmierung

Das erste, was mich interessierte, war seins Initiale OOP-Vision. Dabei spielten seine Erfahrungen in der Mikrobiologie eine wichtige Rolle:

Ich stellte mir Objekte wie biologische Zellen und/oder einzelne Computer in einem Netzwerk vor, die nur über Nachrichten kommunizieren konnten.

und Erfahrung in Mathematik:

Durch meine Erfahrung in der Mathematik wurde mir klar, dass jedes Objekt mehrere Algebren haben kann, die zu Familien zusammengefasst werden können, was sehr nützlich sein kann.

Ideen für späte Bindung und leistungsstarke Metafunktionen von LISPa:

Die zweite Phase besteht darin, LISPa zu verstehen und dieses Verständnis zu nutzen, um einfachere, kleinere und leistungsfähigere Strukturen zu erstellen und später zu binden.

Und bald begann Alan, die Idee dynamischer Sprachen zu unterstützen Die Zukunft der Softwareentwicklung (pdf). Dabei ist ihm vor allem die einfache Wechselbarkeit wichtig:

Durch die späte Bindung können Ideen, die später im Entwicklungsprozess aufkamen, mit weniger Aufwand in das Projekt integriert werden (im Vergleich zu früher gebundenen Systemen wie C, C++, Java usw.).

Und das Potenzial für spontane Änderungen und schnellere Iterationen:

Eine der Kernideen besteht darin, dass das System während des Testens, insbesondere während der Durchführung von Änderungen, weiterhin funktionieren soll. Auch größere Veränderungen sollten schrittweise erfolgen und nicht länger als den Bruchteil einer Sekunde dauern.

was fehlt Statisch typisierte Sprachen:

Wenn Sie, wie die meisten Menschen, frühbindende Sprachen verwenden, dann beschränken Sie sich auf das, was Sie bereits geschrieben haben. Eine einfache Umformulierung wird nicht mehr möglich sein.

Überraschenderweise beschränkten sich seine Gedanken zu OOP auf Folgendes:

OOP bedeutet für mich Nachrichten, lokales Halten und Schützen, State Hiding und spätes Binden von allem. Dies kann in Smalltalk und in LISP erfolgen.

Und nichts über Vererbung. Das ist nicht das OOP was wir heute wissen:

Ich wünschte, ich hätte für dieses Thema schon vor langer Zeit den Begriff „Objekt“ verwendet, da er dazu führt, dass sich viele Menschen auf die untergeordneten Ideen konzentrieren.

Die große Idee, die modernen statisch typisierten OO-Sprachen fehlt:

Die große Idee sind „Nachrichten“

Er glaubt daran, sich auf Nachrichten, lose Kopplung und Modulinteraktionen zu konzentrieren und nicht auf das Innere eines Objekts:

Der Schlüssel zur Schaffung guter skalierbarer Systeme liegt in der Ausarbeitung der Kommunikationsmechanismen zwischen Modulen und nicht in der Ausarbeitung ihrer internen Eigenschaften und ihres Verhaltens.

Statisch typisierte Sprachen erscheinen ihm defekt:

Ich bin nicht gegen Typen, aber ich kenne kein Typsystem, das keine Schmerzen verursacht. Deshalb mag ich immer noch dynamisches Tippen.

Einige beliebte Sprachen verwenden heute die Message-Passing-Ideen, die späte Bindung usw. von Smalltalk versteht nichtForwardInvocation в Objective-CMethode_fehlt в Ruby и noSuchMethod bei Google Dart.

Zerstöre alles und erschaffe etwas Besseres

Alan hat eine interessante Theorie über die Entwicklung der Informatik:

Mir kommt es so vor, als gäbe es nur eine Art von Informatik, und Wissenschaft sei wie Brückenbau. Jemand baut Brücken, und jemand zerstört sie und schafft neue Theorien. Und wir müssen weiterhin Brücken bauen.

Über LISP

Alan Kay glaubt Lisp

beste Programmiersprache aller Zeiten

Und dass jeder Informatik-Absolvent es studieren sollte:

Die meisten Leute, die einen Informatikabschluss anstreben, verstehen die Bedeutung von Lisp nicht. Lisp ist die wichtigste Idee in der Informatik.

Über die richtige Atmosphäre und den richtigen Kontext

Er erinnert sich oft an die einzigartige Atmosphäre in Xerox-PARC и ARPA, wo „Vision wichtiger ist als Ziele“ und „Menschen finanzieren, nicht Projekte“.

Der Standpunkt ist 80 IQ-Punkte wert.

Alan Kay sagt:

Die ARPA/PARC-Geschichte zeigt, wie eine Kombination aus Vision, bescheidener Finanzierung, dem richtigen Kontext und Prozess auf magische Weise neue Technologien hervorbringen kann, die nicht nur Auswirkungen auf die Zivilisation haben, sondern auch einen enormen Wert für die Gesellschaft schaffen.

Und das ist die Wahrheit. Werfen Sie einen Blick auf die beeindruckende Liste der Erfindungen von PARC, von denen viele eine sehr wichtige Rolle bei der Entwicklung unserer Welt spielten. Zum Beispiel:

  • Laserdrucker
  • Objektorientierte Programmierung / Smalltalk
  • Persönliche Computer
  • Ethernet / verteiltes Rechnen
  • GUI / Computermaus / WYSIWYG

Und in ARPA habe erstellt ARPANET, der zum Vorläufer des Internets wurde.

PS Alan Kay beantwortet Fragen der Hacker News-Community.

Source: habr.com

Kommentar hinzufügen