Le premier langage conditionne souvent une vision de la
programmation, une approche des problèmes et même un style
de rédaction du code. Au risque pour l'apprenti d'être
confiné dans un certain mode de pensée, ou au contraire de
négliger les structures nécessaires à un code
robuste.
Parmi les langages disponibles, il devrait être facile de
choisir sur la base de la popularité -c'est d'ailleurs
le parti pris par nombre de formations- mais si l'apprenti
en a la possibilité, se poser quelques questions fondamentales
est crucial. Nous en avons sélectionné 5.
Verbosité
Aborder la programmation, c'est se lancer dans l'apprentissage
d'une nouvelle langue et donc d'une nouvelle logique. Dès
lors il est nécessaire de travailler de manière atomique,
en augmentant le niveau petit à petit, et ne pas "apprendre
des phrases par cur" (pour poursuivre l'analogie), ce
qui donnerait l'illusion de parler la langue sans pour autant
la comprendre, et avec le risque supplémentaire d'être
rebuté dès le départ.
C'est pourquoi il est préférable de choisir
un langage ni trop verbeux, ni pas assez.
Un langage verbeux englobe ses fonctionnalités dans une coquille
de mécanismes internes. Nous pensons précisément aux langages
Java et C#, cousins ennemis et très orientés-objet
: avant même d'avoir pu afficher la moindre ligne dans une
console texte, l'apprenti aura dû créer une classe, appeler
des méthodes, voire utiliser des espaces de noms et des packages
Exemple canonique : afficher un texte en Java :
class HelloWorldApp {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
Comparons avec Ruby :
print "Hello World!"
Certains langages ne nécessitent ainsi que quelques notions
d'anglais pour être compris.
De la même manière, certains langages peuvent être à
l'inverse trop concis, parfois au moyen de raccourcis excessifs
et d'une syntaxe que seul le développeur aguerri peut reconnaître...
En Scheme par exemple, (* 3 6 9)
correspond au calcul 3*6*9
Spécificité
L'objectif d'un premier langage, sauf exception, est aussi
l'apprentissage de la programmation. Dans cette optique, il
serait préférable de commencer son apprentissage avec un langage
suffisamment généraliste, et donc d'éviter les langages qui
ne s'appliquent qu'à un environnement ou une méthode. Tombent
dans cet écueil les langages Web comme PHP, ASP.NET, JSP et
consorts (à des degrés différents). Idem, les langages de
script pur comme Perl, qui tire ses racines de l'environnement
Shell UNIX, et par certains aspects lui est encore trop attaché.
Signalons également le nombre de langages utilisant des paradigmes
différents des langages courants, comme les langages fonctionnels
(Scheme, Haskell, Erlang) qui ne parleront probablement qu'aux
mathématiciens.
Ancienneté
Les langages s'inspirent les uns des autres pour s'améliorer
et proposer de nouvelles possibilités de développement. Si
la plupart des concepts encore en vogue aujourd'hui ont été
implémentés il y a une vingtaine d'années (Simula et Smalltalk
pour la programmation orientée-objet, par exemple),
il n'en reste pas moins que les langages modernes combinent
les avantages d'avoir digéré les leçons apprises en étudiant
ces précédents langages, et qu'ils devraient disparaître bien
après leurs ancêtres. Choisir un langage moderne signifie
en pratique voir plus loin dans le temps.
Ouverture
Simplement : il vaut mieux éviter les langages rattachés à
une plate-forme ou un outil, car le développeur prend le risque
de s'enfermer. Exemples actuels : .NET qui, malgré Mono, reste
limité au monde Windows ; Delphi qui ne peut se programmer
qu'avec l'outil éponyme de Borland ; ou JavaScript qui de
son côté est limité au navigateur qui veut bien l'afficher.
Favoriser un langage "libre" permet non seulement de s'affranchir
du bon vouloir d'un éditeur, mais également de ne pas devoir
bourse délier quand il s'agit de trouver les outils de développement
qui se rattachent au langage.
|
Forum |
|
Réagissez
dans les forums
de JDN Développeurs
|
Familiarité
Nombre de langages répondent aux critères ci-dessus : Python,
Ruby ou Lua sont des langages modernes, rapidement compréhensibles
et faiblement liés à un environnement. Leur problème cependant
: ils ne mèneront pas beaucoup plus loin que l'apprentissage,
car il s'agit encore aujourd'hui de langages exotiques, qui
donc n'ont pas beaucoup de poids pour l'expérience d'un développeur
(même si Python commence à devenir populaire). Qu'un langage
permette d'apprendre à programmer est suffisant, mais idéalement
il faudrait qu'il puisse servir à quelque chose, notamment
sur un CV.
|