計算機世界的編程時光之旅
對很多人來說,每當學習一門新的編程語言,寫下的第一行代碼可能都是“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 <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程序卻是非常有趣。
如果你想學習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 <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,這裏有一個排名前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,它是一種面向對象的命令式語言,能夠像其他任何解釋性語言一樣在本地運行。
<? 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應用程序。如果你想學習C#,這裏有一些你可以參加的免費課程。
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採用靜態類型,集成了面向對象和函數式編程範式。如果你想學習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<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!”程序,但請不要和上面清單上的語言重複哦。
原文鏈接: