`
touchinsert
  • 浏览: 1368970 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

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

 
阅读更多

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

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

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

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

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

为什么要学习底层知识?

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

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

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

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

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

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

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

思考中。

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

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

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

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

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

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

为什么要学习底层知识?

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

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

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

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

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

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

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

思考中。

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

分享到:
评论

相关推荐

    一个程序员应该具备的基础知识和概念--经典

    在IT行业中,成为一名优秀的程序员不仅仅是掌握一两种编程语言那么简单,还需要具备广泛而扎实的基础知识与概念。本文将根据提供的内容概述一个程序员应该具备的基础知识和概念,并深入探讨每个知识点的重要性及其...

    程序员面试快速基础知识必读

    《程序员面试快速基础知识必读》是一份集合了多个IT领域核心知识的综合资源,旨在帮助程序员在面试前高效地复习和准备。这份资料涵盖了数据库、Java编程、算法、C语言、C++语言、计算机网络以及操作系统等多个关键...

    要想成为一名优秀的程序员需要重点掌握那些知识.doc

    要想成为一名优秀的程序员需要重点掌握那些知识 要想成为一名优秀的程序员,需要掌握的知识非常广泛。今天,我们来讨论一下 Web 程序员应该具备的知识点。 首先,让我们来谈谈脚本技术。作为一名 Web 程序员,掌握...

    一个Java程序员的C++学习之路

    本文将深入探讨一位Java程序员学习C++的过程及其心得体会,旨在为那些希望从Java转向C++的朋友们提供一些有价值的建议。 #### Java到C++的学习路径 对于已经熟悉Java的程序员来说,学习C++可能会遇到不少挑战,但...

    java程序员必须掌握的基础知识

    作为一名合格的Java程序员,除了精通Java本身外,还需要具备一定的广度知识。这包括但不限于数据库操作(如SQL查询)、常用开源框架(如Spring、Hibernate)的使用、Web服务器配置(如Tomcat、Jetty)等。此外,熟悉...

    程序员最需要的精品学习笔记.zip

    《程序员最需要的精品学习笔记》是一份包含全方位IT程序员入门至进阶的宝贵资料集。这份压缩包中,你可以找到一系列精心整理的学习资源,涵盖了从基础到高级的多个领域,旨在帮助有志于IT行业的新人快速成长。下面将...

    【游戏开发】一个游戏程序员的学习资料

    ### 游戏开发中游戏程序员学习资料的关键知识点 #### 一、基础知识与算法的重要性 **游戏程序员**在学习过程中,必须掌握扎实的基础知识与算法。这些基础能力将为后续复杂的游戏逻辑开发提供坚实的支撑。 1. **...

    C_C++程序员大全 代码+学习软件

    学习C/C++还需要理解编译器的工作原理,比如GCC(GNU Compiler Collection)或Clang,它们将源代码转换为可执行文件。理解编译错误和警告信息也是提高编程技能的关键步骤。此外,熟悉Makefile可以有效地组织和构建...

    为什么每个程序员都应该学习 C 语言?.pdf

    程序员之所以需要学习C语言,原因如下: 1. 理解计算机底层原理:C语言是一种低级语言,它与计算机硬件非常接近。通过学习C语言,程序员能够更深刻地理解计算机的工作原理,包括内存管理、指针操作、硬件接口等。...

    79程序员练级攻略(2018):Java底层知识1

    【Java底层知识详解】 在Java开发领域,深入理解底层机制是提升编程技能的关键步骤。本文将探讨Java字节码编程、Java Agent以及JVM的相关知识,帮助Java程序员提升到更高的技术水平。 **Java字节码编程** Java字节...

    从程序员角度深入计算机系统的底层

    本文将从程序员的角度,深入探讨计算机系统底层知识,特别是现代操作系统内核的工作原理,重点关注Linux、Windows和Intel处理器。 首先,要理解现代计算机是如何连接各个组件的。现代计算机主板一般包括北桥和南桥...

    程序员必知的硬核知识大全

    程序员在职业生涯中,掌握一些硬核知识是必不可少的。这些知识涵盖了从计算机底层到上层应用的多个领域,包括但不限于CPU、内存管理、进制...随着技术的发展,程序员需要不断学习和适应新的技术和框架,以保持竞争力。

    程序员的思维修炼 开发认知潜能的九堂课.pdf

    7. 学习策略和持续学习:随着技术的快速发展,程序员需要不断更新他们的技能。课程可能包括有效学习策略的建立、资源的选择和利用、以及终身学习的习惯的形成。 8. 时间管理和优先级设定:教授如何有效地安排工作,...

    「Java学习+面试指南」一份涵盖大部分 Java 程序员所需要掌握的核心知识

    知识点/面试题总结 : (必看 ): Java 基础常见知识点&面试题总结(上) Java 基础常见知识点&面试题总结(中) Java 基础常见知识点&面试题总结(下) 重要知识点详解: 为什么 Java 中只有值传递? Java 序列化详解 ...

    【Java学习+面试指南】 一份涵盖大部分Java程序员所需要掌握的核心知识

    知识点/面试题总结 : (必看 ): Java 基础常见知识点&面试题总结(上) Java 基础常见知识点&面试题总结(中) Java 基础常见知识点&面试题总结(下) 重要知识点详解: 为什么 Java 中只有值传递? Java 序列化详解 ...

    游戏程序员编程方向

    #### 一、游戏程序员学习方向概述 在游戏开发领域,游戏程序员扮演着至关重要的角色。他们不仅需要具备扎实的编程基础,还需要对特定的技术领域有深入的理解。根据提供的部分内容,我们可以提炼出游戏程序员在编程...

    程序员教程

    【程序员教程】是一系列针对程序员的学习资源,涵盖了程序员在职业发展过程中所需掌握的各种技能和知识。这个教程旨在帮助初学者入门编程,同时也为有经验的程序员提供深入学习和提升的平台。下面,我们将详细探讨...

    程序员高级程序员 程序设计辅助理解软件

    这个压缩包可能包含了关于以上知识点的教程、案例分析、习题集等,通过系统学习,可以帮助程序员深化对软件设计的理解,提升编程技能,为成为高级程序员或软件设计师打下坚实基础。同时,对于准备参加软考的人员来说...

    免费开源-【Java学习+面试指南】部分内容大部分是Java程序员所需要掌握的核心知识

    基础知识点/面试题总结:(必看):Java基础常见知识点&面试题总结(上)Java基础常见知识点&面试题总结(中)Java基础常见知识点&面试题总结(下)重要知识点详解:为什么Java中只有值传递?Java序列化详解泛型&...

    作为一个程序员的最基本要求

    成为一个优秀的程序员并非易事,它需要的不仅仅是一两门编程课程的学习。以下是对成为一名好的程序员所必需的关键要素的详细解释: 首先,扎实的基础知识是程序员的基石。这包括理解计算机科学的基本概念,如数据...

Global site tag (gtag.js) - Google Analytics