如何描述忽略实现的语言,仅描述行为

时间:2011-08-17 18:56:15

标签: programming-languages declarative-programming

我想问一下人们如何描述一种基本上描述程序行为而不是实现的编程语言 - 即。一种忽略实现问题的语言(例如,只有一个类或函数,其他语言可能有不同的类或函数,以不同的方式执行相同的操作),而是完全依赖于自动优化。

“声明性”是正确的用语吗?也许“故意”? “目标导向”这个术语似乎也有类似的含义。也许别的东西。我想知道,因为我设计的langauge,称为Lima,符合这种描述(http://www.btetrud.com/Lima/Lima-Documentation.html)。我知道Stack Overflow喜欢有答案的东西,所以答案将交给那些评论最深刻的人。

我也想知道人们如何认为这个想法是为了保持格雷厄姆对百年语言的看法:http://www.paulgraham.com/hundred.html。我喜欢他建议将字符串作为字符列表处理并删除数组以支持更通用的“哈希表”(即关联数组),这是我在利马第一次构思它时所做的事情。

利马背后的基本思想是:

  1. 基于价值的编程 - 摆脱任何关心“键入”值的逻辑。利马没有类型,价值只是价值。类型仍然存在于语言中,但仅限制变量可以采用的值 - 它们不能更改要调用的多方法,也不能指定值的内存占用。

  2. 描述性编程 - 我上面描述的一种编程语言,它抛出了在代码本身中优化代码的需要(实际上是能力)(而不是使用自动优化器进行优化)

  3. 总语言可扩展性 - 能够在语言本身中编写语言中的任何构造(例如,不仅可以重写'sin'函数,还可以重写'if'语句,循环语句,并创建可在语言和其他DSL中使用的自定义DSL。

1 个答案:

答案 0 :(得分:1)

我称之为规范。所以我想我会把它归类为指定语言。

前段时间我必须在Prolog开发一些程序。在Prolog中,您只需指定函数必须解决的内容,引擎就会为您生成代码。我讨厌它。