IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Un développeur publie un langage de programmation qui peut être traduit automatiquement en C, C++, C#, Java, JavaScript, etc.,
Avec une traduction rapide et sans machine virtuelle

Le , par Bill Fassinou

84PARTAGES

8  0 
Piotr Fusik, ingénieur logiciel, a récemment présenté un nouveau langage de programmation baptisé Ć. Il décrit Ć comme un nouveau langage de programmation qui peut être traduit automatiquement en C, Java, C#, JavaScript, ActionScript, D, Perl, Python, Swift et OpenCL. La description indique que le code ainsi traduit est léger (pas machine virtuelle, d'émulation ni de gros runtime), lisible par l'homme et s'adapterait convenablement au langage cible (y compris les conventions de nommage et les commentaires de documentation).

Le langage Ć et ses caractéristiques

Ć est un langage destiné aux programmeurs ayant une grande expérience dans plusieurs langues. Il suit le principe POLA (principe de la moindre surprise ou "principle of least astonishment"). La syntaxe est proche de celle de C# (langage orienté objet développé Microsoft). En fait, la coloration syntaxique de C# fonctionne très bien pour Ć. Cependant, l'auteur insiste sur le fait que le langage de programmation Ć n'est pas un clone de C# ni un sous-ensemble de celui-ci. Les différences proviennent de la nécessité de disposer d'une traduction entièrement automatisée vers un code C et JavaScript efficace, en particulier.



Selon l'auteur du langage, contrairement à la plupart des langages qui existent, Ć ne prétend pas être le meilleur langage de programmation universel. Au lieu de cela, il résout un problème spécifique : comment écrire du code qui peut être utilisé de manière pratique à partir de C, C++, C#, Java, JavaScript, Python, Swift et OpenCL en même temps. Par exemple, si vous avez inventé un nouveau format de compression, vous pouvez l'implémenter dans Ć et demander au traducteur automatique cito de générer le code source dans les langues mentionnées, afin que les programmeurs de ces langues puissent utiliser votre code.

Ć est conçu comme un langage orienté objet, car la plupart des langages cibles sont orientés objet et vous êtes probablement familier avec ce paradigme. L'auteur note que cela peut être considéré comme une amélioration par rapport à C, néanmoins la sortie C orientée objet est plutôt simple à utiliser pour les programmeurs C. Les dépendances de la bibliothèque d'exécution sont minimes. La sortie C est souvent une paire autonome de fichiers .c/.h contenant du code C99 portable et lisible par l'homme. De même, les sorties dans d'autres langages ne dépendent de rien d'autre que du langage standard. Il y a deux exceptions :

  1. si le code Ć utilise des expressions régulières - List, Dictionary ou SortedDictionary - la sortie C s'appuie sur les implémentations GLib de ceux-ci ;
  2. Math.FusedMultiplyAdd est implémenté en Python avec pyfma.


La gestion de la mémoire est native au langage cible. Un ramasse-miettes sera utilisé s'il est disponible dans le langage cible. Sinon (en C et C++), les objets et les tableaux sont alloués sur la pile pour des performances maximales ou sur le tas pour plus de flexibilité. Les allocations sur le tas utilisent des pointeurs intelligents C++.

Quels sont les cas d'utilisation de Ć ?

L'auteur de Ć estime que les programmeurs ont tendance à éviter l'Unicode dans les noms de fichiers. C'est pourquoi les fichiers sources Ć ont l'extension de nom de fichier .ci au lieu de . En polonais, "ci" se prononce de manière identique à "ć". La description de Ć indique le contenu du fichier source doit être encodé en UTF-8 avec une BOM optionnelle. En outre, il indique également que la plupart du temps, les espaces blancs sont insignifiants dans le code source Ć. Il existe des commentaires d'une seule ligne de // jusqu'à la fin de la ligne et des commentaires multilignes encadrés par /* */. Exemple de code Ć :

Code Ć : Sélectionner tout
1
2
3
4
5
6
7
8
 
public class HelloCi 
{ 
    public static string GetMessage() 
    { 
        return "Hello, world!"; 
    } 
}

Traduisez ensuite dans les langues cibles en utilisant cito sur la ligne de commande :

Code Ć : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
 
cito -o hello.c hello.ci 
cito -o hello.cpp hello.ci 
cito -o hello.cs hello.ci 
cito -o HelloCi.java hello.ci # Java enforces filenames for public classes 
cito -o hello.js hello.ci 
cito -o hello.py hello.ci 
cito -o hello.swift hello.ci 
cito -o hello.ts hello.ci 
cito -o hello.d.ts hello.ci # TypeScript declarations only 
cito -o hello.cl hello.ci

Selon l'auteur, le code traduit est léger (pas de machine virtuelle, d'émulation, ni de dépendances), lisible par l'homme et s'adapte bien à la langue cible, y compris les conventions de dénomination et les commentaires de documentation. La description ajoute que Ć n'est pas un langage de programmation à usage général. Il est plutôt destiné à l'implémentation de bibliothèques portables et réutilisables.

Les types de données présents dans Ć

Dans Ć, on retrouve les types de données habituels, notamment :

  1. le type booléen : le type booléen est appelé bool et ses littéraux sont true et false. Les opérateurs booléens sont ! (pas), && (et), || (ou) et l'opérateur ternaire x ? y : z (si x alors y sinon z) ;
  2. les entiers : la plupart du temps, vous utiliserez le type de nombre entier 32 bits int. Pour les nombres plus importants, utilisez le type long 64 bits. Toutefois, JavaScript ne prend pas en charge les entiers 64 bits, mais uniquement les nombres à virgule flottante 64 bits, de sorte que les opérations sur les long sont sujettes à une perte de précision lorsqu'on utilise JavaScript ;
  3. les nombres à virgule flottante : il existe deux types de nombres à virgule flottante : float et double ;
  4. les énumérations : les énumérations ont des valeurs définies par l'utilisateur, comme dans les autres langages de programmation ;
  5. dans Ć il y a deux types de données de chaîne : "le stockage des chaînes de caractères", écrit comme string() ; et "la référence à une chaîne de caractères", écrite simplement comme string. Cette distinction permet une traduction directe en C et C++, qui n'ont pas de ramasse-miettes. En C++, le stockage des chaînes de caractères est représenté par std::string, tandis que la référence aux chaînes de caractères en C++17 est std::string_view. En C, le stockage des chaînes de caractères est un char* pointant vers une chaîne de caractères allouée et la référence à une chaîne de caractères est const char*. Dans les autres langages, String est utilisé à la fois pour le stockage et la référence des chaînes.


Les tableaux

Les tableaux sont des collections de taille fixe, où chaque élément a le même type et peut être accédé en O(1) temps. Les types de tableaux Ć sont :

  1. le stockage dans un tableau, écrit comme T[n]T est le type d'élément et n est la longueur constante de compilation ;
  2. référence dynamique de tableau, écrite sous la forme T[]# ;
  3. référence de tableau en lecture seule, écrite sous la forme T[] ;
  4. référence de tableau en lecture-écriture, écrite sous la forme T[]!.


Les classes

Les classes sont des types composés définis par l'utilisateur.

[CODE=Ć]
classe Animal
{...
La fin de cet article est réservée aux abonnés. Soutenez le Club Developpez.com en prenant un abonnement pour que nous puissions continuer à vous proposer des publications.

Une erreur dans cette actualité ? Signalez-nous-la !