程序员是否需要学习底层知识?
这两天每天中午午休前都会看一些《编程人生》。现在已经看了七八个人,这些人开始编程的时候,正好是计算机的起步期,所以对整个计算机的底层都比较了解。不知道这是不是这些人能够成为大师的一个必要条件,自己有没有必要在这方面努力一下。我想这也是很多程序员思考过的问题。现在分享一下我的思考,和大家一起探讨。——ps:这些人大部分在中学的时候就开始编程,而那个时候我们一般都正在为考试闷头学习,这个差距要我们现在来弥补。
好的,首先有必要澄清一下“底层知识”的概念,对程序员来说什么才是底层知识?
一般情况下,我们可能会认为底层知识就是操作系统,编译器,寄存器等等相关知识。我认为这个问题是相对的,而不是绝对的。这取决于程序员从事那个层次的开发工作。如果是一个c语言开发者,把这些知识归为底层知识也许很合理,但是对一个java或者更高级语言的开发者来说,有些不准确,或者不可以称为直接的底层知识。
我认为,所谓的底层知识,是指他编程或开发所依赖的平台(或者框架,工具)的知识。比如,对于java开发者来说,java虚拟机,以及它所用的框架等知识就是他的底层知识,而更底层的知识,姑且叫它间接的底层知识吧。
为什么要学习底层知识?
不学习底层知识可能不会阻碍你称为一个称职的程序员,但也许会阻碍你成为一个优秀的程序员。
了解底层的知识有助于解决问题,并且做出更好的设计。打个比方,就像庖丁解牛,他看到一个牛后,不止看到的是牛,而是由各个骨骼,经络,肌肉等模块组成的有机体——整个系统对你来说就是赤裸裸的,没有任何神秘的面纱。这样也许能够给程序员提供更多的安全感。
但是如果你编程所依赖的平台需要你去了解更底层的知识才能够解决问题,那么,他可能没有做好他应尽的职责。
底层知识从何学习?
《编程人生》中有一个人提到过,要敢于去“打开盒子”,看里面到底是什么。而我要补充的是,尽量去打开你身边的盒子。
现在开发有个特点,就是分工越来越明确,而且整个编程的知识体系结构也越来越庞大,我们面前的“盒子”很多,我们没有精力去把每个盒子都打开。学习底层知识就要从你最直接的底层开始学起。一方面,你在工作中会遇到类似的问题,有了需求,学习效率就会高很多;另一方面,你也有这方面的基础,学起了可能更加的水到渠成。
当你把你的底层知识征服了,你就有资本(基础,能力)去征服更底层的知识了。
不学习最底层的知识是否会阻碍成为大师?
思考中。
发现我对学习本身的投入超过了对学习内容的投入。不知道是好事还是坏事。总之,要专心学习技术了。
程序员是否需要学习底层知识?
这两天每天中午午休前都会看一些《编程人生》。现在已经看了七八个人,这些人开始编程的时候,正好是计算机的起步期,所以对整个计算机的底层都比较了解。不知道这是不是这些人能够成为大师的一个必要条件,自己有没有必要在这方面努力一下。我想这也是很多程序员思考过的问题。现在分享一下我的思考,和大家一起探讨。——ps:这些人大部分在中学的时候就开始编程,而那个时候我们一般都正在为考试闷头学习,这个差距要我们现在来弥补。
好的,首先有必要澄清一下“底层知识”的概念,对程序员来说什么才是底层知识?
一般情况下,我们可能会认为底层知识就是操作系统,编译器,寄存器等等相关知识。我认为这个问题是相对的,而不是绝对的。这取决于程序员从事那个层次的开发工作。如果是一个c语言开发者,把这些知识归为底层知识也许很合理,但是对一个java或者更高级语言的开发者来说,有些不准确,或者不可以称为直接的底层知识。
我认为,所谓的底层知识,是指他编程或开发所依赖的平台(或者框架,工具)的知识。比如,对于java开发者来说,java虚拟机,以及它所用的框架等知识就是他的底层知识,而更底层的知识,姑且叫它间接的底层知识吧。
为什么要学习底层知识?
不学习底层知识可能不会阻碍你称为一个称职的程序员,但也许会阻碍你成为一个优秀的程序员。
了解底层的知识有助于解决问题,并且做出更好的设计。打个比方,就像庖丁解牛,他看到一个牛后,不止看到的是牛,而是由各个骨骼,经络,肌肉等模块组成的有机体——整个系统对你来说就是赤裸裸的,没有任何神秘的面纱。这样也许能够给程序员提供更多的安全感。
但是如果你编程所依赖的平台需要你去了解更底层的知识才能够解决问题,那么,他可能没有做好他应尽的职责。
底层知识从何学习?
《编程人生》中有一个人提到过,要敢于去“打开盒子”,看里面到底是什么。而我要补充的是,尽量去打开你身边的盒子。
现在开发有个特点,就是分工越来越明确,而且整个编程的知识体系结构也越来越庞大,我们面前的“盒子”很多,我们没有精力去把每个盒子都打开。学习底层知识就要从你最直接的底层开始学起。一方面,你在工作中会遇到类似的问题,有了需求,学习效率就会高很多;另一方面,你也有这方面的基础,学起了可能更加的水到渠成。
当你把你的底层知识征服了,你就有资本(基础,能力)去征服更底层的知识了。
不学习最底层的知识是否会阻碍成为大师?
思考中。
发现我对学习本身的投入超过了对学习内容的投入。不知道是好事还是坏事。总之,要专心学习技术了。
分享到:
相关推荐
知识点/面试题总结 : (必看 ): Java 基础常见知识点&面试题总结(上) Java 基础常见知识点&面试题总结(中) Java 基础常见知识点&面试题总结(下) 重要知识点详解: 为什么 Java 中只有值传递? Java 序列化详解 ...
知识点/面试题总结 : (必看 ): Java 基础常见知识点&面试题总结(上) Java 基础常见知识点&面试题总结(中) Java 基础常见知识点&面试题总结(下) 重要知识点详解 : 为什么 Java 中只有值传递? Java 序列化详解 ...
这部教程已经发布了 5 年,经历了 5 次大改版,既适合初学者入门(学习语法),也适合程序员进阶(学习底层)。 学习C语言,除了要学习语法,还要学习内存、字符编码、调试技巧以及编程思维,这些知识点本教程都做了...
C++成山似海的书籍堆中,这一本不是婴幼儿奶粉,也不是较大婴儿奶粉,它是成人专用的低脂高钙特殊奶粉。...如果你是一位C++程序员,渴望对于底层知识获得一个完整的了解,那么Inside The C++ Object Model正适合你。
《深度探索C++对象模型》涵盖了C++对象模型的语意暗示,并指出这个模型是如何影响你的程序的。... 如果你是一位C++程序员,渴望对于底层知识获得一个完整的了解,那么Inside The C++ Object Model正适合你。
此阶段为入职java必备知识,必须牢牢掌握,把基础砸实是学习的根基,会让后面的内容学习变得游刃有余 2. Java设计模式 Java程序员核心技术必备,设计模式,快速通透! 3. 强化编程-数据结构与算法 学习常见的数据...
这些新鲜的技术掩盖了许多底层的原理,要想真正的学习技术还是走下云端,扎扎实实的把基础知识学好,有了这些基础,要掌握那些新技术也就很容易了。 要编写出优秀的代码同样要扎实的基础,如果排序和查找算法学的...
深度探索c++模型 侯捷译 本书重点:探索“对象导向程序所支持的C++对象模型”下的程序行为。... 如果你是一位C++程序员,渴望对于底层知识获得一个完整的了解,那么Inside The C++ Object Model正适合你。
:这本书是所有程序员都应该读的,我认为很多程序员可以对底层知识忽略,这种忽略会让你很快走到瓶颈,如果想要突破瓶颈,必须有一些底层知识的体系,这本书和它的实验都是很好地学习例子,不必深究,但是需要会。...
Inside The C++ Object Model专注于C++对象导向程序设计的底层机制,包括结构式语意、暂时性对象的生成、... 如果你是一位C++程序员,渴望对于底层知识获得一个完整的了解,那么Inside The C++ Object Model正适合你。
Inside The C++ Object Model专注于C++对象导向程序设计的底层机制,包括结构式语意、暂时性对象的生成、...如果你是一位C++程序员,渴望对于底层知识获得一个完整的了解,那么Inside The C++ Object Model正适合你。
异步 I/O 模型和 Lock-Free 编程(系统底层知识) Java 底层知识 数据库 分布式架构入门(分布式架构) 分布式架构经典图书和论文(分布式架构) 分布式架构工程设计(分布式架构) 微服务 容器化和自动化运维 机器...
此阶段为入职java必备知识,必须牢牢掌握,把基础砸实是学习的根基,会让后面的内容学习变得游刃有余 2. Java设计模式 Java程序员核心技术必备,设计模式,快速通透! 3. 强化编程-数据结构与算法 学习常见的数据...
【内容简介】 Inside The C++ Object Model专注于C++对象导向程序设计的底层机制,包括结构式语意、暂时性...如果你是一位C++程序员,渴望对于底层知识获得一个完整的了解,那么Inside The C++ Object Model正适合你。
系统、内存和网络(系统底层知识) 异步 I/O 模型和 Lock-Free 编程(系统底层知识) Java 底层知识 数据库 分布式架构入门(分布式架构) 分布式架构经典图书和论文(分布式架构) 分布式架构工程设计 (分布式架构)...
深度探索c++对象模型.pdf Inside The C++ Object Model专注于C++对象导向程序设计的底层机制,包括结构式...如果你是一位C++程序员,渴望对于底层知识获得一个完整的了解,那么Inside The C++ Object Model正适合你。
适用人群:适合对汇编语言感兴趣的学习者、程序员以及想要深入了解计算机底层运行原理的人群。无论是初学者还是有一定编程经验的用户,都可以从本教程中获取有益的指导和实践经验。 使用场景及目标:可用于个人学习...
leetcode卡 ARTS 每周完成一个ARTS任务 Algorithm:每周至少做一个 ...或者是学习技术的底层, 深入了解原理.将学到的知识进行总结与归纳成体系. 分享(Share) 直接看纸质书的话,需要做笔记,看别人博客也得思考. 学习某新
此阶段为入职java必备知识,必须牢牢掌握,把基础砸实是学习的根基,会让后面的内容学习变得游刃有余 2. Java设计模式 Java程序员核心技术必备,设计模式,快速通透! 3. 强化编程-数据结构与算法 学习常见的数据...