语言必须具备哪些功能?

时间:2010-08-04 21:34:07

标签: programming-languages language-features

我最近一直在和Clojure一起玩,这让我想到了......

在您考虑使用它之前,您还想从编程语言中寻找什么?什么是让你注意并研究它的语言?

我脑子里想到的东西就是可用的工具。我发现有一个非常好的调试器,分析器和可能的REPL所有使用一种语言更愉快。

9 个答案:

答案 0 :(得分:5)

以为我之前在其他地方看过这个,但我同意100%

  1. 让愚蠢的事情变得轻松
  2. 使硬件成为可能

答案 1 :(得分:3)

  

在您考虑使用它之前,您还想从编程语言中寻找什么?

图灵完整性对我来说是必要的(虽然不够);)

  

一种能让你注意并深入研究的语言是什么?

嗯,简洁和可读性可能是我的两个主要因素。我也喜欢丰富的系统。

答案 2 :(得分:3)

  1. 高阶函数
  2. 类型推断(首选)或动态类型
  3. 模式匹配很好,但不是绝对的要求
  4. 同样适用于良好的元编程设施

答案 3 :(得分:2)

我想要的是一种不妨碍编程语言的编程语言。它应该让我思考手头的问题,而不是如何用语言来写。

答案 4 :(得分:2)

我根本不是一个“语言极客”,所以当我去寻找一种新语言时,通常是因为我已经知道的任何语言在某种程度上都不适合我需要解决的问题 - 因此,我在新语言中寻找的主要内容是能够直接解决当前问题的功能。

然而,除此之外,良好的工具支持几乎是一项普遍的要求。

答案 5 :(得分:1)

  

在您考虑使用它之前,您还想从编程语言中寻找什么?

该语言对于处理我遇到的任务/问题非常有用。别的都无所谓。

考虑一下 - 如果由于某种原因无法使用语言来解决问题,那么可读性,完整性,库,IDE,类型系统和语言功能的可用性是什么?

答案 6 :(得分:0)

这取决于语言的用途。 此外,问题中可以更好地定义“功能”。

功能范围从“面向对象”,“动态”,“JIT编译”,“强类型”等。

答案 7 :(得分:0)

让语言具有一个不错的外部函数接口,以便它可以使用在其世界之外定义的库。 (我说“语言”因为我希望有一种方法可以做到这一点,而不是几种,每种实现一种方式。)有了这个,语言可以很容易地连接到现有代码(操作系统,GUI,高级数学库,等)并开始做有用的事情。没有,语言只能是玩具;我不使用BrainF ** k做任何相关的事情,不是因为它不是图灵完全的,而是因为它不能用图灵完整性做任何真实的事情。

命名的子程序(功能,程序,等等)也是必不可少的。

答案 8 :(得分:0)

首先,一种语言应该给我一些构造,我可以在合理的时间内把它包裹起来(其中“合理”的确切值取决于它的强大程度和通用性),这使我能够有效地解决问题(在一旦我能够处理它们,就可以解决大脑周期和打字工作的问题,而不是CPU周期。换句话说,在他们让我的头爆炸之前,给予越来越高的抽象,然后停止。

当然,我更喜欢我已熟悉的概念的良好实现。例如,Python对迭代器有很大的支持,并通过添加生成器和生成器表达式来扩展概念(list / dict / set comprehension只是生成器的语法糖)。没有这种强大的迭代器的语言(或者根本没有!)更好地为我提供了一种同样或更强大的方式来使用数据结构(例如,递归+模式匹配可以使用链表并且在行走树时非常方便)或者显示我编程的一种方式/区域,它有不同的要求(语言反过来又有很好的解决方案)。

为了命名一些特定的要求,更高级别(命名为子程序等)我需要有效编程的东西包括一等函数和某种多态(最好是参数多态,但我可以与OOP +名义子类型相处)多态性,如果我必须),理想情况下包括泛型类型(再次,我是参数多态的巨大粉丝)。