`

近 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年来计算机编程语言的变迁。


分享到:
评论

相关推荐

    几种花式咖啡的制作过程.doc

    几种花式咖啡的制作过程.doc

    VC.net 开发的3D花式魔方,代码不完整.rar

    由于可能在整理时把花式公式弄错,所以可能出现并不美观的图案,这些会在可能存在的后续版本中更正。  1&gt;尚未实现类似于2D版本的抄写功能。可以在2D中抄写,然后再本版本中打开。  2&gt;尚未实现用鼠标拖动来变换...

    花式喷泉的PLC控制毕业设计

    在近些年来,花式喷泉作为一种景观建筑与花式观赏相结合的产物,变得越来越流行。随着可编程控制器在我国的迅速发展,对花式喷泉的控制要求也越来越高,使得越来越多的控制部分需要可编程控制器来实现。 本文旨在...

    单片机控制系统的花式喷泉设计

    单片机控制系统的花式喷泉设计 随着技术的进步和人们对于生活品质要求的提高,花式喷泉不再仅仅是简单的水柱喷射,而是追求美观、多彩与智能化。而单片机控制系统作为现代自动控制技术的重要组成部分,以其独特的...

    基于PLC的花式喷水池控制

    在现代自动化控制系统中,PLC(可编程逻辑...随着自动化技术的不断发展,PLC在控制领域的应用将更加广泛,对相关技术人才的需求也会越来越大。因此,深入学习和掌握PLC技术,对于我们未来的专业发展具有重要的意义。

    基于PLC的花式喷泉系统设计,花式喷泉池装置PLC程序设计论文

    - **特殊功能模块**:考虑到花式喷泉系统可能会涉及复杂的定时控制需求,可以选择具备定时功能的PLC模块。 - **通信联网能力**:为了实现PLC与MCGS组态软件之间的数据交换,还需要确保PLC具备良好的通信联网能力。 ...

    行业文档-设计装置-一种花式太阳能锅炉.zip

    在本压缩包“行业文档-设计装置-一种花式太阳能锅炉.zip”中,包含的核心内容是一份关于“一种花式太阳能锅炉”的详细设计文档。太阳能锅炉是利用太阳辐射能转化为热能,进而产生蒸汽或热水的设备,它是一种环保、可...

    网页花式按钮CSS

    在创建花式按钮时,我们主要会用到以下CSS属性: 1. **颜色和背景**:使用`color`和`background-color`属性设置文本颜色和按钮背景色,可以创建基础的按钮样式。同时,利用`background-image`可以添加渐变或者图案...

    3、智能小车指定花式动作_基于audrino小车的花式动作程序_

    基于audrino小车的花式动作包括多种观赏性的动作展示

    花式喷水池装置PLC控制梯形图的设计与调试.pdf

    在调试过程中,可能会遇到诸如PLC模块I/O显示灯不亮、停止按钮无法控制停止结束等问题。遇到这些问题时,调试人员首先应排除非程序问题,例如检查接线和电源是否正确无误,然后才考虑程序是否存在错误。必要时,调试...

    河蟹塘伊乐藻之花式控草法,哪种才是最好的?.doc

    河蟹塘伊乐藻之花式控草法,哪种才是最好的?.doc

    花式篮球表演串词.doc

    花式篮球表演串词.doc

    花式字幕素材[1]

    在网络交流、社交媒体及个性化设计领域中,花式字幕素材作为一种重要的视觉元素,正被广泛应用于吸引用户的注意,并表达特定的情感与态度。特别是在字幕制作中,独特的符号和特殊字符的使用可以极大地提升视觉吸引力...

    单片机LED灯花式闪烁电路图及程序

    单片机LED灯花式闪烁电路及程序设计涉及了硬件连接和软件编程两个方面,本文将围绕这两块内容展开讨论,详细解释相关知识点。 首先,在硬件电路连接方面,LED灯的控制是通过单片机的I/O端口实现的。在单片机系统中...

    打破BERT天花板:11种花式炼丹术刷爆NLP分类SOTA!.rar

    打破BERT天花板:11种花式炼丹术刷爆NLP分类SOTA!.rar

    组态软件实现花式喷水池控制课程设计.doc

    "组态软件实现花式喷水池控制课程设计" 组态软件在花式喷水池控制中的应用是当前自动化技术的一个热点话题。随着城市化进程的加速,花式喷泉已经成为城市景观的一个重要组成部分。为了提高花式喷泉的运行灵活性和...

    花式喷泉 PLC

    "花式喷泉 PLC" 根据提供的文件信息,我们可以总结出以下几个知识点: 1.坐标式机械手 PLC 控制系统的设计方法: 结合实验一坐标式机械手 PLC 控制程序设计与调试,我们可以掌握坐标式机械手 PLC 控制系统的设计...

    三菱PLC在花式喷泉控制系统中的应用.pdf

    三菱PLC在花式喷泉控制系统中的应用主要体现在以下几个方面: 1. 系统稳定性:三菱PLC的设计考虑到了工业级应用的需求,具备高稳定性和抗干扰能力,这对于需要长时间连续运行的喷泉控制系统至关重要。 2. 编程灵活...

    花式台球游戏

    用opengl写的花式台球游戏

    基于S7-200花式喷泉PLC控制设计的方法研究.pdf

    根据提供的文件信息,本文将详细阐述基于S7-200的花式喷泉PLC控制设计方法研究的知识点。 首先,需要了解西门子S7-200系列PLC的基本概念和功能。S7-200 PLC是西门子公司生产的一款适用于小型控制系统的可编程逻辑...

Global site tag (gtag.js) - Google Analytics