Cejlon

Cejlon
Datum první verze 2011
Paradigmata objektově orientovaný
Autor Gavin King
Vývojáři Gavin King
Poslední verze 1.2.0 (29. října 2015)
1.3.3 (21. srpna 2017)
Psaní na stroji Statický , silný
Ovlivněno C , Java
Napsáno Jáva
Operační systém Cross-platform
Licence Softwarová licence Apache
webová stránka http://ceylon-lang.org
Přípona souboru Cejlon

Ceylon (vyslovuje se [sɨˈlɒn] )) je programovací jazyk open-source na vysoké úrovni se silným typem a statickým typem . Jeho syntaxe je podobná syntaxi Java . Lze jej zkompilovat jako bajtový kód Java nebo jako JavaScript . To bylo propuštěno Red Hat pod licencí Apache v2. To bylo vytvořeno Gavinem Kingem , tvůrcem Hibernate a JBoss Seam .

Cíle

Tváří v tvář skutečnému nebo domnělému stárnutí jazyka Java a JDK, publikovaného v roce 1995, a jeho slabému vývoji, chtěli tvůrci Ceylonu vytvořit více aktuální jazyk. Vlastnosti, které tvrdí, že chtěly dát tomuto jazyku, jsou:

Historický

Ceylon byl poprvé představen během prezentace, kterou přednesl Gavin King na konferenci QCon v Pekingu od 8. dubna 2011 na 10. dubna 2011. V té době pracoval na projektu dva roky, tj. Od roku 2009.

Jazyková verze 1.0.0 byla vydána dne 12. listopadu 2013.

Ceylon byl darován nadaci Eclipse v roce dubna 2017.

Syntax

Syntaxe je podobná syntaxi Java. Oficiální dokumentace říká, že je inspirován C .

Jednoduchý příklad

Zde je klasický příklad programu „ Hello world “ na Cejlonu:

void hello() { print("Hello, World!"); }

Základní koncepty

Všechny zdrojové kódy jsou soubory s příponou .ceylon .

Na Cejlonu jsou všechny objekty standardně neměnné . Aby nebyl objekt neměnný, musí být deklarován s anotací proměnné .

Příklad:

Rozdíl mezi místní proměnnou a atributem objektu je rozmazanější než v jiných objektově orientovaných jazycích. Proměnná deklarovaná v těle třídy, která ale není anotována sdílenou, je lokální proměnná, pokud není použita v metodě anotované sdílenou .

Příklady:

Když jeden přiřadí hodnotu proměnné v době její deklarace a že toto přiřazení umožňuje bez dvojznačnosti odvodit typ proměnné, lze ji vynechat. Musíte pouze použít klíčové slovo value . Není však možné to udělat, pokud chcete deklarovat proměnnou jako sdílenou nebo formální .

Příklad:

Třídy

Ceylon je objektově orientovaný jazyk s třídami . Základní strukturou cejlonského programu je tedy třída. Třída je součástí balíčku a balíček je součástí modulu.

Příklad:

shared class uneClasse(String uneChaine) { String uneAutreChaine; shared Float unReel; }

Neexistuje žádný konstruktor. Deklarace třídy obsahuje parametry, které musí být předány při vytváření instance objektu. V příkladu mu musíte předat řetězec jako parametr. Tento řetězec je implicitně součástí atributů třídy. To znamená, že nemůže existovat žádné přetížení konstruktoru a že existuje pouze jeden způsob, jak vytvořit instanci objektu.

Neexistuje žádné klíčové slovo umožňující vytváření instancí, jako nové v Javě nebo C ++. Jednoduše nazýváme název třídy jako funkci.

Příklad:

Zapouzdření dat funguje odlišně od jiných jazyků odvozených z C ++. Sdílené klíčové slovo zpřístupňuje prvek mimo jeho původní kontext. To znamená, že pokud je deklarováno jako sdílené , atribut nebo metoda bude viditelná mimo třídu, pro třídu to znamená, že to bude viditelné pro ostatní třídy balíčku a pro balíček, že to bude viditelné pro ostatní moduly.

Stejně jako v Javě je každá třída definována v souboru se stejným názvem a je umístěna na místě ve stromové struktuře označené balíčkem.

Dědictví

Aby jedna třída děděla od jiné, používáme klíčové slovo extends jako v Javě .

Příklad:

class Automobile(Float vitesseMax) extends Vehicule { shared default String description => "``modele`` "+super.description; }

u třídy vozidel:

class Vehicule(Float vitesseMax, String modele) { shared actual String description => "``vitesseMax``"; }

Vidíme, že je možné přistupovat k atributům nadřazené třídy díky použití klíčového slova super . Vidíme, že pro předefinování atributu nadřazené třídy je nutné jej deklarovat standardně . Podobně musí být redefinice deklarována s klíčovým slovem aktuální . Tato sůl syntaxe zabrání chybám předefinování, jako je omylem předefinování nebo pojmenování předefinovaného atributu. Syntaxi pro novou definici lze zkrátit odstraněním sady klíčových slov před názvem atributu, včetně datového typu:

description => "``modele`` "+super.description;

Tato syntaxe neumožňuje žádnou anotaci, dokonce ani dokumentaci.

Podobně jako v Javě každá třída, která neurčuje nadřazenou třídu, implicitně dědí z třídy ceylon.language.Basic.

Abstraktní třídy a rozhraní
  • Abstraktní třídy jsou deklarovány s abstraktní anotací . Neimplementované metody a neinicializované atributy musí být deklarovány s formální anotací .

Příklad:

  • Rozhraní je deklarováno s klíčovým slovem interface . Podobně jako ve verzi 8 Java je možné definovat metodu v rozhraní za předpokladu, že neprovedete žádnou inicializaci atributu a neodkážete na typ mimo třídu.

Příklad:

Implementace rozhraní třídou se provádí pomocí klíčového slova satisfies .

Příklad:

Vidíme, že na Cejlonu je možné přidat do rozhraní atributy. Aby se předešlo jakékoli nejednoznačnosti, je možné, aby třída implementovala pouze dvě rozhraní mající atribut se stejným názvem, pokud toto pochází z jiného rozhraní, ze kterého první dvě dědí.

Příklad:

Může proto být nutné záměrně rozložit atributy společné pro několik rozhraní v rozhraní, ze kterého budou všechny dědit.

Příklad:

Vzhledem k tomu, že rozhraní mohou obsahovat atributy a kód, je možné vytvářet třídy implementací několika rozhraní, třída potom zdědí chování, které je již v těchto rozhraních zahrnuto. Tato rozhraní se poté chovají jako mixiny .

Stejné klíčové slovo splňuje se používá k označení, že rozhraní dědí z jiného rozhraní.

Příklad:

Anonymní třídy a členské třídy
  • Anonymní třída je definována, když se používá k vytvoření instance objektu pomocí mechanismu dědičnosti. Pro tento účel používáme klíčové slovo objektu .

Příklad:

Mějte na paměti, že deklarace objektů pomocí anonymní třídy obdrží uzávěr obsahující data dostupná v kontextu v tomto bodě v kódu.

Příklad:

  • Je možné deklarovat třídu uvnitř jiné třídy. Na rozdíl od vnořeného mechanismu třídy v Javě je taková třída na Cejlonu řádným členem třídy, která ji obsahuje. Tomu se říká členská třída.

Příklad:

V důsledku toho je při vytváření třídy odvozené od třídy nejvyšší úrovně možné nahradit členskou třídu jednou z jejích odvozených tříd.

Příklad:

V abstraktní třídě je dokonce možné deklarovat členskou třídu formální , takže třídy dědějící z abstraktní třídy musí předefinovat členskou třídu.

Příklad:

Iterable a sekvence

Iterovatelný objekt je objekt, který vytváří tok hodnot. Za tímto účelem musí objekt implementovat Iterovatelné rozhraní standardní cejlonské knihovny.

Zadejte alias

Za účelem zkrácení a faktorizace kódu je na Cejlonu možné definovat typ jako alias jednoho nebo více dalších, včetně jeho parametrizovaných typů. To platí pro třídy i pro rozhraní.

Příklad rozhraní:

interface Repas => Set<Aliment>;

Příklad pro třídu:

class Alphabet({Caractere*} caractere) => ArrayList<Caractere>(caractere);

V případě třídy musí být definovány formální parametry, aby bylo možné vytvořit instanci třídy.

Můžete také vytvořit pojmenovaný alias pomocí klíčového slova alias . Je nezbytné vytvořit alias spojení nebo průnik typů.

Příklad:

alias Lists => ArrayList|LinkedList; Balíčky

Na rozdíl od Javy je balíček definován v konkrétním souboru s názvem package.ceylon. Musí být definován pro každý adresář modulu.

Příklad:

Moduly

Modul je definován souborem s názvem module.ceylon, který musí být v kořenovém adresáři stromu balíčku.

Příklad:

Po sestavení jsou cejlonské moduly k dispozici buď ve formě .car archivů, které se mají použít na JVM, nebo ve formě souboru .js, který lze použít v Javascript.

Kontrolní struktury

Syntaxe je podobná syntaxi Java nebo C # . Malý rozdíl však: Ceylon zakazuje vynechat složené závorky, když chce provést pouze jednu instrukci, bloky, které mají být prováděny ve strukturách řízení, musí být povinně odděleny složenými závorkami.

Všeobecné obchodní podmínky
  • Jednoduchá podmínka: příkaz if se chová přesně jako v C nebo Java:

Příklady:

if (i == 3) { faitQuelqueChose(); }

S klauzulí else:

if (i == 2) { faitQuelqueChose(); } else { faitAutreChose(); }

Navzdory skutečnosti, že je zakázáno vynechat složené závorky k vymezení kódu, který má být spuštěn, je možné podmínky zřetězit:

if (i == 3) { faitQuelqueChose(); } else if (i == 2) { faitAutreChose(); } else { faitEncoreAutreChose(); }
  • Seznam případů

Syntaxe příkazu switch se naproti tomu velmi liší od syntaxe v jiných jazycích.

Příklad:

Integer valeur = 3; switch (valeur) case (1) { faitUneChose(); } case (2) { faitAutreChose(); } case (3) { faitEncoreAutreChose(); } else { faitDefaut(); }

Uzavírací blok přepínače není ohraničen složenými závorkami, zatímco bloky příkazů case a else jsou. Nepoužíváme příkaz break k označení konce případu, jako v jazyce C nebo Java, což vylučuje možnost použití stejného bloku kódu pro několik případů, jak to můžeme udělat v těchto jazycích. Klíčové slovo else nahradí výchozí klíčové slovo nalezené v jazyce C nebo java. Toto je blok kódu, který bude spuštěn, pokud nebude ověřen žádný z uvedených případů.

Přepínač lze použít pro objekty typů Integer , charakter a String , stejně jako pro výčtové typy.

Spony
  • Smyčka s booleovským stavem

Smyčka while funguje stejně jako v C nebo Javě. Dokud je zadaná podmínka pravdivá, smyčka pokračuje v provádění.

Příklad:

Neexistuje ekvivalent pro do ... while smyčky, které lze najít v C nebo Java.

  • Smyčka nad iterovatelným objektem

Komentáře a integrovaná dokumentace

Na Cejlonu jsou komentáře psány přesně jako v Javě nebo C ++  : Jednořádkové komentáře musí začínat sekvencí //. Vše ostatní v řádku se poté považuje za komentář. Víceřádkové komentáře musí začínat / * a končit * /. Cokoli mezi těmito dvěma sekvencemi bude poté považováno za komentář.

Příklady:

/* Ceci est un commentaire */ /* Un autre commentaire */ // Ceci est également un commentaire String texte; // Encore un commentaire

Nástroje

Pro vývoj na Cejlonu je k dispozici několik nástrojů: IDE založené na Eclipse složené ze sady pluginů, sada nástrojů příkazového řádku založených na Ant , zejména včetně kompilátorů a launcherů pro Java a JavaScript a dokumentačního nástroje, SDK včetně všech cejlonských knihoven, stejně jako úložiště modulů umožňujících získat požadované moduly a publikovat jejich vlastní, zvané Ceylon Herd.

K dispozici je také projekt portování nástrojů pro Eclipse v prostředí IntelliJ .

Reference

  1. „  http://ceylon-lang.org/blog/2015/10/29/ceylon-1-2-0/#ceylon_120_is_now_available  “ (přístup 30. října 2015 )
  2. „  https://api.github.com/repos/ceylon/ceylon/releases  “ (zpřístupněno 21. srpna 2017 )
  3. (in) Jak se vyslovuje Ceylon?
  4. (in) Představujeme projekt Ceylon - prezentace Gavina Kinga na QCon Peking 2011
  5. (in) Gavin King odhaluje nástupce Java Red Hat: The Ceylon Project
  6. (en) Ceylon 1.0.0 je nyní k dispozici
  7. „  Eclipse Ceylon: Ceylon to move to the Eclipse Foundation  “ , na ceylon-lang.org (přístup 18. ledna 2019 )
  8. (en) Ceylon Rychlý úvod
  9. (en) Úkoly Ceylon Ant

Podívejte se také

externí odkazy