Boo Programming Language

  • Uploaded by: Vitaly Baum
  • 0
  • 0
  • April 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Boo Programming Language as PDF for free.

More details

  • Words: 585
  • Pages: 31
Баум Виталий .NET Developer butaji.wordpress.com [email protected]

.NET CLI Languages

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

 Открытая

лицензия (схожа с

MIT/BSD)  Совместим с Microsoft.NET, так же с Mono

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

язык

 http://boo.codehaus.org/Download

«binary»:  компилятор booc.exe  интерпретатор booi.exe  интерактивный интерпретатор

booish.exe  #Develop  Visual Studio

(Codeplex.com/BooLangStudio)

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

 Родриго

Баррето де Оливейра (Rodrigo Barreto de Oliveira) в 2003 году.  В Python ему не хватало статической типизации, проверки ошибок времени компиляции и инфраструктуры .NET.  C# же порой был слишком многословный.  Желание расширять язык собственными конструкциями, а также интерактивный

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

 Классический

HelloWrold выглядит следующим образом: print "Hello World!"

 Boo

строготипизированный язык, поэтому следующий код не скомпилится: i as int i = "Hello World!"

 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()

 Приведение

типов (Auto casting): // Auto casts i to double i as int = 42.1 d as double = 42 // Errors //d = i as double //d = System.Exception()

 Отступ

слева является синтаксически значимым: happyToday = Convert.ToBoolean(Random().Ne xt(2)) if happyToday: print "Hello World!" else: for i in range(3): print "Goodbye World!"

 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

 Boo

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

 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

 Boo

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

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

 Boo

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

 Замыкания

в Boo:

p = print // lambda expression a1 = { s | p(s) } // anonymous method a2 = def(s as string): a1(s) a1("Action 1!") a2("Action 2!")

 Boo

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

 Boo

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

 Интерфейс

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

 Boo

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

 Boo

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

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

 Boo

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

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

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

 Домашняя

страница проекта  Новости, FAQ, Guide, Cookbook и многое другое

 Google

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

       

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/ - обзор в Прогопедии

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 среда 

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

Related Documents


More Documents from ""