给没有"方向感"的人参考
来源:互联网 发布:windows平板刷安卓系统 编辑:程序博客网 时间:2024/04/26 00:31
语言联合国
当一个系统比较大的时候,使用混合语言编程是很常见的,因为:
每个语言都有适合使用的时机,一个大系统可以分成多个次系统或模块,每个次系统都有不同的特质,适合采用不同的语言。
大系统开发时,开发者的人数变多。每个人倾向于使用自己熟悉的语言和工具。
以我自己的例子来说,基于上面的考虑,我规划的系统,同时使用C++、C#、REBOL、Lua,未来可能还会加入Erlang。我们用C++进行系统编程(处理低阶的,和操作系统相关的部分),使用C#写跨平台的服务器(未来考虑用Erlang取代),使用REBOL写解析器和编译器,使用Lua作内部脚本语言。每个语言各适其所。
使用混合语言的开发方式,另一个好处是程序员擅长什么就用什么。学习一个语言到精通的地步,需要很长的时间。我们无法要求自己团队的程序员都能使用某个我所熟悉的语言,可以退而求其次,让他们用自己最熟悉的语言,只要开发出来的东西符合我们规定即可。
使用混合式语言开发,只要模块切割得当,接口定义清楚,架构设计正确,那么绝对是可行的。这是我的经验之谈。
但是也请注意,混合多语言可能会导致维护难度的提高。当开发某模块的人离职,且当初他所使用的语言没有其它人会,这个时候麻烦就来了。
混合多种语言开发系统,有可能要面对语言之间的阻抗(impedance)问题,就好像不同国家之间会有不同的文化隔阂一样。好的系统设计应该要考虑到这一点,减少模块之间的接触点,设法让语言之间的阻抗降到最低。
我的建议
如果你想培养一个全能的联合国梦幻开发团队,我的建议是要集合下面的语言人才:
C:进行系统开发
C++:进行COM与传统的微软技术开发
C#:进行现代的微软技术开发
PHP:进行Web后端开发
JavaScript:进行Web前端开发
Objective-C:进行Mac或iPh-one开发
Java:毕竟许多地方还是会用到Java
Python:进行脚本开发
如果有一支这样的梦幻团队,应该是任何软件都能很快地开发出来吧!我想。
2009年,估计全世界经济都处于低谷,这个时候,身为程序员的我们,更应该好好学习一两个语言,为未来做准备。我的建议是,如果你只会系统语言,就挑一个脚本语言学习;如果你只会脚本语言,就挑一个系统语言学习;如果你只会Procedure语言,就挑一个OO语言学习;如果你只会OO语言,就挑一个函数式语言学习;如果你只会静态语言,就挑动态语言学习。如果你都会了就挑逻辑式语言(Prolog)学习。如果你是个怪胎,什么都会了,连Prolog都会了,那么就学习REBOL吧!
(本文来自《程序员》杂志0902期)
每个语言都有适合使用的时机,一个大系统可以分成多个次系统或模块,每个次系统都有不同的特质,适合采用不同的语言。
大系统开发时,开发者的人数变多。每个人倾向于使用自己熟悉的语言和工具。
以我自己的例子来说,基于上面的考虑,我规划的系统,同时使用C++、C#、REBOL、Lua,未来可能还会加入Erlang。我们用C++进行系统编程(处理低阶的,和操作系统相关的部分),使用C#写跨平台的服务器(未来考虑用Erlang取代),使用REBOL写解析器和编译器,使用Lua作内部脚本语言。每个语言各适其所。
使用混合语言的开发方式,另一个好处是程序员擅长什么就用什么。学习一个语言到精通的地步,需要很长的时间。我们无法要求自己团队的程序员都能使用某个我所熟悉的语言,可以退而求其次,让他们用自己最熟悉的语言,只要开发出来的东西符合我们规定即可。
使用混合式语言开发,只要模块切割得当,接口定义清楚,架构设计正确,那么绝对是可行的。这是我的经验之谈。
但是也请注意,混合多语言可能会导致维护难度的提高。当开发某模块的人离职,且当初他所使用的语言没有其它人会,这个时候麻烦就来了。
混合多种语言开发系统,有可能要面对语言之间的阻抗(impedance)问题,就好像不同国家之间会有不同的文化隔阂一样。好的系统设计应该要考虑到这一点,减少模块之间的接触点,设法让语言之间的阻抗降到最低。
我的建议
如果你想培养一个全能的联合国梦幻开发团队,我的建议是要集合下面的语言人才:
C:进行系统开发
C++:进行COM与传统的微软技术开发
C#:进行现代的微软技术开发
PHP:进行Web后端开发
JavaScript:进行Web前端开发
Objective-C:进行Mac或iPh-one开发
Java:毕竟许多地方还是会用到Java
Python:进行脚本开发
如果有一支这样的梦幻团队,应该是任何软件都能很快地开发出来吧!我想。
2009年,估计全世界经济都处于低谷,这个时候,身为程序员的我们,更应该好好学习一两个语言,为未来做准备。我的建议是,如果你只会系统语言,就挑一个脚本语言学习;如果你只会脚本语言,就挑一个系统语言学习;如果你只会Procedure语言,就挑一个OO语言学习;如果你只会OO语言,就挑一个函数式语言学习;如果你只会静态语言,就挑动态语言学习。如果你都会了就挑逻辑式语言(Prolog)学习。如果你是个怪胎,什么都会了,连Prolog都会了,那么就学习REBOL吧!
(本文来自《程序员》杂志0902期)
- 给没有"方向感"的人参考
- C++没有所谓的"赋值构造函数"
- "git rm" 和 "rm" 的区别
- 比较两个整数的大小,不能使用 "if", "?:", "switch" 等
- " " ' '
- 解决从服务器获取的数组是 __NSCFConstantString以及""没有空格字符串的问题
- 【分享】绿色软件的"绿化"方法
- 高端技术人才的"猎经"
- 高端技术人才的"猎经"
- "阴谋家"王莽鲜为人知的另一面
- null与""的区别
- "返回"按钮的解决方案摸索
- struts2的method="{1}"
- 两千块钱带来的 "希望"
- 两千块钱带来的 "希望"
- 一段神奇的代码"下雪"
- @SuppressLint("NewApi")的作用
- spring 的scope="prototype"
- 2009年4月24日
- PHP学习!
- 你到底要走怎样的路?
- c#中对事务的处理(部分)
- 想找工作吗?--攻其一求精吧
- 给没有"方向感"的人参考
- 初次登入student.csdn.net
- 常见的动态语言
- madplayer安装与移植
- 正式进驻csdn学生大本营
- 安装内核源码树
- skyeye+uClinux配置成功
- 加入学生大本营
- c#实现邮件发送