Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.



Boo
Boo
BooLogo.png
Семантика:

объектно-ориентированная

Появился в:

2003 г.

Автор(ы):

Родриго Баррето де Оливейра

Релиз:

0.9.4 / 21 января 2011

Типизация данных:

статическая

Испытал влияние:

Python, C#

Boo ([bu:], 'бу' ) — объектно-ориентированный, статически(строго)-типизированный язык программирования для платформы .NET. Появился в 2003 году. Имеет синтаксис, схожий с Python. Транслятор Boo разрабатывается с открытой лицензией и является студенческим проектом.

Boo, в отличие от языка программирования Python, чей синтаксис он имитирует, — не является динамически-типизированным.

Это легко проверить, сравнив 2-е переменные различных типов. К примеру, если данная инструкция выполнится в Python:

a = 2
b = "3"
 
if (a == b): 
    print "ok"

То, подобная инструкция в Boo — невозможна! Boo — статически-типизированный язык, а сравнение переменных различного типа в статически-типизированных языках приводит к ошибке.

Некоторых новичков смущает факт, что у Boo нет собственного компилятора, который транслировал бы Boo инструкции в инструкции MSIL. Среда исполнения Boo переводит инструкции, написанные на Boo в инструкции C#, а затем передаются csc.exe (компилятору С#). Некоторые даже задаются вопросом «а можнo ли вообще назвать Boo языком программирования?».[1]

Однако, по подобной схеме, только используя в качестве промежуточного представления язык Си, построено немало достаточно популярных компиляторов. В качестве примера можно назвать трансляторы языка Eiffel. Также были реализованы и первые компиляторы C++ (что вызывало схожие недоразумения[2])

Вообще говоря, Boo — это язык программирования уже в силу того, что язык определяется его синтаксисом и семантикой, вне зависимости от того, выполняется он в собственной среде, базируется уже на готовой и вообще, от особенностей его реализации.

Содержание

Примеры

Для начала «Привет мир!!!»

 print("Hello ")
 print "world"
 System.Console.WriteLine("!!!")

Пример функции. Первое отличие от Python: отсутствие динамической типизации.

 def factorial(n as ulong) as ulong:
     if n == 1:
         return 1
     else:    
         return n * factorial(n - 1)

Применение

Язык программирования Boo используется в проекте Unity для создания трёхмерных приложений для платформ Windows, Mac OS X, Wii, iPhone.

Примечания

  1. Обсуждение темы на msdn
  2. Бьерн Страуструп. «Дизайн и эволюция С++»

Ссылки

Литература

  • Кристиан Нейгел, Билл Ивьен, Джей Глинн, Карли Уотсон, Морган Скиннер C# 2005 и платформа .NET 3.0 для профессионалов = Professional C# 2005 with .NET 3.0 — М.: «Диалектика», 2007. — ISBN 978-5-8459-1317-3.
  • Ayende Rahien DSLs in Boo: Domain-Specific Languages in .NET = DSLs in Boo: Domain-Specific Languages in .NET — 2010. — ISBN 1933988606.
  • Ник Вейч Что такое Boo?  (рус.) // Linux Format : журнал. — 2006, март. — № 77 (3). — С. 38-39. — ISSN 1470-4234.