Neal Ford谈现代编程语言:表达能力非常重要

发布于:2021-01-25 11:42:03

0

117

0

java jax 语言

在你的主题演讲中,你将提到古代哲学家。事实上,柏拉图、亚里士多德等人都是逻辑形式化的奠基人。他们的概念已经可以与编程相比较了吗?

互补但不可比。在我的主旨演讲中,我从柏拉图通过Occam解决问题的方式,通过亚里士多德的本质和偶然属性,追溯到当今软件的核心问题之一:偶然复杂性。我想强调两点:第一,技术专家忽视过去(包括古代和现代)会给我们带来危险。我们似乎认为只有新事物才有价值。第二,我们认为软件所独有的许多东西在“真实”世界中几乎以相同的方式存在。

在古代雅典,逻辑思维被认为是人类的最高能力之一。今天这是由计算机来完成的。那么留给我们人类的是什么呢?

思考不是由计算机完成的!计算机遵循文字指令,就不能进行逻辑跳跃。用电路所做的逻辑与人类应用逻辑的方式不同。事实上,编程中最不有趣的部分是语法对问题的机械应用。右脑洞察驱动的开发更有趣(发现设计模式、紧急设计等),这完全是人类的活动。科学家们研究人工智能已经有很长时间了,但进展甚微。我并不担心计算机会足够聪明,可以在很长一段时间内做任何有用的事情。

哪些“老经验”仍然适用于现代问题,而哪些在今天肯定不再适用了?

如果你读过像弗雷德·布鲁克(Fred Brook)1975年写的《神话般的人月》(Mythic ManMonth)这样的书,你会发现什么适用于当今的软件开发,什么不适用于当今的软件开发。他深入讨论了如何管理使用大量大型机汇编语言的项目,以及封装的优点。我们已经很好地理解了这一点,并且我们的语言和工具允许我们忽略这一抽象层次(就像我们不认为硬盘驱动器是旋转的盘片,而是隐喻性的文件和文件夹)。我们没有解决的问题是流程和管理问题。即使30多年后,人们仍在寻找银弹,弗雷德·布鲁克意识到银弹并不存在于他的书中。那些不记得过去的人注定要重蹈覆辙(乔治桑塔亚纳)。知识在软件中很重要,了解过去可以让我们利用已经存在的错误和见解。

如果我们谈论现代编程语言,从哲学的角度来看,有哪些语言比其他语言更丰富?还是只关乎务实和效率?

如果你看看现代编程语言,表达能力非常重要。JVM上的现代语言的一个共同主题是更高的表达能力和更少的限制行为。这个Java.next文件语言试图缩短从意图到结果的距离。Saphir-Whorf假说认为,你所使用的语言会影响可能的思维方式。如果你使用更具表现力的语言(计算机或其他),你的词汇就更丰富了。语言借用其他语言的短语是有原因的,因为它们的内涵更丰富。表现力很重要。