架构师特刊:编程语言

编程语言很多,既然存在,就有每个存在的理由。其实没必要评论哪个语言好,哪个语言不好。因为每个编程语言本身都不难,只要学会了一种语言,其他的都是相通的。难的,好坏之分,是理解,记忆,熟悉,和流畅的使用那些每个语言提供的基础库和扩展库,也就是LIBs,或是APIs,或是SDK,或是Frameworks。

作者:陈利人

大家都可能听过“PHP 是最好的语言”段子。

编程语言很多,既然存在,就有每个存在的理由。其实没必要评论哪个语言好,哪个语言不好。因为每个编程语言本身都不难,只要学会了一种语言,其他的都是相通的。难的,好坏之分,是理解,记忆,熟悉,和流畅的使用那些每个语言提供的基础库和扩展库,也就是 LIBs,或是 APIs,或是 SDK,或是 Frameworks。

编程语言本身,就最简单的集合来说,就是一堆保留的关键词和一堆的语法,这个大家稍微看看就都会明白,还有其设计思想。就和学一门外语一样,一些词汇加上一些词汇能组合的语法。这些通常包括的编程语言特性有:语句组成,变量定义,算术运算,循环语句,函数定义和调用,面向对象,指针操作,垃圾回收,输入输出等等。基础的东西,大家如果学过或是使用过一种语言,其他的新的语言,花个一两个小时就能基本理解,就能写出一个 hello world 的入门程序。

那么,好坏之分,难的部分,实际上是那些基础库和各种扩展库。这些库,必须在实践中一步一步熟悉和掌握。如果不经常使用,还特别容易忘记,尽管现代的编程环境有各种智能辅助。会不会,熟不熟一门语言,很大程度上是对他们的持续使用和理解。这也是为什么,没有多个项目,或是几年的实践,很难说是一个语言的高手。

比如同样对于网络的操作,有的语言的库包装的简单高级易用全面,有的语言就基础原始。那么对于那些有高级包装库的语言,大家就会觉得好,语言好用,开发效率高,想要什么都有,socket、tcp/ip、http、async/sync、select、event,甚至是 sever、client、crawler 等等。而对那些比较底层的包装的语言,大家就学觉得开发效率低,难用,比如只有 select 和 socket。是不是大概如此?

学习完了编程语言基础,大家一般要花很多的时间去了解和学习基础库和扩展库,这个才是真正的痛处和难点,学了不用还容易忘记,用到的时候还得想到有这个函数库。那么,如果有一套对各种语言都适用的 API 或是库函数定义,那么,大家学习和使用一门新的语言的效率会大幅度提高。这时,哪个语言最好,也就不再是什么问题了。

Protobuf、Thrift、COM、RPC 等等都已经在做这方面尝试,如果有一天,大家不管用什么编程语言,只要记住一套接口函数,那就太美好了。这时,估计没有人会再争论,PHP 是否是最好的语言了。

目录

今日头条 Go 建千亿级微服务的实践

Java 老矣,尚能饭否?

Python 向来以慢著称,为啥 Instagram 却唯独钟爱它?

我们为什么要选择小众语言 Rust 来实现 TiKV?

Clojure 太灵活,我们能如何驾驭它?

JavaScript 成为了一流语言

FreeWheel 基于 Go 的实践经验漫谈