私は言語設計と「理想的な」プログラミング言語に必要な要素について多くのことを考えてきましたが、GoogleのGoを勉強することで、そうでなければ一般的な知識の多くを疑問視するようになりました。
具体的には、Goはオブジェクト指向言語の構造を実際に持たずに、オブジェクト指向プログラミングの興味深い利点をすべて備えているようです。クラスはなく、構造のみがあります。クラス/構造の継承はなく、構造の埋め込みのみです。階層はなく、親クラスも、明示的なインターフェイス実装もありません。代わりに、型キャストルールはアヒルのタイピングに似た緩やかなシステムに基づいており、構造体が「リーダー」または「リクエスト」または「エンコード」の必要な要素を実装する場合、キャストして使用できます。一つとして。
Goのような言語に移行するときにあきらめなければならない、本質的に機能性、保守性、強力な、C ++およびJavaとC#で実装されたOOPについて何かありますか?この新しいパラダイムが表すシンプルさを得るために、あきらめなければならないメリットは何ですか?
編集
読者が過度にハングアップして怒りを覚えるように見える「時代遅れの」質問を削除しました。
問題は、一般的な言語の実装でよく見られる従来のオブジェクト指向のパラダイム(階層など)は、この単純なモデルでは簡単に実行できないものを提供する必要があるということです。または、言い換えると、今日言語を設計する場合、クラス階層の概念を含めたい理由はありますか?