Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Programming languages ApacheAnt作为编程语言_Programming Languages_Ant_Build_Build Automation - Fatal编程技术网

Programming languages ApacheAnt作为编程语言

Programming languages ApacheAnt作为编程语言,programming-languages,ant,build,build-automation,Programming Languages,Ant,Build,Build Automation,是Ant编程语言吗?如果是,它是命令式的还是函数式的?不,Ant不是一种编程语言。它是一个用Java编写的构建工具。编程语言?我会说Ant是用于构建的受限脚本语言。这是一个XML驱动的产品 如果被迫选择,我会说它不是一种函数式语言——它在精神上更接近命令式/过程式语言。ApacheAnt是一种声明性的领域特定语言,用于使用XML描述构建过程。AFAIK基本构造不是图灵完备的,所以我不会将其描述为编程语言。当然,通过执行其他程序,你可以实现这些程序所能实现的一切。问题应该是:如果你想用Ant进行计

是Ant编程语言吗?如果是,它是命令式的还是函数式的?

不,Ant不是一种编程语言。它是一个用Java编写的构建工具。

编程语言?我会说Ant是用于构建的受限脚本语言。这是一个XML驱动的产品


如果被迫选择,我会说它不是一种函数式语言——它在精神上更接近命令式/过程式语言。

ApacheAnt是一种声明性的领域特定语言,用于使用XML描述构建过程。AFAIK基本构造不是图灵完备的,所以我不会将其描述为编程语言。当然,通过执行其他程序,你可以实现这些程序所能实现的一切。

问题应该是:如果你想用Ant进行计算,你能做到吗?让我们把自己限制在一些简单的事情上,比如模拟一个简化的命令行计算器。如果您能够做到这一点,Ant当然可以作为一种编程语言,即使这不是该工具最初的意图

也许我们能定义的最简单的语言是“Huttons Razor”,它包括

  • 常数,如5、37等,都是自然数(从0开始计算)
  • 一个+运算符,所以我们可以写(37+5)+15+(42+0)
无论如何,这不是一种有用的语言,而是一个伟大的开端,如果您试图滥用Ant来进行计算;如果你连剃须刀都不会,你可能就不能做更高级的东西了。请记住,其他的计算方法,如lambda演算,与此大不相同,因此其他路径也可能是可行的。注意:我不知道Ant是否能做到这一点。我上一次看它是在2006年,我决定再也不看了

请注意,一种语言不必是图灵完备的,就可以成为一种编程语言。我们有几种非常有用的编程语言,但它们都不是


对于非图灵完全有用语言:

  • 只接受全部程序的语言(即终止的程序)。这对于许多用作定理证明器的编程语言来说是必要的:Coq、Agda等。另一个例子是简单类型的Lambda演算(简单类型化使得不可能定义Y组合子并获得递归)

  • 非常特定于领域的语言。一个例子是巨魔

    这是一种描述桌面游戏和角色扮演游戏中掷骰子的语言。该语言似乎不是TC,但在设计新游戏时非常有用,因为它可以快速计算掷骰子方法的概率分布


通常,编程语言被认为是描述算法的形式主义。图灵机被认为是执行算法的最通用机制

Ant(没有扩展,例如Ant Contrib)不是图灵完备的,因为一旦给属性赋值,属性就不可变。在整个脚本中,每个属性必须至少显式命名一次。每个ant脚本都是有限的,因此属性的数量是有限的,因此状态的数量是有限的。因此,ant不是图灵完备的

因此,我们无法用ant描述任何算法,因此ant不是一种编程语言。

是的,但仅仅是一种

我不得不用ant编程。我在一家Java商店工作,我们使用ant是为了它的正确用途,类似于Java的makefile,事实上它正是为了这个目的。但是我们想用它做一些有用的事情,而ant脚本正是解决这一复杂问题的合适地方

(在ant中进行任意编程的官方方法是用Java编写一个扩展。问题是,它不在您正在查看的脚本中,需要编译步骤。因此,在ant中编写扩展本身就是如此。)

ant就像一种深奥的编程语言,其自负之处在于它都是格式正确的XML。即使是做一些非常基本的事情,也需要花几个小时思考如何解决这个问题。你可以在宏定义后面隐藏一些恐怖

你可以用基本的蚂蚁来做一些事情,但是如果你想保留你头脑中的宝贵渣滓的话,ant contrib是必要的。它包括一些稍微有用的东西,比如变量、算术和流量控制

因此我的规则是:永远不要使特定领域的语言图灵完整; 因为一旦你能在其中编码,你就必须在其中编码。


ant编程是一项技能,我不会在我的简历上列出。

我不认为图灵完整性是一种语言成为编程语言的标准。这样的一种语言可能无法取代另一种TC语言,但它们本身通常是有用的。@我给出了蹩脚的答案:我喜欢TC,因为对我来说,编程语言是一种可以用来创建任何程序(任何算法)的语言。其他形式语言,可执行的/声明的,可由计算机处理的,也有意义,但我更喜欢称它们为领域特定语言,因为没有TC,它们被限制在特定的程序领域。(顺便说一句,尼克:))是的,这通常是一个严厉的限制。但是,对于一个好的终止检查器来说,有多少有用的程序可以作为一个完整的程序来编写是令人惊讶的。(尼克是大多数二郎机库使用的小游戏...我们都有愚蠢的名字:)谢谢!你能不能提供一些非图灵完全编程语言的例子。再加上一些注释。阿法伊克Y-combinator可以在非类型的lambda演算中定义,我错了吗?@Gabriel是的,Y可以在非类型的lambda演算中定义:
Y=λf·(λx·f(x))(λx·f(x))
@我给出了垃圾答案:谢谢,我忽略了“简单输入”部分即使这可能不是目的,也可能是你可以滥用Ant并强迫它为你做计算。一年后,这得到了否决票?如果你觉得