最近看到一条link,一个大佬去面试,面试官让他写helloworld小程序:
刚看到的时候有点想笑,觉得这个面试官怎么这么天真。想了想突然醍醐灌顶。如果真的能够掌握超多种语言的helloworld小程序,也不可谓不为高手啊。
Hello World,几乎是程序猿学习各种语言的第一个程序。在当下,只掌握一门语言是不够的,比如说 Python,语言简洁、开发快是其最大优点,但缺点是速度相对较慢,C/C++/Java 开发比较慢,但程序运行速度比较快,如果想兼具两者的优点,就要写Python的扩展,这就涉及到(C、C++、Java、Fortan…)等语言,Python 的 GUI 中 Tkinter 里面又涉及到 TCL 语言,所以就 Python 开发来说,就必须熟悉 C(CPython 就是用 C 开发出来的),最好同时熟悉 Java(Jython、Python 是基于 Java 的实现),C++/C#(IronPython 就是基于 C# 及 .net 的实现),还有不同语言间的通信可能会用到 CORBAL,还有 Python 中可能会调用 SHELL 中的命令,或 Perl 的命令。所以,精通一到两门,熟悉多门语言是必须的。于是我整理了如下27种语言写该小程序的方法,供大家参考,娱乐。
01. Java
#FileName: HelloWorld.java
public class HelloWorld #如果有 public 类的话,类名必须和文件同名,注意大小写
{
#Java 入口程序,程序从此入口
public static void main(String[] args)
{
#向控制台打印一条语句
System.out.println("Hello,World!");
}
}
说明:
D:\HelloWorld>javac HelloWorld.java #用 javac 编译成字节码文件(HelloWorld.class)
D:\HelloWorld>java HelloWorld #用 java 解释执行成特定平台的机器码
Hello,World!
02. C
#include <stdio.h>
int main() #main 入口函数
{
printf("Hello,World!"); #printf 函数打印
return 1; #函数返回值
}
说明:
D:\HelloWorld>gcc HelloWorld.c -o output #文件名 HelloWorld.c,-o 输出文件名 output
HelloWorld.c:6:2: warning: no newline at end of file
D:\HelloWorld>output #直接运行输出文件
Hello,World!
03. C++
#include <iostream> //std::cout 要用到的头文件
#include <stdio.h> //标准输入输出头文件
int main()
{
printf("Hello,World!--Way 1\n"); //printf 语句打印
puts("Hello,World!--Way 2"); //puts 语句
puts("Hello," " " "World!--Way 3"); //字符串拼接
std::cout << "Hello,World!--Way 4" << std::endl; //C++ 教科书上写法
return 1; //作为注释
}
说明:
D:\HelloWorld>g++ HelloWorld.c++ -o output //源文件后缀也可为 .cpp、.C
D:\HelloWorld>output
Hello,World!--Way 1
Hello,World!--Way 2
Hello,World!--Way 3
Hello,World!--Way 4
04. Python
>>>> print "Hello,World!" #Python 2.x
Hello,World!
>>> print("Hello,World!") #Python 3.x
Hello,World!
说明:
- 在 Python 3.x 中,print 语句是函数,所以为 print()。
- 也可以写在 .py 文件中,同样执行。
- python2.6 及以上版本和 python3.x 基本相同,也同样可以使用 print() 来打印。
05. C#
//FileName: HelloWorld.cs
using System;
class TestApp
{
public static void Main()
{
Console.WriteLine("Hello,World!");
Console.ReadKey();
}
}
说明:
//执行如下:
d:\HelloWorld>csc HelloWorld.cs
Microsoft (R) Visual C# 2005 Compiler version 8.00.50727.4927
for Microsoft (R) Windows (R) 2005 Framework version 2.0.50727
Copyright (C) Microsoft Corporation 2001-2005. All rights reserved.
d:\HelloWorld>HelloWorld.exe
Hello,World!
06. PHP
<!DOCTYPE html>
<body>
<?php
echo "Hello,World!"; //打印语句
echo "The first php program!"; //打印语句
echo phpinfo(); //phpinfo()系统函数,输出环境信息
?>
</body>
</html>
说明:
#PHP(Hypertext Preprocessor)。
#PHP 是一种 HTML 内嵌式的语言,PHP 与微软的 ASP 颇有几分相似,都是一种在服务器端执行的嵌入 HTML 文档的脚本语言。
#PHP 语言的风格类似于 C 语言,现在被很多的网站编程人员广泛地运用。
#PHP 独特的语法混合了 C、Java、Perl 以及 PHP 自创新的语法。它可以比 CGI 或者 Perl 更快速地执行动态网页。
#与其他的编程语言相比,PHP 是将程序嵌入到 HTML 文档中去执行,执行效率比完全生成 HTML 标记的 CGI 要高许多。
#与同样是嵌入 HTML 文档的脚本语言 JavaScript 相比,PHP 在服务器端执行,充分利用了服务器的性能。
#PHP 执行引擎还会将用户经常访问的 PHP 程序驻留在内存中,其他用户再一次访问这个程序时就不需要重新编译程序了,只要直接执行内存中的代码就可以了,这也是 PHP 高效率的体现之一。
#PHP 具有非常强大的功能,所有的 CGI 或者 JavaScript 的功能,PHP 都能实现,而且几乎支持所有流行的数据库以及操作系统。
07. JavaScript
var sys = require("sys"); #导入需要的 sys 模块
sys.puts("Hello,World!"); #调用里面的 puts 函数来打印字符串
说明:
D:\>node HelloWorld.js #node + *.js,执行
Hello,World!
#JavaScript 是 Web 的编程语言。
#几乎所有现代的 HTML 页面都使用 JavaScript。
#JavaScript 非常容易学。
08. Ruby
#可用 print 语句打印
print "Hello,World!\n"
#可用 puts 语句打印
puts "Hello,World!\n"
#可以先声明一个变量,然后再用 puts 语句
a = "Hello,World!\n"
puts a
#可以先写个函数再调用
def say(name)
"Hello,#{name}"
end
puts say("World!")
说明:
D:\HelloWorld>ruby HelloWorld.rb #运行方式类似 Python、Perl
Hello,World!
Hello,World!
Hello,World!
Hello,World!
09. R
print("Hello,World!")
说明:
R 语言,一种自由软件编程语言与操作环境,主要用于统计分析、绘图、数据挖掘。
10. SQL
SQL> select 'Hello,World!' from dual;
'HELLO,WORLD
------------
Hello,World!
说明:
还可以建一个表,插入,再查询,最后删除该表。
SQL> CREATE TABLE MESSAGE (TEXT CHAR(15)); #创建表
INSERT INTO MESSAGE (TEXT) VALUES ('Hello, world!'); #插入表
SELECT TEXT FROM MESSAGE; #查询表
DROP TABLE MESSAGE; #删除表
Table created.
SQL>
1 row created.
SQL>
TEXT
---------------
Hello, world!
11. Perl
#!C:\Perl\bin #Windows 平台下
#!/usr/bin/env perl #Linux 环境下
print "Hello,World!\n"; #print("Hello,World") 也可
说明:
D:\HelloWorld>perl HelloWorld.pl #类似于 python file.py
Hello,World!
12. HTML
<!DOCTYPE html>
<html>
<body>
<h1>This is the first program!</h1>
<p>Hello,World!</p>
</body>
</html>
说明:
大多数主流浏览器都支持 HTML4.0,有些浏览器只支持 HTML5.0 的部分功能。
13. VB
'FileName: HelloWorld.rb rb 作为 VB 源文件的后缀
Module Hello
Sub Main() '程序人口函数
MsgBox("Hello,World!") '计算机屏幕上显示信息
End Sub 'End 作为程序块结尾
End Module '单引号作为注释
说明:
D:\>vbc HelloWorld.vb #vbs 来编译,生成 HelloWorld.exe 可执行文件
Microsoft (R) Visual Basic Compiler version 8.0.50727.5483
for Microsoft (R) .NET Framework version 2.0.50727.5485
Copyright (c) Microsoft Corporation. All rights reserved.
D:\>HelloWorld
14. Scala
object HelloWorld
{
def main(args:Array[String])
{
println("Hello,World!");
}
}
//编译
d:\HelloWorld>scala HelloWorld.scala
Hello,World!
说明:
Scala 是一门把面向对象和函数式编程思想加入静态类型中的编程语言,志在以简练、优雅及类型安全的方式来表达常用编程模式。它平滑地集成了面向对象和函数语言的特性,使 Java 和其他语言的程序员使用 Scala 时更富有成效。
15. Shell
#安装了MinGW和MSYS的Windows平台
D:\HelloWorld>echo "Hello,World!"
"Hello,World!"
#Linux平台下
#echo "Hello,World!" 或 printf "Hello,World!"
#如果是写在文件中:
chmod +x HelloWorld.sh
./HelloWorld.sh
说明:
#Shell 诞生于 Unix,是与 Linux/Unix 交互的工具,单独地学习 Shell 是没有意义的,必须先学习 Linux/Unix。
#Shell 虽然是 Unix 的第一个脚本语言,但它是相当优秀的。结合了延展性与效率,持续保有独具的特色,不断的被改良,功能更加强大。
#缺点:Shell 需要依赖其他程序才能完成大部分的工作,优点:简洁的脚本语言标记方式,比 C 语言编写的程序执行更快、更有效率。
16. Delphi
[File|New|Application]–>拖一个Button、一个Label–>双击Button,编码如下:
procedure TForm1.Button1Click(Sender: TObject);
begin
label1.Caption := 'Hello,World!';
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
end;
end.
说明:
Delphi,是 Windows 平台下著名的快速应用程序开发工具(Rapid Application Development,简称 RAD)。“真正的程序员用 C,聪明的程序员用 Delphi”,经典无需多言,尤其是开发GUI程序,拖一下就ok了。
17. Fortran
program hello
print *, "Hello World!"
end program hello
说明:
Fortran 是最早出现的计算机语言,主要用于科学及工程计算领域,这一点和 Python 相同。
D:\HelloWorld>gfortran -ffree-form HelloWorld.f -o out.exe #-ffree-form 自由格式 -o 后面是输出文件
#后缀名可以为.f, .F, .f90, .fpp. 如果是 .f90 结尾的文件,可以不用 -ffree-form,因为该后缀结尾的文件默认是自由格式
D:\HelloWorld>out #如果是 .f 结尾的话,必须要加上,否则报错
Hello World!
18. TCL
#命令行交互方式
D:\>tclsh
% puts "Hello,World!"
Hello,World!
% exit
D:>
#文件方式运行
#!/usr/local/bin/tcl
puts "Hello, world!"
D:\>tclsh HelloWorld.tcl
Hello,World!
说明:
- 文件名后缀 .tcl 编译器为 tclsh(命令方式显示)或 wish(GUI方式显示)。
- TCL(Tool Command Language)一种通用的脚本语言,几乎在所有平台都能运行,功能非常强。
19. FoxPro
?"Hello,World!"
说明:
尽管编译、运行都通过了,GUI 界面仍然不知道如何显示编译后的结果,还是在命令行界面里运行 .FXP 文件才显示的结果。
Visual FoxPro 原名 FoxBase,最初是由美国 Fox Software 公司于 1988 年推出的数据库产品,在 DOS 上运行,与 xBase 系列兼容。FoxPro 是 FoxBase 的加强版,最高版本曾出过 2.6。之后于 1992 年,Fox Software 公司被 Microsoft 收购,加以发展,使其可以在 Windows 上运行,并且更名为 Visual FoxPro。FoxPro 比 FoxBASE 在功能和性能上又有了很大的改进,主要是引入了窗口、按纽、列表框和文本框等控件,进一步提高了系统的开发能力。
20. Ada
说明:
Ada 是一种表现能力很强的通用程序设计语言,它是美国国防部为克服软件开发危机而研发的。在经过除去 # 行获得最终处理过的文件后即可交由 GNAT 编译。
21. AWK
[root@Linux ~]# echo | awk '{print "Hello,World!"}'
Hello,World!
[root@Linux ~]# echo | awk 'BEGIN {print "Hello,World!"}'
Hello,World!
[root@Linux ~]# awk 'BEGIN {print "Hello,World!"}'
Hello,World!
[root@Linux ~]# echo "hello world" | awk '{print}'
hello world
说明:
AWK 是一种优良的文本处理工具。它不仅是 Linux 中也是任何环境中现有的功能最强大的数据处理引擎之一。
AWK 名称得自于它的创始人,分别是 Alfred Aho、Peter Weinberger 和 Brian Kernighan 姓氏的首个字母。
AWK 提供了极其强大的功能:可以进行样式装入、流控制、数学运算符、进程控制语句甚至于内置的变量和函数。它具备了一个完整的语言所应具有的几乎所有精美特性。
22. Sed
# sed -ne '1s/.*/Hello, world!/p'
Hello,World! #第一行为输入
Hello, world!
说明:
sed 流编辑器,和 awk、正则表达式等一起,是编写 Linux 脚本中非常有用的工具。
23. Pascal
Program HelloWorld(output);
begin
writeln('Hello, world!')
{程序块的最后一条语句后不需要";" - 如果添加一个";",会在程序中增加一个“空语句”}
end.
说明:
Pascal 程序开始于外部文件描述符作为参数的 program 关键字;然后跟着 begin 和 end 关键字封装的主要块。分号分区语句,句点终结整个程序(或单元)。Pascal 源代码是大小写不敏感的。这里是一个非常简单的"Hello world"程序示例的源代码,在实际编程中,通常可以省略第一行的output。从语法整理上来看,很像 Delphi,基本上是一个等级的。另外,FPC 编译器安装后,居然显示是乱码,看来还是要下载(Turbo Pascal)更经典些,不过听说 Turbo Pascal 下载比较难,再说,能不能在 WIN*64 位的平台编译也不知道,就下了个 FPC 用用。
24. Prolog
write("Hello,World!").
#注意,句末有点号
说明:
Prolog(Programming in Logic)是一种逻辑编程语言。它建立在逻辑学的理论基础之上,最初被运用于自然语言等研究领域。现已广泛地应用在人工智能的研究中,可以用来建造专家系统、自然语言理解、智能知识库等。
25.Haskell
main = print("Hello World")
说明:
Haskell(发音为/ˈhæskəl/)是一种标准化的,通用的纯函数编程语言,有非限定性语义和强静态类型。它的命名源自美国逻辑学家哈斯凯尔·加里,他在数理逻辑方面上的工作使得函数式编程语言有了广泛的基础。在Haskell中,“函数是第一类对象”。作为一门函数编程语言,主要控制结构是函数。Haskell语言是1990年在编程语言Miranda的基础上标准化的,并且以λ演算为基础发展而来。这也是为什么Haskell语言以希腊字母“λ”(Lambda)作为自己的标志。Haskell具有“证明即程序、命题为类型”的特征。
This is a repeating version of Hello World in Haskell:
main = putStr (unlines (repeat "Hello World"))
26.cobol
000100 IDENTIFICATION DIVISION.
000200 PROGRAM-ID. HELLOWORLD.
000300 DATE-WRITTEN. 02/05/96 21:04.
000400* AUTHOR BRIAN COLLINS
000500 ENVIRONMENT DIVISION.
000600 CONFIGURATION SECTION.
000700 SOURCE-COMPUTER. RM-COBOL.
000800 OBJECT-COMPUTER. RM-COBOL.
000900
001000 DATA DIVISION.
001100 FILE SECTION.
001200
100000 PROCEDURE DIVISION.
100100
100200 MAIN-LOGIC SECTION.
100300 BEGIN.
100400 DISPLAY " " LINE 1 POSITION 1 ERASE EOS.
100500 DISPLAY "HELLO, WORLD." LINE 15 POSITION 10.
100600 STOP RUN.
100700 MAIN-LOGIC-EXIT.
100800 EXIT.
说明:
COBOL语言,是一种面向过程的高级程序设计语言,主要用于数据处理,是目前国际上应用最广泛的一种高级语言。COBOL是英文Common Business-Oriented Language的缩写,原意是面向商业的通用语言。它采用 300多个英语单词作为保留字,以一种接近于英语书面语言的形式来描述数据特性和数据处理过程,因而便于理解和学习。COBOL语言是专门为企业管理而设计的高级语言,可用于统计报表、财务会计、计划编制、作业调度、情报检索和人事管理等方面。
27.Erlang
-module(hello).
-export([hello_world/0]).
hello_world()->
io:format("Hello World ~n").
-----------------------------------------------------------------------
And Executing:
hello:hello_world().
说明:
Erlang在1991年由爱立信公司向用户推出了第一个版本,经过不断的改进完善和发展,在1996年爱立信又为所有的Erlang用户提供了一个非常实用且稳定的OTP软件库并在1998年发布了第一个开源版本。目前Erlang同时支持的操作系统有linux,windows,unix等,可以说适用于主流的操作系统上,尤其是它支持多核的特性非常适合现在的多核CPU,而分布式特性也可以很好融合目前的各种分布式集群。