计算机世界的编程时光之旅
对很多人来说, 每当学习一门新的编程语言, 写下的第一行代码可能都是 "Hello,World!". 因此,"Hello,World!" 已经成为一段经典程序.
在职业生涯中, 所有程序员都至少完成过一段 "Hello,World!" 程序. 在成长中, 程序员通常会使用多种编程语言, 大部分程序员甚至实现过十几种 "Hello,World!" 版本.
甚至还出现了一种衡量标准, 叫做 TTHW, 用于评估程序员用新的编程语言实现一段 "Hello, World!" 程序并成功运行所花费的时间 .
但现在, 如果我问你, 你可以用多少种不同的编程语言编写 "Hello,World!", 你会给出怎样的回答? 为帮你回忆起来, 我会向你展示怎样用 50 种不同的编程语言编写 "Hello,World!" 程序. 这样, 也能让你看到计算机编程语言多年的历史演进.
1. 汇编语言 - 1949 年
汇编语言创建于 1949 年, 本文中, 我会向你展示一段经典的汇编程序, 这是为 Intel 8080 平台的 8 位处理器编写的, 这款处理器于 1974 年 4 月下旬发布.
- bdos equ 0005H ; BDOS entry point
- start: mvi c,9 ; BDOS function: output string
- lxi d,msg$ ;addressof msg
- call bdos
- ret ; returntoCCP
- msg$: db'Hello, world!$'
- end start
2.Fortran - 1957 年
Fortran 编程语言是 Formula Translation 的衍生版本. 它是一种可编译的通用命令式编程语言, 特别适用于数值和科学计算. Fortran 语言创建于 1957 年, 以下是使用该语言第一个版本编写的 "Hello, World!" 程序:
- PROGRAMHello
- WRITE(*,*)'Hello, World!'
- STOP
- END
在 Fortran 90 或者 95 版本中,"Hello, World!" 程序可以写为如下这样:
- PROGRAMHello
- WRITE(*,*)'Hello, World!'
- ENDPROGRAMHello
3.Lisp - 1958 年
Lisp 是最古老的编程语言家族, 它既是命令式语言, 又是函数式语言. Lisp 最初创建于 1958 年, 当时是作为展示程序的实用模型发布的. 在 20 世纪 70 年代和 80 年代, Lisp 家族成为人工智能领域非常受欢迎的语言.
以下是用 Lisp 编写的 "Hello, World!" 程序:
(write-line"Hello, World!")
4.Cobol - 1959 年
Cobol 正式创建于 1959 年, 所以 Cobol 编程语言在 2019 年刚刚度过它的 60 周年纪念日. Cobol 是 COmmon Business Oriented Language 的缩写, 人们发明它是希望将其作为业务编程应用的通用语言. 2019 年, Cobol 在银行业和保险业中仍然应用广泛.
以下是用 Cobol 编写的 "Hello, World!" 程序:
- IDENTIFICATION DIVISION.
- PROGRAM-ID. HELLO-WORLD.
- PROCEDUREDIVISION.
- DISPLAY"Hello,World!"
- STOPRUN.
5.BASIC - 1964 年
BASIC 是 Beginner's All-purpose Symbolic Instruction 的缩写, 它是一种高级编程语言, 这种语言的主要目标是容易使用, 正如以下"Hello, World!" 程序所证实的这样:
- PRINT"Hello, World!"
- END
6.Logo - 1968 年
Logo 语言很像 Lisp 语言, 但比 Lisp 更容易使用, 这正是 Logo 被发明出来的原因, 正如人们通常所认为的那样, Logo 是 "没有圆括号的 Lisp 语言".
print[Hello World !]
7.B - 1969 年
B 语言发明于 1969 年, 这种语言现在已经被废弃, 但它曾扮演了一个重要角色, 它极大地促进了 C 语言的诞生, 而现在 C 语言正被广泛使用着.
- main()
- {
- putstr("Hello world!*n");
- return(0);
- }
- {
- 1
- }
8.Pascal - 1970 年
Pascal 是一种命令式编程语言, 创建于 1970 年. 它是为教学而设计的, 其特点是语法清晰, 严谨, 有助于生成良好的程序结构.
- begin
- writeln('Hello, World!')
- end.
Turbo Pascal 创建于 1983 年, 它是为 Pascal 编程语言打造的集成开发环境. Turbo Pascal 在 20 世纪 80 年代和 90 年代取得巨大成功.
以下是 Turbo Pascal 中的 "Hello, World!" 程序:
- programHelloWorld(output);
- begin
- writeln('Hello, World!');
- readln;
- end.
9.Forth - 1970 年
Forth 是一种基于命令式堆栈的计算机编程语言, 由 Charles H. Moore 在 20 世纪 60 年代创建, 但是, 它的第一个主要版本是在 1970 年发布的. 这门语言在 1994 年被 ANSI 标准化, 并且在 1997 年被 ISO 采用. 为这门语言送上美好的祝福吧, 2014 年它甚至迎来了一个新版本, 也就是 Forth 2012.
以下是 Forth 1970 版本的 "Hello, World!" 程序:
- : HELLO( -- )."Hello, World!"CR ;
- HELLO
10.C - 1972 年
贝尔实验室的 Dennis Ritchie 和 Ken Thompson 在 1972 年开发 UNIX 时发明了 C 编程语言. Ken Thompson 之前已经发明了 B 语言. Dennis Ritchie 受到了 B 语言的启发, 决定发明一种新的语言, 即 C 语言, 在其中引入了类型概念.
- #include<stdio.h>
- intmain(void){
- printf("Hello, World!\n");
- return0;
- }
11.Smalltalk - 1972 年
Smalltalk 是一种面向对象的, 具有反身性和动态类型的编程语言, 发明于 1972 年, 当时主要是受到 Lisp 语言的启发. Smalltalk 是最早一批具有集成开发环境的编程语言之一.
Transcriptshow:'Hello, world!'; cr.
12.Prolog - 1972 年
Prolog 是一种与人工智能和计算语言学相关的逻辑编程语言. Prolog 创建于 1972 年.
:-write('Hello, World!'),nl.
13.ML - 1973 年
ML 是 Meta Language 的缩写, 它是基于 Lisp 的函数式编程语言. ML 通常被认为是带有类型的 Lisp 语言.
print"Hello, World!\n";
14.Scheme - 1975 年
Scheme 创建于 1975 年, 它是一种支持函数式和命令式的多范式编程语言. 它是 Lisp 语言的 3 大变种之一, 另外两个变种 Common Lisp 和 Clojure 的诞生要晚得多.
(display"Hello, World!") (newline)
15.SQL - 1978 年
SQL 是 Structured Query Language 的缩写, 它是操作关系型数据库的标准化计算机语言. 尽管它不是用来创建简单的 "Hello, World!" 程序的, 但是, 照下面这样创建一个 SQL 程序却是非常有趣.
如果你想学习 SQL, 这里有一些 推荐课程 .
- CREATETABLEmessage (textchar(15));
- INSERTINTOmessage (text)VALUES('Hello, World!');
- SELECTtextFROMmessage;
- DROPTABLEmessage;
16.C++ - 1980 年
C++ 最初由 Bjarne Stroustrup 创建于 1980 年, 和 C 语言同名, 但是包含了 class(类)这个概念. C++ 语言 正式命名为 C++ 是在 1983 年.
这门编程语言现在被 ISO 标准化了, 在工业界以及其他领域被广泛使用. 如果你想学习 C++, 这里是你可以参加的一些 免费课程 .
- #include<iostream>
- usingnamespacestd;
- intmain(){
- cout<<"Hello, World!"<<endl;
- return0;
- }
17.Ada - 1983 年
Ada 是一种面向对象的编程语言, 从 20 世纪 80 年代早期开始开发, 并于 1983 年发布正式版本, 即 Ada 1983."Ada" 这个名字用来纪念 Ada Lovelace, 她被认为很大可能是历史上第一位女性计算机科学家.
Ada 通常用于实时系统和嵌入式系统, 这些系统要求高度的可靠性和安全性.
- withAda.Text_IO;
- procedureHellois
- begin
- Ada.Text_IO.Put_Line("Hello, World!");
- endHello;
18.Common Lisp - 1984 年
Common Lisp 通常简写为 CL, 是由 ANSI 标准化了的 Lisp 语言规范.
(princ"Hello, World!")
19.MATLAB - 1984 年
MATLAB 是 "Matrix Laboratory" 的缩写, 它是一种脚本语言, 用于数值计算. MATLAB 在同名的开发环境中编写.
disp('Hello, World!')
20.Eiffel - 1985 年
Eiffel 是一种围绕一种设计方法而设计的面向对象编程语言. Eiffel 基于当今非常流行的概念, 如契约编程或重用等.
- class
- HELLO_WORLD
- create
- make
- feature
- make
- do
- print("Hello,world!%N")
- end
- end
21.Objective-C - 1986 年
Objective-C 是一种反身式的面向对象编程语言. 它是 C 编程语言的扩展, 就像 C++ 一样, 但是和 C++ 又不一样, 特别是在动态消息分发或者动态加载方面与 C++ 很不一样.
当今, 它主要用于苹果操作系统: macOS 及其衍生的 iOS 系统中.
- #import<Foundation/Foundation.h>
- intmain() {
- @autoreleasepool{
- NSLog(@"Hello, World!");
- }
- }
22.Erlang - 1986 年
Erlang 这种编程语言支持多种范式: 并发, 实时和分布式. 它独具特色的层是基于参与者 (actor) 模型的, 具有容错和热代码更新功能, 允许开发具有极高可用性的应用程序.
io:format("Hello world!~n").
23.Perl - 1987 年
Perl 编程语言由 Larry Wall 创建于 1987 年, 是为更容易地处理基于文本的信息而创建的. Perl 是一种解释性语言, 它受到了 C 语言的控制结构和打印结构的启发, 同时也受到了 shell 脚本语言的启发.
print"Hello, World!\n";
24.Caml - 1987 年
Caml 是 Categorical Abstract Machine Language 的缩写, 它是一种面向程序安全性和可靠性的通用编程语言. Caml 支持函数式, 命令式和面向对象的编程风格. 它也是一种非常独特的语言.
print_string"Hello, World!\n";;
25.Tcl - 1988 年
Tcl 是 Tool Command Language 的缩写, 它是一种脚本语言, 由 John Ousterhout 在 1988 年开发出来的. 这种动态类型语言是跨平台的, 可扩展的, 易于学习的, 并且基于 12 条语法规则. Tcl 很容易与 C 编程语言交互.
在 1990 年, John Ousterhout 开发出了 Tcl 的一个扩展, 叫做 Tk, 它是一个用于创建可移植图形接口的代码库. 现在, 当我们谈起 Tcl 时, 我们更多地是在谈论 Tcl/Tk 这个组合.
puts"Hello, World!"
26.Haskell - 1990 年
Haskell 是一种函数式的编程语言, 它基于 lambda 计算和组合逻辑.
main= putStrLn"Hello, World!"
27.Python - 1991 年
Python 是一种解释性编程语言, 具有多范式, 多平台的特点. Python 支持结构化, 函数式和面向对象的命令式编程.
这些年来, Python 变得非常流行, 甚至在 2019 年成为最受欢迎的语言之一.
如果你想学习 Python, 这里有一个 排名前 10 的 Python 课程和教程清单 .
以下是用 Python 3.0 或更高版本编写的 "Hello, World!" 程序:
print("Hello, World!")
28.Visual Basic - 1991 年
Visual Basic, 简称为 VB, 它是第三代事件编程语言, 也是微软创建的集成开发环境, 用于其 COM 编程模型.
- PublicSubMain()
- Debug.Print"Hello, World!"
- EndSub
29.Lua - 1993 年
Lua 创建于 1993 年, 它是一种反身式, 命令式脚本语言, 用于嵌入在其他应用程序中来扩展这些应用程序的功能.
print("Hello, World!")
30.Ruby - 1995 年
由于对 Smalltalk 和 Lisp 的开发经历感到失望, Yukihiro Matsumoto 于 1993 年开始用 Emacs 设计 Ruby 语言.
他在 1995 年发布了该语言的第一个版本. Ruby 是一种解释性的, 面向对象的多范式语言. 如果你想学习 Ruby, 这里有一些 免费课程 供你参考.
puts'Hello, World!'
31.Java - 1995 年
Java 是 James Gosling 在 1995 年创建的一种面向对象的编程语言, 它至今仍然是工业界最受欢迎和使用最多的语言.
你能够使用 Java 做任何事情, 从胖客户端到 web 应用无所不包; 而且 Google 选择 Java, 用在 Android 操作系统上作为开发应用程序的语言, 这又进一步扩展了 Java 能力. 如果你想学习 Java, 这里有一些 Java 课程和教材 可供参考.
- classHelloWorld{
- publicstaticvoidmain(String[] args){
- System.out.println("Hello, World!");
- }
- }
32.JavaScript - 1995 年
JavaScript 是一种脚本语言, 主要用于 Web 开发, 但现在可以用于服务端, 比如 Node.JS.JavaScript 是面向原型的编程语言, 这种语言里的函数是第一类对象. 如果你想学习 JavaScript, 这里有一些 免费的 JavaScript 课程 可供参考.
document.write('Hello, World!');
33.PHP - 1995 年
1995 年绝对是编程语言非常重要的一年, 因为在 Java 和 JavaScript 之后, PHP 也在这一年被发明出来. PHP 主要用于 Web, 它是一种面向对象的命令式语言, 能够像其他任何解释性语言一样在本地运行.
<?echo"Hello, World!"?>
34.Rebol - 1997 年
Rebol 是一种高级脚本编程语言, 建立在指代语义的基础上, 自称为 "消息传递语言". 以下是用 Rebol 编写的 "Hello, World!" 程序:
print"Hello, World!"
35.ActionScript - 1998 年
ActionScript 这种编程语言, 可用于客户端应用程序 (例如 Adobe Flash 和 Adobe Flex) 和服务器(Flash 媒体服务器, JRun 和 Macromedia Generator).ActionScript 现在作为一种脚本语言, 用于 Unity 图形引擎之中.
- package{
- publicclassHelloWorld{
- publicfunctionHelloWorld(){
- trace("Hello World !");
- }
- }
- }
36.D - 1999 年
D 是一种命令式, 面向对象的多范式编程语言, 用于系统编程. D 的发明受到许多语言的启发, 包括 C++,Java 和 Eiffel. 尽管 D 语言有很多优点, 但是它从未获得其发明者所期望的成功.
- importstd.stdio;
- voidmain(){
- writefln("Hello, World!");
- }
- 37.C# - 2000 年
- C# 是微软于 2000 年与 Sun 就 Java 语言发生争执后创建的. C# 是一种面向对象的编程语言, 用于 Microsoft.NET 平台 上的开发工作. 该语言派生自 C++ 和 Java, 使用了它们的一些通用语法和其他许多概念.
- C# 也可以用于开发 ASP.NET 平台上的 Web 应用程序. 如果你想学习 C#, 这里有一些你可以参加的 免费课程 .
- usingSystem;
- internal static class HelloWorld {
- private static void Main() {
- Console.WriteLine("Hello, World!");
- }
- }
38.Groovy - 2003 年
Groovy 是一种面向对象的编程语言, 运行在 Java 平台上. Groovy 是这个平台的 Java 语言的替代品, 受到了 Python , Ruby 或者是 Smalltalk 语言的启发. 这里是一些关于该语言的 书籍 .
println"Hello, World!"
39.Scala - 2003 年
Scala 是一种多范式编程语言, 被设计用于简洁优雅地表示通用编程模型. Scala 采用静态类型, 集成了面向对象和函数式编程范式. 如果你想学习 Scala, 这里有一些你可以参加的 免费课程 .
- objectHelloWorldextendsApp{
- println("Hello, World!")
- }
- 40.F# - 2005
- F# 是一种函数式, 命令式和面向对象的编程语言, 由微软为其. NET 平台而开发. F# 从 OCaml 编程语言衍生而来, 而且与 OCaml 具有高度兼容性. 这两种编程语言与 ML 语言属于同一种语系.
printfn"Hello, World!"
41.Windows PowerShell - 2006 年
Windows PowersShell 是由微软开发的一套软件, 它包含了命令行接口, 一种称作 PowerShell 的脚本语言和一个开发包. 从 Windows 7 开始, PowerShell 就作为微软操作系统的标配.
echo"Hello, World!"
42.Clojure - 2007 年
Clojure 是一种可编译的, 跨平台的函数式编程语言, 用于创建安全的和易分布式运行的程序. Clojure 是 Lisp 语言的 3 大变种之一. Clojure 可转换为 Java 字节码, JavaScript 代码和. NET 字节码. 因此, Clojure 可以在 JVM,CLR, 浏览器和 Node.JS 上使用.
(println"Hello, World!")
43.Go - 2009 年
Go 是一种可编译的, 并发式编程语言, 受到了 C 和 Pascal 语言的启发而发明的. 这种语言是由谷歌开发的, 它是从 Robert Griesemer,Rob Pike 和 Ken Thompson 最初提出的概念发展而来的. 这位 Ken Thompson 正是在 1969 年创造了 B 语言的那位 Ken Thompson!
- packagemain
- import"fmt"
- funcmain(){
- fmt.Println("Hello, World!")
- }
- 44.Rust - 2010
Rust 是由 Mozilla 开发的一种多范式, 可编译的编程语言. Rust 被设计成为 "安全的, 并发的, 实用的语言", 同时在某些方面支持纯函数式编程风格, 参与者模型, 过程式编程以及面向对象编程. Rust 通常被描述为 C++ 的潜在继承者之一.
- fnmain(){
- println("Hello, World!");
- }
45.Dart - 2011 年
Dart 是谷歌开发的一种 Web 编程语言. 它最初的目的是要替换 JavaScript. 目前, Dart 还没有达到它的目标, 开发人员更喜欢将 Dart 转换成与现代所有浏览器兼容的 JavaScript 代码, Dart 还可以用于服务端编程.
Dart 是 Flutter 用于开发移动应用程序的语言.
- main() {
- print('Hello, World!');
- }
- {
- 1
- }
46.Kotlin - 2011 年
Kotlin 是一种面向对象的, 函数式编程语言, 它具有静态类型, 允许针对 Java 虚拟机, JavaScript 和本地的多种平台进行编译(多亏了 LLVM).2017 年, 谷歌继 Java 之后, 把 Kotlin 作为 Android 官方支持的第二种编程语言. 如果你想学习 Kotlin, 这里有一些 有用的资源 供参考.
- funmain(args:Array<String>){
- println("Hello, World!")
- }
47.Ceylon - 2011 年
Ceylon 是由红帽 (Red Hat) 创建出来的, 它是一种高级开源编程语言, 具有强类型和静态类型. 它的语法和 Java 的很像. 它能编译为 Java 字节码或者 JavaScript.
- voidhello(){
- print("Hello, World!");
- }
48.TypeScript - 2012 年
TypeScript 是由微软开发的免费开源的编程语言, 旨在提升 JavaScript 代码的开发效率, 保证 JavaScript 代码的安全性. TypeScript 语言是 JavaScript 的一个超集, 它被转换成 JavaScript, 这样任何 Web 浏览器或 JavaScript 引擎都可以解释它.
console.log("Hello, World!");
49.Julia - 2012 年
Julia 是一种高级的, 强大的和动态的编程语言, 用于科学计算, 熟悉其他开发环境 (如 MATLAB,R 或者 Python) 的用户应该很了解 Julia 的语法.
println("Hello, World!")
50.Swift - 2014 年
Swift 是一种可编译的, 多范式的对象编程语言, 其设计目标是简单, 高性能和安全. 它是由苹果公司开发的开源项目, 这使得它与 Objective-C 一起成为了开发移动 iOS 应用程序的解决方案.
print("Hello, World!")
总结
这次在计算机编程语言世界里进行的跨度达 70 年的时光旅行, 向你介绍了用 50 种不同语言编写的 "Hello, World!" 程序.
以上编程语言清单只占到人们发明的所有编程语言的一小部分, 我邀请你在评论区分享你最喜欢的语言所编写的 "Hello, World!" 程序, 但请不要和上面清单上的语言重复哦.
来源: http://www.tuicool.com/articles/NNvQZvf