Programming languages 需要创建一种新的编程语言的问题有哪些?

Programming languages 需要创建一种新的编程语言的问题有哪些?,programming-languages,language-design,Programming Languages,Language Design,这可能是一个愚蠢的问题,但我还是要继续问下去。 现在,我看到新的动态语言,比如为JVM开发的动态语言,以及像Ruby这样的语言越来越突出 每种语言似乎都在解决现有语言的不同缺点 是否有任何一种或一组问题未被当前语言解决?新语言的出现有多种原因: 作为发明人的练习 由于现有解决方案中的缺陷 引入新的想法,这些想法很难移植到现有的语言中 没有确定的问题列表。有些人通常根据自己的经验简单地决定,没有什么能完全满足自己的需求,然后试图创造出能够满足自己需求的东西。有时有效,有时无效。有时它变得流行起

这可能是一个愚蠢的问题,但我还是要继续问下去。 现在,我看到新的动态语言,比如为JVM开发的动态语言,以及像Ruby这样的语言越来越突出

每种语言似乎都在解决现有语言的不同缺点


是否有任何一种或一组问题未被当前语言解决?

新语言的出现有多种原因:

  • 作为发明人的练习
  • 由于现有解决方案中的缺陷
  • 引入新的想法,这些想法很难移植到现有的语言中
没有确定的问题列表。有些人通常根据自己的经验简单地决定,没有什么能完全满足自己的需求,然后试图创造出能够满足自己需求的东西。有时有效,有时无效。有时它变得流行起来,但往往不是

编辑:重要的是要记住,当涉及到“问题”时,往往是主观的。许多人认为内存管理是一个问题,导致垃圾收集的兴起。并非所有人都同意

此外,语言中出现的特性,以及至少在一定程度上促使新语言出现的特性,并不一定与问题有关。他们更关注什么是可能的,什么是时尚的

闭包、一流函数等现在很流行,尽管它们在Lisp中已经存在了几十年。这就是为什么大多数现代语言要么拥有它们,要么正在获得它们

可能发生的事情也很重要。计算机电源并不便宜,因此开销或垃圾收集之类的东西被认为是如此之小,以至于在大多数情况下,生产率的提高超过了任何实现成本


最后,没有一种语言适合所有任务。随着我们对程序所做的改变,语言也随之改变。现在Web开发是编程中的一股巨大力量。那不是10-15年前。Web开发的有用功能不一定与编写重量级桌面应用程序相同,因此语言也会不断发展。

严格地说,不是。如果可以证明一种语言是图灵完全的,那么它可以做计算机可以做的任何事,毕竟,如果需要,可以用汇编编程。新语言发展的原因有几个:

  • 新的编程范式,例如面向对象编程、面向方面编程等
  • 领域特定语言,例如web开发、硬件设计语言等
  • 个人喜好

  • 任何语言都有缺点,任何语言都不可能完美。C是低级语言,所以通常不是最好的编程语言,比如说一个网站,另一方面,我不想用php编写操作系统,这将是一场灾难,等等。

    我认为这主要是为了方便。让我们以C++或汇编为例;据我所知,任何问题都可以使用它们来解决,但更复杂的问题可能会很难解决,因为例如,当您构建Windows窗体应用程序时,您自然不喜欢使用指针;这只会占用你很多宝贵的时间和精力

    另一个很好的例子是.NET的实验性编程语言,旨在使线程处理变得非常方便

    此外,专门的编程语言有助于提高其特定领域的效率;比如说SQL(我知道它不是一种真正的编程语言,但我认为它是一个很好的例子)


    顺便说一句,对于那些为快乐而做的人来说,这一切都很有趣(当然还有金钱);我经常发现自己在尝试其他编程语言,而不是我需要的语言,因为它们完全不同而且有趣。对某些人来说,构建编译器和解释器也是一项非常令人兴奋和具有挑战性的任务。

    总体趋势是编程语言越来越提高抽象级别。趋势是远离简单的过程调用。这是好事,也是坏事。更高的抽象级别可能功能强大,但同时也可能更难使用。例如,考虑一下。非常强大,但也很难正确使用

    我们还看到一种趋势,即将范式混合在一起,例如,越来越多的面向对象语言现在也加入了函数范式的元素。这需要大量的尝试和错误,直到找到完美的混合。例如,在一种语言中包含很多想法。或者将事务引入语言本身


    这种完美的融合可能永远不会存在,将取决于意见和品味,因此我们将继续提出新的抽象来处理编程。

    在某些情况下,新的编程语言可用于利用新的硬件架构。例如,使用专门为此目的而设计的语言,利用GPU的强大并行能力要容易得多。

    这应该是一个wiki问题。请在关闭此社区wiki之前将其标记为非真实问题。完成-标记为社区wiki较新的语言正逐渐从类似C的语言转变为类似Lisp的语言。最后我们会发现Lisp是最终的语言;-)我将继承我祖父的括号;)-但肯定会有某种问题在所有语言中不断重复出现,例如内存管理,或者我们可以轻松地使用pytho而不是Java中的列表。我只是想整理一小部分这样的问题。好吧,procedureal导致了OOP,这样我们就可以克服维护大型代码库的问题,并编写反映日常抽象的代码。因此,有可能出现一种新的语言,使云或分布式系统的编程变得容易