学习思路整理

学习思路整理:

目录:

  • 前言
  • 学习目标及内容
  • Plan及疑问
  • 蓝桥杯/PAT疑问

前言:现实压力肯定是有的,两年内找不到工作就over了,所以有些底层内容不敢太深入,的确是自己太浮躁了,但是这个社会也很浮躁啊,公司要马上能工作啊…面试时没有自己的作品那就over了,感觉留给自己的时间并不多,总是希望学最直接的,比如框架,直接能写出东西来最好,有时候一个人折腾半天没有成就感会很糟糕,真的是自己太浮躁,太混乱,外加时间不够,借用MacTalk池建强的一句话:Linus就是个高知子弟,10岁人家就开始玩计算机了,我们10岁在干什么,打沙包么?甩方宝么?即使你在计算机方面有出众的天赋,但18岁以前连计算机的面儿都没见过,你就只能默默的牛逼了。等你真正开始展现出自己才华的时候,人家操作系统已经开发出来了,一入世就差别人十年的身位,除了冷冷的绝望,你还能感受到什么?。

真的是这样…接触了一些大神,有些是没上大学的,大多数在大学前已经打下了很好的基础,而我呢,是大二决定的,有点仓促,实在是不得已的事情。自己觉得这行还是比较有乐趣的,自黑这种技能太欢乐,但是压力的来源可能是同类的鄙视,比如lisp的看不起写python的,C++的看不起写java的,这些都是常态,很多先辈都会持有这样一种态度:为什么要立即抛弃java?java是一种聪明人写出来控制普通程序员的语言.比如过多无用的设计;JVM把本来一些应该考虑的东西都封装,自动化了,让程序员没有去犯错的机会。让自己学习的时候会有一种是在离真理越来越远的感觉,语言可能真的会控制一个人的思想吧。多走一步也许会看的更清楚。“必须要知道为什么java是不好的,JVM是好的。”有时会觉得这变成了目的…好变态。当然不精通一门,不学下一门,但感觉java要填的坑太多,涉及的面太广,怕自己不小心就陷进去了。这方面主要是因为基础太薄弱造成的。阮一峰曾经有一篇译文-《java语言学校的危险性》:“谈及关于计算机系的淘汰率,我见过各式各样的数字,通常在40%到70%之间。校方一般会觉得,学生拿不到学位很可惜,我则视其为必要的筛选,淘汰那些没有兴趣编程或者没有能力编程的人。;大学计算机系的课程里,传统上有两个知识点,许多人从来都没有真正搞懂过的,那就是指针(pointers)和递归(recursion)”;这也是我开始学习SICP的原因,现在说实话,我还是没有确定我是否有足够的天赋去成为一名程序员,当然兴趣是有的。
按照自己的理解,编程的本质是解决问题,是要拥有挖掘现象背后本质的强大兴趣和能力,努力培养自己能力ing。程序是哲学的不可缺少理性的部分。

  1. 学习目标:整理底层知识,兼顾上层建筑。毕业时找到合适工作。5年内成为一名合格的程序员。
  2. 学习内容
    一.计算机基础
    1. 数学基础 (离散,线性代数,微积分)(学习资料待定?)
    2. 算法和数据结构(算法导论)
    3. 底层基础(网络,数据库,编译,操作系统原理)(学习资料待定?)
    4. 设计模式,单元测试(只看过《大话设计模式》,实战?待定?)
    这方面其实我真只打算做完SICP(终极目标:scheme编译器),算法导论基本的算法和数据结构这块,翻翻深入理解计算机系统这本书,其他近期并没有计划
    二.Java相关
    1.javaSE(java核心技术卷1,2看过,做过项目后准备补习一下《java编程思想》,《java线程》)
    2.java web(教材:准备看这本《servlet与jsp核心编程》,《java并发编程实战》)
    2.深入JVM(教材:《(周志明)深入理解java虚拟机》,学习性能调优)
    3.项目实战(网络版的简单坦克游戏(swing),纯jsp的网上商城项目,采用SSH框架的OA系统,准备把这个OA做完,做了系统管理,权限和论坛部分了,不能半途而废…总要写个总结…).其他根据需求…其实我有时觉得拿出自己的作品是最重要的,木有作品怎么面试…,目前阶段的理解,SSH框架也是有好处的,比如struts2的MVC,spring的依赖注入和面向切面编程,自己还理解不够,应该还会深入去理解。
    4.阅读源码(暂时没想好读哪个内容,tomcat/spring/最近看到的一个java微信开发平台jeewx/Web应用开发平台jeecg?…)
    三.其他
    1.语言方面,面向对象的准备好好学java,然后学一门脚本语言python方便工作(写原型?),函数式的准备先按照SICP的学scheme,之后为了和java接轨,学一下《clojure编程》,lisp系语言先学到这个地步,
    2.入门一门强大的编辑器Vim/Emacs,解决什么问题呢?在考虑ing.
    3.我也不造我为什么不想学C系的语言….什么时候学我也不造…
    4.其他关于项目管理,PM,程序员素养的著作,都在陆续的看。

3. Plan及疑问

时间,知识管理对于一个程序员来说是很重要的,自己在这方面的能力还是有待加强,各方面协调的不是很好。
有一个困惑是在学习基础的时候,是不是应该和实战结合?项目驱动学习,和测试驱动开发,两句话应该是真理。当然目前是打基础的时候,应该适当偏向基础,还是有些矛盾,大多数的书应该用来当字典而不是看。

希望卢老师对学习思路,学习顺序(缺陷,补充)给一些提示,给出一些书籍/实战推荐就更好了,尤其是基础这块,找不到合适的方式去进行,希望基础/java基础/项目三个方面多线程并发这样进行,大概按照什么样的比例呢5:3:2?。希望您给出一个合适的建议比例,两年的时间里,我先拿出一个Plan,然后您帮忙改进。
Plan 1.0(只是目前)

  • 20%的时间SICP
  • 20%算法导论
  • 30%java基础
  • 20%项目
  • 10%其他

备:由于有工作上的压力,如果有些科目是在工作后有时间补救的,可以排到后面,要各个击破~

4. 关于蓝桥杯/PAT
Q1:是您讲课吗?
Q2:之后培训是不定期进行吗?
Q3:学习的内容和实际开发的相关性多大,1-5评级的话?
Q4: 这个暑假是只有18号一天上课吗?上一天吗,时间?住校的话得到的便利是什么?

谢谢您抽空看完。 2014.7.13