本教程一步步演示如何在主流编程语言中写出并运行第一个 Hello World 程序,解释每行代码背后的含义、常见编译/运行命令、典型错误的排查方法,并说明字符编码与简单的国际化处理,适合刚上手的读者立刻实践并理解原理。

为什么从 Hello World 开始
把第一次写的程序叫做 Hello World,其实是一种约定俗成。它的价值不在于输出那句文字本身,而在于让你完成从编辑代码到看到输出的闭环:写代码、保存、编译或解释、运行、观察结果。这个过程像学骑自行车的第一圈,先学会平衡再讲技巧。
先说清楚要准备什么
没有复杂的前提,主要是三个东西:
- 编辑器:任何文本编辑器都行(例如 VS Code、Sublime、Vim、Notepad++),它负责把你想写的字符放进文件里。
- 运行环境:根据语言不同,你可能需要安装解释器(Python、Node.js、Ruby 等)或编译器(GCC、javac、Go、Rust)。
- 终端或命令行:在命令行里执行编译或运行命令,观察输出和错误信息。
关于编辑器与终端的简单提示
编辑器设置为 UTF-8 无 BOM,可以避免字符编码问题;终端也建议使用 UTF-8 编码,尤其你要输出中文时。
一览:各种语言的 Hello World(示例与运行方式)
下面我会按语言给出最精简的示例代码,并解释如何运行。如果你是初学者,挑一个最感兴趣的语言先练手即可。
C(经典,需编译)
// hello.c
#include <stdio.h>
int main(void) {
printf("Hello, World!\n");
return 0;
}
编译并运行(类 Unix):gcc hello.c -o hello 然后 ./hello。Windows 下使用 MinGW 或者 Visual Studio 的 cl。
C++(语法风格更现代)
// hello.cpp
#include <iostream>
int main() {
std::cout << "Hello, World!" << std::endl;
return 0;
}
编译:g++ hello.cpp -o hello,运行同 C。
Java(面向对象,需要类与 JVM)
// Hello.java
public class Hello {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
编译并运行:javac Hello.java 然后 java Hello。注意类名与文件名一致。
Python(解释型,入门友好)
# hello.py
print("Hello, World!")
运行:python hello.py 或 python3 hello.py。无需编译,改完保存直接运行。
JavaScript(浏览器与 Node.js 两种场景)
在 Node.js 环境:
// hello.js
console.log("Hello, World!");
运行:node hello.js。在网页里则把这句放进 <script> 标签,用开发者工具查看控制台输出。
Go(编译快、部署简单)
// hello.go
package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}
运行:go run hello.go 或先 go build 再执行二进制。
Rust(现代语言、注重安全)
// main.rs
fn main() {
println!("Hello, World!");
}
运行:rustc main.rs 然后执行生成的可执行文件,或用 cargo run(推荐项目管理)。
Ruby、PHP、Bash 等快速示例
# Ruby: hello.rb
puts "Hello, World!"
# PHP: hello.php
<?php
echo "Hello, World!\n";
# Bash: hello.sh
#!/bin/sh
echo "Hello, World!"
Ruby:ruby hello.rb;PHP CLI:php hello.php;Bash:sh hello.sh 或给执行权限后直接执行。
对比表格:文件扩展名、运行命令与是否需要编译
| 语言 | 扩展名 | 运行/编译命令示例 | 需编译 |
| C | *.c | gcc hello.c -o hello && ./hello | 是 |
| Java | *.java | javac Hello.java && java Hello | 是(字节码) |
| Python | *.py | python hello.py | 否 |
| JavaScript (Node) | *.js | node hello.js | 否 |
| Go | *.go | go run hello.go 或 go build | 是(编译为二进制) |
逐行理解:为什么每个语言都长这样
说白了,程序需要三个要素:输入的指令、用于把指令变成机器能懂的东西的过程(编译或解释)、以及一个能显示结果的地方(终端/控制台/浏览器)。Hello World 把这些步骤缩成最小的例子,让你看到端到端的流程。
- 头文件/导入语句(如 C 的 #include、Java 的 import):告诉编译器或运行时要用到哪些库。
- 入口函数(main):程序从这里开始执行;有些语言隐式提供入口(Python 的脚本直接从第一行执行)。
- 输出函数(printf、println、console.log):把信息写到标准输出。
常见错误与排查思路(那种看了就能改的小技巧)
出错时别慌,按步骤排查,像侦探一样找线索。
- 语法错误:编译器/解释器通常会给出行号,先看那一行常见拼写、缺分号、括号不匹配。
- 编码问题:中文或非 ASCII 输出出现乱码,检查文件是否保存为 UTF-8、终端是否使用 UTF-8。
- 路径问题:运行命令时“找不到文件”,确认当前目录与文件名、大小写是否匹配(Windows 不区分大小写,Unix 区分)。
- 权限问题:脚本无法执行,尝试 chmod +x(类 Unix)或用解释器直接运行。
示例:编译报错时如何定位
读取错误信息,从最后一条错误开始往回看,很多编译器会先报致命错误再给连锁错误。试着注释掉新加的代码,逐步缩小出错范围。
从 Hello World 扩展到简单的国际化(i18n)入门
既然你注意到 “Hello, World!” 是英语,那我们顺手讲下最基础的国际化问题,这对做多语言产品尤其重要(像出海翻译服务会天天遇到)。
字符编码:UTF-8 是基础
把源文件、终端、以及任何读写文本的工具都统一到 UTF-8,能避免大多数乱码问题。写下中文测试:print(“你好,世界”),看看输出是否正确。
不要把翻译等同于逐字替换
翻译是理解语境并以目标语言自然表达。举个例子:“Hello, World!” 在很多语言里可以直接翻译,但在品牌口号里往往需要本地化改写以传达相同情感。例如,广告语或应用欢迎词需要考虑文化习惯与情感色彩。
程序内多语言管理的简单模式
最简单的做法是把所有显示字符串放在资源文件里,根据用户语言选择加载:
// pseudo resource files
en.json: { "greeting": "Hello, World!" }
zh.json: { "greeting": "你好,世界!" }
程序运行时读取对应的文件并输出对应键的值。很多框架和库都有成熟的 i18n 支持,这里先理解思想就好。
把 Hello World 变成交互小程序——一步步来
单纯输出一句话没什么意思,试试让程序接受输入,然后显示对应的问候,这样能学到参数处理与条件分支。
# Python 示例:按名问候
name = input("请输入你的名字:")
print(f"你好,{name}!")
你会接触到输入函数、格式化字符串、以及基本的流程控制。如果再加上语言选择,你就完成了一个非常 primitive 的多语言问候程序。
进一步学习的路线建议(懒人可照着走)
- 先在一门语言上把从编辑到运行的流程熟练,把错误处理置为习惯。
- 学会使用调试工具:断点、打印日志、逐步执行。
- 了解版本管理(Git),把你的 Hello World 变成一个有 README 的小项目。
- 尝试把输出本地化:添加资源文件,加载不同语言并验证编码。
现实中的小提示(那些我平时会犯、但学会后就少犯的事)
- 别把所有东西一次性改动。第一次运行失败时,先回退到能运行的版本,再逐步改。
- 命令行复制粘贴要小心引号类型。从网页复制代码时,有时会把直引号换成花引号,导致语法错误。
- 记得查看版本。Python2/3、Node 不同版本行为差异会让你抓狂。
参考书目(可以继续深入的好书)
- 《程序设计思想》——理解编程基础的好帮手
- 《UNIX 编程艺术》——了解终端与工具链的重要书籍
- 《软件本地化实战》——关于国际化与本地化的操作细节
写到这里我忽然想起第一次在宿舍用旧电脑学编程的日子:把 Hello World 打完后,迫不及待把文字改成自己名字,结果输出乱码了——最后发现是文件不是 UTF-8,改好那刻比通过一道难题更快乐。你可以从最简单的开始,慢慢把工具链、编码与本地化的概念拼起来,下一次你会更淡定地面对报错,调整环境,甚至把一句问候变成跨语言、跨文化的真实体验。就这样吧,动手试试,把例子敲一遍,出错也没关系,正是最好教你的时候。