Boo Programming Language

789 views

Published on

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
789
On SlideShare
0
From Embeds
0
Number of Embeds
9
Actions
Shares
0
Downloads
8
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Boo Programming Language

  1. 1. Баум Виталий .NET Developer butaji.wordpress.com yafos@yandex.ru .NET CLI Languages
  2. 2. Основные характеристики языка
  3. 3.  Открытая лицензия (схожа с MIT/BSD)  Совместим с Microsoft.NET, так же с Mono
  4. 4.  Объектно-ориентированный язык  Статическая типизация  Python’ообразный синтаксис  Расширяемый язык
  5. 5.  http://boo.codehaus.org/Download «binary»:  компилятор booc.exe  интерпретатор booi.exe  интерактивный интерпретатор booish.exe  #Develop  Visual Studio (Codeplex.com/BooLangStudio)
  6. 6. История развития
  7. 7.  Родриго Баррето де Оливейра (Rodrigo Barreto de Oliveira) в 2003 году.  В Python ему не хватало статической типизации, проверки ошибок времени компиляции и инфраструктуры .NET.  C# же порой был слишком многословный.  Желание расширять язык собственными конструкциями, а также интерактивный
  8. 8. Начинаем работать с Boo
  9. 9.  Классический HelloWrold выглядит следующим образом: print "Hello World!"
  10. 10.  Booстроготипизированный язык, поэтому следующий код не скомпилится: i as int i = "Hello World!"
  11. 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. 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. 13.  Отступ слева является синтаксически значимым: happyToday = Convert.ToBoolean(Random().Ne xt(2)) if happyToday: print "Hello World!" else: for i in range(3): print "Goodbye World!"
  14. 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. 15.  Booреализует Common Type System, что обеспечивает совместимость с CLR
  16. 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. 17.  Boo использует регулярные выражения (оператор match из perl =~): "Here is foo” =~ /foo/ m = /abc/.Match("123abc456") if m.Success: print "Found match at position:", m.Index !~ пока не реализован, можно использовать not
  18. 18.  Boo как функциональный язык
  19. 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. 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. 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. 22.  ИнтерфейсIQuackFu позволяет динамически добавлять поведение в класс в реальном времени
  23. 23.  Boo– расширяемый язык: позволяет создавать макросы так же макросы на основе аттрибутов
  24. 24.  Booразработан для реализации внутренних DSL Specter.Framework для BDD(behavior-driven development)
  25. 25.  Booрасширяет условия компиляции: class invalidClass: pass Class name 'invalidClass' should start with an uppercase letter! (BCE0000)
  26. 26. Куда слазить? Что почитать? Когда начать?
  27. 27.  Домашняя страница проекта  Новости, FAQ, Guide, Cookbook и многое другое
  28. 28.  Google группа, последние тенденции, проекты, новости, практики
  29. 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. 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. 31. Надеюсь было интересно ;)

×