Programmation - Comment débuter, quel langage?

Introduction


Une des questions récurrentes sur ce forum dédié aux débutants est "Comment débuter en programmation ?" ou parfois "Quel langage pour débuter ?". Je vais tenter d'y répondre, mais il faut bien savoir que ce genre de question est susceptible de déclencher des guéguerres de chapelles. Pour essayer d'avoir quelque chose de relativement objectif, je me suis basé sur les opinions des membres recueillies aux travers des réponses accordées à ces questions (utilisez le moteur de recherche dans le forum programmation, il est là pour ça :o) ). 

Alors tout d'abord, il n'y a pas de langage pour débuter la programmation, du moins la programmation se commence sur papier, avec l'algorithmique. (www.commentcamarche.net/contents/6-algortihme-definition-et-introduction) Évidemment, pour tester les algorithmes, il peut être confortable de le faire avec un langage de programmation, mais dans ce cas, la seule chose que je recommanderai est un langage simple, non objet, non graphique. Les bons choix peuvent être Basic, Pascal, Python, néanmoins la syntaxe de ces derniers sera sans doute plus utile par la suite. Mais rien n'est vraiment à exclure ici, même le langage de calculatrice peut suffire à tester les algos simples. Ensuite, il est de bon ton d'avoir une idée sur les différents type de langages, sur ce qu'est un compilateur et autres choses généralistes. (www.commentcamarche.net/contents/617-les-langages-informatiques). 



Une fois ici, on a déjà des bases saines pour commencer à programmer...seulement on ne programme pas pour programmer, il faut un but, une idée, un logiciel à faire. Là, je ne peux rien faire pour vous, c'est en fonction de ses gouts, de ses connaissances,... et là s'effectue les premiers choix techniques: 
Langage objet, oui ou non ? 
Multi plateforme, oui ou non ? 
Avec machine virtuelle, oui ou non ? 
Interface utilisateur, oui ou non ? 
Accès à une base de données? Si oui laquelle? 
... 



Une fois ces choix faits, l'éventail des langages se retrouve singulièrement restreint. 



Alors passons en revue les langages les plus souvent cités pour débuter, avec toujours en tête le point de vue de l'apprentissage. 



NB : il existe aussi une voie très ludique pour découvrir la programmation :Phrogram anciennement KPL (Kid's Programming Language). 
Un autre langage pour les enfants :LOGOici une version en ligne. 



Interface soignée (couleurs, sons, graphismes) et un apprentissage de la programmation orientée vers la conception de jeux. L'idée de fond est : apprendre en s'amusant. Si réellement vous ne connaissez rien à rien à l'informatique ni à la programmation, cela peut être une porte d'entrée. De même, cela est bien évidemment un moyen d'y mettre vos enfants (ce qui est bon pour eux est bon pour vous, à priori). Ce logiciel est un freeware (c'est dit sur le site) et n'est pas restreint aux jeux, bien entendu, et le site est multilangues (anglais, espagnol, portugais, français et quelques langues nordiques), comme le logiciel. Le langage lui est tout ce qu'il y a de plus commun dans les autres langages : Begin, End, Main, False, True, etc. 

Ceux que l'on peut utiliser

Delphi/Pascal


Une bonne solution, les compilateurs et environnements de développements se trouvent gratuitement (sous certaines conditions peu contraignantes). On peut commencer par faire des petits programmes dans des shell en Pascal et ensuite passer (après avoir appris la notion d'objet) à des choses plus costaudes avec environnement graphique grâce à Delphi (et Kylix sous Linux :o) ). Le langage est relativement intuitif, rigoureux, la création d'interface graphique simple, on peut vite se faire plaisir. La portabilité est médiocre mais existe vers certaines plateformes (Kylix...) 


Java


Langage objet, très portable, syntaxe utilisée également pour des scripts internet (la syntaxe, pas le langage...). Il existe de nombreux environnements de développement gratuits sur le net : il faut juste choisir en fonction de ses goûts, néanmoins, ça n'a pas la facilité de Delphi au niveau des interfaces graphiques. Il s'agit là d'un langage "nouvelle génération" qui donnera aussi une expérience intéressante à ceux qui souhaitent travailler en informatique. 

Python


Simple, rapide, donne de bonnes habitudes de programmation, léger (à tel point que repasser à un autre langage après semble vite pesant), ouvert, énormément de documentation sur internet, c'est le préféré de Sebsauvage ;o). Il permet de vite se faire plaisir soit en faisant des scripts puissants (grâce notamment à la programmation objet). Il est également "nouvelle génération" et portable. Il fonctionne avec une machine virtuelle qui peut être empaquetée grâce à certaines classes disponibles sur le web (on en trouve de toutes sortes et à toutes fins...) dans un exe pour distribuer l'application de manière simple et indépendante. 

Livre "Apprendre à programmer avec Python " : accessible intégralement en ligne 


.Net


Alias le futur selon Microsoft, du bon et du mauvais dans cette plateforme, mais elle permet de programmer des applications graphiques de manière simple, ne tourne que sous Windows avec quelques tentatives adaptives sous Linux. Je conseillerai le C# qui est le langage "natif" de cette plateforme : sa syntaxe est proche du C et de java, pas de pointeurs, tout se passe à un niveau d'abstraction supérieur aux anciens langages microsoft. C'est comparable à Java et à Python, sauf que ce n'est pas libre. 

Depuis la version 2008 (Framework 3.0) Microsoft propose une version gratuite Visual Studio Express. Ces versions permettent de développer les mêmes applications que les versions payantes, en revanche elles ne sont pas dotées de nombreux outils pour simplifier le développement (seul ou en groupe), le déploiement ou encore le mutli-plateforme. A télécharger ici pour la version 2010 compatible avec XP, ou là pour la version 2013 nécessitant Seven 
Depuis 2014, Microsoft propose une version plus performante appelée Visual Studio Community, gratuite pour la recherche, les petites sociétés et le développement non professionnel (merci à dsy73 pour l'info). 




Smalltalk


Pour moi LE langage objet par excellence. Gratuit, syntaxe simple, il impose une rigueur inégalée dans la programmation objet. Malheureusement pas assez répandu, il est rare de trouver un boulot avec, mais cela donne toujours une référence solide, et des choses comme Squeak permettent de faire énormément de choses avec. 

Ceux que l'on peut utiliser à la rigueur

C/C++


Ce sont de bons langages, mais avec une syntaxe compliquée qui ne facilite pas leur apprentissage. De plus l'utilisation des pointeurs rend leur utilisation, même par des professionnels, souvent ardue. L'avantage est que ces langages peuvent être utilisés sur plusieurs plateformes (après compilation) et que, une fois maîtrisés, ils font paraître les autres plus simples. Un avantage : elle confère de bonnes habitudes. Ce sont des langages encore très utilisés dans le monde professionnel. A utiliser exclusivement dans le but de faire de l'informatique un métier. 


PHP


Un langage initialement prévu pour le développement de pages web dynamiques. Sa syntaxe est proche du C++. PHP est assez "simple" à aborder et permet de communiquer assez facilement avec une base de données. 

Pour développer des pages web dynamiques, il requiert aussi une bonne connaissance de l'HTML et éventuellement du SQL si vous avez besoin d'une base de données. 
Il permet notamment d'avoir rapidement une "visibilité" de son travail en le mettant en ligne, et ainsi d'avoir les commentaires/suggestions des internautes. 
On peut également développer des applications normales avec ce langage (hors web). 
Notons aussi que vous pouvez programmer de manière procédurale ou orientée objet, au choix, ça permet un bon tour d'horizon. 
Ceci dit c'est un bon langage mais pas forcément le meilleur pour apprendre. Il est puissant et permissif si bien que vous risquez de prendre de mauvaises habitudes en apprenant avec. Notamment au niveau des pages web, il n'influence pas à programmer proprement de prime abord. 
Si vous chercher un langage facile à apprendre, qui permet d'apprendre l'orienté objet, et qui laisse derrière lui de bonnes habitudes, choisissez plutôt un langage comme python. 



Ada


Langage encore utilisé dans le monde du temps réel. Il reste relativement facile à apprendre mais est a recommandé surtout aux futurs informaticiens, sinon l'intérêt est limité. Il vaut mieux passer à Ada seulement avec le but "temps réel" ou du moins informatique embarquée. Il tend à disparaître. 

Désolé, pas de liens, n'hésitez pas si vous en connaissez des bons 


Lisp/Caml/...


Les langages fonctionnels. Ils sont nombreux, classifiés en deux grandes familles : les purs(haskell) et les non purs(famille lisp). La famille des purs est en fait classifiée en deux: les vraiment purs, pas d'effet de bord (famille haskell) et la famille ML (Caml,SML,...). La manière de programmer est totalement différente par rapport aux autres langages. En fait, la programmation fonctionnelle est une autre manière de voir un programme et cela n'empêche pas par exemple d'avoir un langage fonctionnel et objet (scala par exemple) ou même un langage fonctionnel qui allie impératif/objet/fonctionnel (Ocaml). En connaître un permet d'avoir de bonnes bases et permettra également aux personnes plus orientées vers les mathématiques de passer doucement vers l'informatique. Ils sont souvent utilisés en analyse numérique ou en intelligence artificielle (mais c'est juste à cause de leur origine). On peut les utiliser pour programmer tout ce que l'on peut programmer avec les autres langages (la communauté commonlisp est très active par exemple). 
caml.inria.fr/index-fra.html (La référence) 

Ceux que l'on peut ne pas utiliser

(x)HTML/CSS


Bon, je vais être bref, écrire une page ou un site en HTML est à la programmation ce que boire un verre d'eau est à l'alcoolisme. Il s'agit de présenter un document, pas de programmer quoique ce soit, et ce n'est pas en incluant quelques scripts au milieu que cela change grand chose. 


Perl


Soyons clair, ce langage apparemment simple n'est pas du tout adapté à l'apprentissage de la programmation. Sa souplesse et sa puissance 

risquent de vous faire prendre de mauvaises habitudes de programmation 
voire de vous décourager par les erreurs qu'elles vous autoriseront 
silencieusement à faire. Mieux vaut commencer par apprendre un langage 
rigoureux, pour ensuite pouvoir exploiter au mieux Perl. 
Merci à Jeremy Just pour cette correction 
Je rajoute pour ma pomme par contre, que l'on peut très bien vivre une vie professionnelle en informatique sans l'utiliser ;o) 




Visual Basic/Basic : D


Déconseillé formellement par tous les professionnels qui ont travaillé avec. Il donne de mauvaises habitudes de programmation (déclaration des variables non nécessaire, aucune notion de valeur/référence, tentative avortée de faire de l'objet,...), et de plus Microsoft (il s'agit d'un langage propriétaire) l'a laissé tomber au profit du Framework.Net. Pour finir il n'existe aucune version gratuite, il faut donc passer à la caisse. Le seul point positif que je lui reconnaitrais, c'est son côté ludique et la facilité de faire des interfaces graphiques pour Windows (Ha oui, j'oubliais, il n'est pas portable non plus...), mais c'est loin d'être le seul dans ce cas, si c'est ce qui vous intéresse, penchez-vous plutôt sur Delphi ou encore .Net. Le cas de Basic est plus ou moins le même, il existe des compilateurs gratuits, mais il s'agit d'un langage dépassé qui n'est ni rapide, ni portable, ni objet, ni rigoureux. Préférez Pascal qui permet par la suite d'évoluer vers Delphi. 


Divers/math


Pour les matheux, vous pouvez aussi essayer les langages d'aide a la preuve. Pour le moment, leur puissance est limitée mais on espère qu'ils se développeront avec le temps. Pour le moment les plus répandus sont en couple avec la famille ML ou Haskell. Pour Ocaml, vous avez coq. Les paradigmes sont fondés sur la logique. 

Pour apprendre (le livre de Pierre Castéran était sur le net, mais malheureusement il n'y est plus depuis l'année dernière avec la publication): 


Conclusion et liens


Quelques liens piqués au hasard des discussions sur le forum, ils me paraissent à ce jour les plus complets mais bon :o) 


Encore une autre précision, il y a plusieurs liens en anglais (ou en anglo-américain ;o) ) ci-dessus. Ceci est courant dans le monde de la programmation et apprendre à programmer se fera dans de meilleures conditions si on lit bien l'anglais voire même si on peut l'écrire (pour poser des questions sur les forums spécialisés...). 



Voilà, j'espère avoir été le plus complet possible, mais je m'aperçois que je n'ai pas réussi à être vraiment objectif, mon opinion transparait encore énormément :o). De plus, un posteur occasionnel avait donné un langage spécialement prévu pour les débutants, mais je n'ai pas retrouvé le nom :o( si quelqu'un a ça ou si le posteur repasse par là je suis preneur :o) 



Bon apprentissage. 
------------------------------------ 




Vous trouverez également beaucoup de compilateurs gratuits pour différents langages à www.thefreecountry.com/ cette adresse 



PS : débuter en programmation, c'est aussi se trouver confronté à une épineuse question : mais pourquoi mon programme ne marche pas ? Les messages d'erreur fournis (ou non) par les environnement de compilation ou d'exécution (ou le comportement de l'ensemble) plongent parfois les débutants dans une perplexité sans fond qui peut devenir exaspérante. Une bonne méthode est de faire relire son code par quelqu'un d'expérimenté, et/ou d'expliquer à autrui votre problème. Parfois l'énoncé à haute voix de votre raisonnement vous mettra sur la bonne voie et fera de vous le vainqueur de votre chasse au fameux bug. Enfin, la capacité à (bien) programmer va (souvent) de pair avec celle de s'abstraire de ce monde matériel dans lequel nous sommes tous plongés. Bienvenue dans un monde où rien n'est réellement concret. 



Si la programmation vous mord, vous en rêverez peut-être ... Ayez dans ces moments là une feuille et un crayon à papier (l'arme absolue de l'informaticien) sur votre table de chevet, notez les solutions qui vous viennent à l'esprit et testez-les le matin venu, vous serez probablement surpris du conseil que la nuit vous a alors apporté :-)

تعليقات

المشاركات الشائعة من هذه المدونة

أخيرا يمكنك تفعيل الوضع الليلي في جميع المواقع التي تزورها أو تعطيله في أي وقت للمحافظة على عينيك من الأشعة الضارة

تعرف على هذه الأداة التي تقوم باعداة صياغة المقالات و النصوص بضغطة زر فقط

Apprendre le HTML5 – Tutoriel Complet