当您拥有XY其他可以帮助您的库,逻辑等的语言时,为什么有人会开发自己的语言以仅在该公司内部使用呢?将流程与其他内容一起使用,而不是开发自己的语言,不是很简单吗?
当您拥有XY其他可以帮助您的库,逻辑等的语言时,为什么有人会开发自己的语言以仅在该公司内部使用呢?将流程与其他内容一起使用,而不是开发自己的语言,不是很简单吗?
Answers:
当您意识到这通常是漫长的过程而不是一个只说“我们想创造新语言”的人时,就会更容易理解。
通常以这样的想法开始:可以使用一种简单的领域特定语言来解决某些问题。目的通常是让非专家使用这种语言,因此它很简单,并且经常缺少诸如强类型和模块之类的功能。
到目前为止,一切都很好。但是随后,人们开始遇到语言无法解决的问题。因此,新的“功能”被缓慢添加以解决这些问题。而且由于过程缓慢且功能很少,因此只要解决了问题,就没有动机去适当设计这些新功能。
随着时间的流逝,这种新语言获得了将其功能从简单的领域特定语言转换为复杂的“通用”语言的功能,这些语言通常具有冲突,令人困惑的语义和难以遵循的语法规则。
当人们意识到自己创造出如此巨大的野兽时,现在已经为时已晚,要杀死它并用适当设计的语言代替它。
有几种这样发展的语言并不局限于特定公司的咳嗽 JavaScript 咳嗽 PHP 咳嗽。
将流程与其他内容一起使用,而不是开发自己的语言,不是很简单吗?
当然可以,但是为了达到荒谬的目的,如果没有人开发新语言,我们所有人都将用汇编语言编写所有内容。
有时没有人流。之所以会出现新语言,是因为有人渴望尝试,无论是只是想发明新事物的语言爱好者,还是想满足已有需求的公司。
这正是John Backus 在1953年提出“ IBM数学公式转换系统”时发生的情况。他希望科学用户指定一种比通过汇编形式编写数学公式更简单的方法。该专有产品成为第一种非汇编语言,而您将其称为Fortran。
Fortran是第一个走这条路的地方,而Erlang几乎是它的发源子。爱立信希望改进其电话交换机软件的开发方式,并发明了一种原型设计语言,具有其所需的特定功能。当我第一次探索它时,我的收获是它是由一个有实际问题的人开发的,可以解决1986年提供的任何其他语言都无法很好地解决它的问题。Erlang仍然是专有的内部产品,例如您的直到十年后它才开源之后,同事才遇到,现在它已成为主流语言。
Go和Scala在事物的宏伟计划中都是相对年轻的语言,在您的同事公司使用的语言完全有可能早于这两种语言。他需要做的是询问它的历史,为什么它存在以及为什么继续使用它。
我在2003年至2013年之间的十年时间里为一家公司工作,该公司广泛使用了特定于行业的环境,其中包括自己的语言,该语言起源于1970年代后期。尽管某些较新的语言可能是更合适的替代品(并且随着时间的推移嫁接了它们的钩子),但是该行业对其投入了足够的资金,并且拥有大量经过验证的代码,根本就没有一个好的商业案例。切换到其他东西。
我以前看过 它永远不会运作良好。某些人具有“此处未发明”的复杂结构。通常,这会导致公司四处奔波,重塑车轮。
想一想。这种新语言可能一直在中断。在解析器,编译器,VM,链接器之间,等等...现在有成千上万的错误,人们将花费很多时间来调试随机问题。他们认为自己需要其他语言所没有的一切。
C / C ++用于编写所有类似的操作系统。但是有人认为他们需要一些不同的东西。