
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 :
- 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 ;
- 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 :
- 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) ;
- 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 ;
- les nombres à virgule flottante : il existe deux types de nombres à virgule flottante : float et double ;
- les énumérations : les énumérations ont des valeurs définies par l'utilisateur, comme dans les autres langages de programmation ;
- 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 :
- le stockage dans un tableau, écrit comme T[n] où T est le type d'élément et n est la longueur constante de compilation ;
- référence dynamique de tableau, écrite sous la forme T[]# ;
- référence de tableau en lecture seule, écrite sous la forme T[] ;
- 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.