Your SlideShare is downloading. ×
Boo Programming Language
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Boo Programming Language

680
views

Published on

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

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

Published in: Technology

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
680
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
6
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Баум Виталий .NET Developer butaji.wordpress.com yafos@yandex.ru .NET CLI Languages
  • 2. Основные характеристики языка
  • 3.  Открытая лицензия (схожа с MIT/BSD)  Совместим с Microsoft.NET, так же с Mono
  • 4.  Объектно-ориентированный язык  Статическая типизация  Python’ообразный синтаксис  Расширяемый язык
  • 5.  http://boo.codehaus.org/Download «binary»:  компилятор booc.exe  интерпретатор booi.exe  интерактивный интерпретатор booish.exe  #Develop  Visual Studio (Codeplex.com/BooLangStudio)
  • 6. История развития
  • 7.  Родриго Баррето де Оливейра (Rodrigo Barreto de Oliveira) в 2003 году.  В Python ему не хватало статической типизации, проверки ошибок времени компиляции и инфраструктуры .NET.  C# же порой был слишком многословный.  Желание расширять язык собственными конструкциями, а также интерактивный
  • 8. Начинаем работать с Boo
  • 9.  Классический HelloWrold выглядит следующим образом: print "Hello World!"
  • 10.  Booстроготипизированный язык, поэтому следующий код не скомпилится: i as int i = "Hello World!"
  • 11.  Boo реализует Выведение типов (Type Inference): import System.Collections.Generic // Infers i as type System.Int32 i = 21 i += 21 def Foo(): return Dictionary[of string, List[of int]]() h = Foo()
  • 12.  Приведение типов (Auto casting): // Auto casts i to double i as int = 42.1 d as double = 42 // Errors //d = i as double //d = System.Exception()
  • 13.  Отступ слева является синтаксически значимым: happyToday = Convert.ToBoolean(Random().Ne xt(2)) if happyToday: print "Hello World!" else: for i in range(3): print "Goodbye World!"
  • 14.  Booобъектно-ориентированный язык class Dessert: public name as string public foo as string override def ToString(): return name d = Dessert(foo: "foo", name: "Crunchy Frog!") print d.name
  • 15.  Booреализует Common Type System, что обеспечивает совместимость с CLR
  • 16.  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 int min = 55m hrs = 55h
  • 17.  Boo использует регулярные выражения (оператор match из perl =~): "Here is foo” =~ /foo/ m = /abc/.Match("123abc456") if m.Success: print "Found match at position:", m.Index !~ пока не реализован, можно использовать not
  • 18.  Boo как функциональный язык
  • 19.  Замыкания в Boo: p = print // lambda expression a1 = { s | p(s) } // anonymous method a2 = def(s as string): a1(s) a1("Action 1!") a2("Action 2!")
  • 20.  Boo – подручный язык url, local = "http://boo.codehaus.org", "boo.html" client = WebClient() call = client.DownloadFile.BeginInvoke (url, local) while not call.IsCompleted: Console.Write(".")
  • 21.  Boo поддерживает утиную типизацию: t= Type.GetTypeFromProgID("Inter netExplorer.Application") ie as duck = Activator.CreateInstance(t) ie.Visible = true ie.Navigate2("http://boo.codeha us.org")
  • 22.  ИнтерфейсIQuackFu позволяет динамически добавлять поведение в класс в реальном времени
  • 23.  Boo– расширяемый язык: позволяет создавать макросы так же макросы на основе аттрибутов
  • 24.  Booразработан для реализации внутренних DSL Specter.Framework для BDD(behavior-driven development)
  • 25.  Booрасширяет условия компиляции: class invalidClass: pass Class name 'invalidClass' should start with an uppercase letter! (BCE0000)
  • 26. Куда слазить? Что почитать? Когда начать?
  • 27.  Домашняя страница проекта  Новости, FAQ, Guide, Cookbook и многое другое
  • 28.  Google группа, последние тенденции, проекты, новости, практики
  • 29.  http://boo.codehaus.org/BooManifesto.pdf - манифест языка  http://ayende.com/Blog/archive/2008/03/30/A-web-server-i - веб-сервер в 30 строках кода  http://www.manning.com/rahien/ - книга о написании DSL на Boo  http://mysite.mweb.co.za/residents/sdonovan/boo-book.htm - неплохой справочник  http://www.justnbusiness.com/ - статьи и примеры кода  http://www.script-coding.info/Boo.html - обзор на русском  http://www.developers.org.ua/archives/cleg/2007/08/03/sa - обзор на русском  http://progopedia.ru/language/boo/ - обзор в Прогопедии
  • 30.  Webness ( http://boo-lang.org/projects-using-boo/framewor ) фреймворк (куда же без него) для быстрой разработки 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 среда
  • 31. Надеюсь было интересно ;)