冒号和他的学生们
——程序员提高班纪事
- 教学计划
褚小者不可以怀大,绠短者不可以汲深 ——《庄子·至乐》
一阵商讨之后,众人似乎未能达成共识。冒号见状,便让他们一一道来。
问号再次充当急先锋:“能不能比较一些当今主流语言各自的优缺点?”
冒号笑言:“我怎么恍惚间又回到了第一堂课?你的潜台词还是那句话:到底学哪种语言好?”
问号被窥破心事,微露窘色。
“不过我非常理解你们的想法。”冒号体谅道,“虽然这是编程中最易提出却又最难回答的问题,但考虑到大家对它如此兴致盎然,我决定不顾引火烧身之危,铤而走险一回。”
众人鼓掌。
冒号故作疑惑:“你们这是对答案表示期待呢,还是对我的勇气表示赞赏?”
众皆笑曰:“兼而有之,兼而有之!”
叹号提出:“近来动态语言非常流行,能说说它与静态语言到底有何不同,是否会取而代之?”
“嗯,这个问题总算简单了些。”冒号如释重负。
逗号坚持道:“我还是那个建议,希望学些具体的编程知识和技巧,比如将最流行的Java语言中的一些重点和难点分几个专题来讨论。”
冒号颔许:“这是个很好的建议,可以采纳。”
引号有不同意见:“Java没有C++来劲:要说难点,C++多得多;要说流行度,按照TIOBE的数据,C与C++之和还超过Java五个百分点呢。”
逗号不服:“你没看到C和C++正在逐渐没落吗?”
引号冷哼一声:“开玩笑,什么时候操作系统、数据库、游戏软件和嵌入式系统都改用Java了再说这话。别忘了,Java的虚拟机都还是C或C++写成的呢。”
冒号忙止住干戈:“我还没来得及成为众矢之的呢,你们二位倒先掐上了。”
句号提议:“最好找一个项目实例,从头至尾演练一次,既能贯穿各个知识点,又能让我们对软件开发有个整体认识。”
“这个想法听起来非常不错。”冒号沉吟了一会又道,“只是一个真正企业级的项目,涉及面太广。比如一个完整的web应用,不论是采用重量级的J2EE或.NET技术,还是采用轻量级的Perl、PHP、Ruby、Python等动态语言技术,除了要掌握各自的主体语言外,还涉及到相应的框架、集成环境和各种工具,以及Javascript、CSS、HTML和XML等技术,同时数据库的知识也是不可或缺的。”
问号奇道:“javascript、CSS和HTML这些不主要是网页设计人员的语言吗?”
冒号解释:“网页设计人员大多用Dreamweaver之类的工具来设计HTML页面,开发一般网站尚可勉力而为,若开发企业级软件则有些力不从心了。更何况web应用的趋势是具有更丰富用户体验的Rich Internet
application (RIA),采用大量的AJAX、FLEX等技术,需要熟悉Javascript或Actionscript之类的语言,这些就更非一般网页设计人员所能胜任。”
引号插言:“据我所知,许多公司都是请网页设计师来编写HTML和Javascript等代码的。”
冒号指出:“网页的迷人之处就在于,能够用精美的画皮来包裹冗长低效的代码。出于软件开发的时间和成本的考虑,公司的选择无可非议,但如果要提高软件竞争力,这些代码至少要经过程序员的加工处理。”
逗号复言:“那数据库总该是数据库管理员的事吧?程序员至多用到hibernate之类的ORM框架。”
冒号断然否定:“数据库绝不只是DBA的事,ORM也不能取代数据库的设计和SQL的使用。另外,复杂的应用需要编写大量的存储过程(stored
procedure),故还应掌握PL/SQL或Transact-SQL等扩展数据库语言。换句话说,从web开发最前端的网页到最后端的数据库,都应该有程序员的身影。”
句号联想到:“借用前面餐馆的例子,不妨把接待员看作客户层(client tier),把服务员看作表现层(presentation tier),把厨师看作业务层(business tier),把收银员看作数据层(data tier),把厨工看作常用的辅助类(helper class)。”
冒号微微点头:“比较靠谱。要说不当之处,就是服务器端的表现层不会如服务员那样直接与客户打交道,此外业务层常与数据层打交道,但厨师好像不会与收银员有什么瓜葛。”
叹号夸张地捂住脸:“天哪,程序员竟然身兼五职,太惨了吧?”
“当然程序员会各有分工,不过如果你总局限某一层的应用开发,今后凭什么谋取更高的职位?”冒号苦口婆心,“无论干哪一行,要胜任愉快,离不开四样东西:才能、兴趣、方法和努力。没有才能则难以胜任;没有兴趣则难以愉快;没有方法则事倍功半;没有努力则一事无成。我相信好的方法最终能激发人的才能、兴趣和努力,这也是本班的一个理念。希望大家能通过各种问题的讨论,获得一些方法上的启示。”
问号急切地询问:“那么我们的下一步是什么?”
“综合各位的意见,我们从简到繁。”冒号公布计划,“先简单谈谈动态语言;再对主流语言作简评;然后以Java为主、C++与C#为辅,对语言中的一些要点作专题讨论;最后如果时间允许,找一个项目来实践一番。”
“呕耶!”众人皆大欢喜。