2020年·用50種語言對你說“Hello,World!”
這是一個計算機世界的程式設計時光之旅。
對很多人來說,每當學習一門新的程式語言,寫下的第一行程式碼可能都是“Hello,World!“。因此,”Hello,World!“ 已經成為一段經典程式。
在職業生涯中,所有程式設計師都至少完成過一段“Hello,World!” 程式。在成長中,程式設計師通常會使用多種程式語言,大部分程式設計師甚至實現過十幾種”Hello,World!”版本。
甚至還出現了一種衡量標準,叫做 TTHW,用於評估程式設計師用新的程式語言實現一段“Hello, World!”程式併成功執行所花費的時間 。
但現在,如果我問你,你可以用多少種不同的程式語言編寫“Hello,World!”,你會給出怎樣的回答?為幫你回憶起來,我會向你展示怎樣用 50 種不同的程式語言編寫“Hello,World!”程式。這樣,也能讓你看到計算機程式語言多年的歷史演進。
# 組合語言 - 1949 年
組合語言創建於 1949 年,本文中,我會向你展示一段經典的
彙編程式
,這是為 Intel 8080 平臺的 8 位處理器編寫的,這款處理器於 1974 年 4 月下旬釋出。
bdos
equ
0005
H
;
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
# Fortran - 1957 年
Fortran 程式語言是 Formula Translation 的衍生版本。它是一種可編譯的通用指令式程式設計語言,特別適用於數值和科學計算。Fortran 語言創建於 1957 年,以下是使用該語言第一個版本編寫的“Hello, World!”程式:
PROGRAM
Hello
WRITE
(
*
,
*
)
‘Hello, World!’
STOP
END
# Lisp - 1958 年
Lisp 是最古老的程式語言家族,它既是命令式語言,又是
函式式語言
。Lisp 最初創建於 1958 年,當時是作為展示程式的實用模型釋出的。在 20 世紀 70 年代和 80 年代,Lisp 家族成為人工智慧領域非常受歡迎的語言。
以下是用 Lisp 編寫的“Hello, World!”程式:
(
write
-
line
“
Hello
,
World
!”
)
# Cobol - 1959 年
Cobol 正式創建於 1959 年,所以 Cobol 程式語言在 2019 年剛剛度過它的 60 週年紀念日。Cobol 是 COmmon Business Oriented Language 的縮寫,人們發明它是希望將其作為業務程式設計應用的通用語言。2019 年,Cobol 在銀行業和保險業中仍然應用廣泛。
以下是用 Cobol 編寫的“Hello, World!”程式:
IDENTI
FICATION
DIVISION
。
PROGRA
M-ID
。
HELLO-WORLD
。
PROCED
URE
DIVISION
。
DI
SPLAY
“Hello, World!”
ST
OP
RUN
。
# BASIC - 1964 年
BASIC 是 Beginner’s All-purpose Symbolic Instruction 的縮寫,它是一種高階程式語言,這種語言的主要目標是容易使用,正如以下“Hello, World!”程式所證實的這樣:
[
Hello
World
!
]
# Logo - 1968 年
Logo 語言很像 Lisp 語言,但比 Lisp 更容易使用,這正是 Logo 被髮明出來的原因,正如人們通常所認為的那樣,Logo 是“沒有圓括號的 Lisp 語言”。
main()
{
putstr(“Hello world!*n”);
return(0);
}
# B - 1969 年
B 語言發明於 1969 年,這種語言現在已經被廢棄,但它曾扮演了一個重要角色,它極大地促進了 C 語言的誕生,而現在 C 語言正被廣泛使用著。
begin
writeln(‘Hello, World!’)
end。
# Pascal - 1970 年
Pascal 是一種指令式程式設計語言,創建於 1970 年。它是為教學而設計的,其特點是語法清晰、嚴謹,有助於生成良好的
程式結構
。
begin
writeln
(
‘Hello, World!’
)
end
。
Turbo Pascal 創建於 1983 年,它是為 Pascal 程式語言打造的整合開發環境。Turbo Pascal 在 20 世紀 80 年代和 90 年代取得巨大成功。
以下是 Turbo Pascal 中的“Hello, World!”程式:Turbo Pascal 創建於 1983 年,它是為 Pascal 程式語言打造的整合開發環境。Turbo Pascal 在 20 世紀 80 年代和 90 年代取得巨大成功。
以下是 Turbo Pascal 中的“Hello, World!”程式:
program
HelloWorld
(
output
);
begin
writeln
(
‘Hello, World!’
);
readln
;
end
。
# 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
# 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
;
}
# Smalltalk - 1972 年
Smalltalk 是一種面向物件的,具有反身性和動態型別的程式語言,發明於 1972 年,當時主要是受到 Lisp 語言的啟發。Smalltalk 是最早一批具有整合開發環境的程式語言之一。
Transcript
show
:
‘
Hello
,
world
!’
;
cr
。
# Prolog - 1972 年
Prolog 是一種與人工智慧和計算語言學相關的邏輯程式語言。Prolog 創建於 1972 年。
:- write(‘Hello, World!’),nl。
# ML - 1973 年
ML 是 Meta Language 的縮寫,它是基於 Lisp 的函數語言程式設計語言。ML 通常被認為是帶有型別的 Lisp 語言。
print “Hello, World!\n”;
# Scheme - 1975 年
Scheme 創建於 1975 年,它是一種支援函式式和命令式的多正規化程式語言。它是 Lisp 語言的 3 大變種之一,另外兩個變種 Common Lisp 和 Clojure 的誕生要晚得多。
(display “Hello, World!”) (newline)
# 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
;
# C++ - 1980 年
C++ 最初由 Bjarne Stroustrup 創建於 1980 年,和 C 語言同名,但是包含了 class(類)這個概念。C++ 語言正式命名為 C++ 是在 1983 年。
這門程式語言現在被 ISO 標準化了,在工業界以及其他領域被廣泛使用。
#include
using
namespace
std
;
int
main
()
{
cout
<<
“Hello, World!”
<<
endl
;
return
0
;
}
# 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
;
# Common Lisp - 1984 年
Common Lisp 通常簡寫為 CL,是由 ANSI 標準化了的 Lisp 語言規範。
(princ “Hello, World!”)
# MATLAB - 1984 年
MATLAB 是“Matrix Laboratory”的縮寫,它是一種指令碼語言,用於數值計算。MATLAB 在同名的開發環境中編寫。
disp(‘Hello, World!’)
# Eiffel - 1985 年
Eiffel 是一種圍繞一種設計方法而設計的面向物件程式語言。Eiffel 基於當今非常流行的概念,如契約程式設計或重用等。
class
HELLO_WORLD
create
make
feature
make
do
print (“Hello, world!%N”)
end
end
# Objective-C - 1986 年
Objective-C 是一種反身式的
面向物件程式設計
語言。它是 C 程式語言的擴充套件,就像 C++ 一樣,但是和 C++ 又不一樣,特別是在動態訊息分發或者動態載入方面與 C++ 很不一樣。
當今,它主要用於蘋果作業系統:macOS 及其衍生的 iOS 系統中。
#import
int
main
()
{
@autoreleasepool
{
NSLog
(
@“Hello, World!”
);
}
}
# Erlang - 1986 年
Erlang 這種程式語言支援多種正規化:併發、實時和分散式。它獨具特色的層是基於參與者(actor)模型的,具有容錯和熱程式碼更新功能,允許開發具有極高可用性的應用程式。
io:format(“Hello world!~n”)。
# Perl - 1987 年
Perl 程式語言由 Larry Wall 創建於 1987 年,是為更容易地處理基於文字的資訊而建立的。Perl 是一種解釋性語言,它受到了 C 語言的控制結構和列印結構的啟發,同時也受到了 shell
指令碼語言
的啟發。
print “Hello, World!\n”;
# Caml - 1987 年
Caml 是 Categorical Abstract Machine Language 的縮寫,它是一種面向程式安全性和可靠性的通用程式語言。Caml 支援函式式、命令式和麵向物件的程式設計風格。它也是一種非常獨特的語言。
print_string “Hello, World!\n”;;
# Tcl - 1988 年
Tcl 是 Tool Command Language 的縮寫,它是一種指令碼語言,由 John Ousterhout 在 1988 年開發出來的。這種動態型別語言是跨平臺的、可擴充套件的、易於學習的,並且基於 12 條
語法規則
。Tcl 很容易與 C 程式語言互動。
在 1990 年,John Ousterhout 開發出了 Tcl 的一個擴充套件,叫做 Tk,它是一個用於建立可移植圖形介面的程式碼庫。現在,當我們談起 Tcl 時,我們更多地是在談論 Tcl/Tk 這個組合。
puts “Hello, World!”
# Haskell - 1990 年
Haskell 是一種函式式的程式語言,它基於 lambda 計算和組合邏輯。
main = putStrLn “Hello, World!”
# Python - 1991 年
Python 是一種解釋性程式語言,具有多正規化、多平臺的特點。Python 支援結構化、函式式和麵向物件的指令式程式設計。
這些年來, Python 變得非常流行,以下是用 Python 3。0 或更高版本編寫的“Hello, World!”程式:
(
“Hello, World!”
)
# Visual Basic - 1991 年
Visual Basic,簡稱為 VB,它是第三代事件程式語言,也是微軟建立的整合開發環境,用於其 COM 程式設計模型。
Public Sub Main()
Debug。Print “Hello, World!”
End Sub
# Lua - 1993 年
Lua 創建於 1993 年,它是一種反身式、命令式指令碼語言,用於嵌入在其他應用程式中來擴充套件這些應用程式的功能。
print(“Hello, World!”)
# Ruby - 1995 年
由於對 Smalltalk 和 Lisp 的開發經歷感到失望,Yukihiro Matsumoto 於 1993 年開始用 Emacs 設計 Ruby 語言。
他在 1995 年釋出了該語言的第一個版本。Ruby 是一種解釋性的、面向物件的多正規化語言。
puts ‘Hello, World!’
# 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!”
);
}
}
JavaScript - 1995 年
JavaScript 是一種指令碼語言,主要用於 Web 開發,但現在可以用於服務端,比如 Node。js。JavaScript 是面向原型的程式語言,這種語言裡的函式是第一類物件。
document
。
write
(
‘Hello, World!’
);
# PHP - 1995 年
1995 年絕對是程式語言非常重要的一年,因為在 Java 和 JavaScript 之後,PHP 也在這一年被髮明出來。PHP 主要用於 Web,它是一種面向物件的命令式語言,能夠像其他任何
解釋性語言
一樣在本地執行。
<?
echo
“Hello, World!”
?>
# Rebol - 1997 年
Rebol 是一種高階指令碼程式語言,建立在
指代語義
的基礎上,自稱為“訊息傳遞語言”。以下是用 Rebol 編寫的“Hello, World!”程式:
print “Hello, World!”
# ActionScript - 1998 年
ActionScript 這種程式語言,可用於
客戶端應用程式
(例如 Adobe Flash 和 Adobe Flex)和伺服器(Flash
媒體伺服器
,JRun 和 Macromedia Generator)。ActionScript 現在作為一種指令碼語言,用於 Unity
圖形引擎
之中。
package
{
public
class
HelloWorld
{
public
function
HelloWorld
()
{
trace
(
“Hello World
!
”
);
}
}
}
# D - 1999 年
D 是一種命令式、面向物件的多正規化程式語言,用於系統程式設計。D 的發明受到許多語言的啟發,包括 C++、Java 和 Eiffel。儘管 D 語言有很多優點,但是它從未獲得其發明者所期望的成功。
import
std。stdio
;
void
main
()
{
writefln
(
“Hello, World!”
);
}
# C# - 2000 年
C# 是微軟於 2000 年與 Sun 就 Java 語言發生爭執後建立的。C# 是一種面向物件的程式語言,用於
http://
Microsoft。Net
平臺上的開發工作。該語言派生自 C++ 和 Java,使用了它們的一些通用語法和其他許多概念。
C# 也可以用於開發
http://
ASP。Net
平臺上的 Web
應用程式
。
using
System
;
internal
static
class
HelloWorld
{
private
static
void
Main
()
{
Console
。
WriteLine
(
“Hello, World!”
);
}
}
# Groovy - 2003 年
Groovy 是一種面向物件的程式語言,執行在 Java 平臺上。Groovy 是這個平臺的 Java 語言的替代品,受到了 Python 、 Ruby 或者是 Smalltalk 語言的啟發。
println “Hello, World!”
# Scala - 2003 年
Scala 是一種多正規化程式語言,被設計用於簡潔優雅地表示通用程式設計模型。Scala 採用靜態型別,集成了面向物件和
函數語言程式設計正規化
。
object HelloWorld extends App {
println(“Hello, World!”)
}
# F# - 2005
F# 是一種函式式、命令式和麵向物件的程式語言,由微軟為其。NET 平臺而開發。F# 從 OCaml 程式語言衍生而來,而且與 OCaml 具有高度相容性。這兩種程式語言與 ML 語言屬於同一種語系。
printfn “Hello, World!”
# Windows PowerShell - 2006 年
Windows PowersShell 是由微軟開發的一套軟體,它包含了命令列介面、一種稱作 PowerShell 的指令碼語言和一個開發包。從 Window 7 開始,PowerShell 就作為微軟作業系統的標配。
echo “Hello, World!”
# Clojure - 2007 年
Clojure 是一種可編譯的、跨平臺的函數語言程式設計語言,用於建立安全的和易分散式執行的程式。Clojure 是 Lisp 語言的 3 大變種之一。Clojure 可轉換為 Java 位元組碼、JavaScript 程式碼和。NET 位元組碼。因此,Clojure 可以在 JVM、CLR、瀏覽器和 Node。js 上使用。
(println “Hello, World!”)
# 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!”)
}
# Rust - 2010
Rust 是由 Mozilla 開發的一種多正規化、可編譯的程式語言。Rust 被設計成為“安全的、併發的、實用的語言”,同時在某些方面支援純函數語言程式設計風格、參與者模型、程序式程式設計以及面向物件程式設計。Rust 通常被描述為 C++ 的潛在繼承者之一。
fn main() {
println(“Hello, World!”);
}
# Dart - 2011 年
Dart 是谷歌開發的一種 Web 程式語言。它最初的目的是要替換 JavaScript。目前,Dart 還沒有達到它的目標,開發人員更喜歡將 Dart 轉換成與現代所有瀏覽器相容的 JavaScript 程式碼,Dart 還可以用於服務端程式設計。
Dart 是 Flutter 用於開發移動應用程式的語言。
main() {
print(‘Hello, World!’);
}
# Kotlin - 2011 年
Kotlin 是一種面向物件的、函數語言程式設計語言,它具有靜態型別,允許針對 Java 虛擬機器、JavaScript 和本地的多種平臺進行編譯(多虧了 LLVM)。2017 年,谷歌繼 Java 之後,把 Kotlin 作為 Android 官方支援的第二種程式語言。
fun main(args: Array
println(“Hello, World!”)
}
# Ceylon - 2011 年
Ceylon 是由紅帽(Red Hat)創建出來的,它是一種高階開源程式語言,具有強型別和靜態型別。它的語法和 Java 的很像。它能編譯為 Java 位元組碼或者 JavaScript。
void hello() {
print(“Hello, World!”);
}
# TypeScript - 2012 年
TypeScript 是由微軟開發的免費開源的程式語言,旨在提升 JavaScript 程式碼的開發效率,保證 JavaScript 程式碼的安全性。TypeScript 語言是 JavaScript 的一個超集,它被轉換成 JavaScript,這樣任何 Web 瀏覽器或 JavaScript 引擎都可以解釋它。
console。log(“Hello, World!”);
# Julia - 2012 年
Julia 是一種高階的、強大的和動態的程式語言,用於科學計算,熟悉其他開發環境(如 MATLAB、R 或者 Python)的使用者應該很瞭解 Julia 的語法。
println(“Hello, World!”)
# Swift - 2014 年
Swift 是一種可編譯的、多正規化的物件程式語言,其設計目標是簡單、高效能和安全。它是由蘋果公司開發的開源專案,這使得它與 Objective-C 一起成為了開發移動 iOS 應用程式的解決方案。
print(“Hello, World!”)
# 總結
這次在計算機程式語言世界裡進行的跨度達 70 年的時光旅行,向你介紹了用 50 種不同語言編寫的“Hello, World!”程式。
以上程式語言清單隻佔到人們發明的所有程式語言的一小部分,邀請你在評論區分享你最喜歡的語言所編寫的“Hello, World!”程式,但請不要和上面清單上的語言重複哦。
2020新年快樂。