编程学习道路

转自知乎
作者leo


个人觉得不要一开始学商业化的技术,例如移动app开发,web开发,.net,还有java一堆框架,各种游戏框架引擎...这些东西虽然容易激发兴趣,但最后逐渐发现你会浪费很多青春在写白菜代码。


本科最主要的几门课,第一梯队:数学,数据结构与算法,操作系统和计算机网络,C和C++(和汇编) ;第二梯队:计算机组成原理,编译原理 ,数据库;

数学:刚开始可能觉得是最没用的,但是越到后面发现数学的作用越大,这东西是发明创造的基础,计算机科学和数学的界线越来越模糊.

数据结构与算法:锻炼和改变你的思考方式,也是程序设计的基础,参加ACM ICPC应该是磨练这种思维最好最快的方式了,这东西是内功,思考方式就是你的potential,对以后进facebook ,ms,google这些企业有很大帮助...

C和C++:这些东西是工具,实践起来少用图形化IDE,多用用gcc和gdb这些工具,语法学起来很轻松,面向对象的思维写写程序慢慢就理解了。感觉底层的东西多而杂。为什么我觉得学这个要从 汇编 --》C的编译器 --》C++的编译器 (指的是编译器源码)这个学习路线来学习这样才能深入理解它的语法....

操作系统:国内的教材普遍不适合入门,理论太多,看完也未必理解多少,从实践出发,先从《30天自制操作系统》开始,这本书适合启蒙,可能里面有些词汇不太专业,然后看看国内的《Orange's一个操作系统的实现》,自己要动手写,试着改改里面的代码,添加一些功能什么的。这两本看完再看理论的,推荐《深入理解计算机系统》。然后开始学习具体的某一个操作系统,比如windows或linux,学习它们的内核和基本api,编写一些程序来熟悉它们,个人建议:少学界面,浪费时间。学windows别碰.net,学win32 api,内核编程和dll。试着开发一些游戏外挂,试着破坏操作系统,了解一些渗透攻击这些可能有助于提高兴趣。

计算机网络:结合实践去学感觉好些,linux或windows socket编程,学学伪造数据包做dos攻击,tcp洪水,arp欺骗.... 都不难,还能激发兴趣。web要了解,不用花费心思做网站,学习它技术性而非商业性的东西。然后再去看网络纯理论性的书籍效果好些,网络学到后面还涉及通信的知识。

计算机组成原理:计组和操作系统有很多交集,在自制操作系统的时候涉及到很多计组里的东西,想实践的话汇编和C语言要学好,proteus仿真cpu有点无聊,最好是自己尝试制作下简易的cpu,也不知道市面上这类书编的怎么样,当然学深了,就有点偏向电子了,有兴趣的话搞搞单片机,树莓派,开发板什么的。

编译原理:很重要,但是自己学的不好,可能从做compiler入手好些吧!

数据库就不用说了,试着写写K-V数据库。

以上这些课不敢说精通,能做到深入理解差不多本科阶段就结束了。


作者:leo
链接:https://www.zhihu.com/question/36539741/answer/68033622
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值