He estado pensando mucho en el diseño del lenguaje y qué elementos serían necesarios para un lenguaje de programación "ideal", y estudiar Google's Go me ha llevado a cuestionar muchos conocimientos comunes.
Específicamente, Go parece tener todos los beneficios interesantes de la programación orientada a objetos sin tener realmente la estructura de un lenguaje orientado a objetos. No hay clases, solo estructuras; no hay herencia de clase / estructura, solo incrustación de estructura. No hay jerarquías, ni clases principales, ni implementaciones explícitas de interfaz. En cambio, las reglas de conversión de tipos se basan en un sistema suelto similar a la escritura de pato, de modo que si una estructura implementa los elementos necesarios de un "Lector" o una "Solicitud" o una "Codificación", puede emitirlo y usarlo como uno.
¿Hay algo acerca de OOP implementado en C ++ y Java y C # que es inherentemente más capaz, más fácil de mantener y de alguna manera más poderoso que tiene que renunciar al pasar a un lenguaje como Go? ¿A qué beneficio tiene que renunciar para ganar la simplicidad que representa este nuevo paradigma?
EDITAR
Se eliminó la pregunta "obsoleta" por la que los lectores parecían estar demasiado obsesionados y enfurecidos.
La pregunta es, ¿qué ofrece el paradigma tradicional orientado a objetos (con jerarquías y demás) como se ve con frecuencia en implementaciones de lenguaje común que no se puede hacer tan fácilmente en este modelo más simple? O, en otras palabras, si diseñara un lenguaje hoy, ¿hay alguna razón por la que quiera incluir el concepto de jerarquías de clases?