Autres outils de programmation

Introduction

Cette section vise à vous montrer quelques outils de programmation supplémentaires pour lesquels aucune instruction n'a été créée dans le livre ou ceux non adéquats au livre. Remarquez qu'il se peut que ces paquets n'aient pas été testés par l'équipe BLFS, mais leur mention ici vise à former une source pratique d'informations supplémentaires.

Notes utilisateur : http://wiki.linuxfromscratch.org/blfs/wiki/OtherProgrammingTools

Environnements, langages de programmation et compilateurs

A+

A+ est un langage de programmation puissant et utile. Il est disponible librement sous la GNU General Public License. Il inclut un ensemble riche de fonctions et d'opérateurs, une interface graphique moderne avec la plupart des widgets et de la synchronisation automatique de widgets et des variables, l'exécution asynchrone de fonctions associées à des variables et des événements, le chargement dynamique des sous-routines compilées pour l'utilisateur, et bien d'autres fonctionnalités. L'exécution se fait par un interpréteur plutôt efficace. A+ a été créé à Morgan Stanley. Utilisées d'abord dans un environnement d'entreprise spécialisée en informatique, beaucoup d'applications critiques écrites en A+ ont résisté aux demandes des développeurs du monde réel pendant de nombreuses années. Écrites dans un langage interprété, les applications A+ visent à être portables.

ABC

ABC est un langage de programmation et un environnement interactif pour l'informatique personnel, visant à l'origine à être un bon substitut à BASIC. Il était conçu au début pour effectuer une analyse de tâche de la tâche de programmation. ABC est facile à apprendre (une heure environ pour quelqu'un qui a déjà programmé), et encore plus facile à utiliser. Conçu à l'origine comme un langage pour débutants, il a évolué vers un outil puissant pour débutants et aussi experts. Certaines fonctionnalités du langage comprennent : un ensemble puissant d'à peine cinq types de données qui combine facilement le typage fort, sans encore de déclarations, sans limites (telles que le max de int), sauf les raffinements du pur et simple épuisement de la mémoire pour supporter la programmation top-down, le nesting par indentation et les programmes pèsent en général le quart ou le cinquième d'un programme équivalent en Pascal ou en C.

ALF

ALF est un langage qui combine des techniques de programmation fonctionnelles et logiques. Le fondement de ALF est l'ensemble des clauses de Horn en logique avec égalité qui consiste en des prédicats et des propositions de Horn pour la programmation logique, et des fonctions et des équations pour la programmation fonctionnelle. Le système ALF est une implémentation efficace de la combinaison de la résolution, de la réduction, de la réécriture et du rejet. Comme Prolog, ALF utilise une stratégie de backtracking correspondant à une recherche immédiatement approfondie dans l'arborescence des dérivés.

ASM

ASM est un environnement de manipulation de bytecode Java. Il peut être utilisé pour générer de façon dynamique des morceaux de classe ou d'autres classes de proxy directement sous forme binaire, ou pour modifier de façon dynamique des classes au moment de leur chargement, à savoir juste avant qu'ils ne soient chargés dans une machine virtuelle Java. ASM offre des fonctionnalités semblables à BCEL ou à SERP, mais il est beaucoup plus petit (33Ko au lieu de 350Ko pour BCEL et 150Ko pour SERP) et rapide que ces outils (le décalage de la transformation de classe en temps de charge est de l'ordre de 60 % par rapport à ASM, 700 % ou plus par rapport à BCEL, et 1100 % ou plus par rapport à SERP). En effet, ASM a été conçu pour être utilisé de façon dynamique (bien qu'il fonctionne de manière statique) et a donc été conçu et implémenté pour être aussi petit et rapide que possible.

BCPL

BCPL est un langage simple non typé qui a été conçu en 1966 par Martin Richards et implémenté pour la première fois au MIT au printemps 1967.

BETA

BETA est développé dans l'École Scandinave d'orientation objet, où a été développé le premier langage orienté objet. BETA est un langage moderne dans la tradition de Simula. Le langage qui en résulte est plus petit que Simula bien qu'il coûte beaucoup plus cher. BETA est un langage fortement typé, comme Simula Eiffel et C++, avec la plupart des contrôles de types pris en charge au moment de la compilation. Il est bien connu qu'il n'est pas possible d'obtenir la vérification de tous les types au moment de la compilation sans sacrifier le coût du langage. BETA a un bilan optimal entre le contrôle des types au moment de la compilation et au moment de l'exécution.

<bigwig>

<bigwig> est un langage de programmation de haut niveau pour développer des services Web interactifs. Les programmes sont compilés dans un conglomérat de technologies de bas niveau telles que le code C, HTTP, HTML, JavaScript, et SSL, tous s'exécutant en haut d'un système en cours d'exécution basé sur un module serveur Web Apache. C'est un descendant du projet Mawl mais le concept est entièrement nouveau et l'implémentation a développé de vastes ambitions. Le langage <bigwig> est véritablement un ensemble de petits langages ayant un domaine spécifique et se focalisant sur différents aspects des services Web interactifs. Ces langages de contribution sont maintenus ensemble par un langage squelettique de type C. <bigwig> se présente comme un programme C, mais avec des données et des structures de contrôle spéciales.

Bigloo

Bigloo est une implémentation de Scheme vouée à un objectif : activer le style de programmation basé sur Scheme là où C(++) est en général requis. Bigloo s'efforce de rendre Scheme pratique en offrant des fonctionnalités habituellement présentées par les langages de programmation traditionnels mais non offertes par Scheme et la programmation fonctionnelle. Bigloo compile des modules Scheme et délivre des exécutables binaires autonomes petits et rapides. Cela donne une connexion complète entre Scheme et les programmes C, entre Scheme et les programmes Java et entre Scheme et les programmes C#.

C--

C-- est un langage assembleur portable qui peut être généré par une interface et implémenté par n'importe quel générateur de code. Il sert d'interface entre les compilateurs de haut niveau et les générateurs de code optimisant qu'on peut recibler. Les auteurs des interfaces et des générateurs de code peuvent facilement coopérer.

Caml

Caml est un langage de programmation généraliste, conçu dans l'esprit de la sûreté du programme et de sa fiabilité. Il est très intuitif, facile à apprendre et à utiliser. Caml supporte les styles de programmation fonctionnelle, impérative et orientée objet. Il est développé et distribué par l'INRIA, l'Institut National de Recherche en Informatique français, depuis 1985. Le système Objective Caml est l'implémentation principale du langage Caml. Il offre un système de modules puissant et une couche à part entière orientée objet. Il est fourni avec un compilateur de code natif qui supporte de nombreuses architectures, pour de hautes performances ; un compilateur bytecode, pour une portabilité accrue ; et une boucle interactive, pour l'expérimentation et le développement rapide.

Ch

Ch est un interpréteur C/C++ embarquable pour scripter sur des plate-formes croisées : programmation shell, restitution 2D/3D, calcul numérique, faire du script embarqué.

Clean

Clean est un langage généraliste de pointe, fonctionnel pur et fainéant afin de faire des applications pour le monde réel. Clean est le seul langage fonctionnel du monde qui offre du typage singularisé. Ce système de typage rend possible dans un langage purement fonctionnel d'incorporer des mises à jour destructrices de structures de données de votre choix (y compris les tableaux) et de mettre à disposition directe des interfaces avec le monde impératif extérieur. Le système de typage rend possible le développement d'applications efficaces.

Cyclone

Cyclone est un langage de programmation basé sur le C qui est sécurisé, c'est-à-dire qu'il exclut les programmes ayant des débordements de mémoire, des pointeurs en suspens, des attaques de chaîne de format, et ainsi de suite. De haut niveau, les langages aux types sécurisés tels que Java, Scheme, ou ML offrent aussi cette sécurité, mais ils ne donnent pas le même contrôle des représentations des données et de la gestion de mémoire que le C (sans compter le fait que les systèmes d'exécution de ces langages sont en général écrits en C.) Au surplus, le portage du code C de base vers ces langages ou l'interfaçage avec les bibliothèques C est un processus difficile et source d'erreurs. Le but de Cyclone est de donner aux programmeurs le même contrôle de bas niveau et la performance du C sans y sacrifier la sécurité, et d'en faciliter le portage ou l'interfaçage avec le code C de base.

D

D est un langage de programmation pour les systèmes et les applications généralistes. C'est un langage de plus haut niveau que C++, mais garde la capacité d'écrire du code de haute performance et s'interface directement avec les API du système d'exploitation et le matériel. D convient très bien pour écrire des médias de grande échelle et des programmes de millions de lignes avec des équipes de développeurs. Il est facile à apprendre, il offre de nombreuses fonctionnalités pour aider le programmeur, il s'adaptera à la technologie des optimisations agressives du compilateur. D n'est ni un langage de script ni un langage interprété. Il n'est pas fourni avec une VM, une religion ou une philosophie remplaçante. C'est un langage pratique pour des programmeurs pragmatiques qui ont besoin que le boulot se fasse rapidement, de façon fiable et en laissant derrière un code maintenable et facile à comprendre. D est l'aboutissement de décennies d'expérience dans l'implémentation des compilateurs pour beaucoup de langages variés, essayant de bâtir de gros projets en utilisant les langages. Il tire son inspiration ces autres langages (en particulier C++) et il le tempère avec l'expérience et la pratique du monde réel.

DMDScript

DMDScript signifie implémentation de Digital Mars du langage de script ECMA 262. Sur l'implémentation de Netscape appelée JavaScript, l'implémentation de Microsoft est appelée JScript. DMDScript est beaucoup plus rapide que les autres implémentations, ce que vous pouvez vérifier avec les tests de performance inclus.

DotGNU Portable.NET

Le but de DotGNU Portable.NET est de construire une suite de logiciels libres pour construire et exécuter des applications .NET, y compris un compilateur, un assembleur, un désassembleur et un moteur d'exécution C#. Si la plate-forme cible était au début GNU/Linux, il est aussi connu pour fonctionner sous Windows, Solaris, NetBSD, FreeBSD et MacOS X. Le moteur d'exécution a été testé sur les processeurs x86, PowerPC, ARM, Sparc, PARISC, s390, Alpha, et IA-64. DotGNU Portable.NET fait partie du projet DotGNU, construit selon les exigences du projet GNU. DotGNU Portable.NET se concentre sur la compatibilité avec les spécifications ECMA pour CLI. Il y a d'autres projets sous le méta-projet DotGNU pour construire d'autres parties nécessaires de l'infrastructure et pour explorer des approches non CLI pour une implémentation sur machine virtuelle.

Dylan

Dylan est un langage avancé, orienté objet et dynamique qui supporte le développement de programmes rapides. Lorsque cela est nécessaire, les programmes peuvent être optimisés pour une exécution plus efficace en offrant davantage d'informations de type au compilateur. Presque toutes les entités dans Dylan (y compris les fonctions, les classes et les types de données de base tels que les entiers) sont d'abord des classes objet. En outre, Dylan supporte plusieurs héritages, le polymorphisme, le dispatch multiple, les arguments mots-clés, l'introspection objet, les macros et beaucoup d'autres fonctionnalités avancées... --Peter Hinely.

E

E est une plateforme sécurisée, distribuée, basée sur Java et en pur objet, et un langage de script pair à pair. Il est composé de deux parties : ELib et le langage E. Elib fournit ce qui se trouve entre les objets. En tant que bibliothèque Java pure, ELib permet la programmation inter-processus sécurisée et distribuée. Son protocole cryptographique de capacité permet à des processus Java qui ne se font pas confiance de coopérer en toute sécurité, et sa boucle d'événements concurrente ainsi que son pipelining de promesses permettent un calcul en pur-objet distribué et sans interblocage. Le langage E peut être utilisé pour exprimer ce qui arrive à l'intérieur d'un objet. Il fournit une notation pratique et familière pour le modèle de calcul de ELib, pour que vous puissiez programmer en un modèle plutôt que deux. Sous le capot, cette notation s'étend en Kernel-E, un lambda calcul minimaliste proche de Scheme ou Smalltalk. Les objets écrits en E ne sont capables d'interagir avec d'autres objets que suivant la sémantique d'ELib, ce qui permet d'avoir à l'intérieur du processus une sécurité à la granularité de l'objet, qui comprend la capacité à lancer de manière sécurisée du code mobile qui n'est pas de confiance (comme des caplets).

elastiC

elastiC est un langage interprété portable orienté objet de haut niveau ayant une syntaxe similaire au C. Ses caractéristiques principales sont : open source, interprété, peut être compilé vers du bytecode portable, un typage dynamique, un ramasse-miettes très rapide et vraiment automatique, une orientation objet avec un support pour la méta-programmation (à la Smalltalk), un support pour la programmation fonctionnelle, (closures à la Scheme avec une portée lexicale, et des fonctionnalités du type d'eval), des espaces de noms hiérarchisés, un ensemble riche de types intégrés utiles (tableaux dynamique, dictionnaires, symboles, ...), extensible avec du C (vous pouvez ajouter des fonctions, des types, des classes, des méthodes, des paquets, ...), il peut être embarqué dans du C. elastiC a beaucoup été influencé par le C, Smalltalk, Scheme et Python et il essaie de rassembler les meilleures caractéristiques de tous ces langages tout en maintenant toujours sa personnalité unique de façon cohérente.

Erlang/OTP

Erlang/OTP est un environnement de développement basé sur Erlang. Erlang est un langage de programmation ayant beaucoup de fonctionnalités associées plus souvent à un système d'exploitation qu'à un langage de programmation : processus en même simultanés, horodatage, gestion de mémoire, distribution, réseau, etc. La version open-source initiale d'Erlang contient l'implémentation d'Erlang ainsi qu'une grande partie du middleware d'Ericsson pour construire des systèmes distribués très disponibles. Erlang se caractérise par les fonctionnalités suivantes : robuste, temps réel logiciel, mises à jour à chaud du code et chargement incrémental du code.

Euphoria

Euphoria est un langage de programmation simple, flexible et facile à apprendre. Il vous permet de développer facilement et rapidement des programmes pour Windows, DOS, Linux et FreeBSD. Euphoria a été publié pour la première fois en 1993. Depuis, Rapid Deployment Software l'améliore progressivement à l'aide d'un nombre croissant d'utilisateurs motivés. Bien que Euphoria fournisse le contrôle des sous-scripts, des variables non initialisées et de nombreux autres tests à l'exécution, il est extrêmement rapide. Les gens l'utilisent pour développer des jeux DOS très rapides, des programmes graphiques pour Windows et des programmes pour X Window. Il est aussi très utile pour la programmation CGI (basé sur le Web).

Felix

Felix est un langage de programmation procédural de type Algol avec un sous-système fonctionnel fort. Il a pour caractéristique le typage statique du style ML, les fonctions de première classe, la recherche de motif, un ramasse-miettes, le polymorphisme et il a un support intégré de microthreading haute performance, de l'analyse d'expressions régulières et de l'analyse sans contexte. Le système offre un ensemble de scripts pour pouvoir utiliser le langage comme d'autres langages de scripts tels que Python et Perl, mais sous le capot il génère du code natif pour obtenir une haute performance. Une fonctionnalité clé du système tient à ce qu'il utilise le modèle objet de C/C++ et qu'il offre un sous-langage de binding avancé pour supporter l'intégration avec C/C++, tant au niveau du source que de l'objet, aussi bien pour les types de données C/C++ embarquées que les fonctions de Felix et pour les Felix emballés dans les architectures C++ existantes. Le compilateur Felix est écrit en Objective Caml et il génère du C++ ISO qui devrait se compiler sur n'importe quelle plate-forme.

ferite

ferite est un langage et un moteur de scripts compris dans un ensemble gérable. Il est conçu pour être facilement étendu en termes d'API et pour être utilisé dans d'autres applications qui les rendent plus configurables et utiles pour l'utilisateur final. Il a une syntaxe identique à un certain nombre d'autres langages mais il demeure propre et garde son propre langage.

Forth

Forth est un langage basé sur des piles et extensible sans vérification des types. Il est probablement plus connu pour sa notation mathématique en "polonais inversé (postfix), familier pour les utilisateurs des calculatrices Hewlett-Packard. Forth est un langage de programmation en temps réel développé à l'origine pour contrôler les télescopes. Forth a de nombreuses fonctionnalités et de nombreuses applications uniques : il peut se compiler dans un nouveau compilateur, coder en polonais inversé, éditer la vérification d'erreurs de temps et la compilation (comme BASIC), langage basé sur un thread extrêmement efficace, il peut être utilisé pour s'auto déboguer, extensible ; il peut ainsi devenir ce dont vous aviez toujours besoin qu'il soit. Les liens ci-dessous mènent au site Internet du Forth Interest Group (FIG), une association mondiale à but non lucratif visant l'enseignement et la promotion du langage informatique Forth. Un autre site Internet mondial consacré à la commaunauté Forth est http://wiki.forthfreak.net/.

GNU Smalltalk

GNU Smalltalk est une implémentation libre du langage Smalltalk-80 qui fonctionnent sur la plupart des versions d'Unix et, en général, partout où vous pouvez trouver une bibliothèque conforme à  POSIX. Une fonctionnalité originale est qu'il est orienté vers des tâches de scripting des actes de headless. Voir http://www.gnu.org/software/smalltalk/manual/html_node/Overview.html pour une explication plus détaillée de GNU Smalltalk.

Haskell

Haskell est un langage de programmation informatique. En particulier, c'est un langage au typage polymorphique, fainéant, purement fonctionnel, très différent de la plupart des autres langages de programmation. Le langage a été nommé d'après Haskell Brooks Curry, dont le travail en logique mathématiques sert de fondement aux langages fonctionnels. Haskell se base sur le lambda calcul. Il y a de nombreuses implémentations de Haskell, parmi lesquelles :

HLA (High Level Assembly, assemblage de haut niveau)

Le langage HLA a été développé en tant qu'outil pour aider à enseigner la programmation en langage d'assembleur et l'organisation machine aux étudiants de l'Université de Californie, Riverside. L'idée de base était d'enseigner aux étudiants la programmation en langage d'assembleur en s'appuyant sur leurs connaissances en langages de haut niveau comme le C/C++ et le Pascal/Delphi. En même temps, HLA a été conçu pour permettre aux programmeurs en assembleur avancés d'écrire un code en langage assembleur plus lisible et plus puissant.

Icon

Icon est un langage de programmation de haut niveau généraliste ayant un large éventail de fonctionnalités pour traiter des structures de données et des chaînes de caractères. C'est un langage impératif, procédural avec une syntaxe rappelant le C et le Pascal mais avec des sémantiques à niveau beaucoup plus élevé.

Io

Io est un petit langage de programmation basé sur un prototype. La plupart des idées de Io s'inspirent de Smalltalk (toutes les valeurs sont des objets), de Self (basée sur le prototype), NewtonScript (héritage différentiel), Act1 (les acteurs et les prémices pour l'aspect simultané), LISP (on peut observer/modifier l'arborescence du code en cours d'exécution), et Lua (petit, embarquable).

J

J est un langage de programmation moderne, de haut niveau, généraliste, à haute performance. Il est portable et fonctionne sur des portables Windows, Unix, Mac, et PocketPC, autant en graphique qu'en console. De vrais systèmes J 64 bits sont disponibles sur XP64 ou Linux64, sur AMD64 ou des plate-formes Intel EM64T. Les systèmes J peuvent être installés et distribués librement.

Jamaica

Jamaica, l'assembleur macro JVM, est un langage d'assembleur facile à utiliser et à apprendre pour la programmation en bytecodes JVM. Il utilise la syntaxe Java pour définir une classe JVM, sauf pour le corps de la méthode qui prend des instructions en bytecode, y compris des macros intégrées de Jamaica. Dans Jamaica, les instructions en bytecode utilisent des noms mnémotechniques et symboliques pour toutes les variables, les paramètres, les champs de données, les constantes et les étiquettes.

Joy

Joy est un langage de programmation purement fonctionnel. Alors que les autres langages fonctionnels se basent sur l'application de fonctions à des arguments, Joy se base sur la création de fonctions. De telles fonctions ainsi créées prennent en argument une pile et elles produisent comme valeur une pile. Par conséquent, une grande part du langage Joy ressemble à de la notation postfix ordinaire. Cependant, dans Joy, une fonction peut consommer n'importe quel nombre de paramètres à partir de la pile et laisser n'importe quel nombre de résultats sur la pile. La concaténation des programmes appropriés révèle la composition des fonctions que révèlent les programmes.

Judo

Judo est un langage de scripts pratique et fonctionnel. Il est conçu pour traiter des cas d'utilisation d'une programmation non uniquement basée sur l'algorithme/orientée objet/multithreadée et le scripting Java, mais aussi pour de nombreuses tâches de domaine d'application majeures telles que le scripting pour JDBC, WSDL, ActiveX, OS, plusieurs formats de fichier/données, etc. Malgré ses possibilités riches, le langage de base est extrêmement simple et sa syntaxe de support de domaine est complètement intuitive pour les experts en domaine, si bien que même si vous n'avez jamais programmé en Judo, vous auriez peu de difficultés à comprendre ce que fait le code.

JWIG

JWIG est un langage de programmation de haut niveau basé sur Java pour le développement de services Web interactifs. Il contient un modèle avancé de session, un mécanisme flexible pour la construction dynamique de documents XML, en particulier XHTML, et une API puissante pour simplifier l'utilisation du protocole HTTP, et bien d'autres aspects de la programmation de services Web. Pour supporter le développement d'un programme, JWIG offre une suite unique d'analyseurs de programmes hautement spécialisés qui vérifie au moment de la compilation que, dans un programme donné, aucune erreur ne se produira au moment de son exécution lors de la construction de documents ou de la réception d'un formulaire complété, et que tous les documents affichés sont valides selon la définition du type de document pour XHTML 1.0. L'objectif principal du projet JWIG est de simplifier le développement de services Web complexes par rapport à des alternatifs tels que Servlets, JSP, ASP, et PHP. JWIG est un héritier du langage de recherche <bigwig>.

Lava

Lava est le nom malheureusement choisi pour plusieurs langages/projets de développement de logiciels divers. Bien que BLFS n'en préfère aucun par rapport à l'autre, les sites Internet des projets sont listés ci-dessous, sans description des possibilités ou des fonctionnalités de l'un d'entre eux.

Mercury

Mercury est un nouveau langage de programmation logique/fonctionnelle qui associe la clarté et l'expressivité de la programmation déclarative avec l'analyse statique avancée et des fonctionnalités de détection d'erreurs. Son algorithme d'exécution hautement optimisé offre une bien plus grande efficacité que les systèmes de programmation logique existants, et se proche des systèmes de programmation conventionnels. Mercury traite les problèmes de développement de programmes à grande échelle en permettant la modularité, la compilation séparée et de nombreux compromis entre optimisation et temps.

Mono

Mono offre le logiciel nécessaire pour développer et exécuter des applications clients et serveurs .NET sur Linux, Solaris, Mac OS X, Windows, et Unix. Soutenu par Novell, le projet open source Mono dispose d'une communauté de contributeurs active et motivée et peut devenir le choix final pour le développement d'applications Linux.

MPD

MPD est une variante du langage de programmation SR. SR dispose d'une syntaxe ressemblant au Pascal et il utilise des commandes réservées pour l'établissement de contrôles. MPD a une syntaxe et des établissements de contrôle similaires au C. Cependant, les composants principaux des deux langages sont les mêmes : ressources, globales, opérations, procs, procédures, processus et machines virtuelles. De plus, MPD supporte la même variété de mécanismes de programmation simultanés que SR : co établissements, sémaphores, invocations d'appel/envoi/transfert et établissements de réceptions et d'entrées.

Nemerle

Nemerle est un langage de programmation de haut niveau typé de façon statique pour la plate-forme .NET. Il offre des fonctionnalités fonctionnelles, orientées objet et impératives. Il dispose d'une syntaxe similaire au C et d'un puissant système de méta-programmation. Des fonctionnalités issues de la sphère fonctionnelle sont des variantes, une correspondance de modèle, la déduction de types et le polymorphisme des paramètres (alias génériques). Le système de méta-programmation permet une extensibilité énorme du compilateur, des langages spécifiques à des matières dans l'embarqué, l'évaluation partielle et la programmation orientée objet.

Octave

GNU Octave est un langage de haut niveau, conçu à la base pour des calculs numériques. Il fournit une interface pratique en ligne de commande pour résoudre des problèmes linéaires et non linéaires de façon numérique, et pour effectuer d'autres expérimentations numériques en utilisant un langage qui est presque complètement compatible avec Matlab. Il peut aussi être utilisé en tant que langage orienté batch. Octave dispose d'outils très complets pour résoudre des problèmes numériques courants en algèbre linéaire, pour rechercher les racines des équations non linéaires, pour intégrer des fonctions ordinaires, pour manipuler des polynômes et pour intégrer des équations différentielles ordinaires et des équations algébriques différentielles. Il est facilement extensible et personnalisable à travers des fonctions définies par l'utilisateur écrites dans le propre langage Octave, ou en utilisant des modules chargés de façon dynamique et écrits en C++, C, Fortran, ou dans d'autres langages.

OO2C (Optimizing Oberon-2 Compiler)

OO2C est une plate-forme de développement Oberon-2. Il consiste en un compilateur d'optimisation, dans un certain nombre d'outils liés, dans un ensemble de modules de bibliothèques standards et dans un manuel de référence. Oberon-2 est un langage de programmation généraliste dans la tradition de Pascal et de Modula-2. Ses fonctionnalités les plus importantes sont la structure en blocs, la modularité, la compilation séparée, le typage statique avec un contrôle rigoureux des types (même dans les limites du module) et l'extension de type avec des procédures spécifiques aux types. L'extension de type fait d'Oberon-2 un langage orienté objet.

Ordered Graph Data Language (OGDL, langage de données de graphe ordonné)

OGDL est un format de texte structuré qui représente des informations sous la forme de graphes, où les nœuds sont des chaînes et les arcs ou les bords sont des espaces ou de l'indentation.

Pike

Pike est un langage de programmation dynamique ayant une syntaxe similaire au Java et au C. Il est simple à apprendre, il n'exige pas de longues passes de compilation et il a des types de données intégrés puissants permettant la manipulation simple et rapide de données. Pike est publié sous la GNU GPL, GNU LGPL et MPL.

Pyrex

Pyrex est un langage spécialement conçu pour écrire des modules d'extension Python. Il est conçu pour combler le fossé entre le monde sympathique, de haut niveau et facile à utiliser de Python et le monde chaotique de bas niveau du C. Pyrex vous permet d'écrire du code qui mélange des types de données Python et C de la façon que vous voulez et de le compiler dans une extension C pour Python.

Q

Q est un langage de programmation fonctionnel basé sur la réécriture du terminal. Un programme Q ou un « script » est ainsi simplement un ensemble d'équations utilisées pour évaluer les expressions d'une manière symbolique. Les équations établissent des identifieurs algébriques et sont interprétées comme la réécriture de règles afin de réduire des expressions en des « formes normales ».

R

R est un langage et un environnement pour le calcul statistique et les graphiques. C'est un projet GNU similaire au langage et à l'environnement S qui a été développé dans les laboratoires Bell (anciennement AT&T, maintenant Lucent Technologies) par John Chambers et ses collègues. R peut être considéré comme une implémentation différente du S. Il y a des différences importantes mais beaucoup de code écrit pour S fonctionne sans effort sous R. R fournit une grande variété de statistiques (modélisation linéaire et non linéaire, tests statistiques classiques, analyses de séries temporelles, classification, clustering, ...) et de techniques graphiques, et il est hautement extensible. Le langage S est souvent le choix privilégié pour la recherche en méthodologie statistique et R offre une voie open source pour participer à cette activité.

Regina Rexx

Regina est un interpréteur Rexx qui porté vers la plupart des plate-formes Unix (Linux, FreeBSD, Solaris, AIX, HP-UX, etc.) et vers OS/2, eCS, DOS, Win9x/Me/NT/2k/XP, Amiga, AROS, QNX4.x, QNX6.x BeOS, MacOS X, EPOC32, AtheOS, OpenVMS, SkyOS et OpenEdition. Rexx est un langage de programmation conçu pour être facile à utiliser par des programmeurs inexpérimentés mais assez puissant pour des utilisateurs expérimentés. C'est aussi un langage qui convient parfaitement pour être un langage de macro pour d'autres applications.

Small Device C Compiler (SDCC, compilateur C de petit périphérique)

SDCC est un compilateur gratuit, qu'on peut recibler et qui optimise l'ANSI-C et qui cible Intel 8051, Maxim 80DS390 et les MCUs basés sur Zilog Z80. Le travail progresse autour du support de Motorola 68HC08 et des séries Microchip PIC16 et PIC18. Tout le code source pour le compilateur est distribué sous la GPL.

SmartEiffel (The GNU Eiffel Compiler)

SmartEiffel se veut être « le compilateur multi-plate-formes Eiffel le plus rapide et le plus léger de la terre ». Eiffel est un langage de programmation orienté objet qui met en valeur la production de logiciels robustes. Sa syntaxe est orientée mots-clés dans la tradition d'ALGOL et du Pascal. Eiffel est typé de façon très statique, avec une gestion automatique de la mémoire (gérée en général par un ramasse-miettes). Les caractéristiques les plus remarquables d'Eiffel sont le Design by contract (DbC, la conception par contrat), l'utilisation libérale de l'héritage dont l'héritage multiple, son système de types qui gère la sémantique des valeurs et des références, et les classes génériques. Eiffel dispose d'un système de type unifié — tous les types d'Eiffel sont des classes, donc il est possible de créer des sous-classes de classes de base telles que INTEGER. Eiffel permet la surcharge d'opérateur, avec la possibilité de définir de nouveaux opérateurs, mais ne permet pas la surcharge de méthode.

Squeak

Squeak est une implémentation ouverte et très portable de Smalltalk, dont la machine virtuelle est écrite en Smalltalk, ce qui la rend facile à déboguer, à analyser et à modifier. Pour obtenir des performances pratiques, un traducteur produit un programme C équivalent dont la performance est comparable aux Smalltalks commerciaux. D'autres aspects intéressants de Squeak incluent : le son en temps réel et le synthétiseur de musique écrit complètement en Smalltalk, les extensions de BitBlt pour gérer la couleur de n'importe quelle profondeur, la rotation et le redimensionnement d'images sans crénelage, le support de l'accès réseau qui permet de construire facilement des serveurs et d'autres infrastructures utiles, l'exécution de binaires identiques sur beaucoup de plate-formes (Windows, Mac, Unix, et autres), la compacité de son format d'objet qui n'exige en général que deux octets de plus par objet et son ramasse-miettes simple mais efficace pour les pointeurs directs sur 32 bits et une mutation de masse efficace des objets.

SR (Synchronizing Resources)

SR est un langage pour écrire des programmes concurrents. Les constructions principales du langage sont les ressources et les opérations. Les ressources encapsulent des processus et des variables qu'elles partagent ; les opérations fournissent le mécanisme primaire de l'interaction des processus. SR offre une intégration originale des mécanismes pour les opérations d'appel et de mise en service. Par conséquent, les appels locaux et de procédures distantes, les rendez-vous, le passage de message, la création de processus dynamiques, le multicast, et les sémaphores sont tous supportés. SR supporte aussi des variables globales et des opérations partagées.

Standard ML

ML Standard est un langage de programmation sécurisé, modulaire, strict, fonctionnel, polymorphe avec une vérification de type au moment de la compilation et l'inference de type, la récupération des déchets, la gestion des exceptions, les types de données immuables et des références qui peuvent être mises à jour, des types de données abstraits et des modules paramétriques. Il comporte des implémentations efficaces et une définition formelle avec une épreuve sans sons. Il existe de nombreuses implémentations du ML Standard, parmi lesquelles :

Steel Bank Common Lisp (SBCL)

SBCL est un compilateur en un système d'exécution immédiate open source (logiciel libre) pour l'ANSI Common Lisp. Il offre un environnement interactif comprenant un compilateur natif intégré, un débogueur et beaucoup d'extensions. SBCL fonctionne sur un grand nombre de plate-formes.

Tiny C Compiler (TCC)

Tiny C Compiler est un petit compilateur C qui peut être utilisé pour compiler et exécuter du code C n'importe où, par exemple sur des disques de secours (environ 100Ko pour un exécutable TCC x86, y compris le préprocesseur C, le compilateur C, l'assembleur et l'éditeur de liens). TCC est rapide. Il génère du code x86 optimisé, il n'a pas de coût supplémentaire dû à un bytecode et il compile, assemble et lie beaucoup plus vite que GCC. TCC est souple, n'importe quelle bibliothèque C dynamique peut être directement utilisée. Il se rapproche des exigences complètes de ISOC99 et il peut se compiler. Le compilateur est sécurisé car il inclut un vérificateur de mémoire et de bornes facultatif. Le code dont les bornes sont vérifiées peut être librement mêlé avec du code standard. TCC compile et exécute directement du code source C. Pas besoin d'édition de liens ou d'assemblage. Un préprocesseur C complet et un assembleur de type GNU est inclus. Le script C est supporté ; ajoutez simplement « #!/usr/local/bin/tcc -run » sur la première ligne de votre source C, et exécutez-le directement depuis la ligne de commande. Avec libtcc, vous pouvez utiliser TCC comme support pour la génération de code dynamique.

TinyCOBOL

TinyCOBOL est un compilateur COBOL développé par les membres de la communauté du logiciel libre. Sa mission est de produire un compilateur COBOL basé sur les standards COBOL 85. TinyCOBOL est disponible pour l'architecture Intel (IA32) et les processeurs compatibles sur les plate-formes suivantes : BeOS, FreeBSD, Linux et MinGW sur Windows.

Yorick

Yorick est un langage de programmation interprété conçu pour traiter et gérer de grands codes de simulation scientifique. Des simulations ou des calculs scientifiques plus petits, tels que le passé flottant d'une aile ou le déplacement d'une peau, peuvent être écrits sous forme de programmes yorick autonomes. Les fonctionnalités de langue, une syntaxe compacte pour de nombreuses opérations d'échelle habituelle, donc il calcule des nombres à grande échelle de façon très efficace. Contrairement à beaucoup d'interpréteurs, qui sont cent fois plus lents que le code compilé pour la récupération de nombres, Yorick effectue de nombreuses tâches courantes avec une vitesse réduite d'un facteur approchant quatre ou cinq. De façon superficielle, le code Yorick ressemble à du code C mais les variables Yorick ne sont jamais explicitement déclarées et elles ont un pointage dynamique similaire à de nombreux dialectes Lisp. Vous pouvez trouver la page d'accueil « non officielle » de Yorick sur http://www.maumae.net/yorick.

ZPL

ZPL est un langage de programmation d'échelle conçu à partir des principes d'exécution rapide des ordinateurs séquentiels et parallèles. Il offre un média de programmation pratique de haut niveau pour les super-ordinateurs et les clusters à grande échelle d'une efficacité comparable au passage de messages codés à la main. C'est l'alternative parfaite à l'utilisation d'un langage séquentiel tel que le C ou Fortran et à une bibliothèque de passage de messages comme MPI.

Bibliothèques et bindings de programmation

Byte Code Engineering Library (BCEL)

BECL vise à donner aux utilisateurs la capacité pratique à analyser, créer et manipuler des fichiers de classe Java (binaires) (ces dernier se terminant par .class). Les classes sont représentées par des objets qui contiennent toutes les informations symboliques de la classe donnée : en particulier les méthodes, les champs et les instructions en bytecode. De tels objets peuvent être lus à partir d'un fichier existant, ils peuvent être transformés par un programme (comme un chargeur de classes au moment de l'exécution) et renvoyés vers un fichier. Une application encore plus intéressante consiste en la création de classes à partir de rien au moment de l'exécution. La bibliothèque d'ingénierie de bytecode (Byte Code Engineering Library) peut aussi être utile si vous voulez en apprendre davantage sur la machine virtuelle Java (Java Virtual Machine, JVM) et le format des fichiers Java .class. BCEL est déjà utilisé avec succès dans plusieurs projets tels que des compilateurs, des optimiseurs, des obfuscateurs de code, des générateurs et des analyseurs de code.

Choco

Choco est une bibliothèque Java pour les problèmes de satisfaction de contraintes (CSP), la programmation par contrainte (CP) et la résolution de contraintes basée sur l'explication (e-CP). Il se base sur un mécanisme de propagation par événement avec des structures qui permettent la rétro-inspection.

GOB (GObject Builder)

GOB (en tout cas, GOB2) est un préprocesseur pour faire du GObjects avec du code C aligné afin que les fichiers générés ne soient pas édités. La syntaxe s'inspire de Java et de Yacc ou de Lex. L'implémentation est volontairement simple et aucun parsing de code C final n'est effectué.

GTK+/GNOME Language Bindings (wrappers)

Les bindings de langage GTK+/GNOME permettent à GTK+ d'être utilisé à partir d'autres langages de programmation, dans le style de ces langages.

Java-GNOME

Java-GNOME est un ensemble de bindings Java pour les bibliothèques GNOME et GTK+ qui permettent aux applications GNOME et GTK+ d'être écrites en Java. L'API Java-GNOME a été conçue avec soin pour être facile à utiliser, tout en maintenant un bon paradigme OO, et en enveloppant toutes les fonctionnalités des bibliothèques sous-jacentes. Java-GNOME peut être utilisé avec l'environnement de développement Eclipse et le concepteur d'interfaces utilisateurs Glade pour créer facilement des applications.

gtk2-perl

gtk2-perl est le nom collectif d'un ensemble de bindings perl pour GTK+ 2.x et diverses bibliothèques liées. Ces modules facilitent l'écriture d'applications GTK et GNOME en utilisant une syntaxe naturelle, de style perl et orientée objet.

Bindings de langage KDE

KDE et la plupart des applications KDE sont implémentées en utilisant le langage de programmation C++, cependant de nombreux bindings vers d'autres langages sont disponibles. Ils incluent des langages de script comme Perl, Python et Ruby et des langages de programmation systèmes tels que Java et C#.

Numerical Python (Numpy)

Numerical Python ajoute un niveau d'infrastructure rapide au langage Python.

Scripts Perl et Modules supplémentaires

Il existe de nombreux scripts Perl et des modules supplémentaires situés sur le site Internet du Comprehensive Perl Archive Network (CPAN, réseau complet d'archives perl). Vous y trouverez « All Things Perl » (tout sur Perl).

Environnements de développement intégré

A-A-P

A-A-P facilite la localisation, le téléchargement, la construction et l'installation de logiciels. Il supporte aussi la navigation dans le code source, le développement de programmes, la gestion de versions et de distributions différentes d'un logiciel et la documentation. Cela signifie que A-A-P est autant utile pour les utilisateurs que pour les développeurs.

Anjuta

Anujuta est un environnement de développement intégré (Integrated Development Environment, IDE) souple pour C et C++ sur GNU/Linux. Il a été écrit pour GTK/GNOME et il comporte un grand nombre d'infrastructures de programmation avancées. Cela inclut la gestion de projets, des assistants d'application, un débogueur interactif à la volée et un puissant éditeur de code source avec possibilité de naviguer dans le code source et de mise en relief de la syntaxe.

Eclipse

Eclipse est une communauté open source dont les projets se concentrent sur la fourniture d'une plate-forme de développement extensible et d'environnements d'applications pour la construction de logiciels. Eclipse contient de nombreux projets, y compris un environnement de développement intégré (Integrated Development Environment, IDE) pour Java.

Mozart

Le système de programmation Mozart est une plate-forme de développement avancée pour des applications intelligentes et distribuées. Mozart se fonde sur le langage Oz qui supporte la programmation déclarative, la programmation orientée objet, la programmation contrainte et la diversité simultanée comme part d'un ensemble cohérent. Pour la distribution, Mozart offre une vraie implémentation transparente de réseau avec un support pour la conscience, l'ouverture et la tolérance d'erreurs de réseau. La sécurité arrive. C'est une plate-forme idéale pour des applications généralistes distribuées et des problèmes difficiles exigeant des possibilités d'optimisation et d'inférence sophistiquées.

Autres outils de développement

cachecc1

cachecc1 est un cache GCC. On peut le comparer au paquet bien connu ccache. Il contient certaines fonctionnalités uniques, incluant l'utilisation d'un objet partagé LD_PRELOADed pour récupérer les appels à cc1, cc1plus et as, il supporte de façon transparente toutes les méthodes de construction, il peut mettre en cache des bootstraps GCC et il peut être associé à distcc pour distribuer de façon transparente des compilations.

ccache

ccache est un cache de compilateur. Il agit en préprocesseur de mise en cache dans les compilateurs C/C++ en utilisant le paramètre -E du compilateur et un tiret pour détecter lorsqu'une compilation peut être satisfaite à partir du cache. Il s'ensuit souvent une vitesse 5 à 10 fois supérieure à celle des compilations habituelles.

DDD (GNU Data Display Debugger)

GNU DDD est une interface graphique avec des débogueurs en ligne de commande tels que GDB, DBX, WDB, Ladebug, JDB, XDB, le débogueur Perl, le débogueur Bash ou le débogueur Python. Outre les fonctionnalités d'une interface « ordinaire » telles que la visualisation du texte source, DDD jouit d'un affichage de données en graphique interactif, avec lequel les structures de données sont affichées comme des graphes.

distcc

distcc est un programme pour distribuer des constructions de code C, C++, C objet ou C++ objet à travers plusieurs machines d'un réseau. distcc devrait toujours générer les mêmes résultats qu'une construction locale, il est simple à  installer et à utiliser et il est normalement beaucoup plus rapide qu'un compilateur local. distcc ne nécessite pas que toutes les machines partagent un système de fichiers, qu'elles aient des heures synchronisées ou qu'elles disposent des mêmes bibliothèques ou des mêmes fichiers d'en-tête installés. Elles peuvent même avoir des processeurs ou des systèmes d'exploitation différents si des compilateurs croisés sont installés.

Exuberant Ctags

Exuberant Ctags génère un fichier index (ou tag) des objets de langage qu'on trouve dans les fichiers sources, ce qui permet à ces éléments d'être rapidement et facilement localisés par un éditeur de texte ou un autre outil. Un tag signifie un objet de langage pour lequel une entrée index est disponible (ou, sinon, l'entrée index créée pour cet objet). La génération d'un tag est supportée pour les langages suivants : Assembleur, AWK, ASP, BETA, Bourne/Korn/Zsh Shell, C, C++, COBOL, Eiffel, Fortran, Java, Lisp, Lua, Make, Pascal, Perl, PHP, Python, REXX, Ruby, S-Lang, Scheme, Tcl, Vim et YACC. Vous pouvez trouver une liste des éditeurs et des outils qui utilisent des fichiers de tag sur http://ctags.sourceforge.net/tools.html.

gocache (GNU Object Cache)

gocache est un clone de ccache, dont le but est de supporter des compilateurs autres que GCC et d'ajouter des fonctionnalités supplémentaires. Des compilateurs embarqués seront surtout visés.

OProfile

OProfile est un éditeur de profil global pour les systèmes Linux, capable de profiler tout le code exécuté pour un faible coût. OProfile est publié sous la GNU GPL. Il consiste en un pilote noyau et un démon pour récupérer des échantillons de données et plusieurs outils de post-profilage pour convertir des données en informations. OProfile exploite la performance des calculateurs matériels d'un processeur pour permettre le profilage d'une grande variété de statistiques intéressantes, qui peuvent aussi être utilisées pour le profilage de base du temps d'exécution. Tout le code est profilé : les gestionnaires d'interruption matériels et logiciels, modules du noyau, le noyau, les bibliothèques partagées et les applications. OProfile est actuellement dans l'état alpha ; cependant il a prouvé sa stabilité sur un grand nombre de configurations différentes. Il est utilisé sur des machines allant du portable aux machines 16 way NUMA-Q.

strace

strace est un traqueur d'appels systèmes, c'est-à-dire un outil de débogage qui affiche une trace de tous les appels systèmes effectués par un autre processus ou un autre programme.

Last updated on 2017-08-15 18:49:48 +0000