热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

编程语言简史:有人讨厌花括号,于是…

英文原文:ABriefTotallyAccurateHistoryOfProgrammingLanguages编程语言有上千种,但是流行的不过10来种,那些我们经常使用的编程语言都

英文原文:A Brief Totally Accurate History Of Programming Languages

编程语言有上千种,但是流行的不过 10 来种,那些我们经常使用的编程语言都是谁在什么时候创造出来的呢?Casper Beyer 为我们进行了整理。

编程语言简史:有人讨厌花括号,于是…

1800 年

Joseph Marie Jacquard 教会了一台织布机读穿孔卡片,制造出了第一个高度多线程的处理单元。他的发明受到了预见天网(Skynet)诞生的纺织工人的强烈反对。

1842 年

Ada Lovelace(英国诗人拜伦之女)为计算程序拟定“算法”,写作的第一份“程序设计流程图”,被珍视为“第一位给计算机写程序的人”。稍微有点不便的是当时还没有计算机呢。

1936 年

阿兰·图灵被称为计算机科学之父,人工智能之父。但英国法庭却并不认可,还判处对他进行化学阉割。

女皇后来宽恕了他,但不幸的是当时他已经过世很久了。

1936 年

Alonzo Church(算法理论重要奠基人)发明了 lambda 算子,跟图灵生活在同样的时代,但是他在时代的另一边,也并没有被女王阉割。

1957 年

John Backus 创建了 FORTRAN 语言,这真正是程序员使用的第一种语言。

1959 年

Grace Hopper 发明了第一门针对企业面向商业的编程语言,并且把这门语言叫做“面向商业的通用语言(common business-oriented language)”,简称 COBOL。

1964 年

John Kemeny 和 Thomas Kurtz 认为编程太难了,需要回归本源,他们把自己的编程语言叫做 BASIC。

1970 年

Niklaus Wirth 开发了多种语言,最后流行起来的是 PASCAL。他喜欢开发语言。

他还发明了让摩尔定律变得过时的 Wirth 定律(软件变慢的速度比硬件变快的速度更快),因为软件开发者会编写出连大型主机也没法跟上的臃肿软件。

这在后来被证明是正确的——在 Electron.js 被发明出来后

1972 年

Dennis Ritchie 在贝尔实验室上班上到无聊了,于是他决定写出带有花括号的C语言,这门语言取得了巨大成功。随后他又增加了分段错误等对开发者友好的功能来辅助提高生产率。

折腾完这门语言之后他还有时间,于是他跟在贝尔实验室的伙计决定给C语言做个演示程序,结果他们弄出了一个操作系统,UNIX。

1980 年

Alan Kay 发明了一门面向对象语言,他把这门语言叫做 Smalltalk,在 Smalltalk 中一切都是对象,甚至一个对象也是对象。没人真正搞得清楚 small talk 是什么意思。

1983 年

Jean Ichbiah 注意到 Ada Lovelace 的程序从来都没有实际运行过,决定以她的名字开发一门语言,但是这门语言还是没有跑起来。

1983 年

Bjarne Stroustrup 注意到C在编译方面花的时间还不够多,于是他把自己能想到的每一项功能都增加了进去,然后称之为C++。

每一个地方的程序员都接受了它,因为这样他们在工作的时候找借口看阿猫阿狗视频和 xkcd 漫画就显得比较有诚意了。

1986 年

Brac Box 和 Tol Move 决定在 Smalltalk 的基础上制作一个C语言的不可读版本,他们把这门语言叫做 Objective-C,但是没人弄得清楚它的语法。

1987 年

Larry Wall 有宗教经验,他成为了一名牧师,并且把 Perl 变成了一种教义。

1991 年

Guido van Rossum 不喜欢花括号,于是他发明了 Python,语法选择的灵感来源自 Monty Python(巨蟒剧团)和 Flying Circus(飞行马戏团)。

1993 年

Roberto Ierusalimschy 和他的朋友认为自己需要一个巴西本地化的脚本语言,在本地化期间发生了一个错误,这个错误会把指针从 1 而不是 0 开始计算,他们把这门语言叫做 Lua。

1994 年

Rasmus Lerdorf 给他个人主页的 CGI 脚本做了一个模板引擎,后来他把自己的资料都放到了网上。

世界决定将这些东西用到一切,Rasmus 于是匆忙地将一些数据库绑定做了进去,并把这门语言叫做 PHP。

1995 年

Yukihiro Matsumoto 不是很高兴,因为他注意到其他程序员不是很高兴。他创建了 Ruby 来让程序员高兴。在他创建了 Ruby 后“Matz”高兴了,Ruby 社区高兴了,每个人都高兴了。

1995 年

Brendan Eich 利用周末时间设计了一门语言,打算用这门语言来为全世界的每一个主流浏览器乃至于最终的 Skynet 都提供动力。

他先是找到了 Netscape 然后说这门语言叫做 LiveScript,但在代码评审期间 Java 变得流行起来,所以他们决定最好还是用花括号,然后就把它更名为 Javascript。

结果表明,Java 却是一个会让他们惹上麻烦的商标,Javascript 随后更名为 ECMAScript,但大家还是把它叫做 Javascript。

1996 年

James Gosling 发明了 Java,第一们真正过于繁琐的面向对象语言,在这里设计模式完全压倒了实用主义。

于是就诞生了超级有效的管理器提供商、容器提供商、服务提供商、单一管理器提供商模式。

2001 年

Anders Hejlsberg 重新发明了 Java 然后把它叫做C#,因为用C来编程感觉要比 Java 酷。每个人都喜欢这个新版本的 Java,因为它完全不像 Java。

2005 年

David Hanselmeyer Hansen 创建了一个 web 框架叫做 Ruby on Rails,从此大家不再记得 Ruby 和 Rails 是两个独立的东西了。

2006 年

John Resig 为 Javascript 写了一个帮助库,每个人都以为那是一门语言,从此从互联网上拷贝粘贴 jQuery 代码就成为了一门职业。

2009 年

Ken Thompson 和 Rob Pike 决定做一门类似C那样的语言,但要有更安全的装置,还要有更好的卖相,并且把 Gopher(囊鼠)作为吉祥物。

他们把这门语言成为 Go,并把它做成开源然后另外卖 Gopher 商标的护膝和头盔作为收入来源。

2010 年

Graydon Hoare 也想把语言做成C那样,他称之为 Rust。每个人都要求马上用 Rust 把软件的每一块都重写一遍。Graydon 希望做点更有亮点的事情,于是开始为苹果开发 Swift。

2012 年

Anders Hjelsberg 希望在 web 浏览器里面写C#,于是他设计出 TypeScript,这东西其实是 Javascript,但里面有了更多的 Java 的东西。

2013 年

Jeremy Ashkenas 想要像 Ruby 开发者一样快乐,于是他创建了 CoffeeScript,这东西编译后像 Javascript 但是样子又更像 Ruby。Jerry 从来都没有变得像 Matz 和 Ruby 开发者那样真正快乐。

2014 年

Chris Lattner 做 Swift 的时候,其主要的设计目标就是不要成为 Objective-C,最后它看起来像 Java。


推荐阅读
  • 掌握PHP编程必备知识与技巧——全面教程在当今的PHP开发中,了解并运用最新的技术和最佳实践至关重要。本教程将详细介绍PHP编程的核心知识与实用技巧。首先,确保你正在使用PHP 5.3或更高版本,最好是最新版本,以充分利用其性能优化和新特性。此外,我们还将探讨代码结构、安全性和性能优化等方面的内容,帮助你成为一名更高效的PHP开发者。 ... [详细]
  • 浏览器作为我们日常不可或缺的软件工具,其背后的运作机制却鲜为人知。本文将深入探讨浏览器内核及其版本的演变历程,帮助读者更好地理解这一关键技术组件,揭示其内部运作的奥秘。 ... [详细]
  • 本文详细介绍了 Java 网站开发的相关资源和步骤,包括常用网站、开发环境和框架选择。 ... [详细]
  • 本文介绍了Spring 2.0引入的TaskExecutor接口及其多种实现,包括同步和异步执行任务的方式。文章详细解释了如何在Spring应用中配置和使用这些线程池实现,以提高应用的性能和可管理性。 ... [详细]
  • 应用链时代,详解 Avalanche 与 Cosmos 的差异 ... [详细]
  • Python错误重试让多少开发者头疼?高效解决方案出炉
    ### 优化后的摘要在处理 Python 开发中的错误重试问题时,许多开发者常常感到困扰。为了应对这一挑战,`tenacity` 库提供了一种高效的解决方案。首先,通过 `pip install tenacity` 安装该库。使用时,可以通过简单的规则配置重试策略。例如,可以设置多个重试条件,使用 `|`(或)和 `&`(与)操作符组合不同的参数,从而实现灵活的错误重试机制。此外,`tenacity` 还支持自定义等待时间、重试次数和异常处理,为开发者提供了强大的工具来提高代码的健壮性和可靠性。 ... [详细]
  • 本文深入解析了JDK 8中HashMap的源代码,重点探讨了put方法的工作机制及其内部参数的设定原理。HashMap允许键和值为null,但键为null的情况只能出现一次,因为null键在内部通过索引0进行存储。文章详细分析了capacity(容量)、size(大小)、loadFactor(加载因子)以及红黑树转换阈值的设定原则,帮助读者更好地理解HashMap的高效实现和性能优化策略。 ... [详细]
  • Win10 S系统与Chrome浏览器兼容性问题分析
    2017年5月2日,微软在美国推出了最新的Windows 10 S操作系统,专为教育领域设计,旨在为教师和学生提供一系列高效的产品和服务。该系统的最大特点是其简洁的设计和快速的响应速度,然而在与某些应用的兼容性方面,特别是Chrome浏览器,仍存在一些问题。本文将深入分析这些兼容性问题,并探讨可能的解决方案。 ... [详细]
  • 尽管我们尽最大努力,任何软件开发过程中都难免会出现缺陷。为了更有效地提升对支持部门的协助与支撑,本文探讨了多种策略和最佳实践,旨在通过改进沟通、增强培训和支持流程来减少这些缺陷的影响,并提高整体服务质量和客户满意度。 ... [详细]
  • 本文推荐了六款高效的Java Web应用开发工具,并详细介绍了它们的实用功能。其中,分布式敏捷开发系统架构“zheng”项目,基于Spring、Spring MVC和MyBatis技术栈,提供了完整的分布式敏捷开发解决方案,支持快速构建高性能的企业级应用。此外,该工具还集成了多种中间件和服务,进一步提升了开发效率和系统的可维护性。 ... [详细]
  • Python作为当今IT领域中最受欢迎且高效的语言之一,其框架能够显著加速Web应用程序的开发过程。本文推荐并对比了十大顶级Python Web开发框架,其中CubicWeb以其卓越的代码重用性和模块化设计脱颖而出,为开发者提供了强大的支持。 ... [详细]
  • 当前,众多初创企业对全栈工程师的需求日益增长,但市场中却存在大量所谓的“伪全栈工程师”,尤其是那些仅掌握了Node.js技能的前端开发人员。本文旨在深入探讨全栈工程师在现代技术生态中的真实角色与价值,澄清对这一角色的误解,并强调真正的全栈工程师应具备全面的技术栈和综合解决问题的能力。 ... [详细]
  • 深入解析Tomcat:开发者的实用指南
    深入解析Tomcat:开发者的实用指南 ... [详细]
  • 为何Serverless将成为未来十年的主导技术领域?
    为何Serverless将成为未来十年的主导技术领域? ... [详细]
  • 本文详细介绍了 Sublime Text 3 在 2021 年的激活密钥及其在线激活方法。用户可以通过提供的链接访问云海天教程,获取更多详细的激活码信息和操作步骤。此外,文章还提供了安全可靠的激活方案,帮助用户顺利激活软件,提升编程效率。 ... [详细]
author-avatar
Levenmamatq_267
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有