微博上的蔡学镛是个有趣的家伙,有条微博这样写道:
“记得十多年前我的第一本书出版时,我隔几天就到书店微服出巡,看看状况。当看到有人拿起我的书时,我内心的口白:"英明英明,你可真识货呀!"??... 当有人放回我的书,我内心的口白酸溜溜的:"显然不是个懂书的人"?”
本人很惭愧,至今没看过蔡学镛的任何书籍(可能有误打误撞的,但绝对没认真看过),难怪至今与Java无缘。为了减轻负罪感,特地搜索了下蔡学镛的著作,决定从《Java夜未眠》看起。
?
本人看电子书要比纸质书要快很多,一边滚动鼠标,一边用眼睛一目十行,给我一种满足感。当然,有些不感兴趣,或者关系不大的段落,文章,我就直接跳过了。如果对以下内容感兴趣,还是请看原版吧。
?
蔡学镛的学习之道
1. 理论基础扎实——数据结构,程序语言,操作系统
2. 不好高骛远
3. 先深后广
4. 兴趣导向
5. 抢先学好有前瞻性的技术
6. 学习优秀而有独到之处的技术
7. 通常看英文技术资料
8. 在一定阶段之后,看书胜于写程序
9. 需要十多年的基类
?
如何进入程序设计领域
1. 把工作、学习,和娱乐结合在一起,时间就会是别人的三倍。
2. 慎选程序语言,一旦选定就要执着。A Jack of all trades is master of none.
3. 加强英文阅读能力
4. 求人之前,先求自己
5. 多写程序
6. 向上延伸,向下延伸,向旁延伸
上:对象导向分析设计,Design Patterns,Refactoring,以及软件工程
下:内部底层的运作机制,如数据结构,操作系统原理,计算机组织与结构
旁:学习不同领域应用的API,如多媒体,数据库,分布式计算
7. 持之以恒
?
职业敏感度
如何培养?让自己暴露在大量相关的信息下是最自然的方式。设置首页为相关领域的页面,订阅mailing list
?
走出你的成功之路
成绩并非凭空而来
?
软件产业的知识经济
专业知识可以分为四个层次:
1. Know-What --- cognitive knowledge
2. Know-How --- advanced skills
3. Know-Why --- system understanding
4. Care-Why --- 自发性的创意
必须自问自己在哪个层次
?
Java学习之道:
1. 学习Java的原理
2. 学习Java语言。——《The Java Language Specification》,《Inside the Java Virtual Machine》
3. 学习面向对象的思维。1. 多看相关的书,特别是涉及模式和重构方面。2. 多观摩别人的程序(Java API的设计与实现)3. 多写程序
4. 学习API,规划好学习路径
5. 学习开发工具的用法
?
该学什么程序语言
1. Web Page Script Language,比如JavaScript
2. Interpreted Language,比如Perl,Python,Ruby,REBOL
3. Hybrid Language,比如Java,C#,介于解释性语言和编译型语言之间
4. Compiling Language,比如C/C++,真正想成为程序高手都应该懂C/C++
5. Assembly Language
如果没有程序基础,可以从上到下依次学习
?
语言、平台、链接库
C语言 stdio链接库
平台链接库和语言链接库都有同一个功能,选择平台链接库更安全
平台的链接库导致程序在不同平台上编译之后不一定能运行,Qt语言将各个主要平台的链接库抽象出一个共通的链接库,如果C++语言只使用标准C++链接库和Qt链接库,程序重新编译后就可以在不同平台上执行。
Java不仅将链接库统一起来,更将平台统一起来,这样程序就可以不同重新编译,可以直接执行。但是,多了一层JVM,牺牲了一部分性能。
?
Design Pattern
pattern:只要是一再出现的事物,就是pattern。
面向对象软件开发的程序可以分为OOA(面向对象分析),OOD(面向对象设计),OOP(面向对象实现)。在OOD阶段所采取 的pattern就是design pattern.
提早建立Design Pattern的知识
?
软件产业的大洪水
1. 不重视研发 2. 不重视专利 3. 不重视软件工程
?
软件工程
CMM 1 initial 2 repeatable 3 defined 4 managed 5 optimized
?
?
?