您的位置: 首页 >> 新闻中心 >> 计算机 >> 软件开发
“主动程序员”与“被动程序员”[1]
■ 最新课程推荐更多课程>>
学校培训课程开课时间上课地点精英价报名
正辰培训 微软软件测试工程师电话预约西直门教学区¥4704
新 科 海 软件测试工程师就业班电话预约海淀长远天地¥6280
北师大IT 软件工程与测试实战班电话预约北京师范大学¥1800
北师大IT 高级网络工程师就业班电话预约北京师范大学¥13000
金 同 方 网络工程师就业周末班电话预约人大总部¥7000
   我觉得这个世界上的程序员可以分为两种:"主动程序员"和"被动程序员"。"主动程序员"可以自己选择开发方式,开发语言和框架,"被动程序员"被动接受公司指定的语言和开发方式。其实在现实生活中,这种分类并不绝对,一个程序员可能在不同的时候担当不同的角色,"被动程序员"也可能享有有限的主动权。这么分类并不以程序员本身的知名度,财富多少,是否自己创业还是受雇于人有关。

  David Heinemeier Hansson 受雇与 37 Signal ,但是仍然可以自己选择建立自己的 Rails 框架来完成项目,他应该算是个"主动程序员"。Firebird 数据库的领导者同时也是 Interbase 数据库的创始人 Jim Starkey 将自己的公司卖给了 Mysql AB 而不得不给 Mysql 干活,从某方面说,他应该是个"被动程序员"。大多数第三世界国家的程序员应该属于"被动程序员",他们编程只是为了一份养家糊口的工作,他们无权选择自己喜欢的编程语言或者框架,因为这是公司给他选择的,因为如果选了其他,他可能就找不到工作了。曾经有个即将离职的同事让我给他推荐一个比较好的编程框架,可以很容易完成一个网站的制作,我给他推荐了 Zope, 还有 Rails, 他听我的介绍觉得不错 ,当我告诉他必须学习 python 和 Ruby 编程语言时,他显得很惊愕,"那能找到工作吗?"。这话其实也表达了大多数国内程序员的想法。看看招聘网站就知道,现在最需要的程序员是 Java 程序员,最需要了解的框架是 Struts。如果不会你很难得到面试的机会,所以就算你不会也要在自己的简历中"修饰"一下。

  有些自己创业的人可以自己选择喜欢的编程语言和框架,当然那毕竟是少数。如果我能够选择的话,我肯定不用 Java 来做网站应用。因为它完成一个简单的工作太麻烦了,很难快速适应需求的变化。当然我也不会去用 PHP ,因为我已经习惯了面向对象的编程方式了。 我发现一个奇怪的现象:大多数转向学习 Ruby on rails 框架的人都是来自 Java 阵营的程序员,而转向Python 框架Zope,django 的程序员大多有 ASP,PHP 背景。因为 Ruby 是一个真正的面向对象的语言, 它同时具备了脚本语言的特点,而 Python 首先是一个脚本语言,它具备了一些 OO 的特征。Java 程序员 很难忍受走回头路,所以他们选择了一个比Java更面向对象的语言 Ruby ,而PHP,ASP程序员没有那么重的思想负担,他们选择 Python 可能是因为它的代码更 Beauty ,远比他们以前写的"意大利面条"式的PHP,ASP 代码要干净的多。

  无论是 python, 还是 Ruby 这些非主流程序语言开发的框架,使用起来都异常的简便,他们可谓是真正从程序员角度考虑的框架。为什么 Ruby 一出,搅的 Java 的世界一片混乱,我想原因还是出在 Java 这里,当 Java 程序员想当然地认为程序开发应该如此麻烦的时候,Rails 的出现让他们立刻觉得被这些所谓的 Java 流行框架和 Sun 给欺骗了,这种欺骗是如此之深,以至于他们中间有的人"头也不回"的离开了 Java, 转而攻击 Java 的种种不是。这其中比较有名的人就是 Bruce Tate ,这位老兄写了两本轰动 Java 世界的书,Spring: A Developer's Notebook 和 Better, Faster, Lighter Java (该书可是获得 Jolt 大奖的,恰好我还都读过),随着 Rails 的流行,这位仁兄立刻叛逃出 Java 阵营,写了 Beyond Java 一书,着重介绍了一些非Java 框架,比如 Smalltalk 的Seaside, 和 Rails。

  Java 为什么这么复杂,我想了很久,得出这么个结论:这是因为 Sun 希望它那么复杂。为什么这么说呢?Sun 不是一个好的软件公司,它最擅长做的是制定规范,这很类似Java 编程中的 Interface, 经常编写 Java 程序的人,会发现 Interface 可能是出现最多的一个词汇了,任何框架中都充满了Interface —接口,大多数编程书都推荐面向接口编程(当然这不是Java的错,是设计模式要求的,不过 Java 将此发挥的最好)。首先定义接口,然后针对接口编写不同的实现,至少提供默认的实现。Sun 也是如此,看看 J2ee 的规范包含了多少 J 打头的技术, JDBC,JNI,JCA,JDO,JPA .... ,现在的 JCP 组织更加如此,每隔一段时间,就有大量的规范问世,Draft 的,还是 Final 的,充斥着Java 世界,这是 Sun 希望的, 每定义一个规范,就会有很多厂商来实现它,Java 的软件市场就做大了,这样 Sun 就可以靠授权,认证拿更多的钱,你看 Sun 的股票那么低迷,而却拥有那么雄厚的流动资金,原因再明白不过了,只要 Sun 还拥有 Java ,它就拥有了一切。

下一篇:高级语言程序设计:第四章习题解答

  4.1  单项选择题

    1.若有下列说明,则数值为4的表达式是(  )
      int a[12]={ l,2,3,4,5,6,7,8,9,10,11,12 };
      char c='a',d, g;
    ①a[g-c]           ②a[4] 
    ③a['d'-'c']   ...[查看详情]

  影视动画培训   北大BEC培训官方报名网站   2008美国夏令营启航官方指定报名网站   2008留学第一站!  
  北师大 火星时代
共举影视动画培训之鼎
  北大BEC培训官方报名网站
现在报名独享95折!
  2008年国家职业资格考试
一次过关完全备考手册
  2008留学第一站
留学资讯尽在精英留学站!
 
上一篇:“主动程序员”与“被动程序员”[2]
下一篇:高级语言程序设计:第四章习题解答
 相关新闻
·Win2000升级至2003的10大理由·高效程序员应该养成的七个习惯
·面试系列1返回整数中为1的位数·面试系列2约瑟夫环问题-Josephus-
·面试系列3冒泡算法(优化)·面试系列4以单词为最小单位翻转字符串
·面试系列5以单词为最小单位翻转字符串-改进版-·面试系列6TCP协议建立连接初期的“三次握手”
·面试系列7用两个栈实现一个队列的功能·面试系列9怎样才能检测到链表中存在循环
·面试系列8返回整数中为1的位数(优化版)·面试系列10关于指针的加减操作的理解
·高级语言程序设计:第一章习题解答·高级语言程序设计:第二章习题解答
·高级语言程序设计:第三章习题解答·高级语言程序设计:第四章习题解答
 
◇ 重点栏目导航
◇ 精英服务承诺
教育顾问:010-51660910
QQ交流:138660910
相关资料
·软件测试新手的修炼之路
·Smarty简体中文参考手册
·Struts中文手册
·Struts快速学习指南
·ultradev动态网页制作教程
·UML工具箱
·《设计模式》中文版
·学友Flash伴侣 1.11
·阿须图像水印(AssureMark)V2.0
·超级语霸
相关试题
·2008年云南公务员考试专业试卷之科技环保
·2008年云南公务员考试试卷之教育文化类专
·2008年云南公务员考试试卷参考答案之科技
·2008年云南公务员考试试卷参考答案之教育
·2008年公务员考试科教管理类专业试卷参考
·2008年公务员考试科教管理类专业试卷(云
·2007年全国CPA考试试卷及答案解析之《会
·2007年CPA试卷及答案解析之《财务成本管
·2008年注会考前模拟试题之《财务成本管理
·2007年全国CPA《税法》考试试卷及答案解
相关热贴
·如何改QQ IP地址!
·恰当选择软件测试自动化方案
·ADO.NET学习总结
·.net操纵xml文件类(c#)
·Log4net教程
·VPN技术详解
·高手必读 网络端口安全防护技巧放送
·访问XP共享出现的问题解决办法
·Web2.0时代,RSS你会用了吗?(技术实现总
·.NET下正则表达式应用的四个示例