1
0
wiki/Tech/programming-language/home.md

157 lines
13 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: 程序设计语言
date: 2023-02-15
---
## TIOBE 榜单
| Oct 2022 | Oct 2021 | Change | Programming Language | Ratings | Change | |
| :------- | :------- | :----------------------------------------------------------- | :----------------------------------------------------------- | :---------------- | :----- | ------ |
| 1 | 1 | | ![Python page](https://www.tiobe.com/wp-content/themes/tiobe/tiobe-index/images/Python.png) | Python | 17.08% | +5.81% |
| 2 | 2 | | ![C page](https://www.tiobe.com/wp-content/themes/tiobe/tiobe-index/images/C.png) | C | 15.21% | +4.05% |
| 3 | 3 | | ![Java page](https://www.tiobe.com/wp-content/themes/tiobe/tiobe-index/images/Java.png) | Java | 12.84% | +2.38% |
| 4 | 4 | | ![C++ page](https://www.tiobe.com/wp-content/themes/tiobe/tiobe-index/images/C__.png) | C++ | 9.92% | +2.42% |
| 5 | 5 | | ![C# page](https://www.tiobe.com/wp-content/themes/tiobe/tiobe-index/images/C_.png) | C# | 4.42% | -0.84% |
| 6 | 6 | | ![Visual Basic page](https://www.tiobe.com/wp-content/themes/tiobe/tiobe-index/images/Visual_Basic.png) | Visual Basic | 3.95% | -1.29% |
| 7 | 7 | | ![JavaScript page](https://www.tiobe.com/wp-content/themes/tiobe/tiobe-index/images/JavaScript.png) | JavaScript | 2.74% | +0.55% |
| 8 | 10 | ![change](https://www.tiobe.com/wp-content/themes/tiobe/tpci/images/up.png) | ![Assembly language page](https://www.tiobe.com/wp-content/themes/tiobe/tiobe-index/images/Assembly_language.png) | Assembly language | 2.39% | +0.33% |
| 9 | 9 | | ![PHP page](https://www.tiobe.com/wp-content/themes/tiobe/tiobe-index/images/PHP.png) | PHP | 2.04% | -0.06% |
| 10 | 8 | ![change](https://www.tiobe.com/wp-content/themes/tiobe/tpci/images/down.png) | ![SQL page](https://www.tiobe.com/wp-content/themes/tiobe/tiobe-index/images/SQL.png) | SQL | 1.78% | -0.39% |
> 来源:[TIOBE Index - TIOBE](https://www.tiobe.com/tiobe-index/);非商业引用,著作权归作者所有。
## 程序设计语言历史
### [1940 之前](https://zh.wikipedia.org/zh-my/%E7%A8%8B%E5%BC%8F%E8%AA%9E%E8%A8%80%E6%AD%B7%E5%8F%B2#1940%E4%B9%8B%E5%89%8D)
第一个编程语言比现代的电脑还早诞生。首先,这种语言是种代码。
于 1804 年发明的雅卡尔织布机,运用打孔卡上的坑洞来代表缝纫织布机的手臂动作,以便自动化产生装饰的图案。
### [1940 年代](https://zh.wikipedia.org/zh-my/%E7%A8%8B%E5%BC%8F%E8%AA%9E%E8%A8%80%E6%AD%B7%E5%8F%B2#1940%E5%B9%B4%E4%BB%A3)
最早被确认的现代化、电力启动electrically powered的电脑约在 1940 年代被创造出来。程序员在有限的速度及存储器容量限制之下撰写人工调整hand tuned过的汇编语言程序。
### [1950 与 1960 年代](https://zh.wikipedia.org/zh-my/%E7%A8%8B%E5%BC%8F%E8%AA%9E%E8%A8%80%E6%AD%B7%E5%8F%B2#1950%E8%88%871960%E5%B9%B4%E4%BB%A3)
有三个现代编程语言于 1950 年代被设计出来,这三者所派生的语言直到今日仍旧广泛地被采用:
- FORTRAN (1955),名称取自 "FORmula TRANslator"(公式翻译器),由约翰·巴科斯等人所发明;
- LISP名称取自 "LISt Processor"(枚举处理器),由约翰·麦卡锡等人所发明;
- COBOL名称取自 "COmmon Business Oriented Language"(通用商业导向语言),由被葛丽丝·霍普深刻影响的 Short Range Committee 所发明。
### [1960 年代晚期 - 1970 年代晚期:确立了基础范型](https://zh.wikipedia.org/zh-my/%E7%A8%8B%E5%BC%8F%E8%AA%9E%E8%A8%80%E6%AD%B7%E5%8F%B2#1980%E5%B9%B4%E4%BB%A3%EF%BC%9A%E5%A2%9E%E5%BC%B7%E3%80%81%E6%A8%A1%E7%B5%84%E3%80%81%E6%95%88%E8%83%BD)
1960 年代晚期至 1970 年代晚期的期间中,编程语言的发展也有了重大的成果。大多数现在所使用的主要语言范型都是在这段期间中发明的:
- Simula于 1960 年代晚期由奈加特与达尔以 Algol 60 超集合的方式发展,同时也是第一个设计支持面向对象进行开发的编程语言。
- C于 1969 至 1973 年间由贝尔实验室的研究人员丹尼斯·里奇与肯·汤普逊所开发,是一种早期的系统程序设计语言。
- Smalltalk于 1970 年代中期所开发是一个完全从零开始ground-up设计的面向对象编程语言。
- Prolog于 1972 年由 Colmerauer、Roussel 以及 Kowalski 所设计,是第一个逻辑程序语言。
- ML于 1973 年由罗宾·米尔纳所发明,是一个基于 Lisp 所建构的多态polymorphic类型系统同时也是静态类型函数编程语言的先驱。
### [1980 年代:增强、模块、性能](https://zh.wikipedia.org/zh-my/%E7%A8%8B%E5%BC%8F%E8%AA%9E%E8%A8%80%E6%AD%B7%E5%8F%B2#1980%E5%B9%B4%E4%BB%A3%EF%BC%9A%E5%A2%9E%E5%BC%B7%E3%80%81%E6%A8%A1%E7%B5%84%E3%80%81%E6%95%88%E8%83%BD)
1980 年代的编程语言与之前相较显得更为强大。C++ 合并了面向对象以及系统程序设计。美国政府标准化一种名为 Ada 的系统编程语言并提供给国防承包商使用。日本以及其他地方运用了大量的资金对采用逻辑编程语言结构的第五代编程语言进行研究。函数编程语言社群则把焦点转移到标准化 ML 及 Lisp 身上。这些活动都不是在开发新的范型,而是在将上个世代发明的构想进一步发扬光大。
在这段期间被开发出来的重要语言包括有:
- 1980 - Ada
- 1983 - C++(就像有类别的 C
- 1984 - Common Lisp
- 1985 - Eiffel
- 1986 - Erlang
- 1987 - Perl
- 1988 - Tcl
- 1989 - FLBackus
### [1990 年代:互联网时代](https://zh.wikipedia.org/zh-my/%E7%A8%8B%E5%BC%8F%E8%AA%9E%E8%A8%80%E6%AD%B7%E5%8F%B2#1990%E5%B9%B4%E4%BB%A3%EF%BC%9A%E7%B6%B2%E9%9A%9B%E7%B6%B2%E8%B7%AF%E6%99%82%E4%BB%A3)
1990 年代未见到有什么重大的创新,大多都是以前构想的重组或变化。这段期间主要在推动的哲学是提升程序员的生产力。许多 " 快速应用程序开发 " RAD语言也应运而生这些语言大多都有相应的集成开发环境、垃圾回收等机制且大多是先前语言的派生语言。这类型的语言也大多是面向对象的编程语言包含有 Object Pascal、Visual Basic以及 C#。Java 则是更加保守的语言,也具备垃圾回收机制。与其他类似语言相比,也受到更多的观注。新的脚本语言则比 RAD 语言更新更好。这种语言并非直接从其他语言派生而且新的语法更加开放地liberal与功能契合。虽然脚本语言比 RAD 语言来的更有生产力,但大多会有因为小程序较为简单,但是大型程序则难以使用脚本语言撰写并维护的顾虑。尽管如此,脚本语言还是网络层面的应用上大放异彩。
在这段期间被开发出来的重要语言包括有:
- 1990 - Haskell
- 1991 - Python
- 1991 - Visual Basic
- 1993 - Ruby
- 1993 - Lua
- 1994 - Close (part of ANSI Common Lisp)
- 1995 - Java
- 1995 - Delphi (Object Pascal)
- 1995 - JavaScript
- 1995 - PHP
- 1997 - REBOL
- 1999 - D
### [现今的趋势](https://zh.wikipedia.org/zh-my/%E7%A8%8B%E5%BC%8F%E8%AA%9E%E8%A8%80%E6%AD%B7%E5%8F%B2#%E7%8F%BE%E4%BB%8A%E7%9A%84%E8%B6%A8%E5%8B%A2)
编程语言持续在学术及企业两个层面中发展进化,目前的一些趋势包含有:
- 在语言中增加安全性与可靠性验证机制:额外的堆栈检查、信息流 (information flow) 控制,以及静态线程安全。
- 提供模块化的替代机制:混入,委托,以及剖面导向。
- 组件导向 (component-oriented) 软件开发。
- 元编程、反射或是访问抽象语法树。
- 更重视分布式及移动式的应用。
- 与数据库的集成,包含 XML 及关系数据库。
- 支持使用 Unicode 编写程序,所以原始码不会受到 ASCII 字符集的限制,而可以使用像是非拉丁语系的脚本
- 延伸标点符号。
- 图形用户界面所使用的 XML(XUL、XAML)。
在这段期间被开发出来的重要语言包括有:
- 2001 - C#
- 2001 - Visual Basic .NET
- 2002 - F#
- 2003 - Scala
- 2003 - Factor
- 2006 - Windows PowerShell
- 2007 - Clojure
- 2009 - Go
- 2014 - Swift (编程语言)
### 编程语言发展史上的杰出人物
- [约翰·巴科斯](https://zh.wikipedia.org/zh-my/約翰·巴科斯),发明了 [Fortran](https://zh.wikipedia.org/wiki/Fortran)。
- [阿兰·库珀](https://zh.wikipedia.org/wiki/阿兰·库珀),开发了 [Visual Basic](https://zh.wikipedia.org/wiki/Visual_Basic)。
- [艾兹格·迪杰斯特拉](https://zh.wikipedia.org/wiki/艾兹格·迪杰斯特拉)开创了正确运用编程语言proper programming的框架。
- [詹姆斯·高斯林](https://zh.wikipedia.org/wiki/詹姆斯·高斯林),开发了 [Oak](https://zh.wikipedia.org/wiki/Oak),该语言为 [Java](https://zh.wikipedia.org/wiki/Java) 的先驱。
- [安德斯·海尔斯伯格](https://zh.wikipedia.org/wiki/安德斯·海尔斯伯格),开发了 [Turbo Pascal](https://zh.wikipedia.org/wiki/Turbo_Pascal)、[Delphi](https://zh.wikipedia.org/wiki/Delphi),以及 [C#](https://zh.wikipedia.org/wiki/C_Sharp)。
- [葛丽丝·霍普](https://zh.wikipedia.org/wiki/葛麗絲·霍普),开发了 [Flow-Matic](https://zh.wikipedia.org/w/index.php?title=Flow-Matic&action=edit&redlink=1),该语言对 [COBOL](https://zh.wikipedia.org/wiki/COBOL) 造成了影响。
- [肯尼斯·艾佛森](https://zh.wikipedia.org/wiki/肯尼斯·艾佛森),开发了 [APL](https://zh.wikipedia.org/wiki/APL),并与 [许国华](https://zh.wikipedia.org/w/index.php?title=许国华_(计算机科学家)&action=edit&redlink=1) 合作开发了 [J](https://zh.wikipedia.org/wiki/J語言)。
- [比尔·乔伊](https://zh.wikipedia.org/wiki/比尔·乔伊),发明了 [vi](https://zh.wikipedia.org/wiki/Vi)[BSD](https://zh.wikipedia.org/wiki/Berkeley_Software_Distribution) Unix 的前期作者,以及 [SunOS](https://zh.wikipedia.org/wiki/SunOS) 的发起人,该操作系统后来改名为 [Solaris](https://zh.wikipedia.org/wiki/Solaris)。
- [艾伦·凯](https://zh.wikipedia.org/wiki/艾伦·凯),开创了 [面向对象编程语言](https://zh.wikipedia.org/wiki/OOP),以及 [Smalltalk](https://zh.wikipedia.org/wiki/Smalltalk) 的发起人。
- [布莱恩·柯林汉](https://zh.wikipedia.org/wiki/布萊恩·柯林漢),与 [丹尼斯·里奇](https://zh.wikipedia.org/wiki/丹尼斯·里奇) 合著第一本 [C](https://zh.wikipedia.org/wiki/C語言) 程序设计语言的书籍,同时也是 [AWK](https://zh.wikipedia.org/wiki/AWK) 与 [AMPL](https://zh.wikipedia.org/wiki/AMPL) 程序设计语言的共同作者。
- [约翰·麦卡锡](https://zh.wikipedia.org/wiki/约翰·麦卡锡),发明了 [LISP](https://zh.wikipedia.org/wiki/LISP)。
- [约翰·冯·诺伊曼](https://zh.wikipedia.org/wiki/约翰·冯·诺伊曼)[操作系统](https://zh.wikipedia.org/wiki/作業系統) 概念的发起者。
- [丹尼斯·里奇](https://zh.wikipedia.org/wiki/丹尼斯·里奇),发明了 [C](https://zh.wikipedia.org/wiki/C語言)。
- [比雅尼·斯特劳斯特鲁普](https://zh.wikipedia.org/wiki/比雅尼·史特勞斯特魯普),开发了 [C++](https://zh.wikipedia.org/wiki/C%2B%2B)。
- [肯·汤普逊](https://zh.wikipedia.org/wiki/肯·汤普逊),发明了 [Unix](https://zh.wikipedia.org/wiki/Unix)。
- [尼克劳斯·维尔特](https://zh.wikipedia.org/wiki/尼克劳斯·维尔特),发明了 [Pascal](https://zh.wikipedia.org/wiki/Pascal)、[Modula](https://zh.wikipedia.org/wiki/Modula) 与 [Oberon](https://zh.wikipedia.org/wiki/Oberon)。
- [拉里·沃尔](https://zh.wikipedia.org/wiki/拉里·沃尔),创造了 [Perl](https://zh.wikipedia.org/wiki/Perl) 与 [Raku](https://zh.wikipedia.org/wiki/Raku)。
- [吉多·范罗苏姆](https://zh.wikipedia.org/wiki/吉多·范罗苏姆),创造了 [Python](https://zh.wikipedia.org/wiki/Python)。
> 来源:[编程语言历史 - 维基百科,自由的百科全书](https://zh.wikipedia.org/zh-my/%E7%A8%8B%E5%BC%8F%E8%AA%9E%E8%A8%80%E6%AD%B7%E5%8F%B2#%E7%8F%BE%E4%BB%8A%E7%9A%84%E8%B6%A8%E5%8B%A2);非商业引用,著作权归作者所有。
## 程序设计语言图谱
![lang](https://static.7wate.com/img/2022/10/19/db314c6f8221b.svg)
> SVG 格式图片,新窗口打开可以无失真缩放查看。
>
> 来源:[Computer Languages History](https://www.levenez.com/lang/);非商业引用,著作权归作者所有。
## 程序设计语言生命周期
不仅可以在每个程序设计语言的官方可以了解其生命周期,还可以在如下网址查询:
- [endoflife.date](https://endoflife.date/)