为什么编程语言关不掉select"features"
Why can't programming language turn off select "features"
随着编程多年来的发展(从汇编程序到高级语言),越来越多的功能(垃圾收集、异常、动态类型) 已作为标准添加到某些语言中。是否有可能创建一种高级语言,默认情况下所有功能都打开,并且一旦程序 运行s 也是如此,那么能够有选择地 在代码中打开功能 ,或者有一些代码被隔离,这样他们就不会使用这些功能。也许将抽象语法树中的分支修改为静态类型,而不是动态类型;编译,而不是解释。
有没有什么编程语言既可以作为动态的也可以作为静态的,还可以有选择地关闭垃圾回收,通过释放使用过的对象,甚至禁用异常处理,一直到运行-time 仅包含类似 c 的构造,或上述任何构造?
对于一种语言来完成你所要求的,它必须被构建为支持两种备选方案:垃圾收集和手动内存管理或静态和动态类型并使两个世界互操作。
换句话说,你所说的只是 "turn off A",实际上是 "design A, design B, design transitioning between A and B"。因此,这样做将需要大量额外的设计和实现工作,这会使语言更加复杂,最终语言可能会变成 "worst of both worlds".
现在,支持您提到的两种功能组合的语言确实存在,但形式有限:
C# 通常是一种静态类型语言,但它也有 dynamic
关键字,允许您为某些变量切换到动态类型。这主要是为了与动态语言进行互操作,在实践中使用不多。
C++/CLI 是一种支持手动管理内存(*
指针,new
分配和 delete
释放)和垃圾收集的语言内存(^
指针,gcnew
分配)。它主要用于 C++ 代码和 .Net 代码之间的互操作,在实践中并未广泛使用。
您可能已经注意到这里的一个主题:在这两种情况下,feature/language 都是为了连接两个世界而创建的,但并没有获得太大的吸引力。
随着编程多年来的发展(从汇编程序到高级语言),越来越多的功能(垃圾收集、异常、动态类型) 已作为标准添加到某些语言中。是否有可能创建一种高级语言,默认情况下所有功能都打开,并且一旦程序 运行s 也是如此,那么能够有选择地 在代码中打开功能 ,或者有一些代码被隔离,这样他们就不会使用这些功能。也许将抽象语法树中的分支修改为静态类型,而不是动态类型;编译,而不是解释。
有没有什么编程语言既可以作为动态的也可以作为静态的,还可以有选择地关闭垃圾回收,通过释放使用过的对象,甚至禁用异常处理,一直到运行-time 仅包含类似 c 的构造,或上述任何构造?
对于一种语言来完成你所要求的,它必须被构建为支持两种备选方案:垃圾收集和手动内存管理或静态和动态类型并使两个世界互操作。
换句话说,你所说的只是 "turn off A",实际上是 "design A, design B, design transitioning between A and B"。因此,这样做将需要大量额外的设计和实现工作,这会使语言更加复杂,最终语言可能会变成 "worst of both worlds".
现在,支持您提到的两种功能组合的语言确实存在,但形式有限:
C# 通常是一种静态类型语言,但它也有
dynamic
关键字,允许您为某些变量切换到动态类型。这主要是为了与动态语言进行互操作,在实践中使用不多。C++/CLI 是一种支持手动管理内存(
*
指针,new
分配和delete
释放)和垃圾收集的语言内存(^
指针,gcnew
分配)。它主要用于 C++ 代码和 .Net 代码之间的互操作,在实践中并未广泛使用。
您可能已经注意到这里的一个主题:在这两种情况下,feature/language 都是为了连接两个世界而创建的,但并没有获得太大的吸引力。