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. It 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 rafinements 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 la clause Horn de logique avec égalité qui consiste dans des prédictions 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 en le Spring de 1967.

BETA

BETA est développé dans l'École Scandinave de 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 petit langages ayant un domaine spécifique et se focalisant sur différents aspects des services Web interactifs. Ces langages de contribution sont maintenus ensembles par un langage squelettique de type C. <bigwig> a ainsi l'air et l'envie de programmes 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 traditionels mais non offertes par Scheme et la programmation fonctionelle. 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 ceux qu'on peut recibler, optimisant les générateurs de code. 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 Caml Objective est l'implémentation principale du langage Caml. Il offre un système de module 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.

Cayenne

Cayenne langage simple( ?) et fonctionnel avec un système de type puissant. Les types de base sont les fonctions, les produits et les sommes. Les fonctions et les produits utilisent des types dépendant pour gagner en puissance d'édition. Il y a très peu de blocs de construction dans le langage, mais beaucoup de « sucre syntaxique » pour le rendre plus lisible. Il n'y a pas de langage de module séparé dans Cayenne puisque les types dépendants d'utiliser un langage d'expression normale et un niveau de module. Le concept de Cayenne a été très influencé par Haskell et la théorie des types constructifs et certains éléments empruntés de Java. Le revers d'un tel système de type puissant est que le contrôle de type devient indécidable.

Ch

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

Clean

Clean est généraliste, conçu pour l'art (state-of-the-art, pour de la programmation à couche purement fonctionnelle 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èmes de typage rend possible dans un langagement purement fonctionnel d'incorporer des mises à jour destructrices de structures de données de votre choix (y compris les échelles) 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.

CORN

CORN est conçu pour la modélisation de calculs concurrents et avancés. Il offre une couche d'évaluation entre des threads travaillés de façon concurrente, avec un style de sémantique orienté objet et fonctionnel. Ce langage peut aussi être utilisé pour du calcul parallèle.

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 les applications généralistes. C'est un langage de plus haut niveau que C++, mais il en tire la possibilité d'écrire du code et une interface de haute performance et directs avec les APIs 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 scriptage ni un langage interprété. Il n'est pas fourni avec une VM, une religion ou une philosophie remplaçantes. C'est un langage pratique pour des progpammeurs 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 scriptage 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 pé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 las 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 données de base tels que les entiers) sont d'abord des classes objet. En outre, Dylan supportse 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 un langage de scriptage sécurisé distribué et basé sur Java pour une plate-forme et un p2p purement orientée objet. Il comprend deux parties : ELib et le langage E. Elib fournit les éléments continuant entre les objets. En tant que bibliothèque pure Java, ELib distribue une programmation ayant une capacité sécurisée inter-processeurs. Son protocole de capacité de chiffrement permet aux processus Java malveillants de coopérer mutuellement en sécurité et son concurrency de boucle d'événements et son pipelining promis permettent que le deadlock de haute performance soit distribué librement dans un calcul purement en objet. Vous pouvez utiliser le langage E pour exprimer ce qu'il se passe dans un objet. Il offre une notation pratique et familière pour le modèle de calcul ELib, vous pouvez donc programmer dans un modèle plutôt que dans deux. Sous certaines précautions, cette notation s'étend à Kernel-E, un langage lambda minimaliste ressemblant beaucoup à Scheme ou à Smalltalk. Des objets écrits en langage E ne peuvent interagir qu'avec d'autres objets respectant les sémantiques d'ELib, ce qui permet une sécurité entre processus de granularité objets, comprenant la possibilité d'exécuter en sécurité du code mobile non trusté (tel que caplets).

elastiC

elastiC est un langage interprété portable orienté objet de haut niveau ayant un syntaxe similaire au C. Ses caractéristiques principales sont : open source, interprété, il a une compilation bytecode portable, le typage dynamique, la récupération des déchets très rapide et vraiment automatique, orienté objet avec le support de la méta-programmation (à la Smalltalk), support de programmation fonctionnelle, (guillemets à la Scheme avec une finalité lexicale, et fonctionnalité du type eval), espaces de noms hiérarchisés, un ensemble riche de types intégrés utiles (gamme dynamique, dictionnaires, symboles, ...), extensible avec le C (vous pouvez ajouter des fonctions, des types, des classes, des méthodes, des paquets, ...), embarquables dans le 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 du 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 pendant l'exécution, il est extrêmement rapide. Les gens l'utilisent pour développer des jeux DOS très rapides, des programmes GUI Windows et des programmes X Windows Linux. 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 correspondance de modèle, la récupération des déchets, le polyformisme et il a un support intégré de microthreading haute performance, du parsing d'expressions régulières et du contexte libre. Le système offre un ensemble de scriptage pour pouvoir utiliser le langage comme d'autres langages de scriptage tels que Python et Perl, mais il génère en-dessous 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 scriptage 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éléscopes. 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 scriptage des actes de headless. Voir http://www.gnu.org/software/smalltalk/gst-manual/gst_1.html#SEC1 pour une explication plus détaillée de GNU Smalltalk.

Haskell

Haskell est un langage de programmation informatique. En particulier, c'est un langage typé de façon polymorphe, avec une couche, purement fonctionnel, très différent de la plupart des autres langages de programmation. Le langage s'appelle Haskell Brooks Curry, dont le travail en logique mathématique sert de fondement aux langages fonctionnels. Haskell se base sur des calculs lambda. 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, and 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'asseubleur 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 nemonics 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 scriptage 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 scriptgag Java, mais aussi pour de nombreuses tâches de domaine d'application majeures telles que le scriptage 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/fonctionnel 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 limitant aux systèmes de programmation conventionnels. Mercury traite les problèmes de développement de programmes à granee échelle en permettant la modularité, la compilation séparée et de nombreux trade-off d'optimisation/de 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 (génériques aka). 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 compatible avec la plupart des Matlab. Il peut aussi être utilisé en tant que langage orienté batch. Octave dispose d'outils extensibles pour résoudre des problèmes d'algèbre linéaire numériques courants, 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 différenciels ordinaires et des équations algébriques différencielles. Il est facilement extensible et personnalisables à 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 dans un compilateur d'optimisation, dans un certain nombre d'outils liés, dans un ensemble de modules de bibliothèque 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 is 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 cahotique 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 é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 statistiques 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.

Serp

Serp est un environnement open source pour manipuler du bytecode Java. Le but de l'environnement bytecode Serp est de catalyser toute la puissance de la modification bytecode en diminuant les coûts qui y sont associés. L'environnement offre un ensemble d'APIs de haut niveau pour manipuler tous les aspects du bytecode, des structures à grande échelle comme les champs de membres de classes jusqu'aux instructions individuelles incluses dans le code de méthodes. Si pour effectuer une manipulation avancée, il est nécessaire de comprendre un peu le format de fichier de classe, et surtout le jeu d'instructions JVM, l'environnement rend autant facile que possible l'entrée dans le monde du développement en bytecode.

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 typé de façon très statique, avec une gestion automatique de la mémoire (gérée en général par la récupération de déchets). Une des caractéristiques remarquables d'Eiffel inclut le Design by contract (DbC, la conception par contraction), utilisation libérale de l'héritage comprenant plusieurs héritages, des sémantiques de gestion de type système à la fois en valeur et en référence et des 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 dispose d'une surcharge de l'opérateur, comprenant la possibilité de définir de nouveaux opérateurs, mais qui ne dispose d'aucune méthode de surcharge.

Squeak

Squeak est une implémentation ouverte, et très portable de Smalltalk, avec laquelle est écrite la machine virtuelle in Smalltalk, ce qui la rend facile à déboguer, à analyser et à modifier. Pour obtenir des performances pratiques, un traducteur produit un programme équivalent à du C dont la performance est comparable à des Smalltalks commerciales. 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, extensions de BitBlt pour gérer la couleur de n'importe quelle profondeur et la rotation et l'échelonage d'images sans aliases, le support de l'accès réseau qui permet de construire facilement des serveurs et d'autres infrastructures utiles, il exécute des bits identiques sur beaucoup de plate-formes (Windows, Mac, Unix, et autres), un format objet compact qui n'exige en général qu'un mot d'overhead par objet et un collecteur de déchets simple mais efficace pour les pointeurs direct 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 de processus. SR offre une intégration originale des mécanismes pour les opérations appel et de mise en service. Par conséquent, tout l'appel local et la procédure distante rendezvous, laisser un message, la création de processus dynamiques, le multicast, et les sémaphores sont supportées. 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 un é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 bytecode overhead 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 liens facultatif. Le code des liens vérifiés 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 de d'assemblage. Un préprocesseur C complet et un assembleur de type GNU est inclu. 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 effectuer 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 une possibilité pratique pour 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 de code byte. De tels objets peuvent être lus à partir d'un fichier existant, elles peuvent être transformées par un programme (comme un chargeur de classes au moment de l'exécution) et renvoyées vers un fichier. Une application encore plus intéressante consiste dans la création de classes à partir de rien au moment de l'exécution. La bibliothèque d'ingénierie de code byte (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 assombrisseurs, des générateurs et des analyseurs de code.

Choco

Choco est une bibliothèque Java pour les problèmes de satisfaction des contraintes (constraint satisfaction problems, CSP), la programmation contrainte (constraint programming, (CP) et la résolution contrainte basée sur l'explication (explanation-based constraint solving, e-CP). Il se base sur un mécanisme d'extension basé sur l'événement avec des structures qu'on peut suivre.

FFTW (Fastest Fourier Transform in the West)

FFTW est une bibliothèque de sous-routine C pour calculer la transformation distincte Fourier (discrete Fourier transform, DFT) dans une ou plusieurs dimensions, d'une taille d'entrée de votre choix, et de données complexes et réelles (ainsi que des données even/odd, c'est-à-dire les transformations distinctes cosinus/sinus ou DCT/DST).

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.

gtkmm

gtkmm est l'interface officielle C++ avec la bibliothèque graphique populaire GTK+. Les surlignements comprennent les appels (callbacks) de type sécurisé (typesafe), des widgets extensibles par l'héritage et un n'ensemble de widgets complets. Vous devez créer des interfaces utilisateur, soit en code, soit avec le concepteur Glade, en utilisant libglademm.

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çu avec soin pour être facile à utiliser, tout en maintenant un bon paradigme OO, et en enveloppant toute les fonctionnalités des bibliothèques sous-jacentes. Java-GNOME peut être utilisé avec l'environnement de développement Eclipse et le concepteur convivial 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.

Perl Scripts et Additional Modules

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).

SWIG

SWIG est un outil de développement logiciel qui relie des programmes écrits en C et en C++ et une variété de langages de programmation de haut niveau. SWIG est utilisé avec différents types de langage incluant des langages de script habituels tels que Perl, Python, Tcl/Tk et Ruby. La liste des langages supportés comprend également des langages non scripts, tels que C#, Common Lisp (Allegro CL), Java, Modula-3 et OCAML. Plusieurs implémentations Scheme interprétées et compilées (Chicken, Guile, MzScheme) sont supportées. SWIG est utilisé la plupart du temps pour créer des environnements de programmation interprétés ou compilés de haut niveau, des interfaces utilisateur et en tant qu'outil de test et de prototype de logiciels C/C++. SWIG peut aussi exporter son arborescence de parsing sous forme d'expressions XML et Lisp.

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évelopeurs.

Anjuta

Anujuta est un environnement de développement (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 declarative, 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 can cache GCC et il peut être associé à distcc pour distribuer de façon transparentle des compilations.

ccache

ccache est un cache de compilateur. Il agit un 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'en suit souvent une vitesse 5 ou 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 permett à 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.

GDB (GNU Debugger)

GDB est le débogueur du projet GNU. Il vous permet de voir ce qu'il se passe « à l'intérieur » d'un autre programme pendant qu'il s'exécute. Il vous permet aussi de voir ce qu'un autre programme faisait au moment où il a planté.

Notes utilisateur  et Installation Instructions : http://wiki.linuxfromscratch.org/blfs/wiki/OtherProgrammingTools

gocache (GNU Object Cache)

ccache 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é à une faible overhead. 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 into 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 qui passe. 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.

SCons

SCons est un logiciel Open Source de construction, c'est-à-dire un outil de construction nouvelle génération. Songez que SCons est un substitut amélioré, de plate-forme croisé pour l'outil classique make avec des fonctionnalités intégrées similaires à Autoconf/Automake et aux caches de compilateur tels que ccache.

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.

Valgrind

Valgrind est un ensemble de cinq outils : deux détecteurs d'erreur de mémoire, un détecteur d'erreur de thread, un profileur de cache et un profileur en masse pour le débogage et le profilage de programmes Linux. Des fonctionnalités comprennent la détection automatique de nombreux bogues de gestion et de threading de mémoire ainsi que le profilage détaillé pour accélérer et réduire l'utilisation de vos programmes.

Last updated on 2009-10-09 04:18:50 +0200