Martin Mois @ Softwerkskammer Do
What is Ceylon?
• „Allgemeine“ (general-purpose) Sprache
• Syntax ähnlich zu Java / C#
• Wesentliche Eigenschaften:
– Impe...
Runtime und Plattform
• Ceylon Module ausführbar auf:
– Java Virtual Machine
– JavaScript Virtual Machine
• Ceylon kann Ja...
Releases
• Version 1.0.0
– 13. November 2013
• Version 1.1.0
– 09. Oktober 2014
• Nächstes Release 1.2.0
– Fokus auf neue ...
Klassen
• Klassendefinition:
– Kein expliziter Konstruktor
– Argumente der Klasse werden automatisch zu
Attributen
– Insta...
Access Modifier
• Kein public/private
• Durch „shared“ wird ein Element sichbar für die
nächst höhere Ebene:
Modul
Paket
K...
Optional
• Optionale Typen wie String? erlauben den Umgang
mit möglichen null-Referenzen:
Sequences
• [X+]: Sequence, die mindestens einen Wert liefert
• [X*], X[]: Sequence, die keinen Wert haben muss
• nonempty...
Iterables
• {X+}: Iterables (Streams), die mindestens einen Wert liefern
• {X*}: Iterables, die auch keinen Wert haben
Tuples
• Ein Tupel ist eine verkette Liste, welche sich den
statischen Typ der Element merkt:
Flow-sensitive typing
• Kein C-typischen Casts (nach instanceof):
Union types
• Wert kann einem Union type X|Y zugewiesen werden,
wenn er entweder X oder Y ist:
Intersection types
• Wert kann einem Intersection type X&Y zugewiesen
werden, wenn er X und Y zugewiesen werden
kann:
Typ-System: Datentypen
• Keine „primitiven“ Datentypen
– Aus Performance-Gründen: Compiler verwendet Javas
primitive Typen...
Typ-System: „mixin“ Vererbung
• Interfaces können Attribute und konkrete
Methoden definieren:
Attribut darf keinen konkret...
Typ-System: „mixin“ Vererbung
• Klasse darf zwei
Attribute/Methoden mit
gleichem Namen erben
– Doppeldeutigkeiten
müssen i...
Typ-System: Reifizierbarkeit
• Vollständig reifizierbar
– Kein „type erasure“ bei Generics wie in Java
Covariance and Contravariance
• Ein Geek ist auch eine Person, aber…
• Collection produziert und konsumiert Geeks und kein...
Covariance and Contravariance
• Nun kann Collection als „mixin“ von Producer und Consumer
definiert werden:
• Und Personen...
Typ-System: Anonyme Klassen
• Benannte Instanz einer Klasse ohne der Klasse selbst
einen Namen zu geben
• Kann Werte einfa...
Benannte Argumente
• Namen der Argumente können genutzt werden:
• Dies erlaubt deklarative
Instanziierung:
Nächste SlideShare
Wird geladen in …5
×

Ceylon

289 Aufrufe

Veröffentlicht am

A presentation of the Ceylong programming language.

Veröffentlicht in: Software
0 Kommentare
0 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

Keine Downloads
Aufrufe
Aufrufe insgesamt
289
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
7
Aktionen
Geteilt
0
Downloads
1
Kommentare
0
Gefällt mir
0
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

Ceylon

  1. 1. Martin Mois @ Softwerkskammer Do
  2. 2. What is Ceylon? • „Allgemeine“ (general-purpose) Sprache • Syntax ähnlich zu Java / C# • Wesentliche Eigenschaften: – Imperativ – Statisch getypt (Compile-time type checking) – Strukturiert in Blöcken – Objekt-Orientiert
  3. 3. Runtime und Plattform • Ceylon Module ausführbar auf: – Java Virtual Machine – JavaScript Virtual Machine • Ceylon kann Java/JavaScript Code aufrufen (und umgekehrt) • Ceylon SDK als Klassenbibliothek – Einige SDK-Module basieren auf dem Java SDK, d.h. keine Verwendung in JavaScript
  4. 4. Releases • Version 1.0.0 – 13. November 2013 • Version 1.1.0 – 09. Oktober 2014 • Nächstes Release 1.2.0 – Fokus auf neue Features und Java EE-Integration
  5. 5. Klassen • Klassendefinition: – Kein expliziter Konstruktor – Argumente der Klasse werden automatisch zu Attributen – Instanziierung ohne new – Fat arrow als Kurzform, = als Konstante
  6. 6. Access Modifier • Kein public/private • Durch „shared“ wird ein Element sichbar für die nächst höhere Ebene: Modul Paket Klasse / Top-Level Funktion Attribut / Methode
  7. 7. Optional • Optionale Typen wie String? erlauben den Umgang mit möglichen null-Referenzen:
  8. 8. Sequences • [X+]: Sequence, die mindestens einen Wert liefert • [X*], X[]: Sequence, die keinen Wert haben muss • nonempty-Operator:
  9. 9. Iterables • {X+}: Iterables (Streams), die mindestens einen Wert liefern • {X*}: Iterables, die auch keinen Wert haben
  10. 10. Tuples • Ein Tupel ist eine verkette Liste, welche sich den statischen Typ der Element merkt:
  11. 11. Flow-sensitive typing • Kein C-typischen Casts (nach instanceof):
  12. 12. Union types • Wert kann einem Union type X|Y zugewiesen werden, wenn er entweder X oder Y ist:
  13. 13. Intersection types • Wert kann einem Intersection type X&Y zugewiesen werden, wenn er X und Y zugewiesen werden kann:
  14. 14. Typ-System: Datentypen • Keine „primitiven“ Datentypen – Aus Performance-Gründen: Compiler verwendet Javas primitive Typen – Trotzdem numerische Operatoren verwendbar:
  15. 15. Typ-System: „mixin“ Vererbung • Interfaces können Attribute und konkrete Methoden definieren: Attribut darf keinen konkreten Wert haben
  16. 16. Typ-System: „mixin“ Vererbung • Klasse darf zwei Attribute/Methoden mit gleichem Namen erben – Doppeldeutigkeiten müssen in gemeinsamem Vorfahren ausgeräumt werden
  17. 17. Typ-System: Reifizierbarkeit • Vollständig reifizierbar – Kein „type erasure“ bei Generics wie in Java
  18. 18. Covariance and Contravariance • Ein Geek ist auch eine Person, aber… • Collection produziert und konsumiert Geeks und keine Personen -> zwei Interfaces notwendig:
  19. 19. Covariance and Contravariance • Nun kann Collection als „mixin“ von Producer und Consumer definiert werden: • Und Personen können zu Geeks hinzugefügt werden: • Damit produziert geeks auch Personen:
  20. 20. Typ-System: Anonyme Klassen • Benannte Instanz einer Klasse ohne der Klasse selbst einen Namen zu geben • Kann Werte einfassen (Closure):
  21. 21. Benannte Argumente • Namen der Argumente können genutzt werden: • Dies erlaubt deklarative Instanziierung:

×