À propos
Ce document a été écrit dans le cadre
du projet PACE de la première année
aussi appelée BCI de Télécom
ParisTech. Les consignes du projet
étaient de réaliser un travail d'écriture,
thème libre, forme libre, entre 30000 et
90000 caractères avec espaces. Les
informations nécessaires à la réalisation
de ce document ont été obtenues en
parcourant la bibliographie disponible
(majoritairement sur internet) sur le
sujet et en questionnant des utilisateurs
et spécialistes des langages.
Introduction
C'est la première image que l'on se
fait d'un ingénieur informaticien
lorsqu'on n'est pas soi-même dans le
milieu : Les doigts martelant son
clavier, devant un voire plusieurs
écran sur lequel défile les lignes d'un
texte … dont on ne comprend rien. Tous
les langages informatiques ont pourtant
été développés par des humains, et
comme toute entreprise humaine a sa
part de divergence, d'irrationnel et
d'imprévisible, l'évolution des langages
avec lesquels l'humain s'adresse aux
machines est loin du déterminisme et de
la rigueur mathématique qui sont
pourtant les fondements de
l'informatique.
Si la nécessité d'avoir un ensemble de
règles pour communiquer avec les
ordinateurs est apparue en même temps
que ceux-ci, un nombre conséquent de
nouveaux langages sont apparus depuis,
comme réponses aux nouveaux besoins
des utilisateurs en terme de possibilités,
de productivité, de sécurité On voit
alors certains langages connaître un
succès planétaire pendant que d'autres
restent dans l'oubli, et des communautés
se former autour des langages les plus
populaires.
Nous nous pencherons tout d'abord
sur les langages eux-mêmes, ce qu'ils
sont, pourquoi et dans quel contexte on
voit de nouveaux langages apparaître.
Puis nous étudierons le processus de
développement d'un langage, avec les
choix qu'il implique et leurs
conséquences. Enfin nous nous
intéresserons à l'importance du facteur
humain dans le succès d'un langage.
Le nombre de langages existant étant
astronomique, l'étude est centrée sur
l'apparition de Python, car son histoire
correspond extrêmement bien au plan
d'étude : c'est un langage qui monte, son
créateur détaille le processus de
développement dans un blog, et il doit
beaucoup à l'activité de sa communauté
d'utilisateurs.
Petite excursion à la frontière de
l'humain et de la machine …
Le monde des
langages
Un outil indispensable aux
multiples facettes
Un langage informatique va
permettre de décrire à un ordinateur les
opérations qu'il doit effectuer seulement
voilà, les seules valeurs qu'il manipule
sont des suites de 0 et de 1. On rédige
donc les programmes dans un langage
plus compréhensible pour l'humain : le
langage de programmation. La
traduction en information exploitable
par la machine est ensuite assurée par
un programme appelé le compilateur.
Définir un langage consiste à définir
des mots réservés, qui vont avoir un
sens particulier dans le langage, et une
syntaxe c'est à dire des règles pour
Cédric Van Rompay – Naissance et vie des langages de programmation 1
Cédric Van Rompay
Naissance et vie des
langages de programmation
Python et autres langages
utiliser ces mots-clés. Par exemple en
python, dans le code suivant (voir
listing 1) qui défini la fonction carre
retournant le carré du paramètre, les
mots def et return ont une
signification particulière qui provient du
langage, pas du programme.
Ce langage doit permettre de décrire
toutes les opérations que l'on peut
attendre d'un ordinateur, on dit qu'il doit
être turing-complet. De plus il faut
s'assurer qu'il puisse être analysé par un
automate comme le compilateur, pour
cela il ne doit pas laisser d'ambiguïté, et
un même code doit toujours signifier la
même chose. Tous ces aspects relèvent
d'une branche des mathématique
appelée théorie des langages.
D'autres caractéristiques ne sont pas
des obligations, mais vont donner lieu à
des choix, et c'est de que va venir la
diversité des langages de
programmation. Par exemple il sera bas
niveau s'il décrit précisément ce qui se
passe réellement dans la machine, ou
plutôt haut niveau s'il y a beaucoup
d'opérations qui sont effectuées de
manière implicite. Il pourra être plus ou
moins permissif sur le type des données
qu'on lui fait manipuler, définir plus ou
moins de types de base …
Demande et offre de
langages
Une demande forte et variée
Les langages de programmations sont
utilisés pour l'édition de programmes
informatiques, mais aussi pour
commander de façon puissante un
ordinateur avec les langages Shell, ou
un programme avec les interpréteurs
intégrés (Interpréteur de Python dans
Blender, Lisp dans Emacs …). Les
scientifiques utilisent des langages pour
la modélisation et le calcul (Mapple,
Mathematica), les personnes travaillant
dans la finance ont besoin de langages
adaptés au calculs numériques … Même
dans les disciplines non-scientifiques,
on est amené à utiliser des langages
comme ceux des tableurs graphiques
(Microsoft Excel …)
Dans le milieu même des
technologies de l'information, chaque
domaine tel que l'électronique,
l'ingénierie système, la GUI, les bases
de données, les réseaux (dont le web), le
multimédia … introduit ses propres
besoins et exigences en terme de
langage de programmation.
La demande varie également dans le
temps avec l'évolution des
technologies : le langage Fortran ne
s'est libéré des contraintes liées aux
cartes perforées (datant de sa création
en 1956) qu'en 1990, ce qui a poussé de
nombreux ingénieurs à s'orienter vers
d'autres langages malgré ses qualités
( Dennis Ritchie et Ken Thompson
créent le C en 1972 pour écrire le noyau
Unix car les langages actuels ne les
satisfaisaient pasi)
La demande est donc importante, très
variée et changeante, d'où l'apparition
de nombreux langages tentant chacun
de répondre à des besoins spécifiques.
Une offre au moins aussi riche
La flore des langages informatiques
est presque impossible à énumérer, la
page Wikipédia tentant de le faireii en
recense déjà presque un millier, et
certains langages ont tellement de sous-
langages dérivés que l'on parle de
dialectes. Qui crée ces langages et dans
quel but ?
Une première catégorie sont les
langages faisant partie d'un projet
commercial, comme ActionScript
développé par Adobe pour son produit
Flash : Le but est de fournir un langage
parfaitement adapté au produit et dont
l'évolution soit contrôlable par
l'entreprise, et les moyens pour le
développer et l'entretenir sont largement
présents dès que la firme est assez
puissante. Cela a aussi été le cas de
Java, langage développé par l'entreprise
Sun Microsystems à l'origine pour ses
propres besoins. On peut noter le cas de
Go, développé par la firme Google, bien
que la firme ne revendique pas
d'intentions commerciales dans sa
créationiii.
Le milieu de la recherche est une
autre source importante de nouveaux
langages. On peut citer le langage C
apparu dans les Bell Labs d'AT&T, mais
aussi APL issu de l'université d'Harvard
et ABC développé au CWI, un centre de
recherche national en mathématiques et
informatique aux Pays-Bas. La
motivation est souvent le besoin d'un
outil nouveau pour des projets de
recherche : en ingénierie Système pour
C, en économie pour APL Pour ABC
l'idée était de créer un langage pour
l'initiation à l'informatique qui cache les
subtilités sous-jacentes aux utilisateurs
Cédric Van Rompay – Naissance et vie des langages de programmation 2
ps axo pid,ppid,comm | grep
'1866'
Listing 2: Une commande Unix Shell
permettant d'écrire la liste des processus
liés au processus numéro 1866
++++++++++[>+++++++>+++++++++
+>+++>+<<<<-]>++.>+.+++++++..+
++.>++.<<+++++++++++++++.>.++
+.------.--------.>+.>.
Listing 3: un programme en BrainFuck
qui écrit « Hello world ! » dans la
mémoire.
rôle du langage de programmation dans la chaîne de production
1.def carre( a ):
2. return a**2
Listing 1: source en Python
comme l'explique Guido Van Rossum,
créateur du langage Python, ayant
travaillé au sein de l'équipe ABC : « Le
groupe ABC supposait que l'utilisateur
n'avait pas d'expérience en
informatique, ou voulait l'oublier […]
L'utilisateur ne devait pas avoir a
s'occuper de fichiers, disques,
sauvegardes ou d'autres programmes »iv
Une troisième source, plus marginale
est l'initiative personnelle de
programmeurs isolés ou de petits
groupes pour leurs besoins personnels
en programmation, pour donner vie à
leur vision d'un langage idéal ou par
simple amusement. En exemple le
langage Ruby, ou des langages plus
exotiques que sont le BrainFuck
(« masturbation intellectuelle » en
anglais), Turing-complet bien que ne
comportant que 4 instructions : +, [, >
et <, et le Shakespeare, dont les sources
ressemblent aux pièces du célèbre
dramaturge Anglais.
Le langage Python est à cheval entre
les deux dernières catégories. Déçu par
l'échec de ABC et ayant besoin d'un
langage plus pratique que le C pour le
projet Amoeba, Guido Van Rossum se
mit en 1989 à créer un nouveau langage
avec des moyens limités : « aucun fond
au CWI [le Centre pour les
mathématiques et l'informatique
néerlandais] n'a jamais été
officiellement attribué pour le
développement [de Python] »v. La
raison que Guido invoque dans son blog
est que « Il y avait peu de langages
satisfaisant à l'époque ». Tout comme
pour le langage C, le choix a é de
créer un nouveau langage plutôt que
d'en améliorer d'anciens, une situation
que l'on retrouve à l'origine de
nombreux langages. Une partie de la
création de nouveaux langages
s'explique donc peut-être par une
certaine inertie des langages en place au
point que, pour combler les défauts d'un
langage, il peut être plus facile d'en
créer un de toutes pièces que d'en
obtenir une modification.
Variété de l'offre
Selon la plupart des personnes
interrogées, l'offre est suffisante en
variété. Cependant, « la syntaxe de la
grande majorité des langages actuels
reprend celle de langages ayant percés
aux débuts, principalement le C », fait
remarquer Samuel Tardieu, enseignant-
chercheur au département informatique
et réseaux de Télécom ParisTech,
notamment à l'origine du
cours Paradigmes et langages non
classiques. « Des syntaxes radicalement
différentes et beaucoup plus puissantes
et concises sont envisageables, mais des
exemples de telles syntaxes restent
minoritaires ».
On ne trouverait donc qu'une variété
restreinte au niveau de la syntaxe dès
lors que l'on reste dans le domaine du
mainstream, les technologies les plus
répandues avec le Java, PHP, Javascript,
C++, C#, Ruby et Python tous plus ou
moins tirés de la syntaxe du C.
Mais dans la pratique, un langage est
loin de se limiter à une simple syntaxe
et, au niveau de la façon dont sont
implémentées la compilation et
l'exécution, des différences se font
sentir même dans le domaine
mainstream : Java est compilé en
bytecode exécuté par la machine
virtuelle Java, quand le C, C++, C# et
Objective-C sont compilés directement
en langage pour la machine physique,
PHP lui, est directement interprété (pas
de compilation).
Pour les langages fonctionnant avec
une machine virtuelle, l'implémentation
de celle-ci peut faire une grande
différence. Ainsi l'interpréteur originel
de Python est un programme écrit en C,
mais une version appelée Jython a été
développée le compilateur génère du
bytecode Java : le programme est donc
exécuté par une machine virtuelle Java
tout comme le serait un programme
écrit en Java ! Cela permet notamment
de profiter du nombre astronomique de
librairies Java.
Enfin le typage est une
caractéristique sur laquelle les différents
langages même mainstream diffèrent
énormément : En java le typage est
statique et fort : toute donnée à un type
précis et immuable comme String (une
chaîne de caractères),
ArrayList<Integer> (structure haut
niveau de tableau d'entiers) et peu
d'opérations sur les types ont lieu de
manière implicite, i.e sans que le
programmeur les écrive. En C le typage
est aussi statique (le type d'une variable
est fixé à sa déclaration) mais plus
faible au sens que les erreurs liées au
type ne sont détectées qu'assez tard et
n'empêche pas la compilation. Si on
écrit a = b ; b était de type float
(nombre à virgule) et a de type int
(nombre entier), on risque d'avoir une
valeur surprenante dans a (si l'espace
réservé pour le stockage d'un int est
insuffisant pour stocker un float, la
donnée de b est bêtement tronquée sans
aucun contrôle pour rentrer dans a) mais
non seulement le compilateur va
compiler (émettant tout de même sans
doute un warning), de plus le
programme ne va pas planter à cette
instruction. Le langage ne garantit à
aucun moment que les variables aient
un sens, ce qui représente un risque
Cédric Van Rompay – Naissance et vie des langages de programmation 3
SELECT name, service FROM employees WHERE statut='stagiaire'
ORDER BY name;
Listing 5: Requête SQL typique
Romeo, a young man with a
remarkable patience.
Juliet, a likewise young woman
of remarkable grace.
Ophelia, a remarkable woman
much in dispute with Hamlet.
Hamlet, the flatterer of
Andersen Insulting A/S.
Act I:
Hamlet's insults and flattery.
Scene I:
The insulting of Romeo.
[Enter Hamlet and Romeo]
Hamlet:
You lying stupid fatherless
big smelly half-witted coward!
You are as
stupid as the difference
between a handsome rich brave
hero and thyself!
Speak your mind!
You are as brave as the sum of
your fat little stuffed
misused dusty
old rotten codpiece and a
beautiful fair warm peaceful
sunny summer's
day. You are as healthy as the
difference between the sum of
the
sweetest reddest rose and my
father and yourself! Speak
your mind!
You are as cowardly as the sum
of yourself and the difference
between a big mighty proud
kingdom and a horse. Speak
your mind.
Speak your mind!
[Exit Romeo]
Listing 4: Un extrait de code source écrit
dans le langage Shakespeare
mais offre un grand éventail de
possibilités. En Python le typage est
dynamique, une variable peut donc
changer de type au cours de l'exécution,
même le type de retour d'une fonction
est indéterminé avant son exécution.
Les erreurs de typage ne peuvent donc
pas être détectées au moment de la
compilation, cependant elles sont
systématiquement levées au moment de
l'exécution.
Parmi les autres différences
flagrantes entre les langages figurent les
paradigmes ou « manière de
programmer » : Java impose un
paradigme orienté objet car tout en java
fait partie d'une classe, l'élément de
base de la programmation orienté objet.
De même pour le C# alors que son
ancêtre le C impose le paradigme
procédural (basé sur les fonctions). En
revanche le Python est multi-
paradigme : sa syntaxe permet de
développer selon le paradigme
procédural ou orienté objet sans
différence notable de praticité. La
richesse des paradigmes alimente la
richesse de l'offre de langages, en effet
tous les langages ici cités suivent le
paradigme impératif basé sur des
instructions qui modifient l'état de la
machine : on décrit donc la façon dont
la résultat est obtenu ; mais des
langages comme le SQL (Structured
Query Langage) suivent le paradigme
dit déclaratif : Ils permettent de décrire
la solution, ce que l'on veut obtenir, et la
machine se charge de le fournir. Le SQL
est lui aussi Turing-complet, le
paradigme déclaratif ne sort donc pas
du domaine des langages de
programmation.
Ainsi, si trouver des syntaxes
particulières demande à sortir du
domaine des langages mainstream, on
accède tout de même facilement à une
grande variété dans les langages grâce
aux nombreuses implémentations et
approches proposées.
Histoires de langages
Illustrons tous ces enjeux en étudiant
les histoires de quelques langages-clés.
Des succès
Le langage ayant le plus marqué
l'histoire de la programmation est sans
conteste le C. En 1972 Dennis Ritchie
et Ken Thompson, chercheurs aux
laboratoires Bell Labs d'AT&T,
travaillent à la création d'un nouveau
noyau de système d'exploitation, Unix.
Leur projet final est entièrement écrit en
assembleur, le langage de
programmation de plus bas niveau qui
décrit une à une les opérations
élémentaires que réalise la machine, et
il apparaît aux chercheurs que cela rend
le projet difficile à retoucher et mettre à
jour car une tâche très simple est codée
avec un nombre faramineux
d'instructions assembleur parfois
obscures. Ils créent donc un langage,
appelé B puis qui évolue en C, et re-
programment presque tout le noyaux
Unix en C.
Restant bas niveau mais diminuant
considérablement le code à rédiger par
rapport à l'assembleur, le C est
parfaitement adapté à la programmation
système (tous les programmes proches
de la machine), de plus il définit peu de
concepts, ainsi son apprentissage est
particulièrement rapide. Son
compilateur également étant léger, son
développement n'a pas demandé de
moyens trop gros. N'ayant le droit de
déposer des brevets que dans le
domaine de la téléphonie, AT&T choisti
de libérer Unix et le C de droits, ce qui
accélère encore sa diffusion. Au fur et à
mesure que des programmeurs rédigent
de nouvelles bibliothèques en C, le
langage devient incontournable et
massivement utilisé.
La majorité des langages parmi les
plus populaires aujourd'hui sont des
héritiers plus ou moins directs du C.
C'est le cas de Java, aujourd'hui langage
le plus utilisé pour la programmation en
général. Il a été développé en 1990 par
une petite équipe d'ingénieurs de Sun
Microsystems pour leur propres besoins
en programmation. Java doit son succès
à plusieurs facteurs : tout d'abord il
exploite au maximum le paradigme de
programmation orientée objet qui était
en train de se démocratiser et qui est un
des principaux paradigmes aujourd'hui,
et un programme en Java n'a qu'à être
compilé une seule fois pour pouvoir
fonctionner sur toute machine (d'où le
slogan Compile once, run everywhere).
De plus il est bien plus rapide de
programmer en Java qu'en C ou C++
grâce à un système de garbage
collector qui gère automatiquement
l'allocation de mémoire c'est à dire qui
libère l'espace occupé par les données
que l'on n'utilise plus. Cette gestion
laborieuse et à risques est laissée à la
charge du programmeur en C-C++.
D'autre part Java ne serait sans doute
pas aussi populaire sans l'éditeur
Eclipse, un formidable outil de
développement conçu sur mesure par
Sun pour Java et qui facilite grandement
le travail du programmeur.
Cependant selon Samuel Tardieu,
« Java doit aussi son succès à sa
syntaxe inspirée de celle du C++, qui a
rassuré les programmeurs qui se
sentaient en terrain connu. Cela a
accéléré son expansion alors que d'une
part cela ne donne pas une syntaxe très
concise, et d'autre par c'est une illusion
de croire que programmer en Java
s'apparente à programmer en C++ ».
Un autre succès intéressant est celui
de PHP, développé au départ par
Rasmus Lerdorf en 1994 pour ajouter
des fonctionnalités à son site personnel,
il publie son code en 1995 qui est alors
repris par deux étudiants et commence
son ascension. En 2007, il était utilisé
sur plus de 20 millions de sites
internetvi. Possédant également une
syntaxe inspirée du C, il peut s'insérer
directement dans le code des pages web,
ce qui permet de programmer très
proche du rendu final. Son succès et le
fait qu'il soit utilisé par des frameworks
ensembles d'outils créés autour d'une
technologie centrale très populaires
comme WordPress peut surprendre
Cédric Van Rompay – Naissance et vie des langages de programmation 4
>>> a = "some text"
>>> type(a)
<type 'str'>
>>> a = 4
>>> type(a)
<type 'int'>
>>> a + 3
7
>>> def double(data_in):
return 2*data_in
>>> result = double(5)
>>> result
10
>>> type(result)
<type 'int'>
>>> result = double("bla")
>>> result
'blabla'
>>> type(result)
<type 'str'>
Listing 6: Dans cette session interactive
Python (le code est exécuté en direct), la
variable a change de type, puis la
fonction double renvoie des résultats
de types différents.
quand on voit le nombre de failles de
sécurité auxquelles il est liéevii.
Quand au langage Python, il est le
fruit d'un projet en solitaire de langage
haut niveau qui accélère grandement la
vitesse de développement tout en restant
proche du langage naturel. Tout d'abord
propagé dans le milieu de la recherche,
il a ensuite été porté par des entreprises
phares comme Google (le premier
crawler de Google aurait été codé en
Python) ce qui lui permet aujourd'hui de
sortir de la sphère purement
scientifique. La lisibilité de sa syntaxe,
le nombre de bibliothèques disponibles,
les outils de haut niveau qu'il présente
et l'aspect multi-paradigme sont les
raisons fréquemment citées de son
succès.
Un exemple d'échec
Le projet Python a démarré suite à
l'échec de ABC, langage devant
permettre de programmer sans se
soucier de l'aspect informatique. Le
projet mobilisait tout un groupe de
chercheurs au CWI, mais fut abandonné
au bout de 5 ans faute de succèsviii.
Ce qu'avance Guido Van Rossum
comme raisons de cet échec est l'aspect
figé de ABC : « ABC avait é conçu
sans l'idée d'évoluer [...]. C'était un
système clos, conçu aussi parfait que
possible »ix. Or autant le C, en tant que
langage bas niveau qui au final ne
définit que peu de concepts, n'a pas un
besoin intense d'évoluer pour se
maintenir (d'autant plus qu'il a été
enrichi par le C++ et le C#), autant un
langage haut niveau comme ABC n'a
pas le choix : sur le grand nombre de
concepts qu'il introduit, il est peu
probable que les développeurs
aboutissent à quelque chose de parfait
dès le premier coup, et il est impossible
que de nouvelles exigences ou visions
des choses, provenant des mutations du
monde de l'informatique et de la société
en général, ne demandent pas une
adaptation de la part de la technologie
pour ne pas devenir obsolète. Ce défaut
a donc sans doute joué un rôle majeur
dans l'échec d' ABC.
Processus de
développement
Quand vient l'envie ou le besoin de
créer un nouveau langage, se pose la
question du comment : Objectifs à
définir, choix à prendre, ressources à
gérer, compromis à faire, c'est une
entreprise qui mobilise toutes les
composantes de la gestion de projet.
Concept et exigences, une
alchimie délicate
Le dilemme du niveau
Une des premières caractéristiques
du langage est son niveau. La notion de
niveau n'est pas définie avec une grande
précision, c'est à dire qu'on peut
seulement distinguer des différences
significatives de niveau entre deux
langages, cependant c'est un aspect qui
va avoir une incidence majeure sur le
reste.
Grossièrement le dilemme est le
suivant : ce qui est bas niveau est facile
à construire (peu de concepts à
implémenter), a une grande portée (on
agit au plus proche du système, on est
moins restreint par les limites
d'implémentation du langage), et rapide
à l'exécution (peu de différence entre le
nombre d'instructions en langage de
programmation et en langage machine) ;
ce qui est haut niveau permet de
programmer des choses plus rapidement
(outils pré-existants comme la gestion
de mémoire, expressions puissantes,
protocoles ou aspects technologiques
déjà gérés …), est moins risqué sur des
aspects auto-gérés comme la gestion de
mémoire qui fait faire de nombreuses
erreurs aux programmeurs en bas
niveau, permet d'introduire des concepts
nouveaux comme l'indépendance face à
la machine physique (avec une machine
virtuelle).
Au sein même du langage, on peut
trouver des outils ou des notions de
niveau plus ou moins haut. Par exemple
en Java le type boolean et le type
Boolean servent tous les deux à
représenter un booléen (une variable de
valeur Vrai ou Faux), mais le premier
est un type dit primitif, de bas niveau, et
le second est un Objet du langage, soit
un concept haut niveau. Le premier est
très simple d'utilisation et peut être
utilisé en dehors de la notion de
programmation orienté objet (qui peut
ne pas être supportée dans un échange
avec d'autre technologies), mais le
deuxième fournit un nombre d'outils
très appréciables lors de la
programmation, la conversion de et vers
une chaîne de texte par exemple.
Il peut donc paraître intéressant de
faire cohabiter au sein d'un langage (ou
plus généralement d'une technologie)
des notions de différents niveau, afin de
laisser la possibilité à l'utilisateur de
travailler au niveau qu'il désire. On peut
alors profiter à la fois des avantages du
haut niveau et de ceux du bas niveau.
En vérité ce mélange peut avoir l'effet
inverse, c'est à dire d'accumuler les
défauts des divers approches. Par
exemple si dans un programme Java on
se met à utiliser une notion bas niveau
qui va introduire une dépendance au
système comme le besoin d'être exécuté
sous une architecture à 64 bit, le
programme tout entier perd son
indépendance à la machine. Il y a
contamination.
Il semble que les langages naissants
soient plutôt de haut niveau. On pourrait
avancer que le peu de concepts définis
ne laisse que peu de place à
l'innovation, que le champ est plus
grand dans le domaine du haut niveau.
Pour Philipe Dax, Directeur d'Études à
Télécom ParisTech, dans ces travaux
dans l'administration système « Le C est
suffisant », quand pour Claude
Chaudet, « Il y a de la place pour
quelques DSL (langages spécifiques à
un domaine) et sans doute des
améliorations à faire au niveau des
langages "visuels" (i.e. Graphiques) »,
des langages typiquement haut-niveau.
Cependant de l'innovation dans le
domaine du bas niveau resterait
envisageable ; le prix en serait un
changement radical du fonctionnement
fondamental de la machine : sa façon de
stocker ses données, de représenter les
choses, d'effectuer les tâches ... ce qui
demanderait un grand effort
d'adaptation de la part des utilisateurs. Il
serait possible que ce genre de
contraintes soit un frein à l'apparition de
nouveaux langages bas niveau.
Python est typiquement un langage
de haut niveau : outre la présence d'une
machine virtuelle, certaines structures
Cédric Van Rompay – Naissance et vie des langages de programmation 5
1 / 13 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !