О языке Boo, для интересующихся.

Программирование на Юнити.

О языке Boo, для интересующихся.

Сообщение dondublon 11 фев 2011, 21:42

Вот, решил написать, вдруг кому-то окажется полезным.
Уверен, что большинство здешнего народу Boo не щупало, и вообще не знают, что это за зверь такой. А, тем не менее, пощупать там есть что. Данный очерк я написал не про использование Boo в Unity, а просто про сферический язык в вакууме. Цель - не убедить перейти, и не похоливарить, а просто познакомить, там уж пусть каждый сам решает, что ему больше нравится. С Boo я, вообще, познакомился только сегодня, поэтому много и красочно не напишу :)
Предупреждение: в спойлере много программистских терминов.
Скрытый текст:
Официальный сайт языка - http://boo.codehaus.org .
Boo похож на Python, поэтому сравнение с этим языком неизбежно. И, тем не менее, язык этот совершенно другой. Во-первых, он со статической типизацией, в отличие от Python. Это значит, что любая IDE будет радовать вас auto-completion'ом. Динамическая типизация в Boo поддерживается опционально, я об этом еще напишу. Во-вторых, Boo является и компилируемым (в MSIL) языком, и интерпретируемым, в отличие от Python (компиляция в pyc-файлы не считается).
Чем же Boo похож на Python, если в нем такое фундаментальное отличие?
1. Синтаксис.
2. Простые кортежи и разнотипные списки - на уровне языка. Также словари.
3. Функции как first class object.
4. Генераторы-итераторы.

Но корректнее было бы все-таки сравнивать не Boo с Python, a Boo с C#, как ни странно.
А теперь обо всем этом подробнее.

*** Фишечка1

Динамическая типизация. Для нее есть специальный тип duck.
Код: Выделить всё
class Myclass():
    public b as string = "18str"

class MySecondClass:
    public b as Double = 3.0

instance as duck
rand = Random()
r = rand.Next(20)
if r < 10:
    instance = Myclass()
else:
    instance = MySecondClass()
print "insatnce b", instance.b


Этот код компилируется и выполняется именно так, как ожидается.

*** Фишечка 2.

Вывод типов.
Да, в Boo присутствует такая новомодная штучка, как вывод типов, наподобие Ocaml/F#.

Это значит, что такая результат такой функции:
Код: Выделить всё
def somefunction(a as int):
    if a < 10:
        return "result"
    else:
        return "oh, my brain!"

будет правильно определен как string - на уровне IDE.


*** Фишечка 2.5.
Вывод типов работает не только для переменных, но и для функций.
Это значит, что можно написать такой код:
Код: Выделить всё
def somefunction(a as int):
    if a < 10:
         return "result"
    else:
        return "oh, my brain!"

def anotherfunction(b as int):
    return "4.0"

if rand.Next(20) > 10:
    func = somefunction
else:
    func = anotherfunction

res = func(19)

Так можно написать, потому что у somefunction и anotherfunction одинаковые сигнатуры. В C# для аналогичной операции нам бы пришлось еще отдельно объявлять делегат, в Boо компилятор делает это сам. Если же мы сделаем сигнатуры разными, будет ошибка компиляции. Разумеется, переменная res получается string.

*** Фишечка 3.

Вы же помните, как ловко в PHP можно засунуть переменную в строку? В Boo можно то же самое.
Код: Выделить всё
res = func(19)
print "result is: $res"


*** Фишечка 4.

Регулярные выражения набираются прямо в коде, наподобие Perl. Но, поскольку я не спец по регулярным выражениям, ничего об этом писать не буду, сами прочитаете.

*** Фишечка 5.

Синтаксические макросы.
С ними я еще не разобрался. Но выглядит впечатляюще :) http://boo.codehaus.org/Syntactic+Macros

На этом, пожалуй, все. Думаю, этого достаточно, чтобы заинтересовать.

По поводу использования в Юнити могу добавит следующее: Visual Studio с помощью плагина не работает с Boo в проектах на C#. Зато с ним вполне работает SharpDevelop. Только проект надо открывать целиком вручную, иначе Unity через нажание кнопочки Edit открывает файлы по-одному, а в таком случае auto-completion, ради чего все затевалось, не работает.
Последний раз редактировалось dondublon 12 фев 2011, 09:48, всего редактировалось 1 раз.
dondublon
UNец
 
Сообщения: 47
Зарегистрирован: 16 янв 2011, 10:28
Откуда: Уфа

Re: О языке Boo, для интересующихся.

Сообщение alexz 11 фев 2011, 22:01

Интересный скриптовый язык, но, к сожалению, слова «Visual Studio ... не работает с Boo ...» многое определяют. А ещё есть Resharper, который не работает с Boo в принципе.
alexz
UNITрон
 
Сообщения: 270
Зарегистрирован: 16 ноя 2010, 23:37

Re: О языке Boo, для интересующихся.

Сообщение dondublon 11 фев 2011, 22:11

Интересный скриптовый язык,

Нет, он не только скриптовый, о чем я написал.

По поводу остального - я же специально написал, что никого не агитирую.
dondublon
UNец
 
Сообщения: 47
Зарегистрирован: 16 янв 2011, 10:28
Откуда: Уфа

Re: О языке Boo, для интересующихся.

Сообщение alexz 11 фев 2011, 22:27

dondublon писал(а):Нет, он не только скриптовый, о чем я написал.

Теоретически не скриптовый, но писать исключительно на нём что-то большое и страшное без полноценной поддержки Студией и Решарпером ― мазохизм, имхо.

Можно использовать вместо псевдокода, чтобы показать идею какого-нибудь алгоритма.
alexz
UNITрон
 
Сообщения: 270
Зарегистрирован: 16 ноя 2010, 23:37

Re: О языке Boo, для интересующихся.

Сообщение gnoblin 12 фев 2011, 00:54

Было бы 100% нормально использовать его - если бы не отсутствовала поддержка Boo на мобилках (+возможно, консолях и в union).
skypeid: madkust
Мои крайние проекты:
Убойный Хоккей
Cube Day Z (альфа)
Аватара пользователя
gnoblin
Адепт
 
Сообщения: 4633
Зарегистрирован: 08 окт 2008, 17:23
Откуда: Минск, Беларусь
Skype: madkust
  • Сайт

Re: О языке Boo, для интересующихся.

Сообщение alexz 12 фев 2011, 01:00

gnoblin писал(а):Было бы 100% нормально использовать его - если бы не отсутствовала поддержка Boo на мобилках (+возможно, консолях и в union).

Разве Unity не компилирует всё в CIL? Или у Boo есть свой runtime, который отсутствует на мобильниках и т.д.?
alexz
UNITрон
 
Сообщения: 270
Зарегистрирован: 16 ноя 2010, 23:37

Re: О языке Boo, для интересующихся.

Сообщение sp00n 12 фев 2011, 01:08

оффтоп: А что такое решарп? Пару раз на форуме натыкался на упоминание, но так и не понял:) Это что-то типа Visual Assist для C++? ))

з.ы. а, сорри, уже нагуглил)) судя по всему это как тим едишн студии + вижуал ассист для плюсов, но тогда становится смешно от
но писать исключительно на нём что-то большое и страшное без полноценной поддержки Студией и Решарпером ― мазохизм, имхо.
- вы это серьезно? или вы никогда не писали "что-то большое и страшное"? :)

з.з.ы. а питон я, кстати, очень уважаю - очень хороший язык (на нем кстати одна, как минимум, ммо написана), насчет бу - увы, мне шарп родней :) и да - юнити все равно все это компилит через моно :)
Ты молод, креативен, талантлив?
Амбициозен, уверен в себе, полон свежих идей?
А делать хоть что-нибудь умеешь?!
sp00n
UNITрон
 
Сообщения: 254
Зарегистрирован: 27 фев 2010, 20:43

Re: О языке Boo, для интересующихся.

Сообщение alexz 12 фев 2011, 02:13

sp00n писал(а):судя по всему это как тим едишн студии + вижуал ассист для плюсов, но тогда становится смешно от
но писать исключительно на нём что-то большое и страшное без полноценной поддержки Студией и Решарпером ― мазохизм, имхо.
- вы это серьезно? или вы никогда не писали "что-то большое и страшное"? :)

У нас, значит, разные понятия мазохизма.

http://www.jetbrains.com/resharper/demo ... ession.wmv
http://www.jetbrains.com/resharper/demos/
alexz
UNITрон
 
Сообщения: 270
Зарегистрирован: 16 ноя 2010, 23:37

Re: О языке Boo, для интересующихся.

Сообщение sp00n 12 фев 2011, 02:27

alexz писал(а):У нас, значит, разные понятия мазохизма.
эт точно)) для меня мазохизм - это смотреть на 100500 класов после их "рефакторинга", написанных всякими "гуру" и понимать, что здесь можно обойтись максимум пятью), а еще мазохизм (но это уже к вижуал ассисту относится) - это когда привыкаешь к умному интелисенсу, а потом он начинает глючить на чем-то "страшном и большом", и вместо того, чтоб писать код дальше, ты занимаешься "укрощением строптивой" :) Но, если решарпер так хорош - почему бы его и не использовать. Мне, правда и интелисенса от монодевелоп хватает, но это имхо только мне :)
Без обид, просто позабавило то, что расширение интелисенса обязательно необходимо для написания больших проектов :)
Ты молод, креативен, талантлив?
Амбициозен, уверен в себе, полон свежих идей?
А делать хоть что-нибудь умеешь?!
sp00n
UNITрон
 
Сообщения: 254
Зарегистрирован: 27 фев 2010, 20:43

Re: О языке Boo, для интересующихся.

Сообщение alexz 12 фев 2011, 03:23

Улучшенный Intellisense ― там только одна из фич, и не самая главная. Запускаешь Студию без Решарпера и такое появляется тоскливое ощущение, будто открыл блокнот. Про МоноДевелоп я уж и не говорю.
alexz
UNITрон
 
Сообщения: 270
Зарегистрирован: 16 ноя 2010, 23:37

Re: О языке Boo, для интересующихся.

Сообщение dondublon 12 фев 2011, 09:46

Теоретически не скриптовый,

Нет, он и практически не только скриптовый, потому что компилируется в MSIL, также как C#.
Скриптовый - это (Iron)Python.
писать исключительно на нём что-то большое и страшное без полноценной поддержки Студией и Решарпером ― мазохизм

Полноценная поддержка Boo в VS есть. Просто в одном проекте VS вообще сложно смешивать разные языки, например C# и VB. Но это же не повод говорить, что в VS "нет полноценной поддержки VB". А проекты Юнити являются сишарповскими со всеми вытекающими.
Насчет Решарпера - мне кажется, все-таки, не попробовав на зуб выведение типов и прочие плюшечки Boo, вам судить об этом рановато. Мне тоже рановато, да :) Быть может быть, те проблемы, которые хорошо решает Решарпер, в Boo просто не возникнут. Такое бывает :)
Последний раз редактировалось dondublon 12 фев 2011, 10:00, всего редактировалось 1 раз.
dondublon
UNец
 
Сообщения: 47
Зарегистрирован: 16 янв 2011, 10:28
Откуда: Уфа

Re: О языке Boo, для интересующихся.

Сообщение Neodrop 12 фев 2011, 09:49

Поддерживаю. Решарпер отличная вещь. Помимо всего прочего, он ещё и программировать учит. К примеру с LINQ я лишь с его помощью разобрался. (popcorn)
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт


Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6