Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.
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

322 Aufrufe

Veröffentlicht am

A presentation of the Ceylong programming language.

Veröffentlicht in: Software
  • Als Erste(r) kommentieren

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

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:

×