在像一些一般性讨论的精神这一个,我打开这个线程并打算收集意见认为哪些编程语言的开放的挑战和热点问题的研究。我希望讨论甚至可以浮出水面,对编程语言研究的未来发表看法。
我相信这种讨论将对像我这样对PL感兴趣的新学生研究人员以及已经参与其中的人有所帮助。
在像一些一般性讨论的精神这一个,我打开这个线程并打算收集意见认为哪些编程语言的开放的挑战和热点问题的研究。我希望讨论甚至可以浮出水面,对编程语言研究的未来发表看法。
我相信这种讨论将对像我这样对PL感兴趣的新学生研究人员以及已经参与其中的人有所帮助。
Answers:
我认为PL理论的总体目标是通过改进编程语言和使用语言的技术生态系统来降低大规模编程的成本。
以下是对PL研究领域的一些高级,含糊的描述,这些描述一直受到关注,并且可能会持续一段时间。
大多数编程语言研究都是在顺序计算的背景下完成的,到目前为止,我们可以说已经融合了大多数现代编程语言中可用的核心功能(例如,高阶函数,(部分)类型推断,模式匹配)。 ,ADT,参数多态性),并且众所周知。尚无关于并发和并行计算的编程语言功能的共识。
与上一点有关,类型系统的研究领域已经看到其大部分活动都与顺序计算有关。我们是否可以概括这项工作,以找到约束并发和并行计算的易于处理且有用的打字学科?
作为上述观点的特例,Curry-Howard对应关系涉及结构证明理论和功能编程,从而导致计算机科学与数学(基础)之间的持续技术转移,例如同伦类型理论就是一个令人印象深刻的例子。有许多诱人的暗示,它可以扩展到并发和并行计算(的某种形式)。
近年来,例如使用Isabelle和Coq之类的交互式证明助手,程序的规范和验证已经非常成熟,但是该技术仍远未在日常编程中大规模使用。要改善这种状况,仍有许多工作要做。
用于新颖计算形式的编程语言和验证技术。我在
这里特别考虑的是量子计算以及受生物学启发的计算机制,请参见例如此处。
统一 编程语言,类型,验证的方法很多,有时会觉得它们之间有很多重叠之处,还有更多的抽象方法有待发现。特别是,受生物学启发的计算机制可能会继续使我们不知所措。
PL研究的一个问题是,没有像P / NP问题这样的明确问题,我们可以立即说出建议的解决方案是否有效。
让我列出一些限制编程语言研究的假设。这些很难脱离,因为它们感觉它们是编程语言的基本组成部分,或者因为探索替代品将“不再是编程语言设计”。对于每个假设,我都会列出其限制作用。
程序是语法结构。
无法执行部分编写的程序。
程序是关于向计算机提供指令的。
编程就像是动手做,是普通人无法完成的。
我想我可以继续。
我一直在想一个问题。我不知道它是否符合公开挑战的标准。
随着时间的流逝,数学知识一直在稳步增长。几个世纪以来,理论基础,概念,符号和证明都在发展。数学家在任何时候都不必以系统和正式的方式检查聚合的全局一致性,尽管有一定尝试(尽管有尝试)。
我们应该期望编程语言和程序库会随着时间的流逝而类似地聚合和发展。什么样的工具可以帮助管理编程结果和库的汇总,以使它们保持一致并有效地被所有人使用,因为计算机可以更正式且对一致性有更高的要求。我们是否需要为每种新的编程语言重做库。我们为什么要选择一种语言,因为它具有适合于预期应用程序的库,而不是具有作为编程介质的内在品质的库?
在另一个主题上,您可能会在以下问题中找到想法:编程语言是否越来越像自然语言?我意识到这个想法可能不会吸引许多理论计算机科学家,但是通过研究不同的问题或从不同的角度来看,它仍然可能有用。我远远不同意已发布的许多想法,但这就是讨论的目的。
上个世纪以来,在应用程序和理论方面,编程语言都发生了巨大的创新和爆炸,但有可能证明这是计算历史上的一次/一次性事件,类似于“进化的爆炸”。 (另请参见cs.se上的“为什么会有这么多的编程语言?”),因此在这方面,未来将不像过去。但是,目前在游戏/开发中存在一些可识别的长期趋势。
编程/软件的复杂性以及管理/最小化/减轻/减少它的方式一直是一个影响语言设计的主题,在当今非常流行的非常大型/复杂的软件系统中,它可能甚至变得更加重要。这是OOP设计原理的主要方面,但是现在我们有了高度复杂的OOP系统!对它的集中思考导致了该领域的经典,例如布鲁克斯的《神话人月》,在许多方面仍然是非常有效的观点,甚至可能比写作时更有意义。
并行性。硬件向更大的并行性(例如多核等)转移,时钟速度的提高不再足以提高性能。这种转变发生在2000年代中期,对语言研究/设计产生了重大影响。并行性一直是一个主题,但它具有新的首要意义/紧迫性,并且存在一些广泛的思想/共识,即并行性过于复杂且难以编程,也许不同的理论方法可以缓解这种情况。一个很好的参考:并行计算研究的前景:伯克利的观点
视觉 / 数据流编程。这些类型的“语言”已经有所增加(在某种意义上,可视化编程实际上在许多方面使编程与“语言”脱钩)。也具有并行性的强交叉授粉。
AI。这更像是一个远程通配符,目前还不太清楚,它将如何影响计算机语言和编程,但可能会非常重要。过去(以另一种形式)它导致了像prolog这样的全部语言。遗传算法 / 遗传编程是如何将其应用于惊人结果的早期迹象。
Tate撰写的Beyond Java的参考书中可能包含一些有关“编程语言的未来”的有用想法。他思考(尽管有争议)也许Java(可以说是现有的最复杂/最全面的编程语言之一)开始显示它的时代,并且有长期出现新的语言/方法以填补其位置的早期迹象。