Ich habe viel über Sprachdesign nachgedacht und darüber, welche Elemente für eine "ideale" Programmiersprache erforderlich sind, und das Studium von Go von Google hat mich dazu veranlasst, eine Menge sonst üblicher Kenntnisse in Frage zu stellen.
Insbesondere scheint Go alle interessanten Vorteile der objektorientierten Programmierung zu bieten, ohne die Struktur einer objektorientierten Sprache zu haben. Es gibt keine Klassen, nur Strukturen; Es gibt keine Klassen- / Strukturvererbung, sondern nur die Einbettung von Strukturen. Es gibt keine Hierarchien, keine übergeordneten Klassen, keine expliziten Schnittstellenimplementierungen. Typumwandlungsregeln basieren stattdessen auf einem losen System, das der Duck-Typisierung ähnelt. Wenn eine Struktur die erforderlichen Elemente eines "Readers" oder einer "Anforderung" oder einer "Codierung" implementiert, können Sie sie umwandeln und verwenden als ein.
Gibt es etwas an OOP, das in C ++ und Java und C # implementiert ist, das von Natur aus leistungsfähiger und wartungsfreundlicher ist und das Sie aufgeben müssen, wenn Sie in eine Sprache wie Go wechseln? Welchen Nutzen müssen Sie aufgeben, um die Einfachheit dieses neuen Paradigmas zu erreichen?
BEARBEITEN
Die "obsolete" Frage, an der die Leser zu hängen schienen und die sie ärgerte, wurde entfernt.
Die Frage ist, was das traditionelle objektorientierte Paradigma (mit Hierarchien und dergleichen), wie es häufig in Implementierungen in gemeinsamen Sprachen zu sehen ist, zu bieten hat, das in diesem einfacheren Modell nicht so einfach zu bewerkstelligen ist. Oder, mit anderen Worten, wenn Sie heute eine Sprache entwerfen würden, gibt es einen Grund, warum Sie das Konzept der Klassenhierarchien einbeziehen möchten?