问:数据结构,操作系统,计算机网络,计算机组成原理这几门课在大学生计算机专业知识体系中有怎样的地位?
答:你提的这几门课程,数据结构,操作系统,计算机网络,计算机组成原理,全都属于计算机专业最重要的核心课程群中,你给我下死力气去学,没错的。
至于HTML、Android、Java等课程,都属于应用类型的专业课程,学好它们最重要的是用它们来实践,但要用它们写出好的软件系统,掌握你所说的那几门课程是前提和基础。
以下为亲身经历,这四门课重不重要自行体会……
前一段时间某个大数据比赛,因为智商不行只能洗数据和刷特征,有一次因改变了脚本数据结构(以及相对应的算法),把原本O(n^2),优化成O(n),对于需要频繁尝试不同的特征来验证模型的需求说,显然我加快了进度。而对于其他偏向底层和实时性的应用来说,数据结构和算法更为重要。
操作系统,这门课你可千万不要觉得,“我又不需要写一个Linux,写一个windows所以我就不需要学习”。这门课不是叫你写一个操作系统的,讲的是资源的调度和分配,以及大型软件的设计。稍微写过一些并行并行的程序,都能体会到这门课的重要性。
计算机网络,是不是觉得现在网络应用框架这么多,socket不用手写,物理层和链路层就更加不用理了是吧。最近尝试把一个网络应用部署到云服务器上,网络没问题,端口全开,云主机上localhost可访问,但从公网死活访问不了,至于原因就等题主你学习计算机网络的时候来思考一下吧。
计算机组成原理,你还真不需要理解cpu的每一个电路怎么运行,但当我懂得内存与外存的区别,以及缓冲区这些概念时,代码的书写思维和我入门时真的有很大不同。
所有的语言,框架说白了就是在某种规则(语法规则,API)上进行利用(编写代码),而一旦遇上瓶颈,或者某些bug的定位,需要为某种环境而进行方案的选择折衷(比如存储空间),这个时候就是你说的那些基础知识辅助决策的时候了。
当然了,后面说的问题可能有些程序员很少遇到甚至未遇到过,可是一旦遇到了,你真的有信心马上现学现用吗?说不定这个瓶颈就是一个升职机会呢?你要不要?
如果你真的打算在技术这条路上走下去,好好打好基础吧……