驚呆了,老外竟然用50種程式語言寫“Hello,Word!”,我服了...

程式設計師的成長之路發表於2020-04-01


作者:Sylvain Saurel | 譯者:夏夜 | 策劃:萬佳
原文連結:

這是一個計算機世界的程式設計時光之旅。

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

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 

17.Ada - 1983 年

Ada 是一種物件導向的程式語言,從 20 世紀 80 年代早期開始開發,並於 1983 年釋出正式版本,即 Ada 1983。“Ada”這個名字用來紀念 Ada Lovelace,她被認為很大可能是歷史上第一位女性電腦科學家。

Ada 通常用於實時系統和嵌入式系統,這些系統要求高度的可靠性和安全性。

with Ada.Text_IO;
procedure Hello
isbegin
  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

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,它是一種物件導向的命令式語言,能夠像其他任何解釋性語言一樣在本地執行。



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 語言的啟發而發明的。這種語言是由谷歌開發的,它是從 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 官方支援的第二種程式語言。


fun main(args: Array) {
    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!”程式,但請不要和上面清單上的語言重複哦。



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69900357/viewspace-2683839/,如需轉載,請註明出處,否則將追究法律責任。

相關文章