驚呆了,老外竟然用50中程式語言寫「Hello,Word!」,我服了…

作者:Sylvain Saurel | 譯者:夏夜 | 策劃:萬佳

原文鏈接:https://urlify.cn/YJJV7r

這是一個電腦世界的編程時光之旅。

對很多人來說,每當學習一門新的程式語言,寫下的第一行程式碼可能都是「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 !]

6.Logo – 1968 年

Logo 語言很像 Lisp 語言,但比 Lisp 更容易使用,這正是 Logo 被發明出來的原因,正如人們通常所認為的那樣,Logo 是「沒有圓括弧的 Lisp 語言」。

  main()  {    putstr("Hello world!*n");    return(0);  }

7.B – 1969 年

B 語言發明於 1969 年,這種語言現在已經被廢棄,但它曾扮演了一個重要角色,它極大地促進了 C 語言的誕生,而現在 C 語言正被廣泛使用著。

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

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 程式卻是非常有趣。

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 標準化了,在工業界以及其他領域被廣泛使用。

#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 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 是一種解釋性的、面向對象的多範式語言。

puts 'Hello, World!'

31.Java – 1995 年

Java 是 James Gosling 在 1995 年創建的一種面向對象的程式語言,它至今仍然是工業界最受歡迎和使用最多的語言。

你能夠使用 Java 做任何事情,從客戶端到 Web 應用無所不包;而且 Google 選擇 Java,用在 Android 作業系統上作為開發應用程式的語言,這又進一步擴展了 Java 能力。

class HelloWorld {    public static void main(String[] args) {      System.out.println("Hello, World!");    }  }

32.JavaScript – 1995 年

JavaScript 是一種腳本語言,主要用於 Web 開發,但現在可以用於服務端,比如 Node.js。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 應用程式。

  using System;    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 採用靜態類型,集成了面向對象和函數式編程範式。

  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 語言的啟發而發明的。這種語言是由Google開發的,它是從 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 是Google開發的一種 Web 程式語言。它最初的目的是要替換 JavaScript。目前,Dart 還沒有達到它的目標,開發人員更喜歡將 Dart 轉換成與現代所有瀏覽器兼容的 JavaScript 程式碼,Dart 還可以用於服務端編程。

Dart 是 Flutter 用於開發移動應用程式的語言。

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

46.Kotlin – 2011 年

Kotlin 是一種面向對象的、函數式程式語言,它具有靜態類型,允許針對 Java 虛擬機、JavaScript 和本地的多種平台進行編譯(多虧了 LLVM)。2017 年,Google繼 Java 之後,把 Kotlin 作為 Android 官方支援的第二種程式語言。

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!」程式,但請不要和上面清單上的語言重複哦。

<END>