学计算机语言，是先一门语言学精通，还是学各种语言?
建议就一个：别指望学校课程能让你找到一个好工作，编程技术完全靠自学。 下面结合笔者看到的国内大学计算机教育存在的一些问题给楼主一些大学学习上的思路和建议。 国内大多数大学使用的教材都是自己学校编的，质量不敢恭维。 为什么既然有了业界公认的畅销几十年的经典教材，国内大学还要每个学校自己编一本呢？原因就不多说了。读这些拼凑的书，难怪学生们读不懂，读不懂正常，很多编写者自己都搞不清楚。 写书尤其是写好书是一件非常难的事情，但是奇怪的是在国内阿猫阿狗都要写一本书，名字还取的很好听的样子，其实内容就是东拼西凑的。“上课耽误学习”，并不是全无道理，哈哈哈。这里强烈推荐大家读书一定要读经典书籍，不要在这些渣渣教材上浪费时间。 下面给大家推荐一些被国外顶尖大学采纳为教程的经典书籍： （1）《数据库系统概念》 被CMU采用，CMU-database systemshttps://15445.courses.cs.cmu.edu/fall2020/ （2）《算法导论》 MIT采用作为教材：mit-Introduction to Algorithms https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-006-introduction-to-algorithms-fall-2011/ （3）《深入理解计算机系统》 这本书得到了非常广泛的使用： http://csapp.cs.cmu.edu/3e/courses.html （1）大量使用PPT而极少数会有粉笔板书，PPT上基本都是死板的概念。很多老师都是对着ppt念一遍完事。相比国外顶尖大学，很多老师讲课的时候都是粉笔板书，现场推导或画图，非常考验功底。 （2）课程知识停留在十年前，和业界前沿技术脱轨严重。而反观国外课程会紧跟技术潮流，比如数据库，国外课程会讲解业界主流数据库的实现机制以及一些设计上的trade-off：如TiDB就出现在CMU的数据库课堂中： （1）国内课程首先是对实践不够重视，实践在最终课程考核分数中的占比非常低，按理计算机是非常偏重实践的一门课程，实践动手项目应该占大的比重才合理。 我下面是standford大学CS346数据库系统实现课程的内容，需要每个人实现一个数据库系统，考核分数也是project占大头（90%项目+10%的课堂互动）。 （2）国内实践考核方式存在很大的问题。很多居然以word文档的方式来提交C语言实验报告。难道通过Online Judge的方式来考核不香吗？而且还对实验报告的格式做很强的约束，难道不应该着重考核动手能力吗？国内大学VS国外顶尖大学的实践对比 现在课堂上IDE还大量使用VC6.0。试问互联网公司还有谁在用VC6.0？ 另外在实际生产环境中要用到的一些工具，学校根本就不教： 关于这块推荐mit的课程《计算机教育中缺失的一课》https://missing-semester-cn.github.io/ 给楼主的建议是，一定要打开自己的视野，不能局限在学校的课堂，多利用互联网资源（如google、Stack Overflow、coursera、github），看经典书籍和经典开源项目源码，多实践，与技术牛人交流，多了解前沿技术。 说完了国内大学计算机教育普遍存在的问题，你可能也发现了，要想学好计算机技术核心在于自学！自学！自学！ 也有很多小伙伴问我：到底需不需要报培训班？毕竟培训班的学费都是好几万，值不值？ 我个人的建议是：其实现在网上的学习资料非常多，你要想学的话，根本不缺课程，花几万块钱报个培训班其实也就是买个视频课。如果个人学习能力还不错，完全可以自学，即便是报培训班，也是你自己看视频自学。 学习资料是肯定不缺的，缺的是什么呢？？？ 体系化的学习路线和跟踪答疑，网上课程多的是，但是哪个课程比较好？应该先学什么？再学什么？哪些是重点？遇到问题没人解答才是痛点。这也是为什么越来越多的粉丝让我带着他学习，学长学姐的经验真的可以帮助少走弯路。 如果有需要详细的学习计划和1V1辅导的小伙伴也可以联系我，业余时间带带大家，精力有限，每月只收1个徒弟。 关于大学四年的学习规划，我之前有整理过一个2万字的回答，可以看看： 那么作为一个优秀的计算机专业的学生，我们应该养成哪些好习惯呢？？？ 我昨天写了一个回答，觉得有必要分享给大家，阿里老学长的血泪经验贴，看完你肯定会有所收获： 本人华科硕士毕业，在阿里巴巴工作多年后，依旧非常后悔自己没有利用好大学四年，如果时间能重来，下面这几点能力我肯定会重点培养。 为什么我一定要强调自学，核心在于2点： 不管是科班还是非科班，如果你认为学完学校的课程就能找到一份好工作，那你想的真的太简单了，等待你的可能是“毕业就失业”，不是我吓唬你，关于目前国内高校计算机教育普遍存在的问题，我上面已经写得很清楚啦。 好在现在的孩子都有些觉悟，会主动提出下面的问题，我也认真的解答了一下，感兴趣的可以围观： 这个行业发展太快，技术淘汰的速度也很快，3 年不学新东西就可能落伍了，工作之后发现自学能力更加重要了。 但是这里你一定要警惕自学陷进，而要掌握学习新知识的方法论，个人总结主要为以下几点： ①知道自己在学什么，明确自己的学习目标； ②建立自己的知识网络，比较简单的方法就是善用思维导图，把知识网络串起来； ③从大量信息中筛选有价值信息的能力，人的精力是有限的，我们不可能面面俱到，学习一定要学经典资料； ④实践推动学习。 打牢基础！打牢基础！重要的事情说三遍！ 基础非常重要，不管你以后从事什么方向，应用开发也好，大数据开发也要，客户端工程师也好，要想吃得开必须依赖这些基础课程：操作系统、组成原理、计算机网络、数据结构、算法、数据库。 几乎各个大厂面试前2轮面试都会重点关注基础，如果基础不扎实，那么就很难进入后面的面试，把大学一半的精力花在打基础上都是值得的。 计算机基础重点是6门课程： ①操作系统 进程、死锁、内存管理等等基础知识。 ②计算机组成原理 ③数据结构 典型的数据结构：数组、队列、栈、堆、树、哈希表、并查集、字典树，原理要知晓，并且要对于队列、堆、栈这种能手写代码自己实现。 ④算法 这几个典型的算法一定要能熟练掌握原理并能运用，举一反三。 ⑤计算机网络 书籍推荐《TCP/IP卷一》。 ⑥数据库 除了掌握基础的数据库知识，还需要对常见的SQL编写、索引优化熟悉。 这里推荐一本薄的书籍：《mysql必知必会》。这本书不厚，但是实操性强，非常推荐。 ⑦编程语言学习 C语言 C语言是很多高校开设的第一门语言，也是非常适合入门的语言。它是一门偏底层的语言，通过这门语言的学习可以掌握对程序的运行、内存管理等机制。掌握了底层语言后，再去学习其他尤其是高级语言，会容易很多。 C语言的学习大家可以直接看我下面这个高赞回答： C++ C++是非常难掌握的一门语言，想学好，需要花很大的精力。 具体如何学习可以看我下面这个回答： Java 按照现在的市场来讲，Java是现在工业上运用比较多的语言，也是最好找工作的语言之一。其次是C++、Python等。 Java技术栈的学习路径可以按照下面来安排： Talk is cheap, show me the code； 对于计算机专业来讲，实践是非常非常重要的。 那么有哪些实战的方式呢？ 1、参加比赛 有含金量的比赛大概有如下几个： 2、实习 实习是非常好的实践方式，一方面可以提前了解和感受互联网公司的环境、氛围，另一方面向各路大牛学习，获取一手的经验，还可以参与实际的项目。 3、github开源项目 如果没有实习，也可以通过参与实验室项目或者github上的开源项目。github上开源社区有完善的文档、协作机制，可以和很多人一起交流，开阔视野。 作为新手，下面这个回答你可能会需要： 4、刷题 主要是锻炼数据结构和算法能力、提高思维能力。 推荐用LeetCode或牛客。 5、顶尖公开课的project 通常都非常有深度，有一步一步实现一个麻雀虽小五脏俱全能run起来的系统，如数据库或操作系统，或者一个tcp协议栈。 少看博客，多读书。 博客只能帮你找到学习思路，真正的知识储备建立在你阅读了多少经典书籍的基础之上。 相比于电子书，我本人更喜欢纸质的，一是尊重作者劳动成果，拒绝白嫖；二是阅读体验我自己觉得更好。 网上也有很多电子书，但是希望的大家不要放在网盘里落灰。有条件可以买书回来自己看，动力更足。 研究生读的一些书，老照片了，像素太低多包涵： 工作之后看的一些书，只是其中一部分： 再来唠叨2句，有些书籍最好不要买，比如21天精通XXX，完全就是割韭菜的。 学习计算机一定不要想着速成，没有什么捷径和超能力。要下苦功夫去啃那些经典书和源码，然后自己动手写，所有技术大佬都是一行行代码敲，一本本书啃出来的。 我在大学期间，为了把专业学好，看了大量经典的专业书籍，整理了这份计算机必读的高分经典书籍： 这份书单对于CS学习的同学帮助非常大且十分系统，这些书籍的电子版已经整理好了。 需要的直接戳这里领：计算机必看经典书籍（附pdf下载），请注意查收~ 因为我本人是Java工程师，关于Java从入门到进阶的经典书籍之前写过一个回答，已经获得2300+赞和收藏，想学Java的同学可以看看： 都醒醒，看完我的回答就去乖乖看书好嘛~ 经常逛一些比较不错的工具网站，比如google、Stack Overflow、coursera、github、知乎等。 多关注一些你的领域的一些大牛在干嘛，多关注一些优质原创博主的博客，比如说你如果觉得我的回答写得还不错，可以关注一下我 @夏天 。 多关注业界前沿技术和动向趋势，了解最新技术解决了什么新问题，是否能够给自己的工作带来帮助。这里推荐几个优秀的前沿信息来源： 使用 Google 搜索而不是百度。 下面我这个回答整理了我常用的几个技术社区和开源项目，对于提升自己的编程能力还是很有帮助的，可以看看： 写博客对我们好处很多： 我在校招的时候就因为博客加分不少。我的技术博客原创博文已经很多了，虽然没有太多高深的东西，都是一些基础知识，但是大多是自己加以总结了的。大多数面试官都打开我的博客看了，评价还不错。 上学的时候主要在CSDN分享，那时候我就已经算是个大V啦，多年没维护，粉丝掉到了4000个。 还有粉丝催更的，现在主要在知乎做些分享。 以上就是我个人的一些经验分享，希望对你有帮助。 再补充一个大家最近问的很多的，关于计算机专业电脑选购的问题。 按照不同的预算给大家推荐了几款电脑，闭着眼睛买就行：