Apache Ant как язык программирования - PullRequest
3 голосов
/ 31 января 2011

Является ли язык программирования Ant?Если да, это обязательно или необходимо?

Ответы [ 6 ]

14 голосов
/ 31 января 2011

Вопрос, скорее, должен звучать так: если вы хотите выполнять вычисления с помощью Ant, можете ли вы это сделать? Давайте ограничимся чем-то простым, например, эмулируя упрощенный калькулятор командной строки. Если вы можете сделать это, Ant, безусловно, квалифицируется как язык программирования, даже если изначально инструмент не предназначался для этого.

Пожалуй, самый простой язык, который мы могли бы определить, - это "Huttons Razor", который состоит из

  • Константы, такие как 5, 37 и т. Д., Все натуральные числа (отсчитываются от 0)
  • A + оператор, поэтому мы можем написать (37 + 5) + 15 + (42 + 0)

Не очень полезный язык, но великолепное начало, если вы попытаетесь использовать Ant для вычислений; если вы не можете даже сделать Razor, вы, вероятно, не можете сделать что-то более продвинутое. Имейте в виду, однако, что другие средства вычислений, такие как лямбда-исчисление, сильно отличаются от этого, поэтому, возможно, другие пути также жизнеспособны. Примечание: я не знаю, сможет ли это сделать Ant. В последний раз я смотрел на него в 2006 году и решил больше никогда на него не смотреть.

Обратите внимание, что язык не обязательно должен быть Turing Complete, чтобы быть языком программирования. У нас есть несколько очень полезных языков программирования, которых нет.


Для нетюринговых Полных полезных языков:

  • Языки, которые принимают только Всего программ (то есть, программ, которые завершаются). Это необходимо для многих языков программирования, которые используются в качестве доказательств теорем: Coq, Agda и т. Д. Другой пример - лямбда-исчисление с простым типом (простая типизация делает невозможным определение Y-комбинатора и получение рекурсии).

  • Языки, которые сильно зависят от домена. Одним из примеров является тролль,

    http://www.diku.dk/hjemmesider/ansatte/torbenm/Troll/

    - язык для описания бросков кубиков в настольных и ролевых играх. Кажется, что язык не TC, но он очень полезен при разработке новых игр, так как он может быстро вычислять распределения вероятностей методов броска костей.

4 голосов
/ 31 января 2011

Нет, Ant не является языком программирования. Это инструмент для сборки, написанный на Java.

3 голосов
/ 23 февраля 2013

Да, но только раз.

Я должен был на самом деле программировать на муравья. Я работаю в магазине Java, и мы используем ant для его надлежащего назначения, что-то вроде make-файла для Java, для которого он фактически предназначен. Но у нас есть полезные вещи, которые мы хотели с этим сделать, и сценарий ant был логически правильным местом для рассматриваемой сложности.

(Официальный метод для произвольного программирования в ant - это написать расширение на Java. Проблема в том, что оно не в том сценарии, на который вы смотрите, и требует этапа компиляции. Итак, написание в самом муравье это было.)

муравей похож на эзотерический язык программирования, который считает, что это все правильно сформированный XML. Чтобы сделать даже самые простые вещи, нужно несколько часов подумать, как решить эту проблему. Вы можете скрыть часть ужаса за макроопределением.

В основном вы можете делать вещи только с базовым муравьем, но муравьиный вклад необходим, если вы хотите сохранить драгоценные отбросы своего здравомыслия. Он включает в себя несколько полезных вещей, таких как переменные, арифметика и управление потоком.

Отсюда мое правило: никогда не делайте свой язык, специфичный для предметной области, тьюринговым; потому что как только вы сможете кодировать в нем, вы будете иметь для кодирования в нем.

Муравьиное программирование - это навык, которого я не буду указывать в своем резюме.

3 голосов
/ 31 января 2011

Apache Ant - это декларативный предметно-ориентированный язык для описания процесса сборки с использованием XML.Базовые конструкции AFAIK не являются полными по Тьюрингу, поэтому я бы не назвал их языком программирования.Конечно, посредством выполнения других программ вы можете достичь того, что могут эти программы.

2 голосов
/ 14 июля 2011

Обычно язык программирования считается формализмом для описания алгоритмов. Машина Тьюринга считается наиболее общим механизмом выполнения алгоритма.

Ant (без расширения, например Ant-Contrib) не завершен по тьюрингу, поскольку свойства являются неизменяемыми после присвоения им значения. Каждое свойство должно быть указано явно, по крайней мере, один раз по всему сценарию. Каждый сценарий муравья конечен, поэтому число свойств конечно и, следовательно, число состояний конечно. Следовательно, муравей не завершен.

Следовательно, нельзя описать алгоритм в ant, и поэтому ant не является языком программирования.

0 голосов
/ 31 января 2011

Язык программирования?Я бы сказал, что Ant - это ограниченный язык сценариев для сборок.Это XML-ориентированная модель.

Если я вынужден выбирать, я бы сказал, что это не функциональный язык - он ближе по духу к императивному / процедурному.

...