经过 70 年,急速再次出现的C词汇为开发人员化解了甚么样痛点?其存有又有甚么样的优点?责任编辑将以「Hello World」为例,花边呈现出 50 种C词汇。
译者 | Sylvain Saurel
翻译者 | 风车云马,白眉林 | 屠敏
下列为原文:
当他们自学两门C词汇时,都从“Hello, World!”已经开始。大部份开发人员在其生涯中,都最少碰触过两个经典之作的“Hello, World!” 流程。一般来说开发人员会采用多种C词汇,多的即使同时实现了数百种。
除了一类称作TTHW(Time to “Hello, World!”)的方式,来来衡量开发人员建立两个捷伊“Hello, World!”流程的天数。
你能用啥种相同的语言撰写两个“Hello, World!”流程,你的标准答案是甚么?
让他们在计算机系统程式设计的当今世界里简述一翻。就要向你展现50种相同C词汇撰写的“Hello, World!”流程。同时让你看到计算机系统C词汇随时间的演变。
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$ ; address ofmsg
callbdos
ret ; return toCCP
msg$: db Hello, world!$endstart
2. Fortran – 1957
FortranC词汇是Formula Translation的派生。它是一类汇编命令式流程设计词汇,特别适合于数值计算和科学计算。Fortran词汇建立于1957年,用这种词汇写的“Hello, World!”:
PROGRAMHello
WRITE (*,*) Hello, World!STOP
END在Fortran 90或95版本中,流程“Hello, World!”能这样写:
PROGRAMHello
WRITE (*,*) Hello, World!END PROGRAMHello
3.Lisp – 1958
Lisp是最古老的命令式和函数式C词汇。它最初建立于1958年,在20世纪70年代和80年代,Lisp最终成为人工智能当今世界中非常流行的词汇。
(write-line “Hello, World!”)
4. Cobol – 1959
CobolC词汇于1959年正式建立,2019年刚刚60周年。Cobol是COmmon Business Oriented Language的缩写,它原本是一类用于撰写业务应用流程的公共词汇。到2019年,Cobol仍然广泛应用于银行和保险领域。
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO-WORLD.
PROCEDURE DIVISION.
DISPLAY “Hello, World!”
STOP RUN.
5. BASIC – 1964
BASIC是Beginner’s All-purpose Symbolic Instruction Code的首字母缩写,它是一类高级C词汇,其主要特点是易用性。
PRINT “Hello, World!”END
6. Logo – 1968
Logo是为了更容易采用Lisp词汇,经常被称作“Lisp without brackets”。具体来说,Logo是一类面向对象的C词汇。
print [Hello World !]7. B – 1969
建立于1969年的B词汇现在已经过时了,但它仍然扮演着重要的角色,因为它激发了C词汇的灵感,而C词汇至今仍被广泛采用。
main()
{
putstr(“Hello world!*n”);
return(0);
}
8. Pascal – 1970
Pascal是建立于1970年的命令式C词汇。它是为教学目的而设计的,其特点是语法清晰、严谨,有助于良好的流程结构。
begin writeln(Hello, World!)
end.Turbo Pascal建立于1983年,是PascalC词汇的集成开发环境。它在20世纪80年代和90年代取得了巨大的成功。
programHelloWorld(output);
begin writeln(Hello, World!);
readln;
end.9. Forth – 1970
Forth是一类基于命令式的计算机系统C词汇,由Charles H. Moore于20世纪60年代发明,其第两个版本于1970年发布。它在1994年被ANSI标准化,并在1997年被ISO采用。
: HELLO ( — ) .” Hello, World!”CR ;
HELLO
10. C – 1972
C词汇是1972年在贝尔实验室发明的,当时丹尼斯·里奇(Dennis Ritchie)和肯·汤普森(Ken Thompson)正在开发UNIX。Ken Thompson之前开发了B词汇。Dennis Ritchie决定从B词汇中获得灵感,通过添加类型来建立C词汇。
#include <stdio.h>int main(void){
printf(“Hello, World!\n”);
return 0;
}11. Smalltalk – 1972
特别是受到Lisp词汇的启发,Smalltalk是一类面向对象、自反性和动态类型的C词汇,发明于1972年。Smalltalk是最早拥有集成开发环境的C词汇之一。
Transcript show: Hello, world!; cr.
12. Prolog – 1972
Prolog是一类与人工智能和计算词汇学相关的逻辑C词汇。Prolog建立于1972年。
:- write(Hello, World!),nl.
13. ML – 1973
ML是一类基于Lisp的函数式C词汇。
print “Hello, World!\n”;
14. Scheme – 1975
Scheme建立于1975年,是一类支持函数式和命令式程式设计的多范式C词汇。这是基于Lisp的三大词汇之一,另两种是Common Lisp和最近建立的Clojure。
(display “Hello, World!”) (newline)
15. SQL – 1978
SQL(Structured Query Language)结构化查询词汇,是一类用于操作关系数据库的标准化计算机系统词汇。它也能设计“Hello, World!”。
CREATE TABLE message (text char(15));
INSERT INTO message (text) VALUES (Hello, World!);
SELECT text FROMmessage;
DROP TABLEmessage;
16. C++ – 1980
最初在1980年由Bjarne Stroustrup以C和类的名义建立,后来在1983年以c++词汇命名。c++C词汇现在已被ISO标准化,并广泛应用于工业和其他领域。
#include <iostream>using namespace std;
int main(){
cout << “Hello, World!”<<endl;
return 0;
}
17. Ada – 1983
Ada是一类面向对象的C词汇,于1980年初开发,1983年正式发布。“Ada”这个名字是为了纪念Ada Lovelace,她是有史以来第一位女计算机系统科学家。
Ada一般来说用于高可靠性和安全性的实时和嵌入式系统。
withAda.Text_IO;
procedure Hello isbegin Ada.Text_IO.Put_Line (“Hello, World!”);endHello;
18. Common Lisp – 1984
Common Lisp,一般来说缩写为CL,是由ANSI标准化的Lisp词汇规范。
(princ “Hello, World!”)
19. MATLAB – 1984
MATLAB,用于“矩阵实验室”,是一类用于数值计算的脚本词汇。MATLAB的开发环境也叫这个名字。
disp(Hello, World!)
20. Eiffel – 1985
Eiffel是一类面向对象的C词汇。Eiffel基于当今非常流行的概念,如契约程式设计或重用。
classHELLO_WORLD
create
make
feature
make
do print (“Hello, world!%N”)
endend21. Objective-C – 1986
Objective-C是一类自反的面向对象C词汇。它是CC词汇的扩展,与c++类似,但在动态消息分发或动态加载方面与c++有很大的相同。
如今,它主要用于苹果的操作系统:macOS及其iOS衍生产品。
#import <Foundation/Foundation.h>intmain() {
@autoreleasepool{
NSLog(@”Hello, World!”);
}
}
22. Erlang – 1986
ErlangC词汇支持几种范例:并发、实时、分布式。它基于actor模型,具有容错和热更新功能,能够开发高可用性应用流程。
io:format(“Hello world!~n”).
23. Perl – 1987
Perl是Larry Wall在1987年建立的一类C词汇,用于轻松地处理基于文本的信息。Perl是一类解释词汇,它受到C词汇的控制和打印结构的启发,也受到shell脚本词汇的启发。
print “Hello, World!\n”;
24. Caml – 1987
Caml是Categorical Abstract Machine Language的缩写,是一类面向流程安全性和可靠性的通用C词汇。Caml支持函数式、命令式和面向对象的程式设计风格。它也是一类非常独特的词汇。
print_string “Hello, World!\n”;;
25. Tcl – 1988
Tcl是工具命令词汇,是John Ousterhout在1988年开发的一类脚本词汇。这种动态类型词汇是跨平台的、可扩展的、易于自学的,并且基于12条语法规则。Tcl很容易与CC词汇进行交互。
1990年,John Ousterhout为Tcl开发了两个名为Tk的扩展,这是两个用于建立可移植图形界面的库。因此,今天提到Tcl时,更多的是指Tcl/Tk的组合。
puts “Hello, World!”26. Haskell – 1990
Haskell是一类基于lambda计算和组合逻辑的函数式C词汇。
main = putStrLn “Hello, World!”27. Python – 1991
Python是一类解释性C词汇,具有多范式、多平台的特点。Python支持结构化、函数式和面向对象的命令式程式设计。这些年来,Python变得非常流行,即使在2019年成为最受欢迎的词汇之一。
Python 3.0或更高版本中的“Hello, World!”:
print(“Hello, World!”)
28. Visual Basic – 1991
Visual Basic,简称VB,是第三代事件C词汇,是微软为其COM程式设计模型建立的集成开发环境。
Public SubMain()
Debug.Print “Hello, World!”End Sub29. Lua – 1993
Lua建立于1993年,是一类自反的命令式脚本词汇,用于嵌入其他应用流程以扩展功能。
print(“Hello, World!”)
30. Ruby – 1995
Matsumoto Yukihiro由于对自己的Smalltalk和Lisp开发经历感到失望,于1993年已经开始在Emacs下设计Ruby词汇。他在1995年发布了第一版。Ruby是解释型的、面向对象的、多范式的程式设计语言。
puts Hello, World!31. Java – 1995
Java是James Gosling在1995年建立的一类面向对象的C词汇,至今仍是业界最流行和采用最多的词汇。Java允许完成客户机到web应用流程的大部份工作,而谷歌将其作为Android移动操作系统上开发应用流程的词汇,进一步扩展了它的功能。
class HelloWorld{
public static void main(String[] args){
System.out.println(“Hello, World!”);
}
}
32. JavaScript – 1995
JavaScript是一类脚本C词汇,主要用于Web,但现在能在服务器端采用Node.js等。JavaScript是一类面向原型的C词汇。
document.write(Hello, World!);
33. PHP – 1995
就C词汇而言,1995年无疑是极其重要的一年,因为在Java和JavaScript之后,PHP也在这一年诞生。PHP主要用于Web,是一类面向对象的命令式词汇,能像其他解释词汇一样在本地工作。
<? echo “Hello, World!” ?>34. Rebol – 1997
Rebol是一类高级脚本C词汇,它建立在denotational语义的基础上,自称作“消息传递词汇”。这是两个“Hello, World!”:
print “Hello, World!”35. ActionScript — 1998
ActionScript是一类用于客户端应用流程(如Adobe Flash和Adobe Flex)和服务器(Flash media server、JRun、Macromedia Generator)的C词汇。ActionScript在Unity graphics中用作脚本词汇。
package {
public class HelloWorld{
public function HelloWorld(){
trace(“Hello World !”);
}
}
}
36. D – 1999
D是一类命令式的面向对象和多范式的C词汇。D的灵感来自许多词汇,包括c++、Java和Eiffel。尽管D有很多优点,但它还未取得创造者所期望的那样成功。
import std.stdio;
void main (){
writefln(“Hello, World!”);
}
37. C# – 2000
c#是微软在2000年与Sun就Java词汇发生争执后建立的。c#是一类面向对象的C词汇,用于在Microsoft上开发。该词汇派生于c++和Java,采用它们的一般语法和一些概念。c#也能用于开发ASP上的web应用流程。
usingSystem;
internal static class HelloWorld{
private static void Main(){
Console.WriteLine(“Hello, World!”);
}
}38. Groovy – 2003
Groovy是一类运行在Java平台上的面向对象C词汇。Groovy是Java词汇的替代品,它的灵感来自Python、Ruby或Smalltalk。
println “Hello, World!”39. Scala – 2003
Scala是一类多范式C词汇,旨在以简洁优雅的形式表达常见的程式设计模型。Scala通过静态类型集成了面向对象和函数式程式设计的范例。
objectHelloWorld extends App {
println(“Hello, World!”)
}
40. F# – 2005
f#是一类函数式、命令式和面向对象的C词汇,由Microsoft开发。f#源自与之高度兼容的OCamlC词汇。这两种C词汇与ML词汇属于同一语系。
printfn “Hello, World!”41. Windows PowerShell – 2006
Windows PowerShell是微软开发的一套软件,包括两个命令行界面、一类称作PowerShell的脚本词汇和两个开发工具包。从Windows 7已经开始PowerShell作为标准词汇。
echo “Hello, World!”42. Clojure – 2007
Clojure是一类经过编译的跨平台函数式C词汇,旨在建立安全且易于分发的流程。Clojure是基于Lisp的三大词汇之一。Clojure能转换为Java代码、JavaScript代码和. net代码。因此,Clojure能在JVM、CLR、浏览器和Node.js上采用。
(println “Hello, World!”)43. Go – 2009
Go是一类经过编译的并发式C词汇,灵感来自C和Pascal。这种词汇是由谷歌从Robert Griesemer、Rob Pike和Ken Thompson(他在1969年创造了B词汇)最初提出的概念发展而来的。
packagemain
import “fmt”func main(){
fmt.Println(“Hello, World!”)
}
44. Rust – 2010
Rust是由Mozilla设计和开发的多范型编译的C词汇。Rust是“一类安全、并发、实用的词汇”,同时支持纯函数式程式设计风格、actor模型、过程式程式设计以及面向对象编程。Rust常被称作c++的潜在继承者之一。
fn main(){
println(“Hello, World!”);
}
45. Dart – 2011
Dart是一类由谷歌开发的webC词汇。它最初的目的是取代JavaScript。目前,Dart还没有达到它的目标,开发人员的首要任务是将Dart转换成与大部份现代浏览器兼容的JavaScript代码。Dart也能用于服务器端程式设计。
Dart是Flutter用于开发移动应用流程的词汇。
main() {
print(Hello, World!);
}
46. Kotlin — 2011
Kotlin是一类面向对象的函数式C词汇,具有静态类型,允许在Java虚拟机、JavaScript和本地的多种不同平台进行编译。2017年,谷歌使Kotlin成为继Java之后Android官方支持的第二种C词汇。
fun main(args: Array<String>){
println(“Hello, World!”)
}
47. Ceylon – 2011
Ceylon由Red Hat建立,是一类高级开放源码C词汇,具有强类型和静态类型。它的语法与Java相似。它能编译为Java或JavaScript。
void hello(){
print(“Hello, World!”);
}
48. TypeScript – 2012
TypeScript是一类免费的开源C词汇,由微软开发,旨在提高JavaScript代码的安全性。TypeScript词汇是JavaScript的两个超集,它被转换成JavaScript,这样任何web浏览器或JavaScript引擎都能应用。
console.log(“Hello, World!”);49. Julia – 2012
Julia是一类用于科学计算的高级、强大和动态C词汇,其语法为其他类似开发环境(如MATLAB、R或Python)的用户所熟悉。
println(“Hello, World!”)50. Swift – 2014
Swift是一类经过编译的、多范式的对象C词汇,其设计目标是简单、高性能和安全。它是由苹果公司开发的开源软件,从而与Objective-C一起成为开发移动iOS应用流程的化解方案。
print(“Hello, World!”)结论
通过这次天数旅行,用50种相同词汇撰写了“Hello, World!”流程,向人们展现了70年来计算机系统C词汇的变迁。
原文:https://medium.com/javarevisited/70-years-of-hello-world-with-50-programming-languages-2400de893a97
【End】热 文 推 荐
☞CSDN创始人蒋涛:开发人员是泛终端生态的第一推动力 ☞小米 9 年,雷军开启 AIoT 与 5G 超级互联网时代! ☞5G套餐到底该不该换?看完你就明白啦!☞他的公司1年令比特币暴跌数次,上榜福布斯捐10亿美元的跨界传奇
你点的每个“在看”,我都认真当成了喜欢