- 1、本文档被系统程序自动判定探测到侵权嫌疑,本站暂时做下架处理。
- 2、如果您确认为侵权,可联系本站左侧在线QQ客服请求删除。我们会保证在24小时内做出处理,应急电话:400-050-0827。
- 3、此文档由网友上传,因疑似侵权的原因,本站不提供该文档下载,只提供部分内容试读。如果您是出版社/作者,看到后可认领文档,您也可以联系本站进行批量认领。
查看更多
命名 | Go语言圣经 Go语言起源 编程语言的演化就像生物物种的演化类似,一个成功的编程语言的后代一般都会继承它们祖先的优点; 当然有时多种语言杂合也可能会产生令人惊讶的特性;还有一些激进的新特性可能并没有先例。我们可 以通过观察编程语言和软硬件环境是如何相互促进、相互影响的演化过程而学到很多。 下图展示了有哪些早期的编程语言对Go语言的设计产生了重要影响。 Go语言有时候被描述为 “C类似语言”,或者是 “21世纪的C语言”。Go从C语言继承了相似的表达式语 法、控制流结构、基础数据类型、调用参数传值、指针等很多思想,还有C语言一直所看中的编译后机器 码的运行效率以及和现有操作系统的无缝适配。 但是在Go语言的家族树中还有其它的祖先。其中一个有影响力的分支来自Niklaus Wirth所设计的 Pascal)语言。然后Modula-2语言激发了包的概念。然后Oberon)语言摒弃了模块接口文件和模块实现文 件之间的区别。第二代的Oberon-2)语言直接影响了包的导入和声明的语法,还有Oberon)语言的面向对 象特性所提供的方法的声明语法等。 Go语言的另一支祖先,带来了Go语言区别其他语言的重要特性,灵感来自于贝尔实验室的Tony Hoare于 1978年发表的鲜为外界所知的关于并发研究的基础文献 顺序通信进程 ( communicating sequential processes ,缩写为CSP)。在CSP中,程序是一组中间没有共享状态的平行运行的处理过程,它们之间 使用管道进行通信和控制同步。不过Tony Hoare的CSP只是一个用于描述并发性基本概念的描述语言,并 不是一个可以编写可执行程序的通用编程语言。 接下来,Rob Pike和其他人开始不断尝试将CSP引入实际的编程语言中。他们第一次尝试引入CSP特性的 编程语言叫Squeak (老鼠间交流的语言),是一个提供鼠标和键盘事件处理的编程语言,它的管道是静 态创建的。然后是改进版的Newsqueak语言,提供了类似C语言语句和表达式的语法和类似Pascal)语言的 推导语法。Newsqueak是一个带垃圾回收的纯函数式语言,它再次针对键盘、鼠标和窗口事件管理。但是 在Newsqueak语言中管道是动态创建的,属于第一类值, 可以保存到变量中。 在Plan9操作系统中,这些优秀的想法被吸收到了一个叫Alef的编程语言中。Alef试图将Newsqueak语言 改造为系统编程语言,但是因为缺少垃圾回收机制而导致并发编程很痛苦。 (译注:在Aelf之后还有一 个叫Limbo的编程语言,Go语言从其中借鉴了很多特性。 具体请参考Pike的讲 稿:/2012/concurrency.slide#9 ) Go语言的其他的一些特性零散地来自于其他一些编程语言;比如iota语法是从APL)语言借鉴,词法作用 域与嵌套函数来自于Scheme)语言 (和其他很多语言)。当然,我们也可以从Go中发现很多创新的设计。 比如Go语言的切片为动态数组提供了有效的随机存取的性能,这可能会让人联想到链表的底层的共享机 制。还有Go语言新发明的defer语句。 Go语言项 目 所有的编程语言都反映了语言设计者对编程哲学的反思,通常包括之前的语言所暴露的一些不足地方的 改进。Go项 目是在Google公司维护超级复杂的几个软件系统遇到的一些问题的反思 (但是这类问题绝不 是Google公司所特有的)。 正如Rob Pike所说, “软件的复杂性是乘法级相关的”,通过增加一个部分的复杂性来修复问题通常将 慢慢地增加其他部分的复杂性。通过增加功能和选项和配置是修复问题的最快的途径,但是这很容易让 人忘记简洁的内涵,即使从长远来看,简洁依然是好软件的关键因素。 简洁的设计需要在工作开始的时候舍弃不必要的想法,并且在软件的生命周期内严格区别好的改变或坏 的改变。通过足够的努力,一个好的改变可以在不破坏原有完整概念的前提下保持自适应,正如Fred Brooks所说的 “概念完整性”;而一个坏的改变则不能达到这个效果,它们仅仅是通过肤浅的和简单的 妥协来破坏原有设计的一致性。只有通过简洁的设计,才能让一个系统保持稳定、安全和持续的进化。 Go项 目包括编程语言本身,附带了相关的工具和标准库,最后但并非代表不重要的,关于简洁编程哲学 的宣言。就事后诸葛的角度来看,Go语言的这些地方都做的还不错:拥有自动垃圾回收、一个包系统、 函数作为一等公民、词法作用域、系统调用接口、只读的UTF8字符串等。但是Go语言本身只有很少的特 性,也不太可能添加太多的特性。例如,它没有隐式的数值转换,没有构造函数和析构函数,没有运算
您可能关注的文档
- Java-格式化字符串.pdf
- JAVA环境下HTML编辑器FCKeditor使用详解.doc
- Java环境下Memcached应用详解.docx
- Java媒体架构基础.doc
- java内存管理详细介绍.doc
- Java内存机制详解.docx
- java培训-框架-jms开源框架入门介绍.docx
- JAVA数据流的概述.doc
- Android中JNI编程的那些事儿详解.docx
- android中Menu的使用(补足六个汉字).doc
- 2025年无人机低空医疗物资投放社会效益报告.docx
- 2025年再生塑料行业包装回收利用产业链重构研究.docx
- 《AI眼镜周边产品市场机遇:2025年终端销售与需求增长洞察》.docx
- 2025年坚果加工行业深加工技术突破与市场拓展策略报告.docx
- 2025年通信芯片行业技术竞争与未来趋势报告.docx
- 《2025年生鲜电商配送冷链事故分析与预防措施》.docx
- 《商业航天融资新趋势2025民营卫星企业资本涌入估值分析市场动态》.docx
- 2025年能源绿色健康行业创新技术与市场应用报告.docx
- 2025年无人机低空医疗救援通信方案分析报告.docx
- 2025年烹饪机器人行业市场集中度分析报告.docx
最近下载
- 煤化工酚氨回收课件.ppt VIP
- 2023年度教师招聘考试《教育心理学》典型题题库及答案 .pdf VIP
- 2025年中考历史全国真题分类汇编:世界现代史.doc VIP
- 《项目管理课件:工程资料管理之道》.ppt VIP
- 牛津译林版必修 第一册Unit 4 Looking good, feeling good Reading 课件(共42张PPT)(含音频+视频).pptx VIP
- 武汉市2016年中考英语试题及答案.docx VIP
- 举升机的使用幻灯片.ppt VIP
- 2023年度广东省教师招聘考试《教育心理学》典型题题库及答案.pdf VIP
- 分式练习题_初二数学《分式》练习题.doc VIP
- 完整版《“十五五”规划建议》全文解读PPT.pptx
有哪些信誉好的足球投注网站
文档评论(0)