编程语⾔的起源故事
过去的⼏⼗年间,⼤量的编程语⾔被发明、被替换、被修改或组合在⼀起。每种语⾔总在争论中诞⽣,⼜在进化中消亡。⽽这些语⾔的的创造者,⽆⼀不是编程世界中的标志性⼈物,⾼举探索的旗帜不断前⾏。敬仰之情促使了这篇⽂章的诞⽣,这⾥收集并分享了这五⼗年来最成功、最流⾏的⼗⼆门编程语⾔和它们的创造者的故事。
1、Java 的起源
1990 年代初,任职于 Sun 公司的詹姆斯·⾼斯林等⼈开始开发语⾔的雏形,最初被命名为 Oak,⽬标设置在家⽤电器等⼩型系统的程序语⾔,应⽤在电视机、电话、闹钟、烤⾯包机等家⽤电器的控制和通讯。由于这些智能化家电的市场需求没有预期的⾼, Sun 公司放弃了该项计划。随着 1990 年代互联⽹
的发展,Sun 公司看见 Oak 在互联⽹上应⽤的前景,于是改造了 Oak,于1995年5⽉以 Java 的名称正式发布。Java 伴随着互联⽹的迅猛发展⽽发展,逐渐成为重要的⽹络编程语⾔。
与传统型态不同, Sun 公司在推出 Java 时就将其作为开放的技术。全球数以万计的 Java 开发公司被要求所设计的Java软件必须相互兼容。“Java语⾔靠体的⼒量⽽⾮公司的⼒量”是 Sun 公司的⼝号之⼀,并获得了⼴⼤软件开发商的认同。这与微软公司所倡导的注重精英和封闭式的模式完全不同,此外,微软公司后来推出了与之竞争的平台以及模仿 Java 的 C# 语⾔。后来 Sun 公司被甲⾻⽂公司并购,Java 也随之成为甲⾻⽂公司的产品。
Java 的创造是为了完成 WORA(Write once, run anywhere ⼀次编写到处运⾏)的理念,它的平台独⽴性使它在企业应⽤中获得了巨⼤成功。到⽬前为⽌,它已经成为了最流⾏的⼀门应⽤程序编程语⾔,被⼴泛应⽤于企业级Web应⽤开发和移动应⽤开发。
2、C++ 的起源
这个构思起源于 Stroustrup 做博⼠论⽂时的⼀些程序撰写经验。他发现 Simula 具备很利于⼤型软件开发的特点,但 Simula 的运⾏速度太慢,⽆法对现实需求发挥功效;BCPL 虽快得多,但它过于低级的特性,使其不适于⼤型软件的开发。当 Stroustrup 开始在贝尔实验室⼯作时,他有分析 UNIX 核⼼关于分布式计算的问题。回想起他的博⼠论⽂经验,Stroustrup 开始为 C 语⾔增强⼀些类似 Simula
的特点。之所以选择 C,是因为它适于各种⽤途、快速和可移植性。除了C 和 Simula 之外,同时也从其它语⾔中获取灵感,如 ALGOL 68、Ada、CLU 以及 ML。刚开始时,类、派⽣类、存储类型检查、内联和默认参数特性,都是通过 Cfront 引⼊ C 语⾔之中。1985 年 10 ⽉出现了第⼀个商业化发布。
1983 年,C with Classes 改命名为 C++。加⼊了新的特性,其中包括虚函数、函数名和运算符重载、参考、常数、⽤户可控制的⾃由空间存储区控制、改良的类型检查,以及新的双斜线(//)单⾏注解风格。1985年,发布第⼀版《C++程序设计语⾔》,提供⼀个重点的语⾔参考,⾄此还不是官⽅标准。1989年,发布了Release 2.0。引⼊了多重继承、抽象类、静态成员函数、常数成员函数,以及成员保护。1990年,出版了The Annotated C++ Reference Manual。这本书后来成为标准化的基础。稍后还引⼊了模板、异常处理、名字空间、新的强制类型转换,以及布尔类型。
编程先学c语言还是pythonC++ 这个名字是 Rick Mascitti 于 1983 年中所建议的,并于 1983 年 12 ⽉⾸次使⽤。更早以前,尚在研究阶段的发展中语⾔曾被称为“new C”,之后是“C with Classes”。在计算机科学中,C++ 仍被称为 C 语⾔的上层结构。它最后得名于 C 语⾔中的“++”操作符(其对变量的值进⾏递增)。⽽且在共同的命名约定中,使⽤“+”以表⽰增强的程序。Stroustrup 说:“这个名字象征着源⾃于C语⾔变化的⾃然演进”。C+ 是⼀个和 C/C++ ⽆关的早期编程语⾔。
3、的起源
1997 年时,微软开始针对 ASP 的缺点(尤其是意⼤利⾯型的程序开发⽅法)准备开始⼀个新项⽬来开发,当时 ASP.NET 的主要领导⼈ Scott Guthrie 刚从杜克⼤学毕业,他和 IIS 团队的 Mark Anders 经理⼀起合作两个⽉,开发出了下⼀代 ASP 技术的原型,这个原型在 1997 年的圣诞节时被发展出来,并给予⼀个名称:XSP,这个原型产品使⽤的是 Java 语⾔。不过它马上就被纳⼊当时还在开发中的 CLR 平台,Scott Guthrie事后也认为将这个技术移植到当时的 CLR 平台,确实有很⼤的风险,但当时的 XSP 团队却是以 CLR 开发应⽤的第⼀个团队。
为了将 XSP 移植到 CLR 中,XSP 团队将 XSP 的核⼼程序全部以 C# 语⾔重新撰写(在内部的项⽬代号是 “Project Cool”,但是当时对公开场合是保密的),并且改名为 ASP+,作为 ASP 技术的后继者,并且也会提供⼀个简单的移转⽅法给 ASP 开发⼈员。ASP+ Beta 版本以及应⽤在 PDC 2000 中亮相,由 Bill Gates 主讲,由富⼠通公司展⽰使⽤ COBOL 语⾔撰写 ASP+ 应⽤程序,并且宣布它可以使⽤ Visual Basic .NET、C#、Perl、Nemerle 与语⾔来开发。
在 2000 年第⼆季时,微软正式推动 .NET 策略,ASP+ 也顺理成章的改名为 ASP.NET,经过四年的开发,第⼀个版本的 ASP.NET 在 2002 年 1 ⽉ 5 ⽇亮相(和.NET Framework 1.0),Scott Guthrie 也成为ASP.NET的产品经理(到现在已经开发了数个微软产品,像 ASP.NET AJAX 和 Microsoft Silverlight)。4、PHP 的起源
PHP 原本的简称为 Personal Home Page,是拉斯姆斯·勒多夫为了要维护个⼈⽹页,⽽⽤ C 语⾔开发的⼀些CGI ⼯具程序集,来替换原先使⽤的 Perl 程序。最初这些⼯具程序⽤来显⽰拉斯姆斯·勒多夫的个⼈履历,以及统计⽹页流量。他将这些程序和⼀些窗体解释器集成起来,称为 PHP/FI。PHP/FI 可以和连接,产⽣简单的动态⽹页程序。拉斯姆斯·勒多夫在 1995 年 6 ⽉ 8 ⽇将 PHP/FI 公开发布,希望可以通过社区来加速程序开发与查错误。这个发布的版本命名为PHP 2,已经有今⽇ PHP 的⼀些雏型,像是类似 Perl 的变量命名⽅式、窗体处理功能、以及嵌⼊到 HTML 中运⾏的能⼒。程序语法上也类似 Perl,有较多的限制,不过更简单、更有弹性。
在 1997 年,任职于 Technion IIT 公司的两个以⾊列:Zeev Suraski 和 Andi Gutmans,重写了PHP 的语法分析器,成为 PHP 3 的基础,⽽ PHP 也在这个时候改称为 PHP: Hypertext Preprocessor.。经过⼏个⽉测试,开发团队在 1997 年 11 ⽉发布了 PHP/FI 2,随后就开始 PHP 3 的开放测试,最后在 1998 年 6⽉正式发布 PHP 3。Zeev Suraski 和 Andi Gutmans 在 PHP 3 发布后开始改写 PHP 的核⼼,这个在 1999 年发布的语法分析器称为 Zend Engine,他们也在以⾊列的 Ramat Gan 成⽴了 Zend Technologies 来管理 PHP 的开发。
在 2000 年 5 ⽉ 22 ⽇,以 Zend Engine 1.0 为基础的 PHP 4 正式发布,2004 年 7 ⽉ 13 ⽇则发布了 PHP 5,PHP 5 则使⽤了第⼆代的 Zend Engine。PHP 包含了许多新特⾊,像是强化的⾯向对象功能、引⼊ PDO(PHP Data Objects,⼀个访问数据库的延伸库)、以及许多性能上的增强。⽬前 PH
P 4 已经不会继续更新,以⿎励⽤户转移到 PHP 5。
2008 年 PHP 5 成为了 PHP 唯⼀维护中的稳定版本。现在已经有超过 2000 万个⽹站和 100 万个Web服务器使⽤了这门语⾔,Facebook、Wikipedia、Wordpress 以及 Joomla 这些互联⽹巨头都在使⽤它。
5、JavaScript 的起源
最初由 Netscape 的 Brendan Eich 设计。是甲⾻⽂公司的注册商标。ECMA 国际以为基础制定了 ECMAScript 标准。也可以⽤于其他场合,如服务器端编程。完整的实现包含三个部分:ECMAScript,⽂档对象模型,浏览器对象模型。
Netscape 在最初将其脚本语⾔命名为 LiveScript,后来 Netscape 在与 Sun 合作之后将其改名为。最初受 Java 启发⽽开始设计的,⽬的之⼀就是“看上去像Java”,因此语法上有类似之处,⼀些名称和命名规范也借⾃ Java。但的主要设计原则源⾃ Self 和 Scheme。与 Java 名称上的近似,是当时 Netscape 为了营销考虑与 Sun 微系统达成协议的结果。为了取得技术优势,微软推出了 JScript 来迎战的脚本语⾔。为了互⽤性,Ecma 国际(前⾝为欧洲计算机制造商协会)创建了 ECMA-262 标准(ECMAScript)。两者都属于 ECMAScript 的实现。尽管作为给⾮程序⼈员的脚本语⾔,⽽⾮作为给程序⼈员的脚本语⾔来推⼴和宣传,但是具有⾮常丰富的特性。
6、「红宝⽯」语⾔的起源
1993年,松本⾏弘开始语⾔的研发⼯作,试图集成脚本语⾔中最好的特点,基于 C 语⾔开发,但⽐ Perl 更强⼤,⽐更⾯向对象。1994 年,松本⾏弘独⽴完成 Ruby 的第⼀个 Alpha 版,那年他才28岁。松本⾏弘把它取名 Ruby,也因这名字是⼀种美丽珍贵的红宝⽯之意。Ruby 本⾝也极具魅⼒——这种解释型脚本语⾔,既有脚本语⾔强⼤的字符串处理能⼒和正则表达式,⼜不失解释型语⾔的动态性。
此外,松本⾏弘还借鉴了 Perl 语⾔在⽂字处理⽅⾯的优势,由 Ruby 编写的程序不需事先编译即可直接运⾏,因此利于实现开发过程中的快速反馈,极⼤地⽅便了程序的调试。1995 年 Ruby 脚本语⾔的第⼀个版本发布后,因其⼤⼤提⾼了开发者的⼯作效率,让编程更有乐趣,很快在⽇本⾮常流⾏。
1997 年开始,松本⾏弘在“株式会社 Network 应⽤通信研究所”担任特别研究员,专注于 Ruby 的开发。2000年,Dave Thomas ⾸次将这 Ruby 介绍到了英⽂社区,很快掀起了 Ruby 语⾔的热潮。Ruby 的灵活特性给动态编程语⾔注⼊了新的活⼒,逐渐获得全世界范围的程序设计者的喜爱。
世界上没有⼀种完美的语⾔,Ruby 也⼀样。尽管 Ruby 很棒,但很多⼈还是觉得他的性能效率较低。不过好在后来开发者也通过⼀些扩展来弥补 Ruby 的瓶颈。2004年,丹麦⼈ David Heinemeier Hansson ⽤ Ruby 语⾔开发的⼀种 Web 框架 Ruby on ,可达到 J2EE 开发速度的 10 倍以上,被很多⼈视为“软件开发的银弹”,Ruby 开始在全球范围内流⾏。
7、Scala 的起源
Scala 是⼀门多范式的编程语⾔,⼀种类似 Java 的编程语⾔,设计初衷是实现可伸缩的语⾔、并集成⾯向对象编程和函数式编程的各种特性。
2001 年,洛桑联邦理⼯学院的马丁·奥德斯基开始基于 Funnel 的⼯作开始设计 Scala。Funnel 是把函数式编程思想和佩特⾥⽹相结合的⼀种编程语⾔。奥德斯基之前⼯作于 Generic Java 和 javac。Java 平台的Scala 于 2003 年底/ 2004 年初发布。.NET 平台的 Scala 发布于 2004 年 6 ⽉。该语⾔第⼆个版
本,v2.0,发布于 2006 年 3 ⽉。2009 年 4 ⽉,Twitter 宣布他们已经把⼤部分后端程序从 Ruby 迁移到Scala,其余部分也打算要迁移。此外, Wattzon 已经公开宣称,其整个平台都已经是基于 Scala 基础设施编写的。
2014 年,马丁·奥德斯基宣布 Scala 2.12 将要简化语法,推出 Scala “Don Giovanni” 项⽬的时候,表⽰:“Scala 现在是为聪明⼈创造的,以后也是为聪明⼈服务的。” 不同于 Python 让程序员⽤⼀种⽅法做所有事情,Scala 提供⼀整套⼯具,让程序员⾃由选择,⽆论是 mutable ,immutable 数据结构,并⾏(parallel)数据结构。然后在这些选择中,Scala 再针对他们进⾏层⾯的特殊优化。Scala 相信程序员的聪明才智,让程序员⾃⾏选择合适的结构,以针对变化万千的任务需求,这点是 Scala 做得
好的地⽅。
8、Python 的起源
1989 年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决⼼开发⼀个新的脚本解释程序,作为 ABC 语⾔的⼀种继承。之所以选中 Python 作为程序的名字,是因为他是 BBC 电视剧——蒙提·派森的飞⾏马戏团(Monty Python’s Flying Circus)的爱好者。ABC 是由吉多参加设计的⼀种教学语⾔。就吉多本⼈看来,ABC 这种语⾔⾮常优美和强⼤,是专门为⾮专业程序员设计的。但是 ABC 语⾔并没有成功,究其原因,吉多认为是⾮开放造成的。吉多决⼼在Python 中避免这⼀错误,并获取了⾮常好的效果,完美结合了 C 和其他⼀些语⾔。
就这样,Python 在吉多⼿中诞⽣了。实际上,第⼀个实现是在 Mac 机上。可以说,Python 是从 ABC 发展起来,主要受到了 Modula-3(另⼀种相当优美且强⼤的语⾔,为⼩型团体所设计的)的影响。并且结合了 Unix shell 和C 的习惯。⽬前吉多仍然是 Python 的主要开发者,决定整个 Python 语⾔的发展⽅向。Python 社区经常称呼他是仁慈的独裁者(BDFL),意思是他仍然关注 Python 的开发进程,并在必要的时刻做出决定。
Python 的设计哲学是“优雅”、“明确”、“简单”。Python 开发者的哲学是“⽤⼀种⽅法,最好是只有⼀种⽅法来做⼀件事”。在设计 Python 语⾔时,如果⾯临多种选择,Python 开发者⼀般会拒绝花俏的语法,
⽽选择明确没有或者很少有歧义的语法。这些准则被称为“Python 格⾔”。
9、Go 的起源
Go,⼜称 golang,是 Google 开发的⼀种静态强类型、编译型,并发型,并具有垃圾回收功能的编程语⾔。
罗伯特·格瑞史莫,罗勃·派克(Rob Pike)及肯·汤普逊于 2007 年 9 ⽉开始设计 Go 语⾔,稍后 Ian Lance Taylor, Russ Cox 加⼊项⽬中。⾕歌把 Go 作为⼀个20% 项⽬开始研发,即让员⼯抽出本职⼯作之外时间的 20%,投⼊在该项⽬上。除了派克外,该项⽬的成员还有其他⾕歌⼯程师也参与研发。对于开发这门语⾔的起因,派克说:我们之所以开发 Go,是因为过去 10 多年间软件开发的难度令⼈沮丧。
Go 语⾔是基于 Inferno 操作系统所开发的。Go 语⾔于 2009 年 11 ⽉正式宣布推出,成为开放源代码项⽬,并在 Linux 及 MacOS X 平台上进⾏了实现,后追加 Windows 系统下的实现。2010 年 1 ⽉ 10 ⽇,Go 语⾔摘得了 TIOBE 公布的 2009 年年度⼤奖,该奖项授予在 2009 年市场份额增长最多的编程语⾔
10、的起源
2003 年 10 ⽉,安迪·鲁宾(Andy Rubin)在美国创建了科技公司(Android Inc.),并与利奇·⽶纳尔(Rich Miner)、尼克·席尔斯(Nick Sears)、克⾥斯·怀特(Chris White)共同发展这家公司。Android 系统最初由安迪·鲁宾(Andy Rubin)等⼈开发制作,最初开发这个系统的⽬的是创建⼀个数码相机的先进操作系统,但是后来发现市场需求不够⼤,加上智能⼿机市场快速成长,于是 Android 被改造为⼀款⾯向智能⼿机的操作系统。谈到创建 Android 科技公司的原因,鲁宾说:“聪明的移动设备能更好的意识到⽤户的爱好和要求。”尽管 Android 科技公司的创始⼈和员⼯过去都具有各⾃的科技成就,但是 Android 科技公司的经营只显露出它在智能⼿机软件的⽅⾯,这时鲁宾为 Android 科技公司花光所有钱。
2005 年 8 ⽉ 17 ⽇,Google 低调收购了成⽴仅 22 个⽉的⾼科技企业 Android 及其团队。安迪鲁宾成为Google 公司⼯程部副总裁,继续负责 Android 项⽬。2007 年 11 ⽉ 5 ⽇,⾕歌公司正式向外界展⽰了这款名为 Android 的操作系统,并且在这天⾕歌宣布建⽴⼀个全球性的联盟组织,该组织由34家⼿机制造商、软件开发商、电信运营商以及芯⽚制造商共同组成,并与 84 家硬件制造商、软件开发商及电信营运商组成开放⼿持设备联盟(Open Handset Alliance)来共同研发改良 Android 系统。
2013 年 09 ⽉ 24 ⽇⾕歌开发的操作系统 Android 迎来了 5 岁⽣⽇,全世界采⽤这款系统的设备数量已经达到 10 亿台。
11、的起源
2010 年 7 ⽉,苹果开发者⼯具部门总监克⾥斯·拉特纳开始着⼿编程语⾔的设计⼯作,以⼀年时间,完成基本后,他领导了⼀个设计团队⼤⼒参与其中。Swift ⼤约历经4年的开发期,2014 年 6 ⽉发表。
苹果宣称 Swift 的特点是:快速、现代、、互动,⽽且明显优于 Objective-C 语⾔。Swift 以 LLVM 编译,可以使⽤现有的 Cocoa 和 Cocoa Touch 框架。Xcode Playgrounds 功能是 Swift 为苹果开发⼯具带来的最⼤创新,该功能提供强⼤的互动效果,能让 Swift 源代码在撰写过程中能即时显⽰出其运⾏结果。拉特纳本⼈强调,Playgrounds 很⼤程度是受到布雷特·维克多(Bret Victor)理念的启发。
2015 年 6 ⽉ 8 ⽇,苹果于 WWDC 2015 上宣布,Swift 将开放源代码,包括编译器和标准库。
2015 年 12 ⽉ 3 ⽇,苹果宣布开源 Swift,并⽀持 Linux,苹果在新⽹站 和托管⽹站 Github 上开源了 Swift,但苹果的 app store 并不⽀持开源的Swift,只⽀持苹果官⽅的 Swift 版本,官⽅版本会在新⽹站 上定期与开源版本同步。
12、的起源
由 Ryan Dahl 和⼀些其他的开发者于2009年在 Joyent ⼯作时发明。Node.js 在2009年初次发布于Linux。开发和维护⼯作由 Dahl 主持,其⼯作单位 Joyent 同时赞助这些⼯作。
Dahl 设计 Node.js 的灵感来⾃于 Flickr 上的⼀款上传进度栏,浏览器并不清楚多少⽂件内容已被上传,
除⾮向服务器进⾏查询。Dahl 于是设计了⼀个更简便的⽅法。这个集成了 Google V8  引擎和⼀个底层 I/O API 的项⽬由 Dahl 在 inaugural European JSConf 向公众进⾏展⽰。
Node.js 已经有数⼗万模块,它们可以通过⼀个名为 npm 的管理器免费下载。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。