31
.NET CLI Languages Баум Виталий .NET Developer butaji.wordpress.com [email protected]

Boo Programming Language

Embed Size (px)

DESCRIPTION

my slides from the first seminar of spb alt.net group

Citation preview

Page 1: Boo Programming Language

.NET CLI Languages

Баум Виталий.NET [email protected]

Page 2: Boo Programming Language

Основные характеристики языка

Page 3: Boo Programming Language

Открытая лицензия (схожа с MIT/BSD)

Совместим с Microsoft.NET, так же с Mono

Page 4: Boo Programming Language

Объектно-ориентированный языкСтатическая типизацияPython’ообразный синтаксисРасширяемый язык

Page 5: Boo Programming Language

http://boo.codehaus.org/Download «binary»: компилятор booc.exe интерпретатор booi.exe интерактивный интерпретатор

booish.exe#DevelopVisual Studio

(Codeplex.com/BooLangStudio)

Page 6: Boo Programming Language

История развития

Page 7: Boo Programming Language

Родриго Баррето де Оливейра (Rodrigo Barreto de Oliveira) в 2003 году.

В Python ему не хватало статической типизации, проверки ошибок времени компиляции и инфраструктуры .NET.

C# же порой был слишком многословный.

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

Page 8: Boo Programming Language

Начинаем работать с Boo

Page 9: Boo Programming Language

Классический HelloWrold выглядит следующим образом:

print "Hello World!"

Page 10: Boo Programming Language

Boo строготипизированный язык, поэтому следующий код не скомпилится:

i as inti = "Hello World!"

Page 11: Boo Programming Language

Boo реализует Выведение типов (Type Inference):import System.Collections.Generic// Infers i as type System.Int32i = 21i += 21

def Foo():return Dictionary[of string,

List[of int]]()

h = Foo()

Page 12: Boo Programming Language

Приведение типов (Auto casting):// Auto casts i to doublei as int = 42.1d as double = 42

// Errors//d = i as double//d = System.Exception()

Page 13: Boo Programming Language

Отступ слева является синтаксически значимым:happyToday = Convert.ToBoolean(Random().Next(2))if happyToday:

print "Hello World!"else:

for i in range(3):print "Goodbye World!"

Page 14: Boo Programming Language

Boo объектно-ориентированный языкclass Dessert:

public name as stringpublic foo as string

override def ToString():return name

d = Dessert(foo: "foo", name: "Crunchy Frog!")

print d.name

Page 15: Boo Programming Language

Boo реализует Common Type System, что обеспечивает совместимость с CLR

Page 16: Boo Programming Language

Boo – это замечательно!a = (1, 2, 3, 4)b = (1, "two", 3.0, 4ms)l = [42, "Silly", 1.618]l.Add(true)for i in range(l.Count):

print "${i}: ${l[i]}"items = i for i in l if i isa intmin = 55mhrs = 55h

Page 17: Boo Programming Language

Boo использует регулярные выражения (оператор match из perl =~):"Here is foo” =~ /foo/m = /abc/.Match("123abc456")if m.Success:

print "Found match at position:", m.Index

!~ пока не реализован, можно использовать not

Page 18: Boo Programming Language

Boo как функциональный язык

Page 19: Boo Programming Language

Замыкания в Boo:p = print// lambda expressiona1 = { s | p(s) }// anonymous methoda2 = def(s as string):

a1(s)

a1("Action 1!")a2("Action 2!")

Page 20: Boo Programming Language

Boo – подручный языкurl, local = "http://boo.codehaus.org", "boo.html"client = WebClient()call = client.DownloadFile.BeginInvoke(url, local)while not call.IsCompleted:

Console.Write(".")Thread.Sleep(50ms)

Page 21: Boo Programming Language

Boo поддерживает утиную типизацию:t = Type.GetTypeFromProgID("InternetExplorer.Application")ie as duck = Activator.CreateInstance(t)ie.Visible = trueie.Navigate2("http://boo.codehaus.org")

Page 22: Boo Programming Language

Интерфейс IQuackFu позволяет динамически добавлять поведение в класс в реальном времени

Page 23: Boo Programming Language

Boo – расширяемый язык:позволяет создавать макросытак же макросы на основе аттрибутов

Page 24: Boo Programming Language

Boo разработан для реализации внутренних DSL

Specter.Framework для BDD(behavior-driven development)

Page 25: Boo Programming Language

Boo расширяет условия компиляции:class invalidClass:

pass

Class name 'invalidClass' should start with an uppercase letter! (BCE0000)

Page 26: Boo Programming Language

Куда слазить? Что почитать? Когда начать?

Page 27: Boo Programming Language

Домашняя страница проектаНовости, FAQ, Guide, Cookbook и

многое другое

Page 28: Boo Programming Language

Google группа, последние тенденции, проекты, новости, практики

Page 29: Boo Programming Language

http://boo.codehaus.org/BooManifesto.pdf - манифест языка

http://ayende.com/Blog/archive/2008/03/30/A-web-server-in-30-lines-of-code.aspx - веб-сервер в 30 строках кода

http://www.manning.com/rahien/ - книга о написании DSL на Boo

http://mysite.mweb.co.za/residents/sdonovan/boo-book.html - неплохой справочник

http://www.justnbusiness.com/ - статьи и примеры кода

http://www.script-coding.info/Boo.html - обзор на русском

http://www.developers.org.ua/archives/cleg/2007/08/03/say-boo/ - обзор на русском

http://progopedia.ru/language/boo/ - обзор в Прогопедии

Page 30: Boo Programming Language

Webness (http://boo-lang.org/projects-using-boo/frameworks/webbness-framework-tutorial/) фреймворк (куда же без него) для быстрой разработки web-приложений

Brail (http://www.ayende.com/projects/brail.aspx) – шаблонный движок для генерации HTML

Piorun (http://piorun.sztorm.net/) - Jabber клиент

http://code.google.com/p/dotnetopenid/ - OpenID библиотека

http://specter.sourceforge.net/ - BDD среда http://lazunin.com/tetris_boo.html - игра

Тетрис для Silverlight

Page 31: Boo Programming Language

Надеюсь было интересно ;)