Fancy

www.fancy-lang.org chris@fancy-lang.org

Inspiration

Smalltalk „reine“ Objektorientierung & spätes Binding Ruby

einfache Syntax  Text-basiert (anstatt Image-basiert) Erlang
   

Actor-Concurrency Verteilte Systeme Threads & Locks sind ungeeignet

Motivation
 

Interesse und Spaß Forschungsprojekt
 

Auch für Laien relativ einfach zu verstehen Viele vorhandene Sprachimplementierung sind relativ schlecht dokumentiert (→ Quellcode)

Nebenläufigkeit mit reiner Objektorientierung

Syntax: Hello World

Syntax: Klassendefinition

Syntax: Blöcke (Closures)

Codebeispiele

Fancy in Fancy erweitern

Ursprünglich:
  

Großteil der Stdlib in Fancy selbst geschrieben Vorteil: Schön, ausdrucksstark, kompakt Nachteil: Schlechte Performance :(

Fancy in Fancy erweitern

Beispiel C++ vs Fancy:

Fancy in C++ erweitern

Features
  

Konservativer Garbage Collector (BoehmGC) Closures Klassendefinitionen

Klassen- & Instanzmethoden Methoden dienen lediglich „Nachrichten-Handler“ Was mit einer Nachricht gemacht wird, kann jedes Objekt autonom entscheiden, falls erwünscht

Nachrichtenbasiert
 

→ unknown_message:params:

Features

Alles ist ein Objekt, inklusive:
     

Klassen Objekte (duh!) Methoden Blöcke (Closures / Anonymous Methods) Scopes (derzeit deaktiviert aus Performancegründen) Nachrichten & deren „Versand“ (z.T. unvollständig) Wichtiges Konzept für DSLs

Dynamische Bindung & Typisierung

Metadaten

Features

Exception Handling

Nur wenige speziell reservierte Wörter, u.a.:

def, class, actor, try, catch, finally, require, super $, .

Spezielle Operatoren:

Features

Literale Ausdrücke für:
     

Arrays: [1,2,3] Hashes: <[:foo => 42]> Zahlen: 12, 12.123 Symbole: :foo, :bar, :wasgeht_123 Strings: „foo“, „bar“ Reguläre Ausdrücke: r{[a-Z]*(foo|ba(r)+)}

Features

Bisher implementiert

Array, Block, Class, Console, Directory, File, Enumerable, Hash, NilClass, TrueClass, Number, Object, Set, String, Symbol FancySpec TDD-Library ähnlich zu Rubys Rspec → Tests für alle eingebauten Klassen vorhanden (siehe tests/ Ordner)

Features

Was fehlt noch?
     

Sockets Ausbau der bisherigen Klassen & Stdlib Pattern-Matching Prozesse (à la Erlang) ggf. Threads u.v.m., u.a. eine Killer-App ;)

Mehr Infos

Website:

http://www.fancy-lang.org chris@fancy-lang.org http://github.com/bakkdoor/fancy/ http://groups.google.com/group/fancy-lang

Email:

GitHub Repository:

Google Group:

Master your semester with Scribd & The New York Times

Special offer for students: Only $4.99/month.

Master your semester with Scribd & The New York Times

Cancel anytime.