巨头们的编程语言之争:我的语言就是比你好

今天,互联网巨头们也很任性,他们已经不满足于拥有自己的巨大的数据中心、豪华巴士以及有机午餐酒吧。他们还开始推出自己的编程语言,比如Google在2009年推出Go, Facebook在去年春季引入了HacK,以及后来的D语言,而苹果推出了Swift语言。

在过去,编程世界总是被一分为二:要么是运行快速的语言;要么是使用简单的现代语言。但现在,这两个世界都撞在了一起:Google的Go语言是注重于让并发编程更简单,充分利用今天的多核处理器;苹果的Swift将Web脚本流行风格带给了iPhone开发者,每个语言都有自己的标志,Facebook的D语言也试图将运行高性能和易于编写两者统一在一起。

设计编程语言其实是一种平衡,对编程者应该是容易的,同时又适合机器运行。(也就是说,即要讨好开发人员,又要讨好CPU电脑)

My Computer Language is Better than Yours一文谈了这几个语言诞生的背景和本质。因为这些大公司语言可能在未来几年会影响每个程序员的职业生涯,如同IBM公司支持COBOL和SUN公司的Java一样。

Go语言本质Ken Thompson, Rob Pike 和 Robert Griesemer,三位Google编程大牛当初有推出Go语言的念头是他们在等待C++和Java代码编译,这些被广泛使用的编程语言在谷歌这种需要大规模部署这种情形时却表现得力不从心,每次你添加和改变一些东西时,不得不等待编译器再次构建二进制版本。

Pike说:构建花费了45分钟,构建花费这么长时间非常痛苦的。

设计一个编程语言其实是一种平衡,在易于编程者和适合机器之间的平衡。。

Go创建者Thompson协同发明了Unix,他和Bell实验室老将Pike曾经推出UTF-8的字符编码标准,如今我们几乎每天都在使用UTF-8,他们知道一点小决定会有什么大后果,今天的每一个规则影响着未来程序员

例如 编程语言通常使用分号来分割语句,比如经典C语言的Hello World:

main()

Go创建者认为大括号是必需的,一些流行语言如Python却把它扔在一边,允许程序员使用缩进 空格或不可见字符在人类眼睛和机器之间铺设代码。Go语言团队认为这是一种深刻的错误,大括号意味着程序员能够明确无误地告诉计算机,什么是一整块代码。(谷歌创始人布林Sergey Brin也曾经建议使用方括号替代大括号,这样节省程序员使用shift键来回切换,但是他没有赢得争论)

但是他们认为每个语句后面的分号则不是必需的,分号是为分析器服务的,不是为人类,他们要尽可能消除分号,因此,Go语言机制会在程序员敲完每行代码后面会注入分号。

Go这一创举节省了大量劳动和眼睛疲劳,但是为了让分号注入不再失控,程序员必须更加严谨地将代码包括在大括号之中,否则,分号会在错误的地方注射。

这种选择不是没有争议,“他们竟然用冗余的大括号毒害了语言”,一个评论者认为,空格键完全可以取代大括号的角色,但是Google Andrew Gerrand回复认为:在大规模系统上每天都有狗屎事情发生,人们用一些不可见字符塞入代码会有不可预料的微妙Bug,这在Google的Python编程中已经发生不止一次了。

Go语言是专门为解决Google问题而诞生,Goole有大问题,我们需要一个语言使得我们的工作更加容易,我们的工作是编写服务器端软件。

Google有自己云计算超级计算机,这正是Go语言优化的目标,但是Google从来不会去卖一个软件,Go是免费开源项目,Go语言被认为是基于云基础设施的新兴语言。

Dropbox已经将其后端代码从Python移植到Go语言,Wordpress.com也开始使用Go语言,Wordpress他们以前是靠PHP起家的。

来自另外一篇Go vs. C中认为:

但是Go和C都同样会发生死锁和共享数据竞争争夺的情况,两者都提供了相应的工具调试这种问题,因为Go设计得更简单,它就不可能在对线程的控制程度上达到C语言那种级别,如果需要这种级别的线程控制,那么C还是适合的(banq注:Java和Scala同样),对于大型项目,Go编译得比C/C++更快,而实际运行性能稍微落后于C/C++.Go的目标就是综合C的性能,但是使得软件工程师更加简单地使用它。

根据x64 Ubuntu : Intel Q6600 quad-core语言基准测试表明,Go语言快于大多数脚本语言 PHP, Perl, Python, Ruby, Hack,慢于一些编译型语言C++, Ada, C, 和 Fortran,也稍快于Java Haskell Scala和Erlang。当然,基准测试不代表全部,Go语言作为一个新的编译型语言,其编译器优化还是有余地的,

Swift语言起家以前在iOS平台上编写程序使用的是Objective C,当Swift语言出来后,有人感到兴奋,因为他们对Objective C很失望,虽然喜欢其背后原理,但是讨厌它的语法,使用它从来没有真正享受过编程。

Swift创建者Chris Lattner曾经是流行开源项目LLVM的领导者。Swift瞄准的是首个工业质量系统的编程语言能够像脚本语言一样充满表现力和快乐。你可以使用Swift无需太多努力付出编写健壮的代码。

但是有人指责苹果是一个有围墙的花园,没有真正完全拥抱开源。

Facebook的D语言Facebook的D语言与Google的Go语言以及苹果的Swift语言类似,都是在强大功能和简单易用性之间做了一种平衡。下一个大的编程语言你从来没有听说过一文谈了以Facebook为后盾的D语言,他们认为C++确实是一个运行速度非常快的语言,但是不像Python Ruby和PHP一样易于使用,换句话说,它不能让开发人员开发软件如同其运行一样快,D试图弥补这个缺口,提供C++一样的性能,同时又能让程序员人类方便编程。

实际上Facebook以前推出PHP的延伸Hack语言,Hack作为Facebook服务网页的前端,而D语言作为Hack的后端,服务其社交网络的引擎核心部分。

D语言编译速度也非常快,以至于实现即编辑即运行如同解释型语言一样。

一个语言成功取决于是否有人愿意花费大资金去推动它,Java语言的成功是因为早在20世纪90年代Sun公司在其背后花了很多钱。

=====================================================

感谢 Coding 对本微信的支持。Coding.net 是一个面向开发者的云端开发平台,目前提供代码托管、运行空间、质量控制、项目管理等功能。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值