架构师特刊:编程语言

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

作者:陈利人

大家都可能听过“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 的实践经验漫谈

免费下载此书(PDF)
免费下载此书(ePub)
免费下载此书(MOBI)

收藏

评论

微博

发表评论

注册/登录 InfoQ 发表评论

最新评论

Geek_ye 2018 年 11 月 15 日 13:39 1 回复
不能下载,一点下载浏览器就未响应了,什么地方出现了问题
没有更多了