近 50 種花式 “Hello, World”,你會幾種?

本文轉自公衆號CSDN(ID:CSDNnews)作者:Sylvain Saurel,譯者:風車雲馬,責編:屠敏,原文鏈接:https://medium.com/javarevisited/70-years-of-hello-world-with-50-programming-languages-2400de893a97

導讀:歷經 70 年,不斷出現的編程語言爲開發者解決了哪些難題?其存在又有怎樣的特性?本文將以「Hello, World」爲例,花樣呈現 50 種編程語言。

當我們學習一門編程語言時,都是從“Hello, World!”開始。所有程序員在其職業生涯中,都至少接觸過一個經典的“Hello, World!” 程序。通常程序員會使用多種編程語言,多的甚至實現了十幾種。

還有一種稱爲TTHW(Time to “Hello, World!”)的方法,來衡量程序員創建一個新的“Hello, World!”程序的時間。

你可以用多少種不同的語言編寫一個“Hello, World!”程序,你的答案是什麼?

讓我們在計算機編程的世界裏回顧一翻。我會向你展示50種不同編程語言編寫的“Hello, World!”程序。同時讓你看到計算機編程語言隨時間的演變。

01 彙編語言- 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

02 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

03 Lisp - 1958

Lisp是最古老的命令式和函數式編程語言。它最初創建於1958年,在20世紀70年代和80年代,Lisp最終成爲人工智能世界中非常流行的語言。

(write-line "Hello, World!")

04 Cobol - 1959

Cobol編程語言於1959年正式創建,2019年剛剛60週年。Cobol是COmmon Business Oriented Language的縮寫,它原本是一種用於編寫業務應用程序的公共語言。到2019年,Cobol仍然廣泛應用於銀行和保險領域。

IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO-WORLD.
PROCEDURE DIVISION.
    DISPLAY "Hello, World!"
    STOP RUN.

05 BASIC - 1964

BASIC是Beginner’s All-purpose Symbolic Instruction Code的首字母縮寫,它是一種高級編程語言,其主要特點是易用性。

PRINT "Hello, World!"
END

06 Logo - 1968

Logo是爲了更容易使用Lisp語言,經常被稱爲“Lisp without brackets”。具體來說,Logo是一種面向對象的編程語言。

print [Hello World !]

07 B - 1969

創建於1969年的B語言現在已經過時了,但它仍然扮演着重要的角色,因爲它激發了C語言的靈感,而C語言至今仍被廣泛使用。

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

08 Pascal - 1970

Pascal是創建於1970年的命令式編程語言。它是爲教學目的而設計的,其特點是語法清晰、嚴謹,有助於良好的程序結構。

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

Turbo Pascal創建於1983年,是Pascal編程語言的集成開發環境。它在20世紀80年代和90年代取得了巨大的成功。

program HelloWorld(output);
begin
  writeln('Hello, World!');
  readln;
end.

09 Forth - 1970

Forth是一種基於命令式的計算機編程語言,由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是一種面向對象、自反性和動態類型的編程語言,發明於1972年。Smalltalk是最早擁有集成開發環境的編程語言之一。

Transcript show: 'Hello, world!'; cr.

12 Prolog - 1972

Prolog是一種與人工智能和計算語言學相關的邏輯編程語言。Prolog創建於1972年。

:- write('Hello, World!'),nl.

13 ML - 1973

ML是一種基於Lisp的函數式編程語言。

print "Hello, World!\n";

14 Scheme - 1975

Scheme創建於1975年,是一種支持函數式和命令式編程的多範式編程語言。這是基於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 FROM message;
DROP TABLE message;

16 C++ - 1980

最初在1980年由Bjarne Stroustrup以C和類的名義創建,後來在1983年以c++語言命名。c++編程語言現在已被ISO標準化,並廣泛應用於工業和其他領域。

#include <iostream>
using namespace std;

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

17 Ada - 1983

Ada是一種面向對象的編程語言,於1980年初開發,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,用於“矩陣實驗室”,是一種用於數值計算的腳本語言。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++有很大的不同。

如今,它主要用於蘋果的操作系統: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是工具命令語言,是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

Matsumoto Yukihiro由於對自己的Smalltalk和Lisp開發經歷感到失望,於1993年開始在Emacs下設計Ruby語言。他在1995年發佈了第一版。Ruby是解釋型的、面向對象的、多範式的編程語言。

puts 'Hello, World!'

31 Java - 1995

Java是James Gosling在1995年創建的一種面向對象的編程語言,至今仍是業界最流行和使用最多的語言。Java允許完成客戶機到web應用程序的所有工作,而谷歌將其作爲Android移動操作系統上開發應用程序的語言,進一步擴展了它的功能。

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是一種高級腳本編程語言,它建立在denotational語義的基礎上,自稱爲“消息傳遞語言”。這是一個“Hello, World!”:

print "Hello, World!"

35 ActionScript — 1998

ActionScript是一種用於客戶端應用程序(如Adobe Flash和Adobe Flex)和服務器(Flash media server、JRun、Macromedia Generator)的編程語言。ActionScript在Unity graphics中用作腳本語言。

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上開發。該語言派生於c++和Java,使用它們的一般語法和一些概念。c#也可以用於開發ASP上的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#是一種函數式、命令式和麪向對象的編程語言,由Microsoft開發。f#源自與之高度兼容的OCaml編程語言。這兩種編程語言與ML語言屬於同一語系。

printfn "Hello, World!"

41 Windows PowerShell - 2006

Windows PowerShell是微軟開發的一套軟件,包括一個命令行界面、一種稱爲PowerShell的腳本語言和一個開發工具包。從Windows 7開始PowerShell作爲標準語言。

echo "Hello, World!"

42 Clojure - 2007

Clojure是一種經過編譯的跨平臺函數式編程語言,旨在創建安全且易於分發的程序。Clojure是基於Lisp的三大語言之一。Clojure可以轉換爲Java代碼、JavaScript代碼和. net代碼。因此,Clojure可以在JVM、CLR、瀏覽器和Node.js上使用。

(println "Hello, World!")

43 Go - 2009

Go是一種經過編譯的併發式編程語言,靈感來自C和Pascal。這種語言是由谷歌從Robert Griesemer、Rob Pike和Ken Thompson(他在1969年創造了B語言)最初提出的概念發展而來的。

package main

import "fmt"

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

44 Rust - 2010

Rust是由Mozilla設計和開發的多範型編譯的編程語言。Rust是“一種安全、併發、實用的語言”,同時支持純函數式編程風格、actor模型、過程式編程以及面向對象編程。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和本地的多種平臺進行編譯。2017年,谷歌使Kotlin成爲繼Java之後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代碼的安全性。TypeScript語言是JavaScript的一個超集,它被轉換成JavaScript,這樣任何web瀏覽器或JavaScript引擎都可以應用。

console.log("Hello, World!");

49 Julia - 2012

Julia是一種用於科學計算的高級、強大和動態編程語言,其語法爲其他類似開發環境(如MATLAB、R或Python)的用戶所熟悉。

println("Hello, World!")

50 Swift - 2014

Swift是一種經過編譯的、多範式的對象編程語言,其設計目標是簡單、高性能和安全。它是由蘋果公司開發的開源軟件,從而與Objective-C一起成爲開發移動iOS應用程序的解決方案。

print("Hello, World!")

結論

通過這次時間旅行,用50種不同語言編寫了“Hello, World!”程序,向人們展示了70年來計算機編程語言的變遷。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章