为什么编程语言不能关闭选择"功能"

时间:2016-10-04 11:35:08

标签: exception dynamic garbage-collection runtime programming-languages

随着编程多年来的发展(从汇编语言到高级语言),越来越多的功能(垃圾收集,异常,动态类型)已被添加为标准某些语言。是否有可能创建一个默认开启所有功能的高级语言,一旦程序运行,然后能够有选择地转换代码中的功能,或者有部分隔离的代码,以便他们不使用这些功能。也许修改抽象语法树中的分支是静态类型的,而不是动态的;编译而不是解释。

是否有任何编程语言可以用作动态和静态,还有选择性地转换垃圾收集,通过释放使用过的对象,甚至禁用异常处理,一直到运行时包含的点只有像结构,或任何上面提到的?

1 个答案:

答案 0 :(得分:1)

对于要执行您要求的语言,必须构建它以支持两个替代方案:垃圾收集和手动内存管理或静态和动态类型并使两个世界互操作。

换句话说,你所说的只是"关闭A",实际上是"设计A,设计B,设计在A和B"之间转换。因此,这样做会带来大量额外的设计和实施工作,这会使语言变得更加复杂,语言可能会最终成为两个世界中最糟糕的......#/ p>

现在,支持这两种功能组合的语言确实以有限的形式存在:

  • C#通常是静态类型语言,但它也有dynamic关键字,允许您切换到某些变量的动态类型。这主要是为了与动态语言进行互操作,在实践中并没有太多用处。

  • C ++ / CLI是一种支持手动管理的内存,(*指针,new分配和delete解除分配)和垃圾收集内存({{ 1}}指针,^来分配)。它主要用于C ++代码和.Net代码之间的互操作,并未在实践中广泛使用。

你可能已经注意到了一个主题:在这两种情况下,功能/语言都是为了弥合这两个世界而创建的,但并没有获得太大的吸引力。