查看全文
:编译原理、汇编、操作系统、计算机组成原理、网络原理等。
以上是计算机这个学科的绝对核心,也是学起来最为硬核的部分,还有一些剩余的技术领域如人工智能、网络安全、高性能计算、图形学、软件工程等等,是由这些核心所延展出的具体应用。
所以,其实诸如重装系统、恢复硬盘、黑客技术等等,本质上其实是计算机具体应用层面(如计算机系统硬件、网络安全等)非常具体细化的专业知识技术,学习计算机主干学科内容的同学不会修电脑,实在是再正常不过的事情了。
从上面不难看出,想要学好计算机这个学科,其实在思维上要特别适应并且擅长「程序化流程思考」的模式,很多人常问学好计算机是不是需要很好的数学,答案当然是肯定的,不过和实分析复分析代数拓扑泛函分析这些数学系的「数学」不同,计算机专业学生需要特别拥有的数学思维能力,是偏组合的、偏概率的、面向某一个具体问题的流程的能力,习惯于从算法程序的角度思考、分析问题。
线性代数、离散数学、概率论、组合数学是计算机学生的数学基础核心,而面向对象的体系化程序设计,学会分析和操作一个极高复杂性的系统(包括装环境、de 一些谜之 bug),并忍受该过程中的繁难、没有线索、牵一发而动全身的复杂性,是成为一个好的计算机专业的学生必备的基本素质,面对全新的知识和事物能够迅速把握关键、迁移自己已有的知识快速学习,也是计算机专业的学生必须具备的能力。
在这个角度上,我认为大学之前从来没有写过代码的同学,最好还是相对慎重的选择计算机专业;如果选择了,则程序设计、面向对象、数据结构、算法设计、软件工程这之类的代码基础课一定要把基础打的极其扎实,否则一定会苦不堪言,将来在具体岗位上的可替代性也会很大。
总之,在计算机的专业课程方面,我的建议是:一定要动手做。对计算机学科内容充分的掌握=熟练理论知识+自己动手写(改)过一遍代码+de 过一遍 bug+最终跑通。
这个过程一定要独立、千万不要耍滑,可以寻求指点,但一定不要去找大佬直接复制他们的代码或者结果,一定要自己结结实实吃下所有 shit 并最终趟过去、完全理解自己写了什么,只需要经过几次这样的艰苦流程之后,基本就会在代码能力和专业素养上有质的提升,渐渐上道,很多在大学之前完全没有编程经验的同学度过了这一难关之后,和那些一直参加编程竞赛的大佬的专业水平差距小到基本可以忽略不计。
一个小技巧和建议是,国外的很多大学(如四大:MIT, CMU, Berkeley,Stanford)有质量很高的网课和材料,国内的许多大学课程抄的邯郸学步、深入深出、讲的云里雾里,如果有时间可以去把英