12 种编程语言的起源故事

简介: 过去的几十年间,大量的编程语言被发明、被替换、被修改或组合在一起。每种语言总在争论中诞生,又在进化中消亡。而这些语言的的创造者,无一不是编程世界中的标志性人物,高举探索的旗帜不断前行。敬仰之情促使了这篇文章的诞生,这里收集并分享了这五十年来最成功、最流行的十二门编程语言和它们的创造者的故事

、Java 的起源
1990 年代初,任职于 Sun 公司的詹姆斯·高斯林等人开始开发 Java 语言的雏形,最初被命名为 Oak,目标设置在家用电器等小型系统的程序语言,应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通讯。由于这些智能化家电的市场需求没有预期的高, Sun 公司放弃了该项计划。随着 1990 年代互联网的发展, Sun 公司看见 Oak 在互联网上应用的前景,于是改造了 Oak,于1995年5月以 Java 的名称正式发布。Java 伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。

与传统型态不同, Sun 公司在推出 Java 时就将其作为开放的技术。全球数以万计的 Java 开发公司被要求所设计的Java软件必须相互兼容。“Java语言靠群体的力量而非公司的力量”是 Sun 公司的口号之一,并获得了广大软件开发商的认同。这与微软公司所倡导的注重精英和封闭式的模式完全不同,此外,微软公司后来推出了与之竞争的.NET 平台以及模仿 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++ 这个名字是 Rick Mascitti 于 1983 年中所建议的,并于 1983 年 12 月首次使用。更早以前,尚在研究阶段的发展中语言曾被称为“new C”,之后是“C with Classes”。在计算机科学中,C++ 仍被称为 C 语言的上层结构。它最后得名于 C 语言中的“++”操作符(其对变量的值进行递增)。而且在共同的命名约定中,使用“+”以表示增强的程序。Stroustrup 说:“这个名字象征着源自于C语言变化的自然演进”。C+ 是一个和 C/C++ 无关的早期编程语言。

3、ASP.NET 的起源
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 与 Python 语言来开发。

在 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,一个访问数据库的延伸库)、以及许多性能上的增强。目前 PHP 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年,松本行弘开始 Ruby 语言的研发工作,试图集成脚本语言中最好的特点,基于 C 语言开发,但比 Perl 更强大,比 Python 更面向对象。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 onRails,可达到 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、Android 的起源
2003 年 10 月,安迪·鲁宾(Andy Rubin)在美国创建了 Android 科技公司(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、Swift 的起源
2010 年 7 月,苹果开发者工具部门总监克里斯·拉特纳开始着手 Swift 编程语言的设计工作,以一年时间,完成基本架构后,他领导了一个设计团队大力参与其中。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,苹果在新网站 swift.org 和托管网站 Github 上开源了 Swift,但苹果的 app store 并不支持开源的 Swift,只支持苹果官方的 Swift 版本,官方版本会在新网站 swift.org 上定期与开源版本同步。

12、Node.js 的起源
Node.js 由 Ryan Dahl 和一些其他的开发者于2009年在 Joyent 工作时发明。Node.js 在2009年初次发布于Linux。 开发和维护工作由 Dahl 主持,其工作单位 Joyent 同时赞助这些工作。

相关文章
|
3月前
|
Rust 安全 Go
揭秘Rust语言:为何它能让你在编程江湖中,既安全驰骋又高效超车,颠覆你的编程世界观!
【8月更文挑战第31天】Rust 是一门新兴的系统级编程语言,以其卓越的安全性、高性能和强大的并发能力著称。它通过独特的所有权和借用检查机制解决了内存安全问题,使开发者既能享受 C/C++ 的性能,又能避免常见的内存错误。Rust 支持零成本抽象,确保高级抽象不牺牲性能,同时提供模块化和并发编程支持,适用于系统应用、嵌入式设备及网络服务等多种场景。从简单的 “Hello World” 程序到复杂的系统开发,Rust 正逐渐成为现代软件开发的热门选择。
61 1
|
4月前
|
前端开发 JavaScript Java
我的编程语言学习记录:一段不断探索的旅程
我的编程语言学习记录:一段不断探索的旅程
33 0
|
2月前
|
机器学习/深度学习 人工智能 算法
编程之旅:从代码到哲学的启示
【9月更文挑战第20天】在编程的世界里,每一行代码都是思考的足迹,每一个算法都蕴含着解决问题的智慧。正如甘地所言,“你必须成为你希望在世界上看到的改变。” 本文将带你走进编程的内在世界,探索如何通过技术提升自我,实现个人成长和变革。
探索编程之道:从代码到哲学的启示之旅
【9月更文挑战第35天】在编程的世界里,每一行代码都蕴含着深刻的意义。本文通过深入浅出的方式,带领读者从基础的编程概念出发,逐步探索编程背后的哲理。我们将一起发现,编程不仅仅是技术操作,它更像是一场思维和逻辑的训练,一次对世界本质的洞察。文章将通过具体示例,展示如何将编程技能与日常生活相结合,以及如何通过编程来提升个人的思维能力和解决问题的能力。让我们开始这段充满启发的旅程吧!
|
2月前
|
算法 程序员
代码之美:编程中的艺术与哲学
在数字世界的深处,编程不仅仅是一门技术,它更是一种艺术与哲学的体现。本文将带领读者领略编程背后的美学原则,探讨如何通过简洁的代码、高效的算法和模块化的设计来达到技术与艺术的和谐统一。我们将一起探索那些让代码变得优雅而强大的秘诀,并反思编程实践对个人成长的深远影响。
|
3月前
|
算法 测试技术 开发工具
探索代码之美:高效编程的艺术与实践
【7月更文挑战第52天】在数字世界的构建过程中,编程不仅仅是一门科学,更是一种艺术。本文将深入探讨如何通过高效的编程实践来提升代码质量、优化开发流程,并且分享在此过程中所获得的技术感悟。我们将从代码的简洁性、可读性和性能优化三个维度出发,分析并提出实用的编程技巧和策略,旨在帮助开发者在追求效率的同时,也能享受编程带来的乐趣和成就感。
|
4月前
|
算法
代码之美:从技术感悟到生活哲学
在数字时代的浪潮中,编程不仅仅是一种专业技能,更是一种思考方式。本文将通过个人的技术实践和深入思考,探索编程如何影响我们的世界观、解决问题的方法以及日常生活。从算法的简洁性到系统设计的艺术性,我们将一同走进代码背后的美学与哲学,感受技术与生活的和谐共鸣。
|
5月前
|
机器学习/深度学习 人工智能 数据挖掘
探索计算机编程的魅力与实际应用
探索计算机编程的魅力与实际应用
51 0
|
6月前
|
人工智能 算法 数据处理
代码之禅:从技术实践中领悟软件开发的艺术
【5月更文挑战第27天】 在数字世界的迷宫中,每一行代码都如同艺术家的笔触,描绘出千变万化的技术图景。本文将探讨软件开发的艺术性和技术性如何交织在一起,通过个人的技术实践和感悟,阐述如何在编码的过程中寻找到创造力与逻辑力的平衡点。我们将一起走进那些看似平凡却蕴含深意的编程实践,探索它们背后隐藏的智慧与哲学。
|
Java 程序员 Shell
Python语言的起源
对Python的历史了解
100 0