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 is a Scheme implementation devoted to one goal: enabling Scheme based programming style where C(++) is usually required. Bigloo attempts to make Scheme practical by offering features usually presented by traditional programming languages but not offered by Scheme and functional programming. Bigloo compiles Scheme modules and delivers small and fast stand-alone binary executables. It enables full connections between Scheme and C programs, between Scheme and Java programs, and between Scheme and C# programs.

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 is a general purpose, state-of-the-art, pure and lazy functional programming language designed for making real-world applications. Clean is the only functional language in the world which offers uniqueness typing. This type system makes it possible in a pure functional language to incorporate destructive updates of arbitrary data structures (including arrays) and to make direct interfaces to the outside imperative world. The type system makes it possible to develop efficient applications.

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.

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

DotGNU Portable.NET goal is to build a suite of free software tools to build and execute .NET applications, including a C# compiler, assembler, disassembler, and runtime engine. While the initial target platform was GNU/Linux, it is also known to run under Windows, Solaris, NetBSD, FreeBSD, and MacOS X. The runtime engine has been tested on the x86, PowerPC, ARM, Sparc, PARISC, s390, Alpha, and IA-64 processors. DotGNU Portable.NET is part of the DotGNU project, built in accordance with the requirements of the GNU Project. DotGNU Portable.NET is focused on compatibility with the ECMA specifications for CLI. There are other projects under the DotGNU meta-project to build other necessary pieces of infrastructure, and to explore non-CLI approaches to virtual machine implementation.

Dylan

Dylan is an advanced, object-oriented, dynamic language which supports rapid program development. When needed, programs can be optimized for more efficient execution by supplying more type information to the compiler. Nearly all entities in Dylan (including functions, classes, and basic data types such as integers) are first class objects. Additionally, Dylan supports multiple inheritance, polymorphism, multiple dispatch, keyword arguments, object introspection, macros, and many other advanced features... --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 is a portable high-level object-oriented interpreted language with a C like syntax. Its main characteristics are: open source, interpreted, has portable bytecode compilation, dynamic typing, automatic real very fast garbage collection, object oriented with meta-programming support (a la Smalltalk), functional programming support (Scheme-like closures with lexical scoping, and eval-like functionality), hierarchical namespaces, a rich set of useful built-in types (dynamic arrays, dictionaries, symbols, ...), extensible with C (you can add functions, types, classes, methods, packages, ...), embeddable in C. elastiC has been strongly influenced by C, Smalltalk, Scheme and Python and tries to merge the best characteristics of all these languages, while still coherently maintaining its unique personality.

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 is a simple, flexible, and easy-to-learn programming language. It lets you quickly and easily develop programs for Windows, DOS, Linux and FreeBSD. Euphoria was first released in 1993. Since then Rapid Deployment Software has been steadily improving it with the help of a growing number of enthusiastic users. Although Euphoria provides subscript checking, uninitialized variable checking and numerous other run-time checks, it is extremely fast. People have used it to develop high-speed DOS games, Windows GUI programs, and X Window System programs. It is also very useful for CGI (Web-based) programming.

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 is a stack-based, extensible language without type-checking. It is probably best known for its "reverse Polish" (postfix) arithmetic notation, familiar to users of Hewlett-Packard calculators. Forth is a real-time programming language originally developed to control telescopes. Forth has many unique features and applications: it can compile itself into a new compiler, reverse-polish coding, edit time error checking and compiling (similar to BASIC), extremely efficient thread based language, can be used to debug itself, extensible; thus can become what ever you need it to be. The links below lead to the website of the Forth Interest Group (FIG), a world-wide, non-profit organization for education in and the promotion of the Forth computer language. Another worthwhile website dedicated to the Forth community is http://wiki.forthfreak.net/.

GNU Smalltalk

GNU Smalltalk is a free implementation of the Smalltalk-80 language which runs on most versions on Unix and, in general, everywhere you can find a POSIX-compliance library. An uncommon feature of it is that it is well-versed to scripting tasks and headless processing. See http://www.gnu.org/software/smalltalk/manual/html_node/Overview.html for a more detailed explanation of 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, the JVM Macro Assembler, is an easy-to-learn and easy-to-use assembly language for JVM bytecode programming. It uses Java syntax to define a JVM class except for the method body that takes bytecode instructions, including Jamaica's built-in macros. In Jamaica, bytecode instructions use mnemonics and symbolic names for all variables, parameters, data fields, constants, and labels.

Joy

Joy is a purely functional programming language. Whereas all other functional programming languages are based on the application of functions to arguments, Joy is based on the composition of functions. All such functions take a stack as an argument and produce a stack as a value. Consequently much of Joy looks like ordinary postfix notation. However, in Joy a function can consume any number of parameters from the stack and leave any number of results on the stack. The concatenation of appropriate programs denotes the composition of the functions which the programs denote.

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 is a new logic/functional programming language, which combines the clarity and expressiveness of declarative programming with advanced static analysis and error detection features. Its highly optimized execution algorithm delivers efficiency far in excess of existing logic programming systems, and close to conventional programming systems. Mercury addresses the problems of large-scale program development, allowing modularity, separate compilation, and numerous optimization/time trade-offs.

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 is a variant of the SR programming language. SR has a Pascal-like syntax and uses guarded commands for control statements. MPD has a C-like syntax and C-like control statements. However, the main components of the two languages are the same: resources, globals, operations, procs, procedures, processes, and virtual machines. Moreover, MPD supports the same variety of concurrent programming mechanisms as SR: co statements, semaphores, call/send/forward invocations, and receive and input statements.

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 is an Oberon-2 development platform. It consists of an optimizing compiler, a number of related tools, a set of standard library modules and a reference manual. Oberon-2 is a general-purpose programming language in the tradition of Pascal and Modula-2. Its most important features are block structure, modularity, separate compilation, static typing with strong type checking (also across module boundaries) and type extension with type-bound procedures. Type extension makes Oberon-2 an object-oriented language.

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 is a language and environment for statistical computing and graphics. It is a GNU project similar to the S language and environment which was developed at Bell Laboratories (formerly AT&T, now Lucent Technologies) by John Chambers and colleagues. R can be considered as a different implementation of S. There are some important differences, but much code written for S runs unaltered under R. R provides a wide variety of statistical (linear and nonlinear modelling, classical statistical tests, time-series analysis, classification, clustering, ...) and graphical techniques, and is highly extensible. The S language is often the vehicle of choice for research in statistical methodology, and R provides an Open Source route to participation in that activity.

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 makes it easy to locate, download, build and install software. It also supports browsing source code, developing programs, managing different versions and distribution of software and documentation. This means that A-A-P is useful both for users and for developers.

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

The Mozart Programming System is an advanced development platform for intelligent, distributed applications. Mozart is based on the Oz language, which supports declarative programming, object-oriented programming, constraint programming, and concurrency as part of a coherent whole. For distribution, Mozart provides a true network transparent implementation with support for network awareness, openness, and fault tolerance. Security is upcoming. It is an ideal platform for both general-purpose distributed applications as well as for hard problems requiring sophisticated optimization and inferencing abilities.

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 is a graphical front-end for command-line debuggers such as GDB, DBX, WDB, Ladebug, JDB, XDB, the Perl debugger, the Bash debugger, or the Python debugger. Besides « usual » front-end features such as viewing source texts, DDD has an interactive graphical data display, where data structures are displayed as graphs.

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 generates an index (or tag) file of language objects found in source files that allows these items to be quickly and easily located by a text editor or other utility. A tag signifies a language object for which an index entry is available (or, alternatively, the index entry created for that object). Tag generation is supported for the following languages: Assembler, 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, and YACC. A list of editors and tools utilizing tag files may be found at http://ctags.sourceforge.net/tools.html.

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 2020-03-19 21:13:53 +0000