简单来说就是:万丈高楼平地起,站得高看得远。
如果将编程知识体系比作一座大楼,理论基础是大楼的地基,地基打不好,大楼就会存在隐患。所以如果你想在计算机行业走下去,基础一定学好。
计算机组成原理:理解CPU运行原理、汇编语言等在特定场景下能够压榨CPU性能;
计算机网络:计算机网络有着相当复杂的体系结构,对分层使用到极致,基于不同的层次实现不同的功能,清晰且自然,其思路对其他方面的学习也大有裨益;
操作系统:了解操作系统原理让我们对程序的运行有所把握,学习Linux的一些操作是后台编程的必备技能;
设计模式:学设计模式,是为了学习如何合理的组织我们的代码,如何解耦,如何真正的达到对修改封闭对扩展开放的效果;
数据结构与算法:从leetcode上可以找到的算法分类包括字符串、数组、链表、树、图、查找、排序、归并、动态规划等。在实际的使用中,虽然我们经常通过调用库函数的方式使用这些算法,但有过实际的经验并且了解算法的优缺点在关键的时刻能迅速解决问题,比如快排是不稳定的,即{int a,int b}这样的结构按照b的大小排序,a的顺序每次可能都不一样。
学习顺序其实不重要,在学一门的时候把其他内容适当联系起来就行,没有谁是谁的绝对前提。
《计算机网络》《操作系统》《 组成原理》《 数据库》这几个课程,都是相对独立的课程,但是学习过程中肯定会有一些关联,比如,学习《计算机网络》就可能要设计到单个计算机的硬件组成,和《组成原理》就产生关联了,学习《数据库》也可能要了解《操作系统》中的进程线程概念才知道Race Condition是怎么回事,这又是新的关联。
他们之间的内在联系:
计算机系统是由硬件和软件两部分组成,《计算机组成原理》讲述的是计算机的硬件组成原理,《操作系统》讲述的是配置在计算机硬件上的第一层软件,而《计算机组成原理》和《操作系统》就组成了一台PC机;而《计算机网络》则是实现了一台台独立的PC机之间的联系,实现了PC机之间的数据共享,而计算机的最终任务就是数据的处理,而处理的这些数据有不同的《数据结构与算法》,不同的数据结构与算法决定了计算机处理数据的效率。他们就组成了计算机技术中最核心最基础的知识。也是我们需要重点掌握的。
再者,在这些学习的基础之上,《编译原理》和《数据库原理》是基于这些课程的,这些课程对于理解编译器的原理和理解数据库的原理非常重要。
在这些之上,可以继续学习《软件工程》等课程,这些课程对提高我们的软件工程实践至关重要,万物离不开实践,最后要为解决实际的项目服务。
计算机基础理论,下面这些书你都可以看:
关于计算机史我推荐这些书籍,相信看完这些你会对计算机有不一样的印象:
除此之外还有《浪潮之巅》、《编程珠玑》、《不插电的计算机科学》、《点石成金》、《启示录》等等这些书让大家近距离了解计算机行业,走近瞬息万变的互联网、人工智能时代。