Categories
程式開發

我用50種編程語言寫的“Hello,World!”程序


計算機世界的編程時光之旅

我用50種編程語言寫的“Hello,World!”程序 1

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

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


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) {
    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