看一门语言好不好,先看它的Hello World怎么写

一、引言:技术选型时,我第一件事就是看Hello World

作为一个写了十几年代码的老程序员,我养成了一个奇怪的习惯——每当接触一门新编程语言,我从来不先看官方文档里的“特性列表”或者“性能对比”,我第一件事永远是去搜它的Hello World代码长什么样。

这个习惯是我自己踩坑踩出来的。几年前公司要选一门新语言做微服务网关,候选者有Go、Rust和Java。三份技术方案写得天花乱坠,各有各的道理。后来我花了十分钟,把三种语言的Hello World代码摆在一起,心里立刻就有了答案。不是因为Hello World能告诉你哪门语言更快,而是它能把一门语言的性格——它的设计哲学、它的使用场景、它对程序员的态度——在短短几行代码里暴露得干干净净。

这篇文章,我就带你用这个“歪门邪道”的方法,通过Hello World这个镜子,把主流编程语言一个个看穿。


二、C语言——赤裸裸的真相,毫不遮掩

先来看C语言的Hello World:

c

复制

下载

#include <stdio.h>
int main() {
    printf("Hello, World!\n");
    return 0;
}

这六行代码里藏着什么信息?第一,你要手动包含头文件,说明C语言不提供任何“默认”的东西,一切都要你明确告诉编译器。第二,main函数必须返回int,因为你是在跟操作系统打交道,你的程序运行结束后要告诉系统“我正常退出了”。第三,printf不是语言内置的,它是一个库函数,你需要自己去管理内存,自己处理字符串。

这段Hello World透露出的C语言性格是:我不帮你做任何多余的事情,你让我做什么我就做什么,出了事你自己负责。所以C语言适合写操作系统、写嵌入式、写对性能要求极高的底层组件。但它的学习曲线陡峭,因为你要自己管的事情太多了。

三、Python——你只管说你要什么,剩下的我来

再来看Python的Hello World:

python

复制

下载

print("Hello, World!")

就一行。没有头文件,没有main函数,没有返回值,没有分号。Python把能省略的东西全省略了。你只需要告诉它“打印这句话”,它就直接替你做了。

这行代码泄露的Python哲学是:程序员的时间比机器的时间更宝贵,所以语法要尽量简洁、自然,读起来像英语。Python的Hello World几乎不需要任何编程基础,你只要认识英文单词就能看懂。因此Python成了数据科学、机器学习、自动化脚本的首选。它让你能快速验证想法,不用在语法细节上耗费精力。

但凡事都有代价——Python的简洁意味着它对底层细节做了大量封装,你很难通过这行Hello World去理解计算机到底是怎么工作的。这就像坐自动驾驶汽车,你不需要会开车就能到目的地,但你永远不会真正理解发动机是怎么转的。

四、Java——规矩比天大,格式大过天

Java的Hello World是这样的:

java

复制

下载

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, World!");
    }
}

九行代码,光是public classpublic static void这些修饰词就占了半壁江山。对一个新手来说,这个Hello World简直是天书——为什么必须放在类里?为什么main必须是public、static、void?为什么参数是String[] args

Java通过Hello World告诉你的是:我是一个讲究规范的语言,所有代码都必须放在类的框架里,哪怕你只打印一行字也不能例外。这种“强制性结构”让大型项目更容易维护,因为大家的代码风格统一,不会乱来。但代价就是,新手学习的门槛比Python高得多——你得先理解类和对象的概念,然后才能打印一行字,这个顺序在认知上是反直觉的。

所以Java适合做大型企业级应用,因为足够严谨、足够规范,但也因为它的这种“仪式感”,很多人第一课就放弃了。

五、Go——简洁但不简陋,务实才是王道

Go语言的Hello World:

go

复制

下载

package main
import "fmt"
func main() {
    fmt.Println("Hello, World!")
}

比C简洁,比Java简单,但又比Python多了几分“正式感”。有明确的package声明,有显式的importmain函数没有返回值,也没有复杂的修饰词。

Go的Hello World在告诉我:我是C语言的后代,但我把那些折磨人的细节(比如头文件、繁琐的语法)去掉了,我保留了清晰的模块结构,我让你一眼就能看出这个程序属于哪个包、依赖了什么库。这是一个实用主义者的选择——Go不追求极简,也不追求极致严谨,它追求的是“刚刚好”的平衡。这种性格让Go在云原生和后端开发领域大受欢迎,因为它的代码既好读又不会太松垮。

六、Rust——安全第一,哪怕多写几行

Rust的Hello World:

rust

复制

下载

fn main() {
    println!("Hello, World!");
}

乍一看跟Go有点像,但懂行的人知道,这个println!后面的感叹号是一个宏——它背后做了大量的编译期检查。Rust通过这个小小的Hello World其实在说:我很在意内存安全和并发安全,所以我会在编译时做尽可能多的检查,哪怕你的代码看起来很简单

Rust学习曲线陡峭是出了名的,因为你要理解所有权、借用、生命周期这些概念。但它的Hello World却故意伪装得很简单——因为Rust的设计者希望你先试试看,别一上来就被吓跑。等你真正开始写稍微复杂点的代码时,那些“安全约束”才会慢慢现身。所以Rust适合写系统软件、浏览器引擎、区块链等对安全性要求极高的场景。

七、JavaScript——灵活得有点“不正经”

JavaScript的Hello World分好几种,最常用的是:

javascript

复制

下载

console.log("Hello, World!");

或者在浏览器里:

javascript

复制

下载

alert("Hello, World!");

没有main函数,没有类,没有包声明,直接就打印了。这跟Python很像,但JavaScript更“随意”——你可以把函数赋值给变量,可以传参随便传,类型随时变。

JavaScript的Hello World告诉你的信息是:我是一个灵活到几乎没有规则的语言,你想怎么写都行,但正因为太灵活了,你很容易写出自己都不认识的代码。所以JavaScript统治了前端,因为它能快速响应需求变化,但也催生了TypeScript——大家觉得它太放纵了,需要加点约束。

八、Hello World还透露了工具的“气息”

除了语言语法本身,Hello World还能让你隐约感觉到这门语言的工具链是什么样的。

比如Java的Hello World运行前,你需要安装JDK、配置JAVA_HOME,还得用javac编译成字节码再用java运行,这背后是一套厚重的企业级工具链。而Python的Hello World,你只需要装好解释器,一行命令就完事。Go更贴心,自带了格式化工具gofmt,你写完Hello World顺手一格式化,代码整整齐齐。

工具链的风格直接影响了开发体验。一个复杂的Hello World,往往意味着这门语言在告诉你:我用我的方式做事,你需要适应我。而一个简单的Hello World,则是在说:我尽量不给你添麻烦

九、小结:别只看性能指标,先写个Hello World试试

所以,下次当你在技术选型中犹豫不决时,不妨先别忙着跑基准测试,先静下心来写一写它的Hello World。你不需要写复杂的代码,不需要设计什么系统架构,就打印一行字。在这个过程中,你会感受到编辑器的支持好不好、编译快不快、错误提示清不清晰、文档齐全不齐全、社区常见问题多不多。

这些感受,就是这门语言在跟你打的第一声招呼——它告诉你它是什么性格、它看重什么、它希望你怎么跟它相处。而你要做的,就是听听这个招呼,然后问自己一句:这个“朋友”,我想不想长久合作?

赞(0)
未经允许不得转载:helloworld官网下载 » 看一门语言好不好,先看它的Hello World怎么写