正确的工作语言

Man*_*noj 9 programming-languages

使用正确的语言作为工作是关键 - 这是我在SO中读到的评论,我也相信这是正确的事情.因此,我们最终为项目的不同部分使用了不同的语言 - 如perl,VBA(Excel宏),C#等.我们目前在项目中使用了三到四种语言.使用正确的语言完成工作使得自动化工作变得越来越容易,但是最近有人抱怨说,任何接管项目的新人都必须学习这么多不同的语言才能开始.也很难找到这样的人.请注意,这是在给定时间点最大限度地处理项目的一到两个人.我想知道我们所遵循的方法是否正确,或者我们是否应该融合到单一语言并尝试在所有工作中使用它,即使另一种语言可能更适合它.与此相关的经验也会有所帮助.

使用的语言及其目的:

  1. Perl - 处理大型文本文件(日志文件)
  2. C#with Silverlight用于基于Web的报告.
  3. LabVIEW用于自动化
  4. Excel宏用于处理Excel工作表中的数据,生成图表并导出到powerpoint.

小智 14

我会说你做得对.我曾经工作过的几乎所有项目都使用了多种语言,没有任何问题.我认为你可能高估了人们学习新语言的难度,特别是如果他们都使用相同的范例.如果您的项目使用Haskell,Smalltalk,C++和汇编程序,您可能会遇到困难,我必须承认:-)

  • +1.开发人员不要害怕接受其他技术. (6认同)
  • @Manoj是的,这就是我的意思,如果你坚持相同的范例,你就可以了.切换会导致问题,例如,许多C++程序员在编写SQL查询时相当差,因为这两种语言使用不同的范例.当然,这并不意味着您应该从C++项目中删除SQL.我希望优秀的程序员能够很好地了解至少几种语言,并且能够在四到五年内提高效率. (2认同)

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是一种优秀的语言),而是一个错误,因为我们未能充分考虑成本与效益.

  • 我想起了我和儿子一起看的口袋妖怪剧集.Oak教授问Ash(主角)和Gary他们在不同的口袋妖怪情境​​中做了什么.加里有各种各样的战略答案; Ash的是"使用我的皮卡丘".奥克教授说这些都是有效的策略. (2认同)