寒假过半,今天正好是第三周的周末,读完了《程序是怎样跑起来的》。最近很少做手撕代码的事,却读了一些基础知识相关的书。俗话说,快就是慢,慢就是快。不要一味追求代码代码,最后却忘了本质的东西。
诚然,身为一个程序员,只要能够写出正确无误的代码,程序能够按照预想的运行,也算是一个合格的程序员。但这却不是一个优秀的程序员,高级语言的出现,越来越解放了程序员的生产力,我们编写一个程序,可能再也不需要考虑与硬件相关的东西,我们欣喜的同时可能也会因为底层知识的缺乏而遇到程序出错了都不知道该怎么去解决。
我比较任何书中一个比喻:没有汇编语言经验的程序员,就相当于只知道汽车的驾驶方法而不了解汽车结构的驾驶员。对这样的驾驶员来说,如果汽车出现了故障或奇怪的现象,他们就无法自己找到原因。而与此相对,有汇编语言经验的程序员,也就相当于了解计算机和程序机制的驾驶员,他们不仅能自己解决问题,还能在驾驶过程中省油。能够了解程序运行的根本机制,不仅是作为一个程序员基本的职业素养,而且在实际的编程中,还能将这些活学活用,提高自己的工作效率。举个简单的例子:将1扩大为原来的两倍,我们可以使用1*2
来计算,但是如果我们了解移位运算,使用1<<1
也能达到同样的效果,将1左移1位就是扩大为原来的两倍,因为移位运算更贴近计算机的底层,所以运算效率更高,而乘法运算在计算机的内部是通过相加来实现的,又需要累加计数器的参与,所以效率会低。当然现在的计算机运算速度都相当快,要是这样的一个运算,根本也差不了什么,在这里我只是举个例子说明了解了程序运行的根本机制对我们编程的好处。
同之前的两本书一样,这本书所涉及的知识面也是相当广的,不光有计算机的内部结构、二进制、内存,还涉及源文件和可执行文件、操作系统、计算机组成原理、汇编等等。而且总的难度不大,不管是小白还是初级程序员,都可以轻松阅读,我是只用了3天时间就一口气读完了,可能有点囫囵吞枣,但也是感觉收获颇丰(打住!这不是广告!)正如一句话,万变不离其宗。现在的技术日新月异,我们必须要在纷杂的世界中抓住本质,这样才能很快的掌握并提高利用效率,前端前几年还是jQuery的天下,现在已经是三大框架鼎足,未来是什么谁也不知道,但是计算机的功能这几十年来却几乎没有太大的变化,计算机仅仅是做输入、运算、输出这三件再普通不过的事,如果我们了解了本质,那即使有新技术诞生,相信我们还会很容易理解并掌握的。
网友评论