Say Boo!
Одним из самых больших достоинств платформы .NET стала ее «мультиязычность», которая позволяет с легкостью использовать код на разных языках, обеспечивая его прозрачную для пользователя «стыковку».
Потому, появление большого количества компиляторов для различных языков под платформу .NET является практически закономерным явлением. Подробно описать их все — задача очень сложная и непростая, поэтому я буду давать маленькие статьи «для затравки», а если язык будет интересен — то развивать тему.
Сегодня я хочу рассказать про один вдвойне удивительный язык, который объединяет в себе черты нескольких весьма непохожих языков, этот язык — boo (boo.codehaus.org).
Как написано на главной странице сайта, boo — объектно-ориентированный, статически типизированный язык для платформы .NET, с Python-подобным синтаксисом, нацеленный на расширяемость языка и компилятора.
Поскольку синтаксис boo очень похож на таковой в Python, то останавливаться особо на нем я не буду, и постараюсь описать в основном отличия boo от двух его «старших братьев» — Python и C#.
Хотя, для начала, стоит сказать несколько слов об установке.
Получить свежую версию дистрибутива можно по адресу boo.codehaus.org/Download.
Распаковав архив в любую папку найдите в дистрибутиве программу booish.exe, это — интерактивный интерпретатор boo.
Работа в нем ничем не отличается от работы в аналогичном интерпретаторе Python. В ответ на приглашение «>>>» вы вводите свои команды, которые интерпретируются и тут же выводится результат.
Для компиляции исходных текстов программ на boo используется компилятор booc.
Для начального знакомства с языком этого вполне достаточно, а одну великолепную особенность, значительно облегчающую работу с boo я приберегу на конец статьи :-).
По сути своей boo очень Python-похож. Поэтому для базового знакомства с его синтаксисом можно прочесть любой учебник по основам Python. Хотя следует заметить что boo — не совсем Python, различия хоть и не многочисленны, но они весьма и весьма существенны.
Почти все они описаны на следующей странице (boo.codehaus.org/Gotchas for Python Users), я приведу основные из них.
Boo использует принцип .NET сборок, а не модулей как Python. Это позволяет ему взаимодействовать с другими
Boo — использует статическую типизацию вместо Python-овского duck-typing. Указывать тип переменной непосредственно не нужно (хотя и можно), его определит компилятор на этапе трансляции (в отличии от Python в котором тип переменной определяется во время выполнения). Хотя использовать механизм duck-typing boo все-таки позволяет, для чего необходимо объявить переменную как принадлежащую типу duck.
print может вызываться и как оператор и как функция.
print "Hello"
print("Hi again")
В строках выполняется «подстановка» переменных.a = 1
b = 2
print("a+b=${a+b}")
При импорте все содержимое добавляется в текущее пространство имен (аналогично C#).import MyLibrary
print MyFunction() # аналогично MyLibrary.MyFunction()
Допускаются комментарии в С-стиле: // и /* */
Вместо таплов необходимо использовать С-подобные массивы фиксированной длины. Все хэши являются экземплярами класса Boo.Lang.Hash, который порождается от System.Collections.Hashtable, но добавляет Python-специфичные методы.
В функциях-членах класса не нужно всегда использовать self, для обращения к полям класса, и так же нет необходимости передавать self первым параметром в каждый метод класса. В boo использование self возможно, при неободимости и аналогично использованию this в C#.
Вместо __init()__ и __del()__ используются методы constructor() и destructor() соответсвенно.
Строки документации должны начинаться на том же уровне отступа что и документируемый объект.
Переменные командной строки передаются в скрипт как массив строк argv.
А также ряд других «.NET-специфичных особенностей».
Отдельно следует заметить что boo великолепно интегрирован в бесплатные среды разработки MonoDevelop (www.monodevelop.com) и SharpDeveloper (icsharpcode.com/...penSource/SD/Default.aspx), что позволяет с легкостью использовать его как язык быстрого прототипирования и реализации небольших кросплатформенных проектов для платформ .NET и Mono, в том числе и с визуальным интерфейсом.
Из всех проектов реализованых на boo можно порекомендовать ознакомиться со следующими:
— Webness (boo-lang.org/...bness-framework-tutorial) фреймворк (куда же без него) для быстрой разработки web-приложений
— Brail (www.ayende.com/projects/brail.aspx) — шаблонный движок для генерации HTML
— Piorun (piorun.sztorm.net) — Jabber клиент
И отдельной номинацией следует отметить конвертер из C# в boo и наоборот, который входит в поставку SharpDevelop-а. :-) На первых порах, при изучении языка — просто незаменимая вещь.
Вот в принципе для начала все что я хотел сказать. Если данная будет тема интересна, то на всех boo-специфичных особенностях можно остановиться подробней.
Все про українське ІТ в телеграмі — підписуйтеся на канал редакції DOU
23 коментарі
Підписатись на коментаріВідписатись від коментарів Коментарі можуть залишати тільки користувачі з підтвердженими акаунтами.