本内容是对 Every Programming Language Ever Explained in 15 Minutes 内容的翻译与整理。
汇编语言 是一种低级编程语言,它允许人类向计算机硬件发出指令。你知道,计算机只能以0和1的形式执行操作,所以汇编语言的诞生就是为了让计算机指令对人类来说更易于操作。它通过一种叫做汇编器(Assembler)的工具,将人类可读的代码翻译成计算机能理解的0和1。
汇编语言是世界上最早的编程语言之一,曾经是运行超级计算机的标准语言。即便在今天,它仍然被用于处理CPU内存等底层操作,有时也通过WebAssembly在浏览器中使用。
Fortran 是世界上最早的高级编程语言之一。高级语言与低级语言的区别在于:使用低级语言可以更直接地操作计算机内存,执行速度也更快,但学习难度较大;而高级语言更易于理解,支持也更多,但运行速度较慢。
Fortran由IBM在1950年代创建,名称是"Formula Translator"(公式翻译器)的缩写。编写Fortran程序当时需要使用打孔卡,然后通过打卡机读取,并被翻译成计算机可理解的代码,这个翻译过程就叫做"编译",即将人类可读代码转化为0和1。
Comtran (Commercial Translator)是IBM开发的另一种编程语言,被视为Fortran在商业领域的对应版本。Fortran主要用于科学计算,而Comtran则用于商业数据处理。它还受到了另一种编程语言Flow-Matic的影响,该语言运行在一台名为UNIVAC 1的巨型计算机上。
LISP(List Processing)在Fortran之后不久被创建。它以在代码中使用大量括号而闻名,是一门非常具有创新性的语言,启发了许多编程概念。
COBOL(Common Business-Oriented Language)是一种在1959年为商业用途开发的编程语言。虽然它诞生已有几十年,今天仍被许多金融机构用于处理交易。这种语言的代码看起来像英语句子,随后会被转译到打孔卡中。美国国防部是该语言的早期用户之一。
IBM RPG(Report Program Generator)是IBM开发的一种编程语言,主要运行于IBM系统上。它是为数不多使用行和列结构编写代码的编程语言之一。
ALGOL 60(Algorithmic Language 1960)是一种不太为人所知的编程语言,但它启发了后来非常著名的语言------C语言。它也是最早支持嵌套函数的编程语言之一。
APL(A Programming Language)出现于1960年代,主要为了解决代数等数学问题。它在代码中大量使用数学符号和希腊字母。
SIMULA 是几十年前开发的一种编程语言,被认为是世界上最早的面向对象编程语言之一。面向对象编程是一种将代码封装成可重用模块(对象)的方式,对象由类创建,具有属性和方法。例如你可以创建一个类叫"Pokemon",生成一个叫"Charmander"的对象,赋予它"火属性",并让它执行"喷火"和"抓挠"等方法。
SPEAKEASY 是1960年代物理学家常用的一种编程语言,它以在代码中使用颜色而著称。
BASIC(Beginner's All-purpose Symbolic Instruction Code)诞生于1963年的达特茅斯学院,旨在让普通大众也能学会编程。在此之前,编程仅限于科学家和数学家使用。BASIC的语法非常简单易懂,语法指的是编程语言中写代码的规则。
MUMPS(Massachusetts General Hospital Utility Multi-Programming System),有时简称为"M",是为管理医院实验室信息系统和电子健康记录而创建的。它的代码非常简洁,很多命令都可以简写为几个字母。
LOGO 是1960年代开发的一种教育类编程语言,它使用一种叫"海龟绘图"的功能(不是实际的乌龟,而是光标的名字)来绘制几何图形。
Pascal 是1970年代非常流行的一种编程语言,甚至曾是很多电脑的默认语言。它是最早支持IDE(集成开发环境)的编程语言之一。Photoshop就是用Pascal开发的。
C语言 是1970年代由贝尔实验室开发的,至今仍是最受欢迎的编程语言之一,是很多操作系统(如Windows和Linux)的基础。它启发了后来的C++、Objective-C、Go、Java、JavaScript、PHP、Python等语言。C语言以其对内存的低级访问能力而闻名,通过使用"指针"来操作内存。在过去,计算机内存非常有限,程序员必须小心分配,否则会导致内存泄漏,使电脑变得非常慢。
Smalltalk 是1970年代的一种编程语言,以其面向对象编程而知名,启发了许多后来的面向对象语言。
Prolog 是第一种逻辑编程语言,建模理念源于哲学中的形式逻辑。
ML(Meta Language)开创了静态类型的函数式编程,意即数据类型在编写时就明确,如字符串、整数、浮点数或布尔值。字符串是文字和字母,整数是整数,浮点数是带小数的实数,布尔值是"真"或"假"。
SQL(Structured Query Language)是一种用于创建和管理数据库的语言。信息储存在"表格"中,结构由行和列组成。代码看起来像英语句子。今天仍广泛用于存储用户名、密码、交易记录、账户信息等。可以将其类比为Excel表格系统。
C++ 是C语言的扩展,主要区别是它支持面向对象编程,而C语言不支持。C++以学习曲线陡峭著称,但至今仍被广泛用于开发操作系统、网页浏览器、数据库和游戏,是最重要的编程语言之一。
Ada 是1980年代由美国国防部开发的编程语言,命名来自世界上第一位程序员 Ada Lovelace。
MATLAB(Matrix Laboratory)是一种为数据科学家和工程师设计的数学编程语言,广泛用于统计、机器人、人工智能,在学术界仍被广泛使用。
Objective-C 是1980年代受C语言启发而创建的编程语言,曾是苹果电脑和早期iPhone的主语言。虽然它的流行度逐渐下降,但仍可见于某些开发中。苹果在2020年代中期用Swift取而代之。
LabVIEW 是1980年代由National Instruments开发的一种图形化编程语言,不使用传统代码,而是通过图像构建用户界面和处理逻辑。
Erlang 是为电信行业设计的编程语言。
Perl 是一种非常适合处理文本的编程语言,广泛应用于系统管理、网络编程、金融等领域,人称"维系互联网的胶水"。不过其代码看起来可能比较奇怪。
Wolfram Language 是由Stephen Wolfram创建的,可以用于数据可视化、图像处理、数学计算等几乎所有任务,甚至可以帮你找出穿越欧洲的最短路线。
Haskell 是一种函数式编程语言,变量不可变(即声明后不能更改),基于λ演算。
Visual Basic 是微软在1990年代初推出的编程语言,用于创建带有图形用户界面的程序。图形界面即你用鼠标操作的所有屏幕元素。它也有一个同名的IDE。
Brainfxxx(是的,它真的叫这个)是一种非常奇特的编程语言,它只使用八个字符。这就是它的代码样子------每一个字符都有其用处。你可以进行数据输入输出、执行条件循环等等。你知道下面这段代码是做什么的吗?它的作用是输出"hi"这个词(小写)。而下面是大写的版本。如果有人能翻译这段代码,我会送你一个饼干。
Malbolge 被称为人类已知最难的编程语言,名字来自《神曲》中地狱的第八层圈。它之所以困难,有几个原因。一般编程语言编译成的是机器码(二进制),而Malbolge 编译成一种叫"三进制"(trinary)的东西,它使用0、1和2三种数字。
另外,你输入的内容还必须先经过一层加密处理,并且数据是通过一个叫"疯狂操作符表"(crazy operator)的表格来解释的。所有这些疯狂的机制,使得Malbolge 的代码看起来就像这样:
由于这些复杂结构,Malbolge 最初并不图灵完备。人们花了2年时间才弄清楚如何用它输出"Hello, World",而且,这个解决方法不是人想出来的,而是一个算法完成的。
Forth 是一种在1970年诞生的编程语言,它是基于"堆栈"的语言。堆栈是一种数据结构,就像是积木一样层层叠加,采用"先进后出"(FILO)的方式处理数据。
你知道电脑的"撤销"功能吗?就是用堆栈实现的。电脑会记住你在程序中执行的每一步操作,撤销时就从堆栈顶部移除一步。将数据放入堆栈叫"压栈"(push),移除数据叫"出栈"(pop)。
ATLAS(Abbreviated Test Language for All Systems)是一种用于自动化测试设备的编程语言。它主要用于执行车辆和机器的诊断测试,广泛应用于航空航天和军事领域。它的语法中包含大量缩写词。
RPG II 是由IBM开发的RPG语言(报告程序生成器)的第二个版本,是一种固定格式的编程语言,允许程序员通过列来书写代码。虽然这门语言很老,但在金融和制造业中仍有应用。它也有后续版本,比如RPG III 和 RPG IV。
REXX 是IBM开发的另一种编程语言,全称是 Restructured Extended Executor,主要用于自动化和在IBM大型机上处理数据。它的代码几乎像英语句子一样易读,不使用复杂符号或花括号。
KAL(Common Algorithmic Language),1970年代在丹麦创建。代码读起来像英语,也不使用太多特殊符号或花括号。最初为小型计算机设计,后来被改编为可运行于微型计算机上。
Mojo 是一种 Python 的超集语言,也就是说,如果你已经会 Python,那么学 Mojo 不太费劲。它的主要优势是运行速度比 Python 快很多。Python 是一门非常通用的语言,但人们经常批评它太慢。而 Mojo 结合了高级语言的简洁性与低级语言的速度,主要用于机器学习和人工智能领域。不过,这门语言非常新,因此相关资料还不太多。
Bash 既是命令行程序也是脚本语言,它使用一种叫"Shell"的命令行界面。你可以用它来自动化日常任务、管理文件,甚至自定义用户界面。学会基础很简单,但精通却很难。Bash 在 Linux 和 Unix 系统中非常实用。
Visual FoxPro 是一种用于数据库(如dBase和Microsoft Access)操作的语言,它有一个同名的IDE,内置可视化拖拽编辑器,用于创建图形用户界面、表单和菜单。后续版本还加入了面向对象编程功能。不过,该语言自2015年起已停止支持。
dBase 是数据库管理语言,虽然不再更新,但曾经推出过多个版本,如dBase II、dBase III 和 dBase III Plus。dBase 也是一个数据库管理系统。
Clipper 也是一种用于数据库编程的语言,可以与dBase结合使用,但运行速度更快,因为它使用即时编译(Just-in-Time compiling)。不过,自1990年代以来Clipper已不再更新,逐渐被淘汰。
Uniface 是一种编程语言和开发平台,采用低代码开发方式,也就是说你只需写少量代码,配合拖拽编辑器就能构建按钮、菜单和表单等组件。它还可用于数据库管理。但由于社区规模较小,获取支持可能较困难。
SPSS(Statistical Package for the Social Sciences)并不是像C++或Java那样的传统编程语言,而是一款带有专用命令语法的软件包,主要用于学术研究和统计分析。其界面看起来类似Microsoft Excel。
VHDL(VHSIC Hardware Description Language),VHSIC 是"Very High Speed Integrated Circuits"的缩写。这是一种用于电路板和集成电路的语言,用于控制逻辑门、内存等电路运作。最初由美国国防部命令创建。
Scheme 是LISP家族的一员,也使用大量括号,优化支持Lambda函数的执行。
PLEX 是为爱立信的AX电话交换机设计的专用语言,用于控制电话交换、确保连接顺畅和管理系统资源。PLEX 是一种遗留语言,现已不再被现代系统使用。
GML(Game Maker Language)是专为 Game Maker Studio 而设计的语言。它分为两种类型:GML代码和GML可视化。GML代码就是通过代码编辑器编写,而GML可视化则是通过拖拽图形控制游戏功能。无论是哪种方式,最终都会编译为相同的内容。
IDL(Interactive Data Language)主要用于科学领域,如物理、生物、地质、天文、大气物理、医学影像等,擅长处理大量数据并进行计算。所使用的软件还支持数据可视化。
ALAM 是一种用于并发编程的语言,允许你创建可以同时执行多个任务的程序。它的名字来源于哲学家威廉·奥卡姆(William of Ockham),就像"奥卡姆剃刀"这个思想实验一样,这门语言也以简洁为设计理念。
B语言 是C语言之前的语言,与C语言不同的是,B语言没有数据类型(如字符、整数、浮点数),也不支持结构体和指针,且可移植性也较差。B语言最早是为了简化BCPL语言而在贝尔实验室开发的。
Verilog 是为电路和微芯片设计的语言,主要由硬件工程师使用,也能执行计算和数据存储。它属于硬件描述语言(HDL),与传统编程语言不同,HDL代码不是由CPU执行,而是被硬件部件(如集成电路IC、数字信号处理器DSP)使用。
TCL(Tool Command Language),有时发音为"Tickle",是一种用于脚本编写、创建应用、自动化任务等多用途的语言。它由John Ousterhout在1980年代创建,是一种多范式语言,支持面向对象编程和函数式编程。
D语言 是在C之后出现的一种语言,也叫"Dang",创建于2000年代,目标是成为C/C++的现代版本。不同的是,D语言自动管理内存,无需像C那样使用指针,也更擅长并发编程,支持多线程。
ABAP(Advanced Business Application Programming)是一种主要用于商业领域的语言,用于构建企业应用、管理数据和处理业务逻辑。
Odin 是一种较新的编程语言,可用于构建游戏引擎、网页服务器和数据分析工具。它使用LLVM作为编译工具。