xxleyi / learning_list

聚集自己的学习笔记
10 stars 3 forks source link

程序员是否真的有必要不断学习新的编程语言呢? #277

Open xxleyi opened 3 years ago

xxleyi commented 3 years ago

作为转行入门级程序员,这个问题一直伴随着我,最近看到一个比较有说服力的解释,虽然其本意并不是回答这个问题,而是回答这样一个问题:为什么不断有新的编程语言诞生或流行呢?为什么不是少数几个语言就足够了呢?

我看到的解释是正向推导,我试着反向重述一下:

新语言能不断产生且确实也在不断出现新的流行语言的直接原因是,这真真切切的带来了足够大的好处。

没有什么事情是新语言能做,但旧语言不能通过进一步扩展升级来支持的。所以一定是在某些情况下,开发新语言带来的净收益远远高过了扩展旧语言带来的净收益。

参照历史可发现,这某些情况一般是出现了新的规模足够大、前景足够好的编程领域。

开发新编程语言的成本并没想象中那么高,真正的成本大头是大量程序员掌握新语言所需花费的时间和精力。

这说明,理论上有很多图灵完备的编程语言,现实中却全是面向特定领域优化过的 DSL。

所以我就直接说结论了:要不断学习新编程语言的真实意思是,不要把自己搞成一个只是在某个特定领域混饭吃的程序员,那样危险系数很高,却没有相应的收益,还丧失了把握新机会的能力。

所以不断学习新语言的潜在意思或许是:程序员自己需要追求图灵完备,同时还需要将自己学习新语言的成本降到足够低,让自己在新领域中面对新人冲击时也同样拥有足够的净竞争力。

编程语言如此,框架和库就更是如此了。

那要怎么做呢?学习编程语言和框架背后的东西,这些东西更通用,可迁移性远远高过编程语言和框架自身。

背后的东西是什么呢?至少包括编译器、数据结构与算法、编程范式、设计模式、系统设计(典型如计算机系统、操作系统、互联网、数据库、分布式系统)等等