我的程序员人生 2008-07-03
注定,这就是一个不可能完美的开始。因为摆在面前的,是眼花缭乱的,甚至语言的选择都是迷茫的。从哪里开始呢?
语言:
Java,C#,PHP,PythonorRuby?
Java:静态语言;语言特性完善;库足够丰富。
C#:类JAVA语言;语言特性同样完善;不乏优秀的库。
PHP/Python/Ruby:同属脚本语言。与静态语言相对,最直接了当的感受是,写完一行代码,我就可以在浏览器看到效果。
PHP久经考验,Python和Ruby的多线程支持好一些。Ruby的语法怪异一些....
框架:
PHP:Zend,Symfony,CakePHP,FleaPHP,CodeIgnier.....
Python:Karrigell,Django...
Ruby:RubyOnRails
Java:Struts,Wicket,Spring,Tapestry,JSF...
C#:框架选择单一(.NET),真好,怎么能迷失方向:)
罗列,根本就是内心混乱的表现。之所以百家争鸣这恰恰证明了存在就是道理,当今得Web开发:没有什么语言,没有什么框架绝对胜出。整理思绪后还是回到了问题的本源,合适就是最好的,遂列出如下参考原则:
1.技术只要符合项目需求
2.技术尽可能简单,但稳定。
3.不求尽善尽美,但是遇到得所有问题所选技术至少能迂回解决
4.技术平台有足够的扩展空间
5.程序员要熟悉这个技术
问题驱动是个好东西,其实在这之前,我甚至没仔细看看vAgent到底要什么呢。vAgent一期是美国某旅行社准备经营的网上宾馆旅行路线订购产品。之前甚至想过基于CMS平台,但是感觉网站定制性、功能性非常强,所以放弃了这个想法。总得来说,这个网站功能紧凑模块不多,至于性能在我脑子里根本灵光一现,就忘却了,但是总不能和语言选择有关吧?
对,还是先选语言:哎,除了通读过Ruby,上述得罗列其实我只会Java和PHP.Java就像我得老婆,天天磨在一起,的确有点腻歪,年轻的时候花枝招展多少人趋之若鹜。不是喜新厌旧,而是现在得Java懈怠让人出离愤怒。漫天得XML,好不容易脱离出来,又要进入Annotation得苦海。连个打印都要System.out.println,Tapestry曾是让我抱有无尽的幻想,但是我苦苦等待了两年,妈了个X,v5现在还是Beta.反过来我还是得感谢她,如果不是长时间和Tapestry厮混,我真得不知道ROR这个婚外恋别有洞天。
ROR是我学习Ruby的源动力,于是和Ruby好了一段时间,无奈我这人百般挑剔,Ruby得语法实在足够另类,弃它而去。这时我是多少有点迷茫,最后所有希望都寄托在PHP身上.
PHP好比我得老情人,多年不见分外多情。再次拾起PHP,我用Java得眼光竟然审视出那么多以前忽略得东西:Java有Ant,PHP有Phing;Java有junit/javadoc,php有phpunit/phpdoc。不像Java这种静态语言,php和ruby一样,你写好的代码立即调试,对于逻辑不是特别得复杂得应用,php这种脚本语言显得如此可爱。PHP得语法足够简单,你可以说他某些地方不够面向对象,但是System.out.println到底意义何在呢?Java的Tapestry推崇ROR,却绝没有PHP这种脚本语言实现得更自然,不完美但够用。这就是CakePHP.偷偷地说一句:其实我是首先看中了Cake这个词然后才是PHP.
其实大家想不到的是我的结论竟是这么的仓促和盲目:除了因为脚本语言直截了当,概念简单,然后就是自己熟悉PHP,Cake是我喜欢的RORstyle等个人偏好问题。至于其他的原则基本都是一种感性认识,完全基于直觉。
阶段I:CakePHP
说干就干,刚刚说到稳定这个问题呢,我就大胆地采用CakePHP1.2beta,实在是因为经不住新特性的诱惑。想想项目完了stable版也该出来了吧.
接下来开始前端技术平台的选择和集成,那就是前端JavaScript框架了,该系统将具有的web2.0技术特征,少不了AJAX,Thickbox等特效。又是一阵大脑抽筋,罗列如下javascript框架:
Prototype+Scriptaculous
JQuery
ExtJs
YUI
Mootools
DOJO
....
长话短说,像选择后台框架一样,首先我的个人偏好是:简单,轻量级;另外项目本身特效不算特别多。Jquery和Prototype足够担当。经过感性使用JQuery又另胜一筹
阶段II:CakePHP+JQuery
紧接着我就发现CakePHP本身就集成了Prototype的Helper,实际上当前平台已经具备:
阶段III:CakePHP+JQuery+Prototype.
为了保证两个javascript库的和平共处,我脚踏两只船,下面的代码大家应该知道含义哦:
<script> var $j = jQuery.noConflict(); </script>
不想一发不可收拾,那么CSS框架是不是也可以集成呢?以下这个链接
12个顶级的CSS框架着实让我又耗了不少脑细胞结果,当然,我什么都没选择。因为该项目的网页结构已经有专业人士基本完成了
再接下来基本没有悬念了,最后框架定型为
最终:CakePHP+JQuery/Prototype+MySQL+Apache+Linux
还缺什么东西么?对,以后再补