我一直在思考语言设计以及“理想”编程语言所必需的要素,而对Google Go的研究使我提出了很多其他常识。
具体来说,Go似乎从面向对象的编程中获得了所有有趣的好处,而实际上没有任何面向对象语言的结构。没有类,只有结构。没有类/结构继承-仅结构嵌入。没有任何层次结构,没有父类,没有显式的接口实现。取而代之的是,类型转换规则基于类似于鸭子类型的松散系统,因此,如果结构实现“阅读器”,“请求”或“编码”的必要元素,则可以对其进行转换并使用它作为一个。
用C ++和Java和C#实现的OOP是否具有某种固有的功能,更可维护,更强大的功能,而在转向Go这样的语言时,您必须放弃这些功能?为了获得这种新范例所代表的简单性,您必须放弃什么好处?
编辑
消除了读者似乎过分迷恋和激怒的“过时”问题。
问题是,在普通语言实现中经常看到的传统的面向对象范式(具有层次结构等)必须提供哪些在这种简单模型中无法轻松实现的范式?或者,换句话说,如果您今天要设计一种语言,是否有理由要包含类层次结构的概念?