行业新闻
Group news
江苏宏丰木业有限公司    您的位置: 首页  >  行业新闻  >  正文

资深工程师编程经验之掌握把所有编程语言融会贯通

2019年11月01日 文章来源:网络整理 热度:102℃ 作者:刘英

对的,我这里要讲的不是如何掌握一种编程语言,而是所有的。如果你存在以下的种种困惑,那么这篇文章也许会对你有所帮助:

资深工程师编程经验之掌握把所有编程语言融会贯通


你是编程初学者,不知道该选择什么程序语言来入门。

你是资深的程序员或者团队领导,对新出现的种种语言感到困惑,不知道该“投资”哪种语言。

你的团队为使用哪种程序语言争论不休,发生各种斗争。

你追逐潮流采用了某种时髦的语言,结果两个月之后发现深陷泥潭。

程序语言一直是很重要的话题,这个情况短时间内不会改变。程序员的岗位往往会要求熟悉某些语言,甚至某些奇葩的公司要求你“深入理解 OOP 或者 FP 设计模式”。对于在职的程序员,程序语言至今仍然是可以争得面红耳赤的话题。

重视语言特性,而不是语言

很多人在乎自己或者别人是否“会”某种语言,对“发明”了某种语言的人倍加崇拜,为各种语言的孰优孰劣争得面红耳赤。这些问题对于我来说都是不存在的。虽然我写文章批评过不少语言的缺陷,在实际工作中我却很少跟人争论这些。为什么呢?我发现归根结底的原因,是因为我重视的是“语言特性”,而不是整个的“语言”。我能用任何语言写出不错的代码,就算再糟糕的语言也差不了多少。

任何一种“语言”,都是各种“语言特性”的组合。打个比方吧,一个程序语言就像一台电脑。它的牌子可能叫“联想”,或者“IBM”,或者“Dell”,或者“苹果”。那么,你可以说苹果一定比 IBM 好吗?你不能。你得看看它里面装的是什么型号的处理器,有多少个核,主频多少,有多少 L1 cache,L2 cache……,有多少内存和硬盘,显示器分辨率有多大,显卡是什么 GPU,网卡速度,等等各种“配置”。有时候你还得看各个组件之间的兼容性。

这些配置对应到程序语言里面,就是所谓“语言特性”。举一些语言特性的例子:

·

?变量定义

·?算术运算

·?for 循环语句,while 循环语句

·?函数定义,函数调用

·?递归

·?静态类型系统

·?类型推导

·?lambda 函数

·?面向对象

·?垃圾回收

·?指针算术

·?goto 语句

这些语言特性,就像你在选择一台电脑的时候,看它里面是什么配置。选电脑的时候,没有人会说 Dell 一定是最好的,他们只会说这个型号里面装的是 Intel 的 i7 处理器,这个比 i5 的好,DDR3 的内存 比 DDR2 的快这么多,SSD 比磁盘快很多,ATI 的显卡是垃圾…… 如此等。

程序语言也是一样的道理。对于初学者来说,其实没必要纠结到底要先学哪一种语言,再学哪一种。曾经有人给我发信问这种问题,纠结了好几个星期,结果一个语言都还没开始学。有这纠结的时间,其实都可以把他纠结过的语言全部掌握了。

初学者往往不理解,每一种语言里面必然有一套“通用”的特性。比如变量,函数,整数和浮点数运算,等等。这些是每个通用程序语言里面都必须有的,一个都不能少。你只要通过“某种语言”学会了这些特性,掌握这些特性的根本概念,就能随时把这些知识应用到任何其它语言。你为此投入的时间基本不会浪费。所以初学者纠结要“先学哪种语言”,这种时间花的很不值得,还不如随便挑一个语言,跳进去。

如果你不能用一种语言里面的基本特性写出好的代码,那你换成另外一种语言也无济于事。你会写出一样差的代码。我经常看到有些人 Java 代码写得相当乱,相当糟糕,却骂 Java 不好,雄心勃勃要换用 Go 语言。这些人没有明白,是否能写出好的代码在于人,而不在于语言。如果你的心中没有清晰简单的思维模型,你用任何语言表述出来都是一堆乱麻。如果你 Java 代码写得很糟糕,那么你写 Go 语言代码也会一样糟糕,甚至更差。

很多初学者不了解,一个高明的程序员如果开始用一种新的程序语言,他往往不是去看这个语言的大部头手册或者书籍,而是先有一个需要解决的问题。手头有了问题,他可以用两分钟浏览一下这语言的手册,看看这语言大概长什么样。然后,他直接拿起一段例子代码来开始修改捣鼓,想法把这代码改成自己正想解决的问题。在这个简短的过程中,他很快的掌握了这个语言,并用它表达出心里的想法。

在这个过程中,随着需求的出现,他可能会问这样的问题:

·?这个语言的“变量定义”是什么语法,需要“声明类型”吗,还是可以用“类型推导”?

·?它的“类型”是什么语法?是否支持“泛型”?泛型的 “variance” 如何表达?

·?这个语言的“函数”是什么语法,“函数调用”是什么语法,可否使用“缺省参数”?

上一篇:电路基础之电容的ESR知识点剖析


下一篇:51单片机知识分享之数码管模块开发

友情链接
Links
鸿运国际官网_鸿运国际备用网址