这可能是一个愚蠢的问题,但我仍然要继续问它。 现在我看到正在为JVM开发新的动态语言,如Groovy,而像Ruby这样的语言越来越突出。
这些似乎都解决了现有语言中的不同缺点。
是否有任何一种或一组问题未被任何现有语言解决?
答案 0 :(得分:7)
严格来说,没有。如果一种语言可以被证明是完整的,那么它可以做任何计算机所能做的事情,毕竟如果有人愿意,可以在程序集中进行编程。新语言发展的原因有以下几个原因:
任何语言都有缺点,没有语言可以完美。 C是低级别的,所以通常不是最好的语言来编程说一个网站,另一方面,我不想在php中编程操作系统,它会是一场灾难等等。
答案 1 :(得分:5)
新语言的出现有很多原因:
没有明确的问题列表。有人通常根据自己的经验决定,没有什么能完全满足他想要的东西,然后尝试创造出能够做到的东西。有时候它有效,有时则不然。有时它会变得流行,而不是很常见。
编辑:重要的是要记住,当谈到“问题”时,它往往是主观的。许多人认为内存管理是导致垃圾收集增加的问题。不是每个人都同意。
此外,语言中出现的功能以及至少部分提示新语言的出现并不一定与问题有关。他们更多的是关于可能以及什么是时尚。
封闭,一流的功能等目前很流行,尽管它们已经在Lisp中存在了几十年。这就是为什么大多数现代语言都拥有它们或正在获得它们的原因。什么是可能的也很重要。计算机能力并不便宜,以至于垃圾收集等开销或事情被认为是如此之小,以至于在大多数情况下,生产率的提高超过了任何实施成本。
最后,没有一种语言适合所有任务。正如我们想要对程序进行更改一样,语言也是如此。现在,Web开发是编程的一个重要力量。这不是10到15年前。 Web开发的有用功能不一定与编写重量级桌面应用程序相同,因此语言也在不断发展。
答案 2 :(得分:2)
整体趋势是编程语言越来越多地提高抽象级别。趋势是远离普通的程序调用。这既好又坏。更高的抽象级别可能很强大,但同时也可能更难使用。例如考虑AOP。非常强大,但也很难正确使用。
我们也看到了将范式混合在一起的趋势,例如现在越来越多的面向对象语言也融入了功能范式中的元素。这需要大量的反复试验才能找到完美的混合物。例如,考虑Scala,其中包含一种语言的许多想法。或Clojure将交易直接带入语言本身。
这种完美混合可能永远不会存在,会受到意见和品味的影响,因此我们将继续提出新的抽象来处理编程。
答案 3 :(得分:1)
我认为这主要是为了方便。我们以C ++或Assembly为例;据我所知,使用它们可以解决任何问题,但更复杂的问题可能很难,因为例如当你构建一个Windows窗体应用程序时,你自然不喜欢你必须使用指针;它只占用你宝贵的时间和精力。
另一个很好的例子是.NET的实验性编程语言Axum,旨在使线程化非常方便。
此外,专业的编程语言可以在某些领域提高效率;想到SQL(我知道它不是'真正的'编程语言,但我认为这是一个很好的例子)。
顺便说一句,那些喜欢这样做的人(当然还有金钱)都很有趣;我经常发现自己正在尝试除了我需要的其他编程语言,因为它们只是不同而且有趣。对某些人来说,构建编译器和口译员也是一项非常令人兴奋和具有挑战性的任务。
答案 4 :(得分:0)
在某些情况下,新的编程语言可用于利用新的硬件架构。例如,利用专门为此目的而制作的语言,利用GPU的大规模并行功能会更容易。