Wie heißt das von Go charakterisierte Programmierparadigma?

8

Ich bin fasziniert von der Art und Weise, wie Go Klassenhierarchien aufgibt und den Begriff der Klasse im typischen objektorientierten Sinne völlig aufzugeben scheint. Ich bin auch erstaunt darüber, wie Schnittstellen definiert werden können, ohne dass der Typ, der diese Schnittstelle implementiert, dies wissen muss.

Gibt es Begriffe, die verwendet werden können / können, um diese Art von Programmiermethode und Sprachparadigma (oder möglicherweise bestimmte Aspekte davon) zu charakterisieren? Ist das Go-Sprachparadigma ausreichend neu und vom klassischen OOP-Paradigma verschieden und in der Geschichte der Computerprogrammierung ausreichend wichtig, um einen eindeutigen Namen zu rechtfertigen?

Ami
quelle
2
Ich werde vorschlagen, dass es "Go-Go-Codierung" heißt! : P
FrustratedWithFormsDesigner
4
Das Konzept "Lassen Sie einen Typ eine Schnittstelle implementieren, ohne dass der Typ selbst weiß" ist nicht neu. Haskell hat seit einiger Zeit so ziemlich das Gleiche (nur nennen sie es Typklassen anstelle von Schnittstellen).
tdammers
7
Ich betrachte die Typ-ignorant-implementierende Schnittstelle als eine Form der Ententypisierung
Adam Crossland

Antworten:

10

Das Weiterleiten von Nachrichten zwischen einfachen Ausführungskontexten in Verbindung mit der Fähigkeit, diese Kontexte dynamisch zu erstellen und zu zerstören, ist im Grunde das Akteurmodell .

Programmiersprachen nähern sich dem Ausdrucksproblem auf zwei Arten: OO-Sprachen konzentrieren sich in der Regel darauf, die Implementierung derselben Operationen mit unterschiedlichen Datentypen zu vereinfachen (z. B. "Objekt, auf das ich mit der Maus klicken kann" kann eine Bildlaufleiste sein). ein Fenster, ein Menü, ein Textfeld usw. (gleiche Operation, unterschiedliche Datendarstellungen), während sich funktionale Sprachen in der Regel darauf konzentrieren, neue Operationen für dieselben zugrunde liegenden Datentypen einfach zu implementieren. Durch das Aufgeben von Klassenhierarchien scheint Go eher auf der "funktionalen" Seite dieser Kluft zu landen.

Wie Adam Crossland in seinem Kommentar angedeutet hat, kann "Typ-ignorant-implementierende Schnittstelle" als eine Form der Ententypisierung angesehen werden, die in dynamischen Sprachen weit verbreitet ist. (Es ist jedoch technisch korrekter, dies als strukturelles Typsystem in Go zu betrachten. C ++ - Vorlagen sind heute wahrscheinlich die beliebteste Implementierung eines strukturellen Typsystems.)

Go hat viele Vorgeschichten - ich denke, keine seiner Ideen ist originell für die Sprache. Aber ich denke, das ist im Allgemeinen das falsche Maß für eine Sprache, die praktisch sein soll. Go sieht so aus, als würde es auf elegante Weise nützliche Ideen aus verschiedenen Bereichen miteinander mischen, was (glaube ich) zu einer produktiveren Programmierung führen würde, als es C # oder Java ergeben könnten. Ich hoffe es gewinnt an Zugkraft.

Aidan Cully
quelle
1
+1, speziell für "Go sieht so aus, als würde es nützliche Ideen aus verschiedenen Bereichen auf elegante Weise miteinander vermischen"
RCE
3

Parallelitätsprimitive.

Communicating Sequential Processes oder CSP ist ein Artikel von Charles Antony Richard Hoare, der erstmals 1985 von Prentice Hall International veröffentlicht wurde.

Erlang ist eine funktionale Sprache und Go ist strukturiert. Man könnte sagen, dass Erlang der Prädikator für Go ist.

mrhassell
quelle