为什么编程语言中的前向引用如此罕见?

时间:2017-11-21 21:22:34

标签: compiler-construction

我目前正在使用自己的编程语言。我已经开始使用多次传递实现前向引用(解析然后分析,检测周期......)。这些算法有点沉重,但一旦完成它就非常有趣。

为什么今天99%的语言只使用前向声明?它只是编译时间吗?是教条​​吗?语言在古代被困?制作编译器的人不知道如何实现它?在过去10年中,没有人尝试过制作语言?

我问,因为我认为前向引用很棒,我相信我一定要把它们完全整合到我的语言中。它们实际上有什么问题吗?

除了编译之外,一切都在巨大的虚拟内存池中无序。所以我没有看到代码本身会有什么不同......

2 个答案:

答案 0 :(得分:2)

您接近得到的答案:历史上,许多语言都是在拥有巨大的VM池之前开发的,而且还是在CPU速度较慢的机器上开发的。

因此,使用前向声明允许对源代码进行较少次数的传递,因为您可以保证您已经处理过所需的任何声明。

答案 1 :(得分:2)

  

“必须编写程序供人们阅读,并且只能偶然阅读   机器执行。“1

阅读/审查代码最困难的部分之一是弄清楚这个名称的定义在哪里以及如何使用它。这就是为什么每个现代惯例都建议将变量定义为尽可能接近其使用,这就是为什么C&C的模型在函数开始时声明所有变量已经完全放弃在其他语言中。这就是为什么大多数C ++代码都具有类似匈牙利语的奇怪惯例,即在所有成员的名称之前添加m_前缀并且Python具有__前缀。添加前向引用只会为草率人员添加一个地方来定义他们的变量 - 在使用之后,可能会有数百行。

前向引用不会添加任何有趣的内容,因为依赖它们的所有代码都可以被等效地重写,杂乱的代码并使其更难阅读,并且最重要的是,使编译器更难编写。当然,这不是您自己开发的语言的问题,而是尝试将该功能添加到像C ++这样的上下文相关语言中。

该功能的价值与成本比率根本不值得实施。哎呀,即使实施它是免费的,我仍然告诉你,这些好处并不足以成为他们用语言的理由。