本港台开奖现场直播 j2开奖直播报码现场
当前位置: 新闻频道 > IT新闻 >

码报:【j2开奖】GO, or not to GO

时间:2017-01-23 21:29来源:香港现场开奖 作者:118开奖 点击:
全世界有上千种程序开发语言,其实自己要发明一种语言也不是很难的事情。但问题是,为什么需要新语言,尤其是通用软件开发语言? 一般来说,语言是一种工具,当工具不够用的

码报:【j2开奖】GO, or not to GO

  全世界有上千种程序开发语言,其实自己要发明一种语言也不是很难的事情。但问题是,为什么需要新语言,尤其是通用软件开发语言?

  一般来说,语言是一种工具,当工具不够用的时候自然会有更新工具甚至换一种工具的需求。按照 TIOBE 开发语言排名来看,前20种语言已经占据了超过 75% 的开发量,这些语言在绝大部分场合都是够用了。

  然而,作为技术界走在前面的 Google 可不是这么想的。鉴于现有的语言们都有这样那样的问题,因此它在2007年推出了一种新的通用语言:Go

码报:【j2开奖】GO, or not to GO

  请点击此处输入图片描述

  自从1967年 Simula 语言第一次引入了面向对象程序设计的雏形以来,OOP(Object-Oriented Programming)就占据了软件开发思想的主导地位。当然这需要归功于 C++ 及其的衍生语言们 Java、C# 等。以至于现在说起 OOP,可能大家第一印象就是 C++、Java 中的 class。

  但 Google 觉得完全不是这么回事,从 C++ 开始就走错了路,语法越来越复杂、学习门槛越来越高、维护越来越困难,反观 C 语言本身,虽然在语言层面不支持 OOP,但经久不衰,在 TIOBE 开发语言排名上,C 的使用量几乎是 C++ 的2 倍还多,究其原因,在于 C 已经足够强大且足够简单。

  传统的桌面软件开发如今被移动开发、互联网开发追赶,大规模和高性能的软件开发的需求越来越明确,C++ 和它的继任者们总有这样那样的力所不逮。因此新的语言,比如 Go,就应运而生。

码报:【j2开奖】GO, or not to GO

  请点击此处输入图片描述

  1、 你有什么特别的,Go?

  在深入 Go 之前,先让我们看一下两段功能上基本一致的代

  C++ 的版本:

码报:【j2开奖】GO, or not to GO

  请点击此处输入图片描述

  Go 的版本:

码报:【j2开奖】GO, or not to GO

  请点击此处输入图片描述

  有什么不一样?好像没什么不一样吧?等一等,为什么 Go 没有 class?是的,Go 并没有 class,实际上,不仅没有 class,所有和 class 相关的,比如构造函数、虚拟函数都是没有的。

  OOP 对我只代表消息、局部持有和保护、状态处理的隐藏,以及对所有事物尽可能的延后绑定。

  ——Alan Kay

  :Alan Kay:Alan Curtis Kay,是美国计算机科学家,在面向对象编程和窗口式图形用户界面方面做出了先驱性贡献,他是 Smalltalk 的最初设计者。2003年获得图灵

  Go 忠实地实践了 Alan 的理想,而没有使用 C++ 们所引入的概念,包括继承和多态等。原始的概念让我们可以从另外一个角度来审视复杂系统的设计,同时来欣赏这些概念所带来的简洁性。

  从 OOP 的角度上来说,类并不是必须的概念,这只是一种被刻意特化的类型,赋予了承载 OOP 的重任,但对于其它的一些语言来说,典型的比如 C 语言,即使没有这些机制,一样可以实现 OOP。

  2、 没有class,没有 this

  在 Go 的这个例子里,类型 Connection 就是一个结构,和其它在 C 和 C++中被称为结构的东西是一样的。而 Connect() 这样的方法表示向 Connection 对象发送的一个消息。

码报:【j2开奖】GO, or not to GO

  请点击此处输入图片描述

  请再等一下,发送消息?这个说法有些耳熟——实际上,另外一个语言采用了相同的概念,那就是近年来日渐流行的 Objective-C。不同的是,Objective-C 采用的是运行时动态消息传递,而 Go 采用了静态消息传递。并且,Go 做得更加彻底,在 Go 中方法可以向任意类型(除了指针以外)发送消息,接收消息的对象在 C++ 中称为 this 指针,在 Objective-C 中称为self,而在 Go 中则可以用任意的变量表示——在这个例子中,就是 conn——并且需要显式声明,且也不一定需要是指针。

  为什么不使用 this?问题应该是,为什么是使用 this?本质上 Go 不认为这个方法属于这个对象,this 也好,self 也好,都在强化这个概念,因此在 Go 中不建议这样使用。

  3、 只有组合,没有继承

(责任编辑:本港台直播)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
栏目列表
推荐内容