我知道这是非常抽象的,但我相信它非常专注。
目前有很多高级语言: C#, Java , VB , Python 等所有这些都是为了提取低级复杂性并提供更加用户友好的编程体验。高级语言可以减少并且大部分时间完全删除执行低级特定于进程的操作(例如指针操作和内存管理)的必要性。许多还删除了平台细节(如文件操作,用户界面生成等)
我的两个问题是:
答案 0 :(得分:4)
实际上虽然......当然,这条线是完全随意的。
答案 1 :(得分:4)
在语言中包含非常高级别的抽象的一个问题是,有时它们不适合你想要完成的所有事情,所以你最终也需要较低级别的抽象。在同一种语言中使用高级和低级抽象的问题是,如果您可以通过低级抽象来探测高级抽象,那么高级抽象可能很容易泄漏。
例如,Java甚至不是那种高级别的语言,但它首先被设计为安全的(在抽象不泄漏的意义上)。因此,有些事情在Java中是不可能的。例如,您不能在Java中编写Java的垃圾收集器,也不能使用指针转换多态来滚动您自己的对象系统,或编写操作系统(至少不是传统的操作系统)。相比之下,D提供高水平和低水平的设施。例如,D的垃圾收集器是用D语写的。这听起来不错,而且大部分都是如此。但是,当您开始在单个代码库中混合抽象级别时,抽象可能会泄漏,特别是如果您使用强制转换或联合来打败类型系统。因此,要在D中成功编程,您可能偶尔需要了解一些处理漏洞抽象的低级细节,即使您不需要它们来完成手头的任务。
答案 2 :(得分:2)
Tcl有一个正式的提案(Tcl Improvement Proposal (TIP) 131几乎可以很好地解决这个问题。它只需要一个志愿者来完成这项工作。甚至还有一个骨架实施,只剩下一些细节。< / p>
答案 3 :(得分:2)
某些特定领域的语言可能非常“高级别”。一个很好的例子是 Inform (用于编写文本冒险),其中编程语言与普通英语没有太大区别。以下是example project的摘录:
The fireplace is scenery in the Entrance Hall. The description is "Unlit, vacant
[if Search is happening]. It is almost as though you are not expected[end if]."
The sound of the fireplace is "whistling wind". Understand "fire" or "whistling"
or "wind" as the fireplace. Instead of burning the fireplace: say "There is no
fuel prepared for a fire."
这是实际的源代码。 :)
答案 4 :(得分:2)
我认为假设的未来语言将允许您编写验证程序而不是实现。然后编译器分析该验证器并(尝试)编写与您的规范匹配的实现。 (显然编译器必须失败或有时会回到暴力,因为它不是一个停止的解算器。)
基本上,与粗暴强制回答相比,逻辑语言具有荒谬的优化。
尽管验证代码可能比实现代码更长,但它可以提供更好的文档,并且更接近规范的样子。您可以交换更多的代码输入时间,以减少文档/规范/代码取消。
例如:
int32 Remainder(int32 numerator, int32 denominator) {
requires denominator != 0
ensures Math.Abs(result) < Math.Abs(denominator)
ensures exists n suchthat n*denominator + result == numerator
}
int32 EuclideanRemainder(int32 numerator, int32 denominator) {
requires denominator != 0
ensures result >= 0
ensures result < Math.Abs(denominator)
ensures exists n suchthat n*denominator + result == numerator
}
结果:
//warning: suggested precondition: denominator != int32.MinValue due to Math.Abs
int32 Remainder(int32 numerator, int32 denominator) {
return numerator % denominator;
}
int32 EuclideanRemainder(int32 numerator, int32 denominator) {
return ((numerator % denominator) + denominator) % denominator;
}
答案 5 :(得分:1)
Hrm,我认为一些语言试图引领一些额外的抽象:Clojure的STM和Erlang的Actor模型。
答案 6 :(得分:0)
我认为框架是下一步。
答案 7 :(得分:0)
想象一下统一环境中那些人的联合,因为开发环境是开发的重要组成部分,正如可以访问的库及其访问级别一样。