第1 页 共1页1

November 18th, 2008你喜欢写程序吗?

你喜欢写程序吗?我问过同行很多次,但是还没有碰到过哪个人干脆的回答:我喜欢。相反,说不喜欢的却有很多人。我有个大学同学说:我不喜欢计算机,不喜欢写程序,是爸妈让我来学计算机的。有的同行说:没办法,在大学学了这个专业,所以就做这一行了,其实我不喜欢写程序。我得到的最多的答案是:程序员工资高呀,我才不喜欢写程序,如果我有其他方式挣钱,我就不做程序员了。我知道我接触到的这些人是这个行业的极小部分,我期望剩下的那绝大部分中能有很多人会喜欢写程序,否则,我们这个国家的软件行业就永远没有出头之日。我们这个国家的程序员中不缺少梦想一夜暴富的投机者,也不缺少沽名钓誉的学术骗子,更不缺少为求生计混日子的人,但我们非常缺少充满激情热爱写程序的人。

不能选择自己的生活是可怜的,为了点钱把每天三分之一的时间用来做自己不喜欢做的是事是可悲的。如果你是个程序员,却并不能再程序代码中找到快乐,我劝你还是做些别的吧,你的人生不应该在这里。

而我要自豪的说,我热爱我的行业,我喜欢让指尖在键盘上跳动,让思维在代码间流动,让创造力在CPU的脉动中体现。

Share/Save/Bookmark

如果说软件开发有什么真理的话,我想,那一定就是SOC(Separation of concerns,中文翻译叫关注点分离)。SOC原则,就是在软件开发中,通过各种手段,将问题的各个关注点分开。我已经记不得第一次在什么时候什么地方听说这一原则的,当时看一下就忘掉了。可是随着对软件开发的体会的加深,SOC这个概念不断的在我的脑海中浮现,以致于我把它当作软件开发的真理!

问题太过于复杂,要解决问题需要关注的点太多,而程序员的能力是有限的,不能同时关注于问题的各个方面。正如程序员的记忆力相对于计算机知识来说那么有限一样,程序员解决问题的能力相对于要解决的问题的复杂性也是一样的非常有限。计算机知识太多而且不断进化,计算机程序也太复杂,而且还在不断的复杂化。记得有一本记算机图书中,用这样一个例子来对比程序和传统行业复杂性的差别有多大,说一架精密的波音客机,所有的部件加在一起,总共只有2万个,而GCC编译器,光全局变量就有40万之多,可见程序有多复杂。另一方面,人类的注意力所能同时关注的点又是相当的少的。举个简单的例子,一般人很难同时左右手分别划圆划方,就是因为我们的大脑很难同时关注于两只手,让两只手分别做自己的事。因此,做为普通人的程序员面对这种复杂性时,必须采用某些方法把问题分解成若干部分,这样程序员可以同一时刻只关注于问题的某些方面或部分,如果分解后的部分还是太复杂,那就再划分下去,直到使复杂问题变成一个个的简单问题。这就是关注点分离原则。这一准则,并不是计算机界的发明,只不过在计算机界显得更加的重要。

实现关注点分离的方法主要有两种,一种是标准化,另一种是抽象与包装。

标准化就是制定一套标准,让使用者都遵守它,将人们的行为统一起来,这样使用标准的人就不用担心别人会有很多种不同的实现,使自己的程序不能和别人的配合。Java EE就是一个标准的大集合。如果所有的应用服务器的开发者和应用的开发者都按照标准来做,那么应用开发者就不用关心不同的应用服务器有什么差别,服务器的开发者也不用担心应用开发者开发的应用有什么差别。每个开发都只需要关注于标准本身和他所在做的事情就行了。就像是开发镙丝钉的人只专注于开发镙丝钉就行了,而不用关注镙帽是怎么生产的,反正镙帽和镙丝钉按标来就一定能合得上。也就是因为标准具有这样的威力,所有计算机界有很多标准。

不断地把程序的某些部分抽像差包装起来,也是实现关注点分离的好方法。一旦一个函数被抽像出来并实现了,那么使用函数的人就不用关心这个函数是如何实现的,同样的,一旦一个类被抽像并实现了,类的使用者也不用再关注于这个类的内部是如何实现的。诸如组件,分层,面向服务,等等这些概念都是在不同的层次上做抽像和包装,以使得使用者不用关心它的内部实现细节。

每一个程序员都应当理解SOC,并在实践中遵循这一真理。当你在编程的过程中,一时搞不清程序的每一个细节,你可以只关注于主干,把程序的主干写出来,再逐一关注没个分支。这是一种自上而下的方法。如果主干也搞不清,那可以先关注于分支,写出分支,再不断地组合这些分支成为主干,这是一种自下而上的方法。时刻考虑着,是不是要把这一段程序抽像成一个方法,或者类,是不是那样会更好。如果不这样去想去做,要么面对问题无从下手,写不出什么来,要么只会写出面条似的拖沓冗长的代码。不会用SOC,摆在面前的永远是复杂得不能解决的问题。

Share/Save/Bookmark

今天到上海图书馆去办了图书证,当我想把我选中的书借回去看时,工作人员说,我得交1000块钱做压金办个参考书外借功能,不然我只能借出对面那个房间里的书。我就先去看了一下那边的书,很令人失望,那书又少又破。1000块压金不算什么,我还是出得起的,于是我去办参考书外借功能。当我在通过电脑自助办好申请,转入柜台办理后,工作人员要我出示身份证,看完我的身份证,她说:你是外地人,你有居住证吗?没有居住证不能办参考书外借功能的。 我只好很不爽地离开图书馆。

外地人,是我在上海的身份,在上海,我被人看作劣等人,我必须每月交付足额的个人所得税,却得没有资格参与足额的失业保险,养老保险,医疗保险,也没有住房公积金。现在,连书都不能借。如果我办到了居住证,那我就能做次等人了。但是办居住证所需要的一堆条件实在让人烦透了,完全就是不想让人家办居住证嘛!身住证明,工作证明,租房合同,健康证明不就已经足够证明我是一个健康的在上海居住工作的人了吗?为什么还要出什么户籍证明,学历学位证明,租房证明?我还好,这些东西,花上一个月,请几天假,跑跑腿,都还是能凑到的,可是,如果你学历不到本科,只有大专,对不起,除非你是大款,你在上海投资了300万以上,否则你是不可能申请到的,而如果你低于大专,呵呵,你得投资1000万以上才行。上海的这种制度太堕落了,死要面子,贪财! 从这方面来看,上海是个丑恶的城市。

我希望有一天,作为一个中国人,不论在中国的哪块土地上,只要我正当地工作,为国家交税,我就能平等地享受到应有的待遇!我不希望再在中国做三等公民!这一天什么时候才能来临呀!

Share/Save/Bookmark

October 26th, 2007想挣大钱,去当老板

今年八月回农村老家一趟,发现每晚一个邻居都不关灯。妈妈说我的那个初中毕业的小时候玩伴,现在雇人在网上搞什么东西,天天搞到很晚。正巧这位小时候的玩伴知道我回来,特意来找我,原求他找了一帮农村小青年在网上玩网游,把打到的游戏虚拟物品在网上转卖给别人,因为玩的都是美国的游戏,一个月也能搞个两三万。他来找我是想让我帮他做一个游戏外挂,可是我并不是做这方面东西的。

晚上下班后接到老父亲打来的电话,说前两天一个表叔来我家作客,他的儿子去年从一个不知名的大专毕业后,一个高中毕业生雇他在网上做生意,月薪2000,他不干,就自己单作起来了,如今月净收入2万。我这样一个正规大学本科毕业生,出来在上海这样的地方工作了两年了,一个月也不超过一万呀,还不如人家找点生意做做呢。

经历过这两件事情后,更是让我觉得,只会埋头工作,给人打工的人,是不会挣到多少钱的。生意头脑和大胆创新的精神实在是太重要了。如果我现在能找到一个好的挣钱的门路,我真愿意去干一回。打工怎么样呢?就算打到比较高层,又如何呢?我的同学毕业一年,进入全球知名的外企,薪资也不过2万,只和人家一个大专生差不多。打工永远是被剥削的,你为老板挣十块,他只会给你两块,大头都被老板拿走了。我的劳动价值为何要给别人呢?不行,给我个时机,我要自己打工,自己为自己挣钱,拿到属于自己的劳动所得。

尤其是程序员们,我们程序员工作最累,需要学得最多,做出了精密的软件系统为各公司服务,帮老板挣得钵满盆满,但拿到的却不多。前几天有个程序员来应聘,很不错的一个毕业生,开出的薪资居然是1500,真让我心疼,程序员都这么贱了吗?我实在是不忍,向人事一再建议多给人家点。每个老板都在开着车,住着洋房的时候不顾员工的生活,我们连想成个家都不容易,唉。

del.icio.us 标记: ,

所以,如果找到了机会,就不要打工了,去拼一把吧,自己当老板去吧!打工没什么钱途的!

Share/Save/Bookmark

最近在招聘java 网络程序员的时候发现,好多人都对一某个流行的web框架非常熟悉,却写不出一个servlet和jsp。面对着他们觉得自然的表情,我不仅惊讶,更觉得无奈。java 网络程序员真的不需要知道servlet吗?回答当然是需要。不懂得servlet的java web程序员永远是在瞎子摸象。java世界里的web层开发框架那么多,到现在都没有一个能够成为绝对的主流的,只会其中的一两种框架的使用,就等于把自己限定在那几种框架。就算会使用很多框架,但时代在变迁,尤其是java世界变化得更快,一两年后这些框架大多都变得不再流行或者面目全非了。所以想在这一领域站住脚,应该看到这些框架背后更持久的东西,而这就是servlet,j2ee web层最重要的东西。不论是struts, struts2还是jsf等,都是通过servlet或者filter(servlet规范里的东东)来实现的。如果懂得了servlet不仅可以很快地学习会别的web框架,还可以加深自己对java web层的理解。真正地理解了http请求如何到达你的代码,才能够更得心应手的使用这些框架,并在出现问题时准确地定位到问题所在。其实好的框架应该是能够完全把底层的东西给屏蔽掉,以减轻框架使用者的开发难度,唉,可惜现在的这些框架真的都是无法做到这一步。比如session的概念,这个东西是在servlet里引入的,struts, struts2,jsp等都有session,而这些session就是servlet的session。如果有新手打算学习j2ee,学习web层编程,希望您能够耐心的先把servlet这样基础的东西学一遍。

Share/Save/Bookmark


第1 页 共1页1
© 2007 涂0实验室 | iKon Wordpress Theme by Windows Vista Administration | Powered by Wordpress