【问题标题】:Where are the new ideas in programming languages? [closed]编程语言的新思想在哪里? [关闭]
【发布时间】:2011-02-22 16:40:36
【问题描述】:

我最近一直在研究编程语言这个话题,据我所见,很少有甚至没有严肃的语言尝试创造出真正“新”的东西,而这些东西在创造之前是没有的。

  • 为什么自 1980 年左右以来所有或多或少成功的编程语言都只是结合了其前辈的各个方面?

我简直不敢相信编程语言“再好不过了”..

【问题讨论】:

  • “很少有严肃的语言尝试制作真正“新”的东西”?真的吗?你有证据支持这一点吗?什么是“严肃”的语言?您正在寻找的这些神秘的“新”事物是什么?
  • 我不是 OP,但我认为对于非严肃语言,他的意思是 Brainf*ck、空格、LOLCODE 等......确实有新想法.. . 只是可怕的。
  • 抱歉您的问题已解决。您可能会在 stackoverflow.com/questions/2651343 上找到一个密切相关的问题,关于语言是如何产生的以及为什么......
  • 其他相关的东西:stackoverflow.com/questions/432922/…stackoverflow.com/questions/987182/…,我认为在某个地方有一个几乎重复的内容,但它没有出现在我的搜索中......

标签: programming-languages history language-design


【解决方案1】:

如果它没有坏,不要修理它。

【讨论】:

  • 如果你不能说出你讨厌当前语言的 5 件事,那是因为你没有充分使用它。
  • 感谢您的反对 - 如果您在 OP 帖子中阅读了“– S.Lott”的评论,我认为这很有意义……当然,随着时间的推移,语言会发展出更多的功能,但OP 的论点似乎是应该改变 1980 年代的所有原则 - 我的论点是,如果有必要,那么肯定......但尽管这些方法和概念相当古老,但即使在今天它们也能很好地工作。
【解决方案2】:

人类不再每两年发明一次轮子;我们不断改进它。这同样适用于编程语言;我们改进它而不是取代它。

【讨论】:

    【解决方案3】:

    嗯,lisp 有一些尚未有人复制的东西,并且一直存在(我正在寻找 common lisp,特别是)

    【讨论】:

      【解决方案4】:

      新语言总会出现,看看scala

      【讨论】:

      • 好吧,scala 是 ruby​​ 和 java 的结合,所以他关于语言只是结合的说法仍然正确。
      • @dbemerlin:ruby 或 java(或任何其他语言)中的哪一种具有提取器(非构造器上的模式匹配)?路径依赖类型怎么样?自我类型?
      【解决方案5】:

      计算机语言一直都有新的想法,但它们仍然必须编译成相同的汇编指令,因此不会有根本性的变化。最后,您的所有代码仍将由循环、内存段(=> 变量)和大量跳转指令组成。

      一种新的编程语言路径是量子计算,这可能是一个“足够新”的想法。

      【讨论】:

      • Haskell 和 C 编译成相同的汇编语言,但我仍然认为 Haskell 编程与 C 编程相比是一个根本性的变化。
      【解决方案6】:

      因为我们还没有弄清楚如何很好地利用至少自 1970 年以来就已经存在的许多“旧想法”,而且还没有真正看起来像它们完全一样的任何根本上的新想法以一种让使用它们比改进我们已有的更有用的方式改变游戏。

      【讨论】:

        【解决方案7】:

        SubtextCoherence 呢?

        【讨论】:

        • 来自 Subtext 常见问题解答:“Subtext 是一种研究原型,远非可用语言”。换句话说:这是一个好主意,但我们还没有发现人们如何用它做出任何有用的东西。
        • @dbemerlin:这是一种实验性语言。对于实验性语言,这些想法通常会潜伏 20 或 30 年,然后主流语言才会获得一些最好的想法,也许是经过修改的形式。但是主流语言的变化很慢,因为人们改变习惯的速度很慢。
        • @dbemerlin:每个功能都是实验性的,直到不是。如果没有首先在实验性语言中实现,我们今天认为理所当然的许多功能就不会存在。
        • 这很有趣,谢谢。
        【解决方案8】:

        与其说是真正的“新”,我想说的是现代编程语言正在逐渐引入几十年来在计算机科学中广为人知但尚未真正影响行业的想法——或者以前在小众语言中出现的想法,但不是主流。

        例如,LINQ 的许多想法本身并不新鲜 - 但对于许多开发人员来说,LINQ 将是他们的第一次体验。

        将其视为“生产”以前“实验性”功能的过程。当我最近与 Eric Lippert 交谈时,他说 C# 团队试图避免在语言中包含“开放式研究”的想法——仅仅是因为他们无法判断这些想法是否会在长期内实现。语言有很大的试验空间,但在主流语言中可能没有。

        【讨论】:

        • +1。我认为“想法 -> 实验(概念验证)语言 -> 小众语言 -> 主流语言”可能是大多数编程概念在最终成为当今主流语言之前所采取的路径。
        【解决方案9】:

        呃,Perl 6?

        • 关于值、变量、子例程和类型的活动元数据
        • 参数化角色
        • 可以重写 AST 或源代码的宏(在 Perl 中实现)
        • 一种在 Perl 6 本身中实现的语法,可以通过代码进行扩展或修改
        • 多次调度、分布式调度、委托给调用链中的下一个项目
        • 语法作为语言中的第一类对象 - 几乎可以解析任何东西
        • 用户定义的中缀、前缀、环绕运算符,可以使用任何 Unicode 字符
        • 可选的强类型
        • 多态相等性测试
        • 假设变量
        • 超级操作符(列表的 SIMD 处理)
        • 协程
        • 惰性列表
        • 联结(具有多个值的变量)
        • 代码自动并行化

        Perl 6 采用了 Perl、Ruby、Python 等的特性集,添加了一个可选的强类型系统、Smalltalk 的 OO 和 Haskell 的功能能力——再加上一些创新:就像 Perl 5 将正则表达式引入作为主流,Perl 6 使非常规语法成为一等公民。是的,它正在开发中;虽然不完整,但进展很快:Rakudo Perl 6

        【讨论】:

        • 但它会完成吗?我一直在等待 Perl 6,所以我忘了它。
        • 我很期待 Perl 5 何时会窃取所有这些功能。 Perl 5 现在就在这里!。
        • 我担心 Perl 6 对我来说太难理解了。
        【解决方案10】:

        编程语言可以变得更好!你看过像AgdaEpigram 这样的语言吗?当然,这些是研究语言,所以也许不是你所说的“严肃语言”。但是,如果您对未来主流语言的发展方向感兴趣,他们可能会提供一些见解。

        【讨论】:

          【解决方案11】:

          我认为我们可以收集我们每天使用的设计模式并将它们添加到专门的语言中。

          为此,Vala 是一个好主意,尤其是当您主要使用 C 时。它为您提供面向对象、垃圾收集功能等等。我认为这是我测试过的最成功的源代码编译器之一。而且它仍然是一个柔软的泥泞的东西。

          【讨论】:

            【解决方案12】:

            新语言确实融合了新思想;物理计算的东西比以往任何时候都多。看看阿杜诺;它的语言帮助它变得流行,更不用说没有它它只会是一堆电线。不仅是语言,还有我们使用它们的方式。如果人们需要一些不可用的东西,他们可以做到。更不用说,编程语言与它们运行的​​硬件以及制造它们的人以及操作系统密切相关。 Windows 只能允许程序做这么多。此外,开发语言的人有时只是想要一个更轻量级、更易于使用和开源的替代方案,它与现有的相同功能做相同的事情。 “你不能让你吃蛋糕。

            【讨论】:

              猜你喜欢
              • 2011-03-05
              • 1970-01-01
              • 2011-02-07
              • 1970-01-01
              • 2015-10-31
              • 2016-05-30
              • 2011-01-13
              • 2011-07-17
              • 2010-09-20
              相关资源
              最近更新 更多