longshanks

  C++博客 :: 首页 :: 联系 :: 聚合  :: 管理
  14 Posts :: 0 Stories :: 214 Comments :: 0 Trackbacks

常用链接

留言簿(10)

我参与的团队

搜索

  •  

最新评论

阅读排行榜

评论排行榜

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

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

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

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

posted on 2007-11-22 09:56 longshanks 阅读(2938) 评论(13)  编辑 收藏 引用

Feedback

# re: 两类程序员 2007-11-22 10:24 西门有悔
呵呵。比较赞同。

我感觉自己属于后者。因为我不是学计算机的。

我更乐意用MATLAB这样的科学计算软件来表达我的思想。  回复  更多评论
  

# re: 两类程序员 2007-11-22 15:24 <a href=http://minidx.com>minidxer</a>
这个……应该一般公司都会区分的吧。搞研发的和作业务的  回复  更多评论
  

# re: 两类程序员 2007-11-22 18:42 Ray
嗯,观点不错,但有待推敲,

不过,这个是博主的原创吗?为什么提到Ada?
还有,为什么提到脚本语言却选择了最复杂的几种脚本语言啊?  回复  更多评论
  

# re: 两类程序员 2007-11-22 23:55 Guonic
我绝对属于前者   回复  更多评论
  

# re: 两类程序员 2007-11-23 09:38 金庆
精通C++,再掌握一两门脚本,那不就好了?  回复  更多评论
  

# re: 两类程序员 2007-11-23 11:46
ada是个好东西.  回复  更多评论
  

# re: 两类程序员 2007-11-23 16:20 Corner Zhang
:) 精通C/C++,汇编,及它们的熟练运用,对现代计算机体系就够相当的了解.
on loading...  回复  更多评论
  

# re: 两类程序员 2007-11-24 16:16 oomusou
寫得極好
我也正有此想法

業務語言的代表應該是matlab,一個很簡單的語言,但卻非常的強大,這種語言的強大主要是靠library在強

另外一種業務語言的代表就是Verilog,IC design全靠這種

其實還有一種中間的語言: C#
要強沒C#那麼強,但也有八九分,但.net framework超強,憑藉著這個強有力的library做很多業務都很簡單,windows, web, embedded, office....可以寫一堆東西...

沒吹捧C#的意思,只是我覺得大概可以分三類而已
1.C++ 超強語言
2.C# 語言還可以,某些領域還不錯
3.matlab, VFP, Verilog...語言不強,但專屬領域超強

  回复  更多评论
  

# re: 两类程序员 2007-11-25 10:04 李亚
属于前者...
个人觉得自己比较懒的原因让自己成为前者...  回复  更多评论
  

# re: 两类程序员 2007-11-26 12:21 小名阿铁
楼主的观点和我之前向的很是相同.
一种面向底层(实现),一种面向服务(基础).
他们都是平等的,都是对社会有贡献的.
所以无论干什么(底,高)层,程序员都是平等的.  回复  更多评论
  

# re: 两类程序员 2007-11-26 15:29 @王一伟
来这里的都会选前者的

每种程序员的竞争力核心不一样,不能只狭隘的吧所有的东西归结到程序语言本身上。

很少有人的工作是完全纯净的某一个狭小的领域的,混合型工作是工作的主流,各个层面工作的比例不同造就了我们在这里讨论的几种程序员的工作重心不一样,核心竞争力也就不一样 呵呵  回复  更多评论
  

# re: 两类程序员 2007-12-19 21:30 ffl
个人超喜欢C++,sheme,ruby,matlab。  回复  更多评论
  

# re: 两类程序员 2008-01-07 10:52 kong
同意楼主的划分。
个人观点是:在这个产业链里面其实是很复杂的,开发企业应用的话,第一类人就是处于产业链的上游,用来开发核心库,IDE ,组件,等等,而这类人是瞧不起产业链下游的人的,这个大家都知道,《程序开发心理学》里面也提到了这点,试想,使用自己开发的库的人是满足自己虚荣心理的。。。

第一类人喜欢纯净的工作,所以多呆在研究院,基础平台开发,预研等地方,或是做网站开发(yahoo,baidu之类的),不喜欢把自己的精力投到过多的业务逻辑上面,这样感觉很没趣味,这便是技术型主导的人。

第二类人是对问题并不想透彻了解的人,而业务很容易掌握,所以就投身到开发上面去了。
真正的懒人是第一种,对繁琐的业务逻辑不关心也不感兴趣,对更改业务而更改代码实在不感兴趣,他只需了解技术核心就够了,纯技术的公司也是有不少的。

  回复  更多评论
  


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理