谷歌的Golang是否解决了保罗格雷厄姆的文章" 为什么Arc不是特别面向对象 " 所解决的语言问题?
我最初对此的感觉是"现在说太早了"
1)如果你有一个没有词法闭包或宏的静态类型语言,面向对象编程是令人兴奋的.在某种程度上,它提供了解决这些限制的方法.(参见格林斯普的第十条规则.)
Go支持函数文字(参见文档),如果我正确读取它,则允许您将函数作为参数传递,无论是在别处定义还是创建ad-hoc.
2)面向对象编程在大公司中很流行,因为它适合于编写软件的方式.在大公司,软件往往由大型(并且经常变化)的平庸程序员团队编写.面向对象的编程对这些程序员强加了一种规则,可以防止他们中的任何一个人造成太大的伤害.价格是生成的代码随协议膨胀而且充满了重复.对于大公司而言,这不是一个太高的代价,因为他们的软件可能会变得臃肿并且无论如何都会重复.
这一点远非主观回答.
3)面向对象的编程产生了很多看似工作的东西.在风扇折叠的时代,有一种程序员只会在页面上放置五行或十行代码,之后会有二十行精心设计的注释.面向对象的编程对于这些人来说就像破解一样:它允许您将所有这些脚手架整合到您的源代码中.Lisp黑客可能通过将符号推入列表来处理的东西变成了类和方法的完整文件.因此,如果您想让自己或其他人相信您正在做很多工作,那么这是一个很好的工具.
由于go不是真正面向对象的语言,因此您可以在任何您熟悉的时尚中解决问题.
4)如果一种语言本身就是一种面向对象的程序,它可以被用户扩展.也许.或者也许你可以通过提供单点面向对象编程的子概念来做得更好.例如,重载与类本质上没有联系.走着瞧.
Go似乎对对象有一个有趣的方法,你不需要担心/开发大型对象树.看起来这些工具存在于语言中,以面向对象的方式构建数据,而不会将您锁定在纯面向对象的环境中.
5)面向对象的抽象整齐地映射到某些特定类型的程序的域上,如模拟和CAD系统.
...
保罗有一些有趣的观点,总的来说,我已经阅读了很多他的想法.在这件事上,我们不同意.他是一个疯子,也是一个糟糕的程序坚果.他似乎很难将程序理解为优秀程序员的工作.是的,我意识到它比那更微妙,但它真的归结为那个.在一天结束时,您的代码很容易使用,或者不是.而一些程序员,保罗认为很棒的程序员,将能够忍受比其他人更多的废话,并且仍然可以对代码的意图做出正面或反面.这是一项技能,但绝对不是唯一一个优秀的程序员需要的技能.
说到Arc,它很糟糕,除非我错了,即使Lisp社区的人都这么认为 - 我的观点是,即使是聪明的人也会犯错误.
再一次,保罗是一个聪明的家伙,但他在这个特别的作品中的整个方法似乎是不合适的.