新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     W3CHINA.ORG讨论区     计算机科学论坛     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> 谈谈如何做研究,谈谈自己的科研生活
    [返回] 计算机科学论坛休息区『 科研生涯 』 → 两类程序员[转帖] 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 13250 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: 两类程序员[转帖] 举报  打印  推荐  IE收藏夹 
       本主题类别: 信息检索    
     DMman 帅哥哟,离线,有人找我吗?魔羯座1984-1-11
      
      
      威望:1
      头衔:数据挖掘青年
      等级:研二(Pi-Calculus看得一头雾水)(版主)
      文章:803
      积分:5806
      门派:W3CHINA.ORG
      注册:2007/4/9

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给DMman发送一个短消息 把DMman加入好友 查看DMman的个人资料 搜索DMman在『 科研生涯 』 的所有贴子 点击这里发送电邮给DMman 访问DMman的主页 引用回复这个贴子 回复这个贴子 查看DMman的博客楼主
    发贴心情 两类程序员[转帖]


    http://www.cppblog.com/longshanks/archive/2007/11/22/37116.aspx
        根据观察,我发现有两类程序员。一类程序员喜欢技术,会认认真真地学习一种语言,设法掌握语言的使用要领和方法。他们关心的是语言的功能,以及功能的运用。对于语言的缺陷有相当的容忍度,并且也乐意接受语言的缺陷,只要语言能够提供足够强大的功能。
        另一类程序员则相反,他们更侧重于用语言实现某些具体的业务。对于他们而言,语言的功能强大与否没什么关系,只要别妨碍他们在软件中实现业务。
    对于前者,语言的功能至关重要。他们需要一种语言帮助他们最大限度地发挥智慧和创造力,更快、更好、更高效地构造稳定、可靠、快速、可扩展、可复用的软件。
    而对于后者,语言的简单至关重要。他们需要一种语言帮助他们最大限度地发挥智慧和创造力,更快、更好、更高效地将业务转变成软件的功能。
        如果认同一类程序员,而贬损另一类,那就太狭隘了。这两种程序员对于软件开发而言,都有各自重要的地位。更重要的是,这两类程序员是互补的。前者的能力适合开发可扩展的基础服务和组件,他们是技术专家。而后者则恰好符合业务实现专家的特征。
        然而,我们传统的组织形式却将这两类程序员压缩在一个共同的空间中执行开发工作。也就是让他们使用同一种(或同一层次的)语言和技术开发软件。
        现在的麻烦是,没有哪一种语言既简单、方便,又功能强大。如果选用功能强大的语言,比如C++,那么技术专家满意了,他们构造出漂亮优雅的软件。但对业务专家是个灾难。他们发现自己已经不知不觉地陷入了语言复杂性的泥潭,而艰难地试图抓住业务功能的枝干。而反之,选用使用方便,但功能弱小的语言,对于业专家是个福音,他们可以专注于业务实现,心满意足地完成工作。但技术专家却无法按他们的想法达到诸多技术性和软件工程性的要求,比如性能、可维护性、扩展性等等。
       最终,多数企业会选择一种“中性”的语言,功能基本完备,但不很强大,学习和使用相对简单,但又不是最简单的。这样的折中一般会基本“摆平”这两类程序员,但也有很多时候让两类程序员都不满意。大多数情况下,即便两类程序员都满意了,却在客观上使得两类程序员都无法发挥最大的工作效率,从而无法使开发效率最大化、最优化。

       解决这类问题最直接的方法就是让这两类程序员使用各自适合的语言,在各自擅长的领域开发软件。技术专家使用C++之类功能强大,却不易掌握的语言,而业务专家则使用简单易用的语言,比如脚本语言、宏语言,甚至是某种特定用途的专用语言(DSL)。技术专家开发基础服务平台和组件,业务专家则运用简易的语言使用基础服务和功能,构建业务系统。这种优化组合往往会产生1+1>2的效果。

        对于语言的选择,技术专家无外乎C++、Ada之类的“全能”通用语言,新兴的D也可能成为更加适合的候选人。业务专家,可以使用脚本语言,如 python、ruby、javascript等等“粘合剂”语言。目前尚有一种新的发展方向,是运用专门的专用领域语言(DSL)。这类语言可以非常贴近业务领域的逻辑概念,语法不一定完备,但足以完成特定的业务工作。比如某种“记账”语言,就可以用来构造财务软件的业务逻辑,直接使用财务术语和概念,最大可能地消除与业务无关的语言要素,达到最简化的目的。

        这两类程序员的差异不一定是先天造成的,但这种差异足以对传统的软件开发组织形式提出挑战。因此,当我们在抱怨一门语言如何如何功能不济,或者如何如何复杂难用,那么请审视一下开发体系,或许一种语言已经被用在不适合的程序员,以及不该用的地方了。


       收藏   分享  
    顶(0)
      




    ----------------------------------------------
    数据挖掘青年 http://blogger.org.cn/blog/blog.asp?name=DMman
    纪录片之家 (很多纪录片下载)http://www.jlpzj.com/?fromuid=137653

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2007/12/18 21:49:00
     
     GoogleAdSense魔羯座1984-1-11
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 科研生涯 』 的所有贴子 点击这里发送电邮给Google AdSense 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2024/12/18 7:43:44

    本主题贴数1,分页: [1]

    管理选项修改tag | 锁定 | 解锁 | 提升 | 删除 | 移动 | 固顶 | 总固顶 | 奖励 | 惩罚 | 发布公告
    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    48.828ms