Man*_*noj 9 programming-languages
使用正确的语言作为工作是关键 - 这是我在SO中读到的评论,我也相信这是正确的事情.因此,我们最终为项目的不同部分使用了不同的语言 - 如perl,VBA(Excel宏),C#等.我们目前在项目中使用了三到四种语言.使用正确的语言完成工作使得自动化工作变得越来越容易,但是最近有人抱怨说,任何接管项目的新人都必须学习这么多不同的语言才能开始.也很难找到这样的人.请注意,这是在给定时间点最大限度地处理项目的一到两个人.我想知道我们所遵循的方法是否正确,或者我们是否应该融合到单一语言并尝试在所有工作中使用它,即使另一种语言可能更适合它.与此相关的经验也会有所帮助.
使用的语言及其目的:
小智 14
我会说你做得对.我曾经工作过的几乎所有项目都使用了多种语言,没有任何问题.我认为你可能高估了人们学习新语言的难度,特别是如果他们都使用相同的范例.如果您的项目使用Haskell,Smalltalk,C++和汇编程序,您可能会遇到困难,我必须承认:-)
Ber*_*t F 13
使用多种语言与可维护性只是另一项设计决策,其中包括成本与收益之间的权衡取舍,与任何设计决策一样,需要仔细考虑.虽然我喜欢使用"绝对最佳"工具来完成任务(无论"绝对最佳"意味着什么),但如果不考虑其他因素,我不一定会使用它,例如:
我和大约十几个使用C++,Java,SQL,TCL,C,shell脚本以及只需轻轻一点Perl的工程师一起工作.我很自豪我们使用了他们理解的"最佳语言",但是,在一个案例中,使用"最佳语言"(TCL)是一个错误 - 不是因为它是TCL - 而是因为我们没有完全遵守成本与利益的选择:*
我们只有一名工程师非常熟悉TCL - 原来的工程师拒绝使用任何东西,除了TCL用于特定的目标组件 - 然后该工程师离开了项目
这个目标组件是系统中唯一使用TCL的部分,它相对于系统中的其他组件来说很小
该组件也可以用我们已经使用的另一种语言实现,我们在(C或C++)方面有很多经验并需要额外的努力
这个组件似乎看似简单,但实际上有一些微妙的角落案例让我们陷入困境(这不是我们当时所知道的,但总是可以考虑作为一种可能性)
我们必须实现在每晚构建特殊的变化,因为TCL编译器(是的,我们编译的代码TCL成可执行)将无法正常工作,除非它可以先扔在屏幕上其标志了-这期间不可用的屏幕由cron发起的自动夜间构建.(我们使用xvfb来满足它.)
当bug出现时,我们很难找到想要工作的工程师
当该组件的问题仅在现场持续负载之后出现时,我们缺乏对TCL执行引擎的经验和深刻理解,以便在现场轻松调试
最后,维护和维护团队是一个规模小得多的团队,资源少于主要开发团队,他们还需要一种语言,他们需要培训和经验来支持这个相对较小的组件
虽然有许多事情我们可以做头断了一些问题,我们打下来的道路(如更多地强调让TCL的经验较早,运行更好的测试更早发现问题,等等),我的观点是总体成本与效益并不能证明使用TCL对单个组件进行编码是合理的. 再次,使用TCL 并不是一个错误,因为它是TCL(TCL是一种优秀的语言),而是一个错误,因为我们未能充分考虑成本与效益.