我用50种编程语言写的“Hello,World!”程序

计算机世界的编程时光之旅

对很多人来说,每当学习一门新的编程语言,写下的第一行代码可能都是“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$   ; address of msg
        call   bdos
        ret             ; return to CCP
  
msg$:   db    'Hello, world!$'
end     start

2.Fortran - 1957年

Fortran编程语言是Formula Translation的衍生版本。它是一种可编译的通用命令式编程语言,特别适用于数值和科学计算。Fortran语言创建于1957年,以下是使用该语言第一个版本编写的“Hello, World!”程序:

PROGRAM Hello
WRITE (*,*) 'Hello, World!'
STOP
END

在Fortran 90或者95版本中,“Hello, World!”程序可以写为如下这样:

PROGRAM Hello
WRITE (*,*) 'Hello, World!'
END PROGRAM Hello

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.
PROCEDURE DIVISION.
    DISPLAY "Hello, World!"
    STOP RUN.

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);
}

8.Pascal - 1970年

Pascal是一种命令式编程语言,创建于1970年。它是为教学而设计的,其特点是语法清晰、严谨,有助于生成良好的程序结构。

begin
  writeln('Hello, World!')
end.

Turbo Pascal创建于1983年,它是为Pascal编程语言打造的集成开发环境。Turbo Pascal在20世纪80年代和90年代取得巨大成功。

以下是Turbo Pascal中的“Hello, World!”程序:

program HelloWorld(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>

int main(void) {
  printf("Hello, World!\n");
  return 0;
}

11.Smalltalk - 1972年

Smalltalk是一种面向对象的,具有反身性和动态类型的编程语言,发明于1972年,当时主要是受到Lisp语言的启发。Smalltalk是最早一批具有集成开发环境的编程语言之一。

Transcript show: '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,这里有一些推荐课程

CREATE TABLE message (text char(15));
INSERT INTO message (text) VALUES ('Hello, World!');
SELECT text FROM message;
DROP TABLE message;

16.C++ - 1980年

C++最初由Bjarne Stroustrup创建于1980年,和C语言同名,但是包含了class(类)这个概念。C++语言正式命名为C++是在1983年。

这门编程语言现在被ISO标准化了,在工业界以及其他领域被广泛使用。如果你想学习C++,这里是你可以参加的一些免费课程

#include <iostream>
using namespace std;

int main() {
  cout << "Hello, World!" << endl;
  return 0;
}

17.Ada - 1983年

Ada是一种面向对象的编程语言,从20世纪80年代早期开始开发,并于1983年发布正式版本,即Ada 1983。“Ada”这个名字用来纪念Ada Lovelace,她被认为很大可能是历史上第一位女性计算机科学家。

Ada通常用于实时系统和嵌入式系统,这些系统要求高度的可靠性和安全性。

with Ada.Text_IO;
procedure Hello is
begin
   Ada.Text_IO.Put_Line ("Hello, World!");
end Hello;

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>
 
int main() {
    @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编程模型。

Public Sub Main()
    Debug.Print "Hello, World!"
End Sub

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课程和教材可供参考。

class HelloWorld {
  public static void main(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 {
  public class HelloWorld {
    public function HelloWorld() {
      trace("Hello World !");
    }
  }
}

36.D - 1999年

D是一种命令式、面向对象的多范式编程语言,用于系统编程。D的发明受到许多语言的启发,包括C++、Java和Eiffel。尽管D语言有很多优点,但是它从未获得其发明者所期望的成功。

import std.stdio;

void main () {
  writefln("Hello, World!");
}

37.C# - 2000年

C#是微软于2000年与Sun就Java语言发生争执后创建的。C#是一种面向对象的编程语言,用于Microsoft.Net平台上的开发工作。该语言派生自C++和Java,使用了它们的一些通用语法和其他许多概念。

C#也可以用于开发ASP.Net平台上的Web应用程序。如果你想学习C#,这里有一些你可以参加的免费课程

using System;

internal static class HelloWorld {
  private static void Main() {
    Console.WriteLine("Hello, World!");
  }
}

38.Groovy - 2003年

Groovy是一种面向对象的编程语言,运行在Java平台上。Groovy是这个平台的Java语言的替代品,受到了PythonRuby或者是Smalltalk语言的启发。这里是一些关于该语言的书籍

println "Hello, World!"

39.Scala - 2003年

Scala是一种多范式编程语言,被设计用于简洁优雅地表示通用编程模型。Scala采用静态类型,集成了面向对象和函数式编程范式。如果你想学习Scala,这里有一些你可以参加的免费课程

object HelloWorld extends App {
  println("Hello, World!")
}

40.F# - 2005

F#是一种函数式、命令式和面向对象的编程语言,由微软为其.NET平台而开发。F#从OCaml编程语言衍生而来,而且与OCaml具有高度兼容性。这两种编程语言与ML语言属于同一种语系。

printfn "Hello, World!"

41.Windows PowerShell - 2006年

Windows PowersShell是由微软开发的一套软件,它包含了命令行接口、一种称作PowerShell的脚本语言和一个开发包。从Window 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!

package main

import "fmt"

func main() {
  fmt.Println("Hello, World!")
}

44.Rust - 2010

Rust是由Mozilla开发的一种多范式、可编译的编程语言。Rust被设计成为“安全的、并发的、实用的语言”,同时在某些方面支持纯函数式编程风格、参与者模型、过程式编程以及面向对象编程。Rust通常被描述为C++的潜在继承者之一。

fn main() {
    println("Hello, World!");
}

45.Dart - 2011年

Dart是谷歌开发的一种Web编程语言。它最初的目的是要替换JavaScript。目前,Dart还没有达到它的目标,开发人员更喜欢将Dart转换成与现代所有浏览器兼容的JavaScript代码,Dart还可以用于服务端编程。

Dart是Flutter用于开发移动应用程序的语言。

main() {
   print('Hello, World!');
}

46.Kotlin - 2011年

Kotlin是一种面向对象的、函数式编程语言,它具有静态类型,允许针对Java虚拟机、JavaScript和本地的多种平台进行编译(多亏了LLVM)。2017年,谷歌继Java之后,把Kotlin作为Android官方支持的第二种编程语言。如果你想学习Kotlin,这里有一些有用的资源供参考。

fun main(args: Array<String>) {
    println("Hello, World!")
}

47.Ceylon - 2011年

Ceylon是由红帽(Red Hat)创建出来的,它是一种高级开源编程语言,具有强类型和静态类型。它的语法和Java的很像。它能编译为Java字节码或者JavaScript。

void hello() {
    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!”程序,但请不要和上面清单上的语言重复哦。

原文链接:

70 Years Of “Hello, World!” With 50 Programming Languages

  • 发表于:
  • 本文为 InfoQ 中文站特供稿件
  • 首发地址https://www.infoq.cn/article/4EvJOi3HeMB9dN8PTkQw
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券