看了下 我自己的豆瓣 中标记已读过的书,数量上还对得起这两年。今天整理一下,分类推荐我接触过的技术和书。
基础类
C
我的软肋。C语言同时具有机器底层的操作能力和高级语言的语法,很适合作为计算机编程的入门语言,事实上国内很多学校也是这样做了。C是编写Unix和Linux的语言。
如上所说,C是我的软肋,无法总结什么,在此标记一下,以后要补上C。
C++
C++现在在操作系统(win)、GUI界面、游戏、电信类编程很普遍。可以说想从事前面所说领域的编程就首选C++了。
C++有个迷惑人的地方,就是它名字里的"C",但其实C++跟C完全是两种语言。C++里虽然可以引用C的函数库,但是编程思想截然不同,C/C++的说法应该废弃。任何想着“先学C然后学C++”的人肯定要栽跟头,要选哪个入手,需要先预估自己对哪个领域更有兴趣。
推荐书籍:
- 《C++Primer Plus》 C++很好的入门书
- 《高质量程序设计指南—C++/C语言》 看这本书,可以学到对待一门语言的正确态度。
Linux操作系统
作为一个8年windows用户,在接触了Linux一个月之后,毅然把windows格掉了。如果想做公务员平时没事打打纸牌,请继续用windows;如果想为计算机领域做出真正的贡献,请使用Linux。
推荐书籍:
- 《鸟哥的 Linux 私房菜 基础学习篇》 其实我现在看来,这本书并不是很好,内容旧,但是又比其他书好很多,至少不枯燥。
实用类
动态语言Python/Ruby
Python和Ruby 至少要会一个!今后是动态语言的世界。
Python和Ruby 之间有竞争关系,目前看来Python更胜一筹。Python的社区更大,支持的厂商更多(google,yahoo),可说竞争力巨大。不过我因为一件小事而选择了Ruby :vim对Ruby 的补全支持更好。现在看来Ruby 是我满意的选择,语法优美,功能强大。
凭自己的直觉选吧。
推荐书籍:
- 《Programming Ruby 》 镐头书,有名的了。
- 《Ruby 设计模式 》 不要去看四人组的设计模式 ,经典设计模式 里面很多内容是针对静态语言写的,经典那本可以说:用不上
桌面程序开发
Qt
Qt库是曾经的奇趣公司(现在被诺基亚收购了)开发的跨平台图形库,使用C++开发,同时有很多其他语言的绑定(比如Python和Ruby )。诺基亚收购之后,Qt库的授权已经是LGPL,可以商业闭源使用。Qt是跨平台的图形库中最强大的。
不要学MFC,不要学JAVA的swing
推荐书籍:
- 《C++ GUI Programming with Qt 4》 官方教材
- 《精通Qt4编程》 比上面那本好入手,但是后面不够详细
Web开发
Ruby on Rails / Django(Python) / Drupal(PHP )
如果有熟手的脚本语言,那么很容易已经选择上面的其中一个了。
我只熟悉RoR(本blog用RoR开发),其他两个不好评论。RoR是我迄今为止用过的最方便的Web开发工具。学习RoR,一下子接触到MVC、持久层、AJAX、测试驱动开发……这些先进/实用的概念。
推荐书籍:
- 《Web开发敏捷之道—应用Rails进行敏捷Web开发》 著名的铁道书,不看就没道理了。
- 《RESTful Web Services中文版》 为什么博客的Url是logs/568 ,这是有原因D。
- 其他(太多了)
界面设计
web界面设计,先要学xhtml+css。
- htmldog.com
- 《无懈可击的Web设计》 很多正确的范例
- 《CSS禅意花园》 其实这本书学不到什么,作品集而已
然后设计领域不是我的世界了,多希望身边有个designer。
软件开发方法
不要看:软件工程相关的书
大部分情况下,软件工程是个错误的隐喻。软件是个纯脑力的行为,脑力怎么可能用工程化的方法去约束?约束的后果只会产生肯德基那样的垃圾食品。
软件工艺是更好的隐喻
不要太注重:敏捷开发
这也是忽悠,是忽悠。(CMMI更不用说了,软件界的英语四级)或者换个词:废话。
但是要学习极限编程中的重要编程方法: 《测试驱动开发》
测试即使不拿来驱动开发,也要拿来确保代码质量。测试是我最近学到的最有用的工具。
与测试呼应,还有一个重要的编程方法: 《重构》 。编程并不是一蹴而就的,是一步步改进出来的。期待这本书的Ruby 版。
个人修养: 《程序员修炼之道》 是不是读起来有点想星爷的《演员的职业修养》?这本书综合了很多程序员自身需要培养的素质要求。
休闲: 《Joel说软件》
企业开发
不要碰这个领域!!!
这个领域是java和.net的IT民工的,别去跟他们抢饭碗。/
总结
计算机领域实在太广阔了,也许穷我一生也只能触碰到一些细枝末叶。不过正如我 上一篇日志 说的,我只是把它当兴趣罢了。