现在的位置: 首页 > 自动控制 > 工业·编程 > 正文

程序员是否需要学习底层知识

2014-12-02 10:39 工业·编程 ⁄ 共 1036字 ⁄ 字号 暂无评论

这两天每天中午午休前都会看一些《编程人生》。现在已经看了七八个人,这些人开始编程的时候,正好是计算机的起步期,所以对整个计算机的底层都比较了解。不知道这是不是这些人能够成为大师的一个必要条件,自己有没有必要在这方面努力一下。我想这也是很多程序员思考过的问题。现在分享一下我的思考,和大家一起探讨。——ps:这些人大部分在中学的时候就开始编程,而那个时候我们一般都正在为考试闷头学习,这个差距要我们现在来弥补。

好的,首先有必要澄清一下“底层知识”的概念,对程序员来说什么才是底层知识?

一般情况下,我们可能会认为底层知识就是操作系统,编译器,寄存器等等相关知识。我认为这个问题是相对的,而不是绝对的。这取决于程序员从事那个层次的开发工作。如果是一个c语言开发者,把这些知识归为底层知识也许很合理,但是对一个java或者更高级语言的开发者来说,有些不准确,或者不可以称为直接的底层知识。

我认为,所谓的底层知识,是指他编程或开发所依赖的平台(或者框架,工具)的知识。比如,对于java开发者来说,java虚拟机,以及它所用的框架等知识就是他的底层知识,而更底层的知识,姑且叫它间接的底层知识吧。

为什么要学习底层知识?

不学习底层知识可能不会阻碍你称为一个称职的程序员,但也许会阻碍你成为一个优秀的程序员。

了解底层的知识有助于解决问题,并且做出更好的设计。打个比方,就像庖丁解牛,他看到一个牛后,不止看到的是牛,而是由各个骨骼,经络,肌肉等模块组成的有机体——整个系统对你来说就是赤裸裸的,没有任何神秘的面纱。这样也许能够给程序员提供更多的安全感。

但是如果你编程所依赖的平台需要你去了解更底层的知识才能够解决问题,那么,他可能没有做好他应尽的职责。

底层知识从何学习?

《编程人生》中有一个人提到过,要敢于去“打开盒子”,看里面到底是什么。而我要补充的是,尽量去打开你身边的盒子。

现在开发有个特点,就是分工越来越明确,而且整个编程的知识体系结构也越来越庞大,我们面前的“盒子”很多,我们没有精力去把每个盒子都打开。学习底层知识就要从你最直接的底层开始学起。一方面,你在工作中会遇到类似的问题,有了需求,学习效率就会高很多;另一方面,你也有这方面的基础,学起了可能更加的水到渠成。

当你把你的底层知识征服了,你就有资本(基础,能力)去征服更底层的知识了。

不学习最底层的知识是否会阻碍成为大师?

思考中。

发现我对学习本身的投入超过了对学习内容的投入。不知道是好事还是坏事。总之,要专心学习技术了。

给我留言

留言无头像?