# Curl (langage)

Curl est un langage de programmation.
Ce langage tente de remédier à un problème connu de longue date : les éléments de base qui composent chaque document web moderne requièrent le plus souvent des méthodes de mise en œuvre très différentes : des langages, des outils, des structures différents et souvent des équipes de développement complètement différentes. Le dernier obstacle (et souvent le plus difficile) est de relier ces éléments entre eux de manière cohérente. Curl essaie de contourner ces problèmes en proposant une interface syntaxique et sémantique constante à tous niveaux de création de contenu web : du simple HTML au niveau complexe de programmation orientée objet.
Curl combine le balisage de texte (HTML), l’écriture de scripts (JavaScript), et l’informatique pure (Java, C#, ou C++) dans une infrastructure unifiée. Curl est utilisé par de nombreuses applications internes aux entreprises (B2B et B2C).
Curl est un langage de balisage comme le HTML, c’est-à-dire que le texte brut s’affiche en tant que texte ; il inclut également un langage de programmation orientée objet qui permet l’héritage multiple. Les applications Curl ne sont pas tenues de respecter les séparations d’informations, de styles et de comportements contrairement au HTML, aux CSS et au JavaScript, bien que ce type de programmation puisse être utilisé en Curl si l’utilisateur le souhaite.
Alors que le langage Curl peut être utilisé comme remplaçant du HTML pour mettre en forme du texte formaté, il dispose de nombreuses caractéristiques typiques d’un langage de programmation orientée objet. La création (au niveau du HTML) et les structures de programmation de Curl peuvent être étendues au code utilisateur. Le langage est conçu de manière que les applications en Curl puissent être compilées dans le code cible de l’ordinateur client par un système de compilation à la volée et être exécutées à grande vitesse.
Les applets Curl peuvent être affichés via un moteur d’exécution Curl, un environnement d’exécution qui dispose de plugins pour navigateurs web. Actuellement, Curl est supporté par Microsoft Windows, Linux, et Mac OS X.
Curl a, pendant plusieurs années, disposé d’une fonctionnalité pour applets détachés, applets qui s’exécutent sur le bureau de l’utilisateur et ne nécessitent pas fenêtre de navigation. Ce fonctionnement est similaire à celui de Silverlight et d’Adobe AIR. Les applets Curl peuvent aussi être écrits de manière à pouvoir s’exécuter en mode hors-ligne, lorsque l’ordinateur est déconnecté du réseau. Par exemple, Curl IDE est une application codée en Curl.

## Syntaxe

Voici un exemple simple d’applet Curl pour Hello World
Cet applet s’exécute si l’utilisateur a installé au moins l’une des versions de Curl spécifiées en début de code (ici 7.0 et/ou 8.0).
Curl propose également à l’utilisateur des macros et des procédures, ainsi que des procédures de type anonyme et des méthodes nommées. À l’aide de la procédure « paragraphe », on pourrait proposer cette alternative pour Hello World :
Récemment, ce type de structure a été adopté par les programmeurs en Groovy pour une utilisation des programmes par JVM. Toutefois, cette structure est également familière aux utilisateurs de CSS ou de Tcl/Tk. La plupart des fonctionnalités pour applications web désormais mises en œuvre par des combinaisons de bibliothèques JavaScript + HTML + CSS sont déjà disponibles dans le langage Curl, y compris les fonctionnalités habituellement associées à Prototype + script.aculo.us.
Curl fixe les rappels dans un programme de la même manière que Groovy :
Les commentaires dans Curl utilisent la barre verticale, parfois de différentes manières. Voici la plus classique :

## Curl : langage de balisage léger

Comme Curl offre à l’utilisateur la possibilité de définir lui-même des procédures et des feuilles de styles, il peut être aisément utilisé en tant que langage de balisage léger spécialisé. Un avantage majeur dont il dispose par rapport au balisage HTML en texte brut est que, même si l’encodage de départ est l’UTF-8, le texte peut être entré dans un éditeur, qui dispose du standard Unicode activé, sans perte de caractère (tout comme le JavaScript, Curl est compatible avec Unicode). Un exemple :
Ce poème peut être mis en forme en définissant les balises « poem » et « stanza » comme formats de paragraphe. La balise « Stanza » pourrait également être modifiée et inclure une ancre de navigation cachée en utilisant la procédure Curl {destination}, qui est elle-même une procédure.
Une même balise peut être utilisée pour obtenir différents résultats : elle peut rendre le texte visible dans un certain contexte, et le rendre invisible dans un autre. Curl permet aussi une inclusion de fichier de haut niveau, afin qu’un texte source balisé puisse être inclus dans différents fichiers parents. En contexte universitaire, par exemple, il serait possible de créer le fichier source d’un questionnaire, et d’inclure deux versions : une pour l’étudiant et une pour le professeur.