Plan du site  
pixel
pixel

Articles - Étudiants SUPINFO

Un langage peu connu: CEYLON

Par Komlan Nelson ALATE Publié le 12/10/2017 à 23:25:16 Noter cet article:
(0 votes)
Avis favorable du comité de lecture

Introduction

La programmation est une notion incontournable de l’informatique.

Les développeurs ont à leur disposition un nombre très impressionnant de langages afin de réaliser divers types d’applications, applications web, applications mobiles pour ne citer que ceux-là.

Malgré ce choix déjà vaste, ils continuent de nous proposer de nouveaux langages afin,soit de pallier aux limites des langages actuels, soit de rendre les tâches encore plus accessibles ou simples de compréhension. De ce fait, la programmation est un monde en évolution permanente.

Certains de ces nouveaux langages sont déjà rentrés en utilisation et d’autres sont toujours en phase d’expérimentation.

Dans cet article je vous propose de partir à la découverte d’un de ces nouveaux langages encore peu connu à ce jour : Ceylon.

Sommaire

  • Présentation

  • Historique

  • Objectifs

  • Syntaxe

  • Versions

  • Outils

  • Licences

Présentation

Ceylon est un langage de programmation orienté-objet, open source, de haut niveau, fortement typé et statique. Sa synthaxe de base est très proche de celle de java. D’ailleurs il peut être exécuté sous machine virtuelle Java (JVM) ou compilé sous forme de Javascript.

Historique

Ceylon a été développé par un membre de Red hat ,Gavin King qui est connu comme étant le concepteur du framework Hibernate. L’idée de la création de Ceylon lui est venue lorsqu’il remarqua que le langage Java présentait quelques anomalies qui pourraient être rectifiées comme par exemple, le caractère trop verbeux de sa syntaxe et son impossibilité à supporter la méta-programmation . Pour ceux qui ne le savent pas la méta-programmation est un domaine de la programmation où les données manipulées sont-elles même des programmes.

Ceylon est donc à la base né pour pallier aux limites de java.

Gavin King commença à travailler sur son nouveau langage en 2009. Il présenta son projet pour la toute première fois à la conference Qcon qui s’est déroulé à Pekin en avril 2011. La version 1.0.0 de Ceylon fut publiée 2 ans plus tard, le 12 novembre 2013.

Objectifs

Ceylon est un langage visant à ecrire de gros logiciels en équipe. Ses objectifs sont :

  • La sécurité et la robustesse en se basant sur un typage fort et statique.

  • Lisible en offrant une synthaxe simple proche du java mais fermée n’offrant pas plusieurs moyens d’exprimer une même chose.

  • Modularité avec la possibilité de découper les applications Ceylon en modules et la gestion de dépendances.

  • Outillage grâce à un ensemble complet d’outils proposés, que ce soit des outils en lignes de commande ou un environnement de développement intégré (IDE).

Syntaxe de programmation

Du point de vue de la syntaxe Ceylon est très proche du Java.

Hello world

Voici un exemple classique de ‘Hello world’

Les concepts fondamentaux

  • Les codes sources sont des fichiers avec une extension .ceylon.

  • En Ceylon par défaut tous les objets sont immuables c’est-à-dire qu’ils ne peuvent pas changer de valeurs au cours du temps. Pour qu’ils soient muables, il faut les déclarer avec l’annotation variable.

  • L'amélioration de la gestion du "Type Safe" : Ceylon met fin au NullPointerException et à de bien d’autres exceptions levées seulement au moment de l'exécution dans Java. Le mot réservé "exists" permet de tester l'existence réelle d'un objet.

  • La simplification des niveaux de visibilité. En effet en Java, on trouve 4 niveaux de visibilité qui sont : public, private, protected et package. En Ceylon, on trouve seulement 2 niveaux ("shared" qui équivaut au "public" et le reste prend le scope de "private").

  • Une représentation basée sur une syntaxe déclarative pour s'affranchir du XML.

  • La fin de la surcharge ("overloading") à la fois au niveau des méthodes et des constructeurs. Chaque objet a désormais un seul et unique constructeur. Cette suppression de l'overloading peut être perçue comme une régression par rapport à Java mais en contrepartie, le passage des paramètres de méthodes devient optionnel.

  • Ceylon offre la possibilité de définir des méthodes directement à l'intérieur du constructeur.

  • Pour les attributs, les getters et setters au sens Java disparaissent.

  • Un nouvel opérateur d'assignation ":=" est utilisable en Ceylon.

  • Au niveau des abstractions, le "override" de Java devient "actual" en Ceylon. Les éléments ne sont pas redéfinissables par défaut. Pour pouvoir faire de la redéfinition ("overridding"), il faut utiliser les mots réservés "default" ou "formal".

  • L'introduction d'objets séquences dans lesquels il est possible de mettre des objets de différents types (union type ou intersection type).

  • En ce qui concerne les interfaces, de la flexibilité a été apportée. Il est désormais possible de définir dans une interface des méthodes concrètes. De nouveaux mots réservés apparaissent au niveau des définitions de méthodes (passage de "public

    abstract" à "shared formal") et au niveau de l'implémentation (passage de "implements" à "satisfies").

Les classes

Exemple d’une classe en Ceylon :

Ici Il n'y a pas de constructeur. La déclaration de la classe contient les paramètres qui doivent passés lors de l'instanciation d'un objet. Dans l'exemple, il faut lui passer une chaine en paramètre. Cette chaine fait implicitement partie des attributs de la classe. Cela signifie donc qu'il ne peut pas y avoir de surcharge de constructeur et qu'il n'y a qu'une seule manière d'instancier un objet.

Il n'existe pas de mot-clé permettant l'instanciation, comme le « new » en Java ou en C++. On appelle simplement le nom de la classe comme une fonction.

Héritage

Pour faire hériter une classe d'une autre, on emploie comme en Java le mot-clé extends.

Exemple :

Avec la classe Vehicule :

Nous voyons qu'il est possible d'accéder aux attributs de la classe-mère grâce à l'utilisation du mot-clé super. On remarque que pour qu'un attribut de la classe-mère puisse être redéfini, il faut qu'il soit déclaré avec default. De même, la redéfinition doit être déclarée avec le mot-clé actual. Cet ajout syntaxique évite les erreurs de redéfinition. La syntaxe pour la redéfinition peut être raccourcie en supprimant l'ensemble des mots-clés précédent le nom de l'attribut, y compris le type de données :

Cette syntaxe ne permet aucune annotation.

De manière analogue à Java, toute classe ne précisant pas une classe-mère hérite d'une manière implicite de la classe ceylon.language.Object.

Les structures de contrôle

Dans Ceylon toutes les instructions devant être exécutées doivent être délimitées par des accolades. Même s’il s’agit d’une seule instruction à exécuter Ceylon interdit d’omettre les accolades.

Les conditions

La condition if (ou if else) se comporte exactement comment en java ou en C :

Listes de cas

La syntaxe de l'instruction switch n’est pas du tout la même qu’en java ou dans les autres langages.

Le bloc qui englobe le switch n'est pas délimité par des accolades, au contraire des blocs d’instructions case et else qui le sont. L'instruction classique break n’est pas utilisé pour indiquer la fin d'un cas, comme en C ou Java, ce qui exclut la possibilité d'utiliser un même bloc de code pour plusieurs cas comme on peut le faire dans ces langages. Pour le bloc d’instructions par défaut à exécuter on utilise un else au lieu du default.

Le switch est utilisable pour les objets de types Integer, Character et String.

Les boucles

La boucle while fonctionne de la même manière qu'en C ou en Java. Tant que la condition indiquée est vérifiée, la boucle continue à s'exécuter.

Ceylan n’offre pas d’équivalent à la boucle do..while qu’on peut trouver en C ou en java.

Les commentaires

En ce qui concerne les commentaires, Ceylon utilise les même principes que les autres langages à savoir le « // » pour les commentaires sur une même ligne et les commentaires sur plusieurs lignes commencent par « /* » et se terminent par « */ ».

Les versions

Voici la liste des versions de Ceylon sorties jusqu’à ce jour :

  • M1 0.1 "Newton" (20 Décembre 2011)

  • M2 0.2 "Minitel" (02 Mars 2012)

  • M3 0.3 "V2000" (21 Juin 2012)

  • M3.1 0.3.1 "V2000" (06 Juillet 2012)

  • M4 0.4 "Analytical Engine" (29 Octobre 2012)

  • M5 0.5 "Nesa Pong" (13 Mars 2013)

  • M6 0.6 "Virtual Boy" (23 Septembre 2013)

  • 1.0 beta "Virtual Boy" (24 Septembre 2013)

  • 1.0.0 "No More Mr Nice Guy" (13 Novembre 2013)

  • 1.1.0 "Ultimate Ship The Second" (09 Octobre 2014)

  • 1.2.0 "A Series of Unlikely Explanations" (28 Octobre 2015)

  • 1.2.1 "Irregular Apocalypse" (11 Février 2016)

  • 1.2.2 "Charming But Irrational" (11 Mars 2016)

  • 1.3.0 "Total Internal Reflection" (19 Septembre 2016)

  • 1.3.1 "Now We Try It My Way" (22 Novembre 2016)

  • 1.3.2 "Smile Tolerantly" (02 Mars 2017)

  • 1.3.3 "Contents May Differ" (21 Aout 2017).

Les outils

Les développeurs disposent de plusieurs outils pour programmer en ceylon: Un IDE basé sur Eclipse composé de plusieurs plugins, un ensemble d'outils en ligne de commande basés sur Ant, comprenant notamment des compilateurs et des lanceurs pour Java et Javascript ainsi qu'un outil de documentation, un SDK comprenant toutes les librairies Ceylon, ainsi qu'un référentiel de modules permettant de récupérer les modules désirés et de publier les siens, appelé Ceylon Herd.

A l’heure actuelle, Il existe aussi un projet de portage des outils disponibles pour Eclipse dans l'environnement IntelliJ.

Licences

Toutes les parties et fonctionnalités de Ceylon sont disponibles en open Source la plupart sous licence Apache. Une partie du code source est sous licence LGPL.

Conclusion

Le monde de la programmation est en perpétuelle évolution. De nombreux nouveaux langages comme Ceylon voient le jour d’années en années. Cet article avait pour but de vous donner envie de partir à la decouverte de nouveaux horizons de programmation. Ces langages souffrent pour le moment d’un manque certain de notoriété. Mais ils constituent une bonne alternative aux langages populaires comme le java ou le C++ et pourraient même eventuellement les remplacer d’ici quelques années.

A propos de SUPINFO | Contacts & adresses | Enseigner à SUPINFO | Presse | Conditions d'utilisation & Copyright | Respect de la vie privée | Investir
Logo de la société Cisco, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société IBM, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Sun-Oracle, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Apple, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Sybase, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Novell, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Intel, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Accenture, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société SAP, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Prometric, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Toeic, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo du IT Academy Program par Microsoft, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management

SUPINFO International University
Ecole d'Informatique - IT School
École Supérieure d'Informatique de Paris, leader en France
La Grande Ecole de l'informatique, du numérique et du management
Fondée en 1965, reconnue par l'État. Titre Bac+5 certifié au niveau I.
SUPINFO International University is globally operated by EDUCINVEST Belgium - Avenue Louise, 534 - 1050 Brussels