|
基础知识的学习对于任何一个专业领域的学习都是非常重要的!
任何一个知识体系都是紧密相连的,如果没有夯实的基础,只懂落地不懂原理,自身就很难随着技术一起更新和迭代,导致只能被动而艰难地不停学习应用层级的知识,甚至在实现层面的方向上也容易出现较多的错误。
所以人邮君认为要做好任何一个行业,底层基础知识的学习都是非常重要的。
对于所有领域的学习,我们都可以将其分为以上应用—> 原理—>宏观这三个阶段。
我们不能否认从应用层面开始学习的价值。都说兴趣是最好的老师,从应用层面对某一领域产生兴趣的确是非常好的选择,毕竟基础原理层普遍有着较为枯燥的特点。例如计算机基础中的数据结构、汇编、操作系统等理论,以及技术文章和书籍大多是较为枯燥的。如果不结合项目中的案例去探索,这些生涩的理论知识的确很难潜下心来学习。
所以从应用方法与实例入手—> 下沉回到基础的原理知识学习塑造整体领域的认知—> 领悟全局后思考宏观更广阔的大局的学习路径的确是较为普遍且合理的路径。
应用—> 原理—>宏观的学习路径其实相对应的也是程序员的三个阶段,第一阶段码农,第二阶段程序员,第三个阶段架构师。
对于程序员而言,在从低层向高层递进的过程中,人邮君认为比较合理的路径是入门应用层后,从工作中接触到的知识开始学起,探索该知识点的原理,并思考与之关联的知识点。这样,对底层的理解逐渐铺开,当学习到的知识足够多能够成体系的时候,从宏观层级看问题就不是很大的问题了。
在工作中,基础知识薄弱究竟会影响我们多少呢?举两个例子。
我们以编译原理为例:
学习编译原理目的是掌握编译程序构造的一般原理和基本方法,帮助人们理解人类语言是如何转换为计算机语言的。这能帮助我们理解技术的迭代原因,例如JavaScript的V8编译器和Java的JIT编译器都使用Sea of Nodes做优化,理解这种优化形式,能够在统一表达形式中,充分发挥分析作用。
以进程和线程为例:
理解进程与线程的关系、进程和线程之间如何进行创建、执行的状态之间的转变涉及到的并发和并行、线程之间的竞争与合作、线程的实现方式、用户级线程和内核线程的对应方式等等这些都应该是程序员必备的知识。
在编程的过程中这些知识点都是可以直接应用的,如果深入学习还会发现其中的一些概念还可以拓展到其他知识中,例如理解了线程的实现方式,就能迅速理解go语言的并发手段goroutine,再比如CAS即是编程语言的概念,还能在更新数据库中使用。
《C++多线程编程实战》一书中这样简略演示进程与线程的关系:
4个程序调度一个单核CPU多任务处理系统演示图
执行4个进程的一个多核CPU多任务处理系统演示图
进程在单核CPU中的运行情况演示图:随着时间的推移虽然有不同程度的进展,但在每一刻单核仅能运行一个进程
在传统的操作系统中,每个进程都有一个地址空间和一个控制线程。在许多情况下,一个进程的地址空间中要执行多个线程,在准并行上下文中,这些线程就像是不同的进程一样。有多个线程的主要原因是,许多应用程序都要求能立即执行多项操作。
当然,某些操作可以等待(阻塞)一段时间。把运行在准并行上下文中的应用程序分解成多个单独的线程,程序设计模型就变得更简单了。通过添加线程,操作系统提供了一个新特性:并行实体能共享一个地址空间和它们的所有数据。这是执行并发的必要条件。
C++多线程编程实战(异步图书出品)
学习计算机基础知识,给大家推荐一下异步社区(www.epubit.com)的这个学习小视频(扫码可观看)。
20分钟的视频帮助大家全面了解计算机基础所涵盖的部分。
关于更加深入的计算机基础知识人邮君在这里为大家推荐三本书《计算机科学概论》《现代编译原理》《程序是如何跑起来的》。
《计算机科学概论》
计算机科学概论(第12版)(异步图书出品)
这本书是计算机科学概论课程的经典教材,全书对计算机科学做了百科全书式的精彩阐述,充分展现了计算机科学的历史背景、发展历程和新的技术趋势。
《计算机科学概论》首先介绍的是信息编码及计算机体系结构的基本原理,进而讲述操作系统和组网及因特网,接着探讨算法、程序设计语言及软件工程,然后讨论数据抽象和数据库方面的问题,讲述图形学的一些主要应用以及人工智能,以计算理论的介绍结束全书。这本书在内容编排上由具体到抽象逐步推进,很适合教学安排,每一个主题自然而然地引导出下一个主题。此外,书中还包含大量的图、表和示例,有助于读者对知识的了解与把握。
第12版主要是将Python程序设计语言方面的介绍纳入了重点章节,除了增加与Python相关的内容,几乎每一章都能看到对前一版对应章节的修订、更新以及修正。
《现代编译原理》
现代编译原理 C语言描述 修订版(图灵出品)
被称之为“虎书”的《现代编译原理》全面讲述了现代编译器的各个组成部分,包括词法分析、语法分析、抽象语法、语义检查、中间代码表示、指令选择、数据流分析、寄存器分配以及运行时系统等。
全书分成两部分,第一部分是编译的基础知识,适用于第一门编译原理课程(一个学期);第二部分是高级主题,包括面向对象语言和函数语言、垃圾收集、循环优化、存储结构优化等,适合于后续课程或研究生教学。
《程序是怎样跑起来的》
图灵程序设计丛书:程序是怎样跑起来的(图灵出品)
这本书从计算机的内部结构开始讲起,以图配文的形式详细讲解了二进制、内存、数据压缩、源文件和可执行文件、操作系统和应用程序的关系、汇编语言、硬件控制方法等内容,目的是让读者了解从用户双击程序图标到程序开始运行之间到底发生了什么。同时专设了“如果是你,你会怎样介绍?”专栏,以小学生、老奶奶为对象讲解程序的运行原理,颇为有趣。
本书图文并茂,通俗易懂,非常适合计算机爱好者及相关从业人员阅读。
相信这几本书籍的学习能帮助大家更好地了解计算机基础,提升自身专业素质,成为更优秀的程序员。 |
|