Оптимистичный взгляд на Aphid… встраиваемый язык сценариев, совместимый с XCopy
А теперь кое-что другое…
Сегодняшний проект Джона Лейча (John Leitch) я считаю интересным с разных точек зрения. Во-первых, мне всегда импонировала идея использования встроенного языка сценариев в приложениях. Во-вторых, мне нравится, что такой подход достаточно прост и самодостаточен. Наконец, исходный код включен целиком.
И хотя этот проект по-прежнему находится на альфа-стадии, он интересен для ряда читателей, от создателей языков, до тех, кто собирается добавить в свои приложения возможность языка сценариев.
Добавление встраиваемого языка сценариев Aphid в . NET -приложения
Aphid – это встраиваемый, кросс-платформенный, много парадигменный и высоко интероперабельный язык сценариев на платформе .NET. Интерпретатор Aphid реализован полностью на C#. Данная статья является введением в Aphid, и поэтому покрывает только некоторые доступные возможности. Кроме того, Aphid в настоящее время находится на альфа-стадии, и поэтому по мере его эволюции данная статья будет меняться и расширяться. Чтобы получить наиболее свежую версию Aphid, посетите страницу CodePlex.
Какими языками был вдохновлен Aphid ?
Aphid – С-подобный язык, вдохновленный главным образом JavaScript. Однако, он несет в себе черты С# и, в меньшей степени, F#.
Зачем еще один язык сценариев?
В настоящее время существуют несколько легко встраиваемых языков сценариев для платформы .NET. Среди них многие имеют сильные зависимости, делающие необходимым включение разных сборок. В то же время в других отсутствует интероперабельность, требующая значительного количества связующего кода. Aphid пытается найти решение этих проблем путем предоставления легко встраиваемого, высоко интероперабельного языка сценариев, находящегося в одной DLL-библиотеке.
...
Hello , World
Начало работы с Aphid совершенно безболезненно. Во-первых, добавьте ссылку на библиотеку Components . Aphid . dll. Затем создайте экземпляр AphidInterpreter. Наконец, вызовите метод экземпляра AphidInterpreter.Interpret для выполнения сценария Aphid. Просто, правда? Полный код программы «Hello world» на C#/Aphid приведен ниже в листинге 1.
С#-часть приложения должна быть понятна без объяснений. Однако программа Aphid нуждается в некоторых пояснениях. Программа состоит из двух предложений.
Первое – предложение загрузки скрипта, состоящее из оператора загрузки скрипта (#) и строкового операнда ‘Std’. По умолчанию загрузчик Aphid сначала ищет в подкаталоге Library каталога, в котором расположена библиотека Components . Aphid . dll. Загрузчик автоматически добавляет расширение ALX к переданному имени скрипта, так что в данном случае это выглядит как < dll >\ Library \ Std . alx. Предполагая, что всё в порядке, он должен найти и загрузить файл, являющийся стандартной библиотекой Aphid и содержащей полезные функции для работы со строками, вывода на консоль и т. п.
Второе предложение – это вызов выражения, которое запускает print – функцию, являющуюся частью стандартной библиотеки Aphid. Эта строка кода также должна быть понятна.
После запуска программы на устройстве вывода появляется следующее (листинг 2):
...
Какие стильные возможности поддерживает Aphid ?
Назовем несколько:
· Лямбда-выражения
· Частичное применение функции
· Конвейер
· Сопоставление с образцом
· Многопоточность
Когда можно попробовать Aphid ?
Прямо сейчас, если хотите. Хотя формально Aphid находится на альфа-стадии, я в настоящее время использую его в нескольких производственных системах с большим успехом. Однако альфа-версия имеет некоторые особенности, текущая документация минимальна, как и имеющиеся библиотеки, а доступные средства разработки еще не зрелы.
Я скачал последнюю версию, и за исключением необходимости поправить ссылку NUnit в проекте Components.Aphid.Tests.Integration (NuGet как всегда помог это сделать) исходник скомпилировался и все примеры отработали как ожидалось (что делает куратора кода вроде меня совсем счастливым).
Вот снимок решения:
Кроме модульных тестов есть ряд заготовленных примеров:
Я обнаружил одну очень интересную вещь – работает сервис языка, позволяя реальную интеграцию с Visual Studio, что выводит проект на совершенно иной уровень...
Сейчас это очень круто... Курс вперед и преуспейте с написанием скриптов...
Замечание: Этот проект лицензируется по GPLv3, так что убедитесь, что вы понимаете эту лицензию и ее ответвления при включении такого проекта в свою работу...
Comments
Anonymous
March 06, 2014
" написание�� скриптов..." опечаткаAnonymous
March 17, 2014
Спасибо, поправили.