J'ai beaucoup réfléchi à la conception du langage et aux éléments qui seraient nécessaires pour un langage de programmation "idéal", et étudier Go de Google m'a amené à remettre en question de nombreuses connaissances par ailleurs communes.
Plus précisément, Go semble avoir tous les avantages intéressants de la programmation orientée objet sans avoir réellement la structure d'un langage orienté objet. Il n'y a pas de classes, seulement des structures; il n'y a pas d'héritage de classe / structure - seulement incorporation de structure. Il n'y a aucune hiérarchie, aucune classe parente, aucune implémentation d'interface explicite. Au lieu de cela, les règles de conversion de type sont basées sur un système lâche similaire à la saisie de canard, de sorte que si une structure implémente les éléments nécessaires d'un "Reader" ou d'une "Demande" ou d'un "Encodage", alors vous pouvez la convertir et l'utiliser. comme un.
Y a-t-il quelque chose à propos de la POO implémentée en C ++ et Java et C # qui est intrinsèquement plus capable, plus maintenable, en quelque sorte plus puissant que vous devez abandonner lorsque vous passez à un langage comme Go? À quoi devez-vous renoncer pour gagner la simplicité que représente ce nouveau paradigme?
EDIT
Suppression de la question «obsolète» que les lecteurs semblaient trop accrocher et rendre furieux.
La question est, qu'est-ce que le paradigme traditionnel orienté objet (avec des hiérarchies et autres) comme on le voit fréquemment dans les implémentations de langage commun a à offrir qui ne peut pas être fait aussi facilement dans ce modèle plus simple? Ou, en d'autres termes, si vous deviez concevoir un langage aujourd'hui, y a-t-il une raison pour laquelle vous voudriez inclure le concept de hiérarchies de classes?