所谓“原型语言”,我指的是一种由于它相对容易快速完成特定环境下原型设计中常见的设计变化而被选择的语言。(例如,数据可视化)
所谓“生产语言”,我指的是一种更坚固的设计,它很可能生产出更令人满意、更优化、更易于维护的产品。例如,我们可以在MatLAB或IDL中创建一个数据可视化原型,但切换到C++。
一个非常简单的判断可能是主观判断,即“我现在已经完成了原型制作”,但是原型设计往往“逐渐变小”,而不是突然结束,而且人们常常意识到,在过去的某个时候,人们可能应该换到可选择的生产语言。也许一个好的度量包括捕捉一些“速度”信息(敏捷风格),并在速度变化时观察拐点?
FYI、“为什么要动”和“项目的...scale和严格性”虽然相关,但与当前的问题不重复。
发布于 2015-07-10 03:02:08
由于您提到了Matlab (和IDL)与C++的比较,我将说明我对该场景的答案。
在从原型语言转换到生产语言时,指标的简短摘要是必要的:
我将更多地讨论这些方面。
一个明确的指标,表明现在是时候迁移,往往是规模。这样,当问题的复杂性,或者软件开发过程的复杂性,变得足够大,以至于像Matlab这样的东西不能很好地处理它时,就变成了转向更面向生产的语言的时候了。
问题复杂性尺度可以包括当要处理的数据量达到使用解释语言计算不足以达到足够吞吐量的程度时。
Matlab和生产语言之间的选择随着Matlab最近的发布而变得不那么清晰。Matlab现在确实为多核、GPU和分布式计算提供了一些支持。与本机实现相比,这种支持在开发表现力和性能方面是否足够值得商榷。但它确实使拐点变得不像没有这种支持的时候那么清晰。
因此,需要仔细评估产品语言中的代码开发是否比原型语言具有明显的性能优势,或者是否适合并行或分布式计算体系结构。一种生产语言,尤其是可以本地编译的一种语言,无疑比JIT编译的解释语言更能利用编译器和处理器特定的优化。
您在问题中提到的规模的另一个方面是在软件开发过程中。在开发大型软件方面,生产语言比Matlab具有显著的优势。Matlab对面向对象编程、字符串处理、矩阵以外的数据结构的支持通常被认为比在生产语言中甚至Python中都要弱。
但是,它是通过开发库和模块来划分和重用代码的能力的,在这些库和模块中,像Matlab这样的原型语言确实不能满足生产语言的需要。当代码库变得足够大时,当这些缺陷导致开发时间和团队协作受到影响时,就应该进行切换。
https://softwareengineering.stackexchange.com/questions/289299
复制相似问题