Boo

Материал из Seo Wiki - Поисковая Оптимизация и Программирование
Перейти к навигацииПерейти к поиску

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

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

<source lang="python"> a = 2 b = "3"

if (a == b) print "ok" </source>

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

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

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

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

Примеры

Для начала «Привет мир!!!» <source lang="boo">

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

</source>

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

<source lang="boo">

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

</source>

Примечания

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

Ссылки

Литература

  • Кристиан Нейгел, Билл Ивьен, Джей Глинн, Карли Уотсон, Морган Скиннер C# 2005 и платформа .NET 3.0 для профессионалов = Professional C# 2005 with .NET 3.0. — М.: «Диалектика», 2007. — ISBN 978-5-8459-1317-3

Если вам нравится SbUP.com Сайт, вы можете поддержать его - BTC: bc1qppjcl3c2cyjazy6lepmrv3fh6ke9mxs7zpfky0 , TRC20 и ещё....