{"partition": "head_middle", "source_domain": "forum.ubuntu-fr.org", "digest": "sha1:2BHWWPWHM43TOA2I4BSZVYI2MAYS54GJ", "path": "/lustre/fsn1/projects/rech/qgz/uzq54wg/processed_redpajama/base_processing/output/fr/2014-15/000_00025.parquet"}
» Développement et programmation
» Petit guide pour aider au choix d'un langage
Pages : 1 2 3 … 11 Suiv.
Le Farfadet Spatial
Petit guide pour aider au choix d'un langage
Salut à tous ! La question revient souvent : quel langage choisir pour débuter ? Difficile de répondre dans l'absolu, car tout dépend de l'objectif de chacun. Voici toutefois un petit guide des langages de programmations les plus répandues, ainsi que deux ou trois moins connus, mais qui, à mon avis mérite le détour. J'essaye de présenter les qualités et domaines d'applications de chacun, ainsi que, autant que possible, une bibliographie adaptée à leur découverte. Le choix des livres s'est fait en fonction de leur aspect pédagogique, respect des normes, la facilité à les trouver en bibliothèques et librairies et leur accessibilité au niveau baccalauréat. J'ai tenté d'être aussi juste que possible avec chaque langage, mais il est évident que cette présentation reste influencée par mes choix personnels.Les bases La première chose à savoir, c'est qu'il n'y a pas de langage parfait, qui permet de tout faire. Il faut donc choisir le langage en fonction de ses qualités, mais aussi de ses défauts et surtout de ce que l'on compte faire. Donc, la première chose, c'est de bien évaluer ton besoin. D'autre part, l'essentiel, en programmation, c'est l'algorithmique. Je conseille donc cet ouvrage : Introduction à l'algorithmique Thomas H. CORMEN, Charles E. LEISERSON, Ronald L. RIVEST et Clifford STEIN Dunod Le bouquin est énorme, mais il n'est pas besoin de le lire d'un coup. Par contre, il vous suivra dans toute votre vie de programmeur, depuis les premiers pas jusqu'à la pratique avancée. De plus, vous pourrez en tirer profit quel que soit le langage que vous utiliserez. D'ailleurs, globalement, je conseille le format livre pour tout ce qui est documentation, bien plus facile à utiliser et à consulter lorsque l'on est en situation d'effectivement coder. Ce site est intéressant au niveau de l'algorithmique : http://www.france-ioi.org/train/algo/index.php Également, si vous optez pour un langage orienté objet, dans un deuxième temps ce sera une bonne idée de se mettre à la modélisation, par exemple UML. Cet ouvrage permet une bonne introduction (les langages utilisés dans les exemples sont C# et Java) : UML 2 par la pratique Pascal ROQUES Éditions Eyrolles La modélisation Merise est très appropriée lorsque l'on a recours à des bases de données : Comprendre Merise Jean-Patrick MATHERON Éditions Eyrolles Enfin, de nombreux langages ont recours aux expressions rationnelles : Introduction aux expressions régulières Bernard DESGRAUPES Éditions Vuibert Je vais maintenant essayer de faire un rapide tour d'horizon des langages qui me semblent les plus intéressants pour les débutants.Pour une première initiation : les scripts Bash Pour commencer, s'initier à la programmation via les scripts Bash est un bon moyen de découvrir ce qu'il est possible de faire et de maîtriser Linux : Scripts sous Linux Christophe BLAESS Éditions Eyrolles Sur le Internet : http://www.siteduzero.com/tutoriel-3-12 … part_88347Un langage généraliste : Java Un langage généraliste, très bien adapté au web et pur objet – paradigme de programmation le plus répandu à l'heure actuelle. Par contre, il n'est à utiliser que dans les cas où le temps d'exécution n'est pas critique (encore que sa lenteur soit trop souvent exagérée) : Java. Simple à apprendre, propre, c'est en général un bon choix. Si vous optez pour ce langage (ou tout autre langage orienté objet), je conseille d'apprendre la modélisation UML, toutefois je pense qu'il vaut mieux avoir un peu touché le langage avant de se lancer dans l'UML, afin que les concepts ne soient pas trop abstraits. Il y a de nombreux ouvrages de qualités dédiés à l'apprentissage de Java. Un exemple : Programmer en Java Claude DELANNOY Éditions Eyrolles Un tutoriel en ligne : http://jmdoudoux.developpez.com/cours/developpons/java/Pour découvrir la programmation avec une bonne rigueur : OCaml Dans la série des langages généralistes, un autre, qui a l'avantage de permettre d'opter aussi bien une approche impérative que fonctionnelle (et même de permettre de mêler les deux approches), supporte l'objet, autorise d'excellentes performances (équivalentes à C) et qui est extrêmement robuste – plus encore qu'Ada, pour les connaisseurs –, tout en permettant une énorme productivité : Objective CaML. Son inconvénient est qu'il est très peu utilisé dans les projets réels (ce qui est bien dommage), de sorte que c'est surtout un excellent choix pour l'apprentissage. Un très bon ouvrage pour apprendre à programmer en Objective CaML : Développement d'applications avec Objective Caml Émmanuel CHAILLOUX, Pascal MANOURY et Bruno PAGANO O'Reilly Ce livre est disponible sur Internet : http://www.pps.jussieu.fr/Livres/ora/DA-OCAML/ Si vous optez pour ce langage, envisagez l'apprentissage d'UML à moyen terme.Pour ceux qui ont un esprit mathématique : Haskell Pour la programmation scientifique, dans la mesure où il n'y a pas de calcul trop intensif, mais également à mon sens un très bon moyen d'apprendre la programmation de manière propre sans risquer de prendre de mauvaises habitudes et sans trop se prendre la tête (en plus le langage permet une très bonne productivité) : Haskell, principalement langage fonctionnel, mais avec une partie objet. Différents ouvrages sont parus, généralement de bonne qualité. Un exemple : http://gorgonite.developpez.com/livres/ … e-haskell/ Pour ceux qui maîtrise l'anglais : Real World Haskell Bryan O'SULLIVAN, John GOERZEN et Don STEWART Éditions O'Reilly Ce livre est disponible en ligne : http://book.realworldhaskell.org/read/Lisp, l'ancêtre à la vie dure Dans la série des langages fonctionnels, citons Lisp et ses nombreux dialectes (tel que Scheme). Emacs est programmer en Lisp et lui sert de langage d’extension – l’équivalent des macro-commandes, mais avec une approche permettant plus de possibilités et de flexibilités : Premier cours de programmation en Scheme Jean-Paul ROY Ellipses Il existe un cours disponible sur Internet : http://www.algo.be/logo1/lisp/prog.htmlPour les amateurs d'exotisme et les logiciens : Prolog Pour ceux qui veulent s'orienter vers l'intelligence artificiel, quoique le paradigme de programmation est un peu particulier (programmation logique) : Prolog. Un exemple d'ouvrage : L'Art de Prolog Leon STERLING et Ehud SHAPIRO Masson En ligne : http://pcaboche.developpez.com/article/ … sentation/PHP, le couteau-suisse du web Pour le web, PHP (en général couplé à MySQL) est un très bon choix. Simple, facile à apprendre, disposant d'une bibliographie abondante et permettant d'être très vite opérationnel. Par contre, il est totalement spécialisé dans le web et ne permet que de coder des sites dynamiques : Les Cahiers du programmeur – PHP 5 Stéphane MARIEL Éditions Eyrolles Sur Internet : http://g-rossolini.developpez.com/tutoriels/php/cours/Pour des sites dynamique : Javascript Toujours dédié au Web, Javascript permet de concevoir des sites dynamiques. Là où PHP s'exécute côté serveur, Javscript s'exécute côté client, ils sont donc complémentaires plus que concurrent. Cela dit, méfiez-vous du nom, car il ne s'agit pas du même langage : JavaScript – L'essentiel du code et des commandes Christian WENZ Campus Press En ligne : http://javascript.developpez.com/cours/Le champion des automates vite-fait-bien-fait : Perl Un très bon langage pour la création d'automates et le traitement des chaînes de caractère : Perl. Il est très apprécié des administrateurs système. Par contre, sa syntaxe peut parfois être obscure. Il dispose lui aussi d'une bonne bibliographie. Par exemple : Perl pour l'impatient Sébastien DESREUX et Stéphane TOUGARD H et K Editions Ainsi que l'incontournable : Programmation en Perl Larry WALL, Tom CHRISTIANSEN, Jon ORWANT Éditions O'Reilly Larry WALL est le créateur de Perl. Un tutoriel intéressant : http://lhullier.developpez.com/tutoriels/perl/intro/Un langage de script très versatile : Python Dans à peu près le même domaine que Perl, mais avec peut-être une syntaxe plus claire : Python. C'est un bon choix pour apprendre la programmation, à peine plus compliqué que Basic, mais bien plus propre et avec plus de possibilités. De plus, il supporte de nombreux paradigmes, parmi lesquels la programmation par objet et la programmation fonctionnelle. C'est le principal langage utilisé par les développeurs d'Ubuntu. Ce livre n'est pas mal : Python : Petit guide à l'usage du développeur agile Tarek ZIADÉ Dunod En ligne : http://www.swaroopch.com/notes/Python_f … s_Matières Spirzouf en a fait une version PDF (non mise à jour), disponible à cette adresse : http://www.megaupload.com/?d=ALRACFAX Si jamais ce livre vous est utile, aidez l'auteur : pensez à faire un don.Pour des scripts rédigés avec une approche objet : Ruby Toujours dans le même domaine, quoiqu'un peu moins répandu, Ruby repose sur l'approche orientée objet : Ruby - Les fondamentaux du langage - Mise en oeuvre avec Ruby on Rails Alexandre BRILLANT Éditions ENI Vous pouvez aussi consulter ce tutoriel : http://pbnaigeon.developpez.com/tutorie … avec-ruby/Le champion de la programmation système, à déconseiller au débutant : C Pour la programmation système, le langage de référence est C. Ce n'est pas un langage difficile à apprendre contrairement aux idées reçues, par contre il est impératif, procédural et structuré – il est possible d'adopter une approche objet, mais elle ne fait pas vraiment partie du langage –, ce qui signifie qu'il est facile de faire des choses assez peu propres (voir vraiment n'importe quoi) et donc difficile à maintenir, souvent inefficace et comportant des bogues étranges. De plus, la gestion des pointeurs et plus généralement de la mémoire peu vite devenir un casse-tête inextricable. C'est le langage utilisé pour le codage du noyau Linux, entre autre. De nombreux ouvrages de qualités disponibles, je conseille celui-ci : Méthodologie de la programmation en C BRAQUELAIRE Dunod En complément : Maîtrise des algorithmes en C Kyle LOUDON O'Reilly Disponible sur Internet : http://c.developpez.com/cours/poly-c/ Autant que possible, je conseille de ne pas commencer la programmation avec C.Un langage puissant et généraliste, mais difficile à apprendre et à utiliser : C++ Enfin, un langage extrêmement versatile et généraliste, qui permet aussi bien la programmation scientifique, le calcul intensif, le temps réel, la programmation système, que toutes sortes d'applications. Les principaux paradigmes supportés sont la programmation impérative, la programmation structurée, la programmation procédurale, la programmation orientée objet, la programmation orientée prototypes et la programmation orientée composants. De plus, les extensions du langage (principalement la bibliothèque standard et la bibliothèque Boost) lui permettent de supporter d'autres paradigmes. Si vous optez pour ce langage, il sera bon, également, de vous mettre à UML une fois les bases maîtrisées, ainsi que d'apprendre à utiliser la bibliothèque Boost. Par contre, contrairement aux autres langages proposés, c'est un langage difficile, tant au niveau de l'apprentissage qu'au niveau de son utilisation. De plus, il est extrêmement souvent mal utilisé et mal enseigné. Attention donc à la littérature sur son sujet : trop souvent, elle propose d'apprendre du C un peu étendu compilé par un compilateur C++ (une aberration), avec gestion des pointeurs à la C (n'importe quoi), utilisation de la bibliothèque standard C en lieux et place de la bibliothèque standard C++ – qui est pourtant bien plus versatile et très efficace si on sait l'utiliser proprement. Bjarne STROUSTRUP, le créateur du langage, a écrit un livre destiné à l'apprentissage de C++, disponible en français : Programmation, Principes et pratique avec C++ Bjarne STROUSTRUP Pearson Education Il a aussi écrit un livre de référence sur ce langage (un peu rébarbatif) : Le langage C++ Bjarne STROUSTRUP Pearson Education. C++ est un excellent choix pour un projet réel – par exemple, je l'utilise dans la programmation d'un modèle d'océan –, mais je le déconseille pour l'apprentissage de la programmation (même si je connais des gens qui n'ont jamais utilisé que ce langage). Je conseille également d'apprendre C++ avant C, pour éviter une contamination mal venue. De toute façon, méfiez-vous des tutoriels C++ disponibles sur le net : ils sont généralement très mauvais.Et pour aller plus loin Une fois découvert l'algorithmique, la programmation et la modélisation si vous optez pour l'approche par objets, je voudrais vous donner quelques pistes pour aller plus loin. Tout d'abord, tous les problèmes n'ont pas forcément de solution informatique. La calculabilité est l'étude qui permet d'identifier de tels problèmes : Introduction à la calculabilité Pierre WOLPER Dunod Connaître le fonctionnement d'un compilateur permet de mieux maîtriser cet outil : Compilateurs Dick GRUNE, Henri E. BAL, Ceriel J. H. JACOBS et Koen G. Langendoen Dunod Si vous vous orientez vers la programmation système, il est préférable d'avoir une idée du fonctionnement d'un ordinateur et d'un système d'exploitation : Architecture de l'ordinateur Andrew TANENBAUM Dunod Systèmes d'exploitation Andrew TANENBAUM Pearson Éducation Enfin, le développement des réseaux a provoqué l'essor de la programmation parallèle : Algorithmique parallèle Arnaud LEGRAND et Yves ROBERT Dunod Cet ouvrage est peut-être un peu