Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 28/10/2009, à 23:54

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_88347

Un 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.html

Pour 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 difficile d'accès au niveau baccalauréat.

      Réseaux
      Andrew TANENBAUM
      Pearson Éducation

   Voilà, j'espère que cela donne quelques éléments pour faire un choix.

   À bientôt.

Le Farfadet Spatial

Dernière modification par Le Farfadet Spatial (Le 22/06/2011, à 20:39)

Hors ligne

#2 Le 29/10/2009, à 00:33

rniamo

Re : Petit guide pour aider au choix d'un langage

merci pour cet ébauche trés intéressante présentée tel quelle, elle résume pas mal de choses mais t'as pas été un peu vite sur le sujet : quel langage choisir pour débuter ?

Certains langages sont je pense inadapté pour commencer mais je peux me tromper.

Sinon je te remercie de ce sujet si ça peut éviter le flood sur le forum.

PS : j'enléverais juste la phrase avec un avis sur le C mais je sais qu'on est pas d'accord là dessus wink


< Quelques un des mes programmes  | Cuisine Facile (pour les gourmands) | Fast MVC for PHP >
        \   ^__^
         \  (o o)\_______
            (___)\            )\

Hors ligne

#3 Le 29/10/2009, à 00:43

Le Farfadet Spatial

Re : Petit guide pour aider au choix d'un langage

Salut à tous !

   Tout d'abord, merci de ton retour, Rniamo : je voudrais discuter un peu du contenu avant de proposer de l'épingler.

rniamo a écrit :

merci pour cet ébauche trés intéressante présentée tel quelle, elle résume pas mal de choses mais t'as pas été un peu vite sur le sujet : quel langage choisir pour débuter ?

À mon sens, tous les langages présentés dans mon message, à l'exception de C et C++, sont adaptés pour débuter en programmation. J'ai mentionné ces deux langages, parce qu'on voit souvent sur le forum des gens qui veulent débuter la programmation par C ou C++.

PS : j'enléverais juste la phrase avec un avis sur le C mais je sais qu'on est pas d'accord là dessus wink

Hé bien, oui : nous avons toujours cette opposition lorsque l'on parle de débuter la programmation...

   Pour moi, au vu de l'offre actuelle, C n'est pas le bon choix pour apprendre à programmer. J'ai tout de même ajouté la phrase suivante :

   « 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. »

   Afin que le lecteur pense à relativiser ce qu'il lit.

   À bientôt.

                                                                                                                                 Le Farfadet Spatial

Dernière modification par Le Farfadet Spatial (Le 29/10/2009, à 00:44)

Hors ligne

#4 Le 29/10/2009, à 09:11

rniamo

Re : Petit guide pour aider au choix d'un langage

en fait si je développe un peu :

comme tu le soulignes, débuter par de l'objet demande des bases en UML (et j'en sais quelquechose) donc c'est un mauvais chois je pense.

Sinon tu ne parles pas d'html (ok c'est juste de la mise en forme mais il reste très répandu wink), javascript, gambas, mono (même critique que le c++ + petit coté MS)
je pense qu'un mini programme exemple serait bien. Je peu aider un peu s'il faut (je voulais mais je me suis dit : un hello word est un trés mauvais exemple et comme je n'ai pas trouvé d'exemple de taille correct montrant bien les différences/avantages de chaque langage je me suis retenu)


< Quelques un des mes programmes  | Cuisine Facile (pour les gourmands) | Fast MVC for PHP >
        \   ^__^
         \  (o o)\_______
            (___)\            )\

Hors ligne

#5 Le 29/10/2009, à 10:29

Le Farfadet Spatial

Re : Petit guide pour aider au choix d'un langage

Salut à tous !

rniamo a écrit :

comme tu le soulignes, débuter par de l'objet demande des bases en UML (et j'en sais quelquechose) donc c'est un mauvais chois je pense.

Je ne suis pas d'accord : débuter avec l'approche par objets ne nécessite pas de connaître UML. Au contraire, je pense qu'il ne faut apprendre UML qu'une fois les bases de la programmation par objets acquises. Sinon, on est certain de décourager, de manière inutile.

   À mon sens, apprendre UML est nécessaire, mais doit être appris dans un second temps.

Sinon tu ne parles pas d'html

Je n'en parle pas, parce que ce n'est pas un langage de programmation, tout simplement.

javascript

En effet, je vais y remédier.

gambas

Gambas est un mauvais choix : il faut arrêter avec Basic, cela fait bien longtemps que l'on en connait les conséquences sur l'apprentissage de la programmation.

mono

À l'heure actuelle, Mono ne garantit pas l'indépendance au système et au fournisseur, c'est donc un mauvais choix.

je pense qu'un mini programme exemple serait bien. Je peu aider un peu s'il faut (je voulais mais je me suis dit : un hello word est un trés mauvais exemple et comme je n'ai pas trouvé d'exemple de taille correct montrant bien les différences/avantages de chaque langage je me suis retenu)

Je ne suis pas convaincu : lorsque l'on ne connait rien à la programmation, ce n'est tout simplement pas parlant, à moins de passer un temps important à expliquer chaques lignes. Le petit guide, déjà long, deviendrait incompréhensible.

   À bientôt.

                                                                                                                                 Le Farfadet Spatial

Hors ligne

#6 Le 29/10/2009, à 12:13

Karl_le_rouge

Re : Petit guide pour aider au choix d'un langage

Je déconseille le Swinnen qui enseigne un mauvais style de programmation Python.
C'est un bouquin d'initiation à la programmation à l'aide de Python, c'est très bien pour des adolescents mais les autres devront voir ailleurs.
Quelques recommandations de lecture pour les débutants en programmation.
- http://www.swaroopch.com/notes/Python_fr:Table_des_Mati%C3%A8res
- http://www.greenteapress.com/thinkpython/html/
Pour les développeurs plus chevronnés:
les bouquins de Tarek Ziadé qui sont une valeur sûre et enseigne un "bon" style en Python.
http://programmation-python.org/livres

Sinon, ça me semble pertinent pour le reste.

Hors ligne

#7 Le 29/10/2009, à 16:29

Blabla404

Re : Petit guide pour aider au choix d'un langage

A noter que pour Ocaml le livre que tu cites (et qui est pratiquement le seul) est disponible sur le net.
En anglais ici: http://caml.inria.fr/pub/docs/oreilly-book/index.html
En français là: http://www.univ-valenciennes.fr/ROI/poirriez/ensuvhc/ocamluvhc/DA-OCAML/

A mon sens un bon language pour débuter serait le Ocaml. Après d'un point de vue pratique il "faut" connaitre le java ou le C++.

Vu qu'une difficulté pour commencer est de savoir quoi coder je cite également un site qui donne à coder des algorithmes et propose de vérifier la solution (le niveau est très raisonnable et beaucoup de language sont acceptés): http://www.france-ioi.org/ (par contre leurs cours Ocaml suxx)

Sinon je pense que tu proposes trop de choses, typiquement le prolog, le lisp, l'ada l'Eiffel, le perl et le Php et dans une moindre mesura L'haskell. À mon sens il s'agit de choses spécialisées. Pour débuter je ne garderai que l'Ocaml, le C++, le Java et le Python qui sont en plus les langages utilisés pour débuter dans l'enseignement.

Concernant les ouvrages annexes que tu cites je pense que souvent il existe un poly d'un cours disponible sur le net donc acheter un bouquin sans le connaitre n'est à mon avis pas une bonne idée.

Dernière modification par redoxx (Le 29/10/2009, à 16:32)

Hors ligne

#8 Le 29/10/2009, à 20:14

rniamo

Re : Petit guide pour aider au choix d'un langage

Le Farfadet Spatial a écrit :

Salut à tous !

rniamo a écrit :

comme tu le soulignes, débuter par de l'objet demande des bases en UML (et j'en sais quelquechose) donc c'est un mauvais chois je pense.

Je ne suis pas d'accord : débuter avec l'approche par objets ne nécessite pas de connaître UML. Au contraire, je pense qu'il ne faut apprendre UML qu'une fois les bases de la programmation par objets acquises. Sinon, on est certain de décourager, de manière inutile.

   À mon sens, apprendre UML est nécessaire, mais doit être appris dans un second temps.

je disais ça parce que quand j'ai commencé sans connaitre ni uml ni les design patterns j'ai fait pas mal de gaffes, les connaitre permet soit des les éviter soit de le savoir à l'avance wink

Après d'un point de vue personnel, je vois les langages comme ça (je n'en cite que quelques un) :
* java : - nécessite la jvm + efficace et simple + necessite une seule compilation quelque soit le système
* c++ : + puissant = nécessite des librairies externes - peut être complexe
* c : + rapide, simple - il faut toujours presque réinventer la roue, pas d'objets
* pyhton : bourrin (désolé, pas trouvé mieux) et simple ... quoique mélange de notions de script et de programmation classique
* ...


< Quelques un des mes programmes  | Cuisine Facile (pour les gourmands) | Fast MVC for PHP >
        \   ^__^
         \  (o o)\_______
            (___)\            )\

Hors ligne

#9 Le 29/10/2009, à 22:30

Le Farfadet Spatial

Re : Petit guide pour aider au choix d'un langage

Salut à tous !

   Bon, plein de remarques, c'est bien, merci de votre contribution.

   Pour commencer :

redoxx a écrit :

Concernant les ouvrages annexes que tu cites je pense que souvent il existe un poly d'un cours disponible sur le net donc acheter un bouquin sans le connaitre n'est à mon avis pas une bonne idée.

Le problème des sites Internet, c'est qu'il n'est pas possible à l'heure actuelle d'en garantir la pérennité. Lorsque quelques années plus tard, on veut revenir dessus, il est possible qu'il ait disparu. De plus, je constate que les tutoriels sur les sites coûtent très cher en papier, souvent plus cher que d'acheter un bon livre et lorsque l'on est en situation d'effectivement coder, ils ne sont pas très pratiques à consulter.

   Pour ma part, lorsque j'ai commencé la programmation dans les années 80, j'avais sept ans et Internet était encore un projet. Donc, pas d'argent et pas la possibilité d'aller sur Internet. Pourtant, j'ai appris la programmation dans les livres : j'allais à la bibliothèque, tout simplement.

   Tout ça pour dire que si je trouve qu'Internet est un outil formidable, je pense que le livre reste encore meilleur choix dans le cas de l'apprentissage. Coupons la poire en deux : donner un livre et un lien, mais il faut que le lien soit de qualité.

redoxx a écrit :

A mon sens un bon language pour débuter serait le Ocaml. Après d'un point de vue pratique il "faut" connaitre le java ou le C++.

Et

rniamo a écrit :

Après d'un point de vue personnel, je vois les langages comme ça

Justement, l'objectif de ce message n'est pas de dire avec quoi apprendre à programmer, mais de donner un point de départ pour que chacun puisse faire son choix.

   Sinon, voici mon point de vue personnel.

   Si j'ai le temps et que je dois former des programmeurs généralistes, je commence avec OCaml, ensuite Prolog, pour voir enfin C++. Arrivé là, l'étudiant sera capable d'apprendre n'importe quel langage seul. Si je dois former des scientifiques qui vont faire du calcul intensif, je commence par Python, pour ensuite passer à C++. Et ainsi de suite.

   D'une part, nous n'arriverons jamais à nous mettre d'accord sur quelle est la bonne façon de faire, alors ne cherchons pas à l'établir ici, ensuite nous ne pouvons pas prévoir quel sera le cas particulier de chaque membre de ce forum qui vient avec l'idée de découvrir la programmation.

redoxx a écrit :

Sinon je pense que tu proposes trop de choses, typiquement le prolog, le lisp, l'ada l'Eiffel, le perl et le Php et dans une moindre mesura L'haskell. À mon sens il s'agit de choses spécialisées. Pour débuter je ne garderai que l'Ocaml, le C++, le Java et le Python qui sont en plus les langages utilisés pour débuter dans l'enseignement.

Encore une fois, je pense que C++ est un mauvais choix pour apprendre la programmation.

   PHP est très répandu et suscite un énorme intérêt, de sorte que nombreux sont et seront ceux qui apprendront la programmation avec PHP.

   Ensuite, il n'y a pas si longtemps, au MIT, la découvert de la programmation pouvait se faire avec Lisp -- avec toutes les réserves que je donne aux arguments d'autorité, cela devrait nous pousser à réfléchir sur la pertinence d'un tel choix : avec un peu de réflexion, on se rend compte qu'il est très défendable.

   Eiffel, du fait de sa rigueur et de sa volonté affichée de ne s'attacher qu'à un seul paradigme propose de bons arguments pour permettre une bonne approche de la programmation. Un peu la même remarque pour ADA.

   Prolog, je le cite parce que je suis partisan que les programmeurs aient une idée des différents paradigmes existants, afin qu'ils soient bien au courant qu'il existe non pas une seule approche, mais plusieurs. Puis, ça peut être le langage approprié à certains cas particulier.

   Enfin, je sais que Ubuntu provoque un effet de loupe, mais Perl n'est pas moins répandu que Python, difficile de parler de l'un sans parler de l'autre.

   Bon, je mets Eiffel et ADA en sursit : si personne ne vient les défendre pendant un jour ou deux, je les supprimerais de la présentation.

Karl_le_rouge a écrit :

Je déconseille le Swinnen qui enseigne un mauvais style de programmation Python.

Je ne suis pas encore un grand spécialiste de la littérature sur Python et je m'étais gardé de citer celui-ci, parce que justement trop spécialisé :

      Python : Les Fondamentaux du langage -- La Programmation pour les scientifiques
      Matthieu BRUCHER
      Éditions ENI

   Je prends ta remarque en compte.

   À bientôt.

                                                                                                                                 Le Farfadet Spatial

Hors ligne

#10 Le 29/10/2009, à 22:34

Le Farfadet Spatial

Re : Petit guide pour aider au choix d'un langage

Re-salut à tous !

   Flûte : j'ai zappé celle-la :

rniamo a écrit :

je disais ça parce que quand j'ai commencé sans connaitre ni uml ni les design patterns j'ai fait pas mal de gaffes, les connaitre permet soit des les éviter soit de le savoir à l'avance wink

Vil copiteur !

   Je suis d'accord qu'il est important d'apprendre la modélisation, mais j'ai vu pas mal d'étudiants à qui on voulait farcir la tête avant de les faire commencer à coder : ils sont perdus. Je suis devenu très pragmatique : je suis désormais partisan de faire découvrir la programmation et l'algorithmique simultanément et de n'introduire la modélisation qu'une fois que les bases de la programmation par objet ont été vues, en appuyant bien sur la nécessité d'y recourir.

   À bientôt.

                                                                                                                                 Le Farfadet Spatial

Hors ligne

#11 Le 29/10/2009, à 23:50

rniamo

Re : Petit guide pour aider au choix d'un langage

perso j'aime bien ça :
théorie survolée (assez faible pour que les étudiants oublie mais sachent qu'ils ont vu passer vite fait), pratique => écueil => théorie (la vraie cette fois).

et concernant le prolog laisse le, c'est un langage un peu à part (quoique) mais il peut être trés utile. C'est u peu en parallèle mais il correspond à une façon de modéliser/résoudre. Après coder une interface ne prolog se discute à mon avis.


< Quelques un des mes programmes  | Cuisine Facile (pour les gourmands) | Fast MVC for PHP >
        \   ^__^
         \  (o o)\_______
            (___)\            )\

Hors ligne

#12 Le 30/10/2009, à 00:04

Le Farfadet Spatial

Re : Petit guide pour aider au choix d'un langage

Salut à tous !

rniamo a écrit :

perso j'aime bien ça :
théorie survolée (assez faible pour que les étudiants oublie mais sachent qu'ils ont vu passer vite fait), pratique => écueil => théorie (la vraie cette fois).

Tiens, pour une fois, nous nous rejoignons !

   Quoique j'évite de donner une théorie fausse, encore que je croie que si ton message le laisse sous-entendre, c'est plutôt dû à un choix sémantique un peu hasardeux. Je pense qu'il faut guider les étudiants, mais que la valeur pédagogique de l'erreur n'est pas à négliger. De plus, mon avis est qu'une compétence n'est vraiment acquise que lorsque l'on a fait soi-même l'effort de la composer.

et concernant le prolog laisse le, c'est un langage un peu à part (quoique) mais il peut être trés utile. C'est u peu en parallèle mais il correspond à une façon de modéliser/résoudre. Après coder une interface ne prolog se discute à mon avis.

Je n'avais de toute façon pas l'intention de le supprimer, mais je te remercie de ton soutien.

   À bientôt.

                                                                                                                                 Le Farfadet Spatial

Hors ligne

#13 Le 30/10/2009, à 10:42

Blabla404

Re : Petit guide pour aider au choix d'un langage

Pour les livres et les sites internets, à terme il est bon d'avoir un livre qui fasse reference, pour débuter je n'en suis pas sur. Dans tous les cas certains livres sont distribués depuis une version "libre" (il me semble que c'est le cas pour celui de ocaml) dans ce cas c'est aussi bien d'en donner le lien la pérénité ne devrais pas etre un probleme. Pour celui d'ocaml il est meme dans les depots. D'ailleurs sur ma fedora j'ai aussi introduction to programming using java de David J. Eck (CC-BY-SA) mais je ne sais pas ce qu'il vaut.

Farfadet Spatial a écrit :

Si j'ai le temps et que je dois former des programmeurs généralistes, je commence avec OCaml, ensuite Prolog, pour voir enfin C++. Arrivé là, l'étudiant sera capable d'apprendre n'importe quel langage seul. Si je dois former des scientifiques qui vont faire du calcul intensif, je commence par Python, pour ensuite passer à C++. Et ainsi de suite.

Je ferais exactement comme ça modulo le prolog sur lequel je n'ai pas une assez bonne vision d'ensemble pour me prononcer.

PHP est très répandu et suscite un énorme intérêt, de sorte que nombreux sont et seront ceux qui apprendront la programmation avec PHP.

Il n'est pas comparable avec les autres languages. Tu l'indiques dans ton post mais je pense que ce n'est pas assez explicite.

Pour les autres languages moralement je suis d'accord mais pour débuter autant commencer par des languages pour lesquels il est facile de trouver des ressources. Si quelqu'un pose une question sur ce forum à propos de python il aura bien plus de réponses que si il s'agit de prolog ou d'ada. Pour débuter ça me semble important.

En fait pour vraiment débuter j'en viens à penser que ocaml ou python sont les meilleurs choix (sauf si le but est de faire un site web où dans ce cas faire html+css (en sachant que ce n'est pas un language) puis php est plus indiqué) quitte à changer rapidement pour un autre language.

Hors ligne

#14 Le 30/10/2009, à 11:07

Le Farfadet Spatial

Re : Petit guide pour aider au choix d'un langage

Salut à tous !

redoxx a écrit :

Pour les livres et les sites internets, à terme il est bon d'avoir un livre qui fasse reference, pour débuter je n'en suis pas sur.

Mon expérience reste qu'apprendre sur un livre est plus efficace que sur un site.

la pérénité ne devrais pas etre un probleme.

Je suis désolé de penser à long, voir à très long, terme (plusieurs années) quand aujourd'hui on privilégie plutôt le court terme, mais si, à mon avis, la pérennité est un point essentiel : il m'arrive encore, plus de vingt-cinq ans après les avoir achetés, de me replonger dans des livres que je me suis procuré à mes débuts, par exemple.

Je ferais exactement comme ça modulo le prolog sur lequel je n'ai pas une assez bonne vision d'ensemble pour me prononcer.

Hé bien, le débutant qui lira ce sujet pourra trouver un exemple de progression sur lequel plusieurs personnes sont d'accord, ce qui est pas mal.

   Cela dit, encore une fois, le but n'est pas de dire « faites comme cela », d'une part parce que ce sera nécessairement le point de départ de nombreux trolls, d'autre part parce que nous ne pouvons pas prévoir a priori tous les cas particuliers.

PHP est très répandu et suscite un énorme intérêt, de sorte que nombreux sont et seront ceux qui apprendront la programmation avec PHP.

Il n'est pas comparable avec les autres languages. Tu l'indiques dans ton post mais je pense que ce n'est pas assez explicite.

Je modifie un peu la présentation, mais n'hésite pas à me dire ce que tu penses qu'il faudrait indiquer.

   Je pense que PHP reste incontournable dans la présentation.

Pour les autres languages moralement je suis d'accord mais pour débuter autant commencer par des languages pour lesquels il est facile de trouver des ressources. Si quelqu'un pose une question sur ce forum à propos de python il aura bien plus de réponses que si il s'agit de prolog ou d'ada. Pour débuter ça me semble important.

Ça dépend, la rigueur de ces langages, ainsi que la qualité de leurs bibliothèques et des ouvrages les concernant leur donne tout de même de bons arguments pédagogiques. Cela dit, je note que tu ne fais pas partie de leurs défenseurs pour les voir rester dans cette présentation et, pour l'instant, ils sont toujours en sursit.

   À bientôt.

                                                                                                                                 Le Farfadet Spatial

Hors ligne

#15 Le 30/10/2009, à 11:57

fredr

Re : Petit guide pour aider au choix d'un langage

Salut,

Un bon livre aussi pour le C++:

"Pour mieux développer avec le C++" de Aurélien Géron et Fatmé Tawbi chez Dunod.

Pour ceux qui connaissent déjà le C++ zt l'approche objet, il parle de façon simple et claire de:

Design patterns -- STL -- RTTI -- Smart pointers. Avec un rappel de UML.

Fred


ArcoLinuxD Awesome
L'optimiste pense que nous vivons dans le meilleur des mondes. Et le pessimiste craint que ce ne soit exact.

Hors ligne

#16 Le 30/10/2009, à 12:11

Blabla404

Re : Petit guide pour aider au choix d'un langage

Le Farfadet Spatial a écrit :

la pérénité ne devrais pas etre un probleme.
Je suis désolé de penser à long, voir à très long, terme (plusieurs années) quand aujourd'hui on privilégie plutôt le court terme, mais si, à mon avis, la pérennité est un point essentiel : il m'arrive encore, plus de vingt-cinq ans après les avoir achetés, de me replonger dans des livres que je me suis procuré à mes débuts, par exemple.

Attention je me suis peut etre mal exprimé, mais je parle des livres dont le texte est sous une license libre.

Le problème avec les éditions papiers c'est quelles sont généralement difficile à trouver en librairie que beaucoup sont mauvaises et leurs couts n'est pas négligeable.
De plus si on se rejoint (plus ou moins) sur les languages pour débuter, trouver quel est le meilleur livre risque de partir en troll. On va donc se retrouver à ne rien indiquer ou à mettre une liste énorme. C'est pourquoi indiquer les livres disponible librement sur le net me parait une bonne solution puisque cela permet à chacun de le feuilleter et de s'en faire une idée avant l'achat.

Personellement j'ai tendance à commencer via les ressources disponibles librement sur le net, les livres trouvables à la bibliothèque puis une fois que j'ai un minimum d'expérience à acheter un livre qui me convient. Surtout que dans le cas de la programmation on utilise vite uniquement la doc du language.

Sinon j'avais donnée une adresse pour le caml book mais d'un part il est dans les dépots et la version originale vient de http://www.pps.jussieu.fr/Livres/ora/DA-OCAML/ c'est peut etre meiux d'indiquer ce lien.

Hors ligne

#17 Le 31/10/2009, à 01:30

Le Farfadet Spatial

Re : Petit guide pour aider au choix d'un langage

Salut à tous !

fredr a écrit :

"Pour mieux développer avec le C++" de Aurélien Géron et Fatmé Tawbi chez Dunod.

Comment, un livre portant sur C++, chez Dunod de surcroit, que je ne connais pas ? Comment est-ce possible ? Il n'y en a pourtant pas tant que ça...

   Cela dit :

fredr a écrit :

Pour ceux qui connaissent déjà le C++

Du coup, est-ce vraiment un livre à conseiller lorsque l'on débute en C++ ?

redoxx a écrit :

Le problème avec les éditions papiers c'est quelles sont généralement difficile à trouver en librairie que beaucoup sont mauvaises et leurs couts n'est pas négligeable.

Déjà, la qualité éditoriale d'un site Internet et généralement très en deçà de celle d'un livre, surtout si l'éditeur fait bien son boulot. Justement, lorsque je conseille un livre, d'une manière générale, c'est que je l'ai a minima consulté, donc je me suis assuré que la qualité était au rendez-vous. Si vous n'êtes pas modérateur sur ce forum, vous êtes obligé de passer par mon filtre : c'est l'occasion pour moi de faire preuve de maturité et de faire un travail éditorial (justement) aussi impartial que faire se peut et si possible de qualité.

   Sinon, justement, dans la mesure du possible, comme précisé, j'essaye de sélectionner des livres que l'on peut aisément se procurer. Bon, j'avoue que ceux sur Lisp et Prolog peuvent poser problème, quoiqu'ils sont disponibles chez un libraire sur Internet très célèbre et qui a le même nom qu'une peuplade mythique composée de femmes guerrières, dont je ne donne pas le nom pour ne pas citer de marque.

   Enfin, je me pose en faux quant à l'argument du prix : si un enfant de sept ans, dans les années quatre-vingt, alors que les rayons informatiques des bibliothèques étaient moins fournit que maintenant, arrivait à consulter des ouvrages sans demander sans cesse de l'argent à ses parents -- oui, je parle de moi --, alors un gaillard de vingt ans dans les années deux mille peut en faire autant. D'autant que, bien souvent, je constate que les utilisateurs de tutoriels les impriment, pour un coût généralement similaire, sinon supérieur, à celui d'un livre.

   Enfin, je rappelle que je donne désormais un livre et un lien.

redoxx a écrit :

trouver quel est le meilleur livre risque de partir en troll

Même remarque pour les liens. Pourtant, il faut bien donner une base de départ aux débutants.

   Pour l'instant, nous n'avons pas trollé. J'ai initié le projet, je dois donc essayer de garder la tête froide et tenter de détecter les trolls. Je fais également confiance à l'intelligence générale des intervenants du forum pour ne pas faire n'importe quoi et, pour l'instant, les discussions de ce fil me donnent raison. Au pire, je pense que les modérateurs sont suffisamment capables pour nous rappeler à l'ordre.

redoxx a écrit :

Je change ça.

   En plus, je bats ma coulpe, car je le savais.

   À bientôt.

                                                                                                                                 Le Farfadet Spatial

Hors ligne

#18 Le 31/10/2009, à 08:51

fredr

Re : Petit guide pour aider au choix d'un langage

Salut,

Tout dépend du niveau ou on met débutant, pour partir de rien, le livre n'est pas à conseiller dans un premier temps mais après un peu de pratique oui je pense..

De plus je connais des informaticiens croyant savoir programmer en C++ et n'ayant jamais rien  lu sur la STL... pour moi ils sont aussi débutants..

Fred


ArcoLinuxD Awesome
L'optimiste pense que nous vivons dans le meilleur des mondes. Et le pessimiste craint que ce ne soit exact.

Hors ligne

#19 Le 31/10/2009, à 12:00

inconnu

Re : Petit guide pour aider au choix d'un langage

je viens de suivre le tutoriel c sur le site du zéro. J'avais juste de vagues connaissances en basic gw, et en assembleur 8086. Je l'ai trouvé très clair. Y compris sur les pointeurs.
(maintenant faut pratiquer smile)

http://www.siteduzero.com/tutoriel-3-13 … ammer.html

et effectivement, je préfère un site qu'un bouquin dans un premier temps. Je veux voir s'y j'accroche avant d'acheter, je veux pouvoir survoler pleins de choses par moi-même. Après, une fois que je sais avec quoi j'accroche et que j'accepte d'y investir du temps, un bouquin est bienvenu.

#20 Le 31/10/2009, à 13:18

Le Farfadet Spatial

Re : Petit guide pour aider au choix d'un langage

Salut à tous !

fredr a écrit :

Tout dépend du niveau ou on met débutant, pour partir de rien, le livre n'est pas à conseiller dans un premier temps mais après un peu de pratique oui je pense..

Prenons cette définition : un débutant dans un langage est quelqu'un qui ne connait pas du tout le langage.

fredr a écrit :

De plus je connais des informaticiens croyant savoir programmer en C++ et n'ayant jamais rien  lu sur la STL... pour moi ils sont aussi débutants..

Ça, c'est une autre histoire : en effet, C++ est extrêmement mal enseigné et bien trop souvent, on voit des programmeurs persuadés de maîtrisé C++, alors qu'ils ne font qu'utiliser un sabir C with classes infâme. Il n'y a qu'à voir nombreuses de mes interventions ici : je me suis souvent élevé contre cette pratique.

   Cependant, le propos n'est pas ici de revenir sur les mauvaises habitues, mais de proposer un guide pour les débutants. Par exemple, la bibliothèque standard doit faire partie des bases de l'apprentissage, cherchons donc d'abord et avant tout à proposer des références qui enseignent vraiment le langage.

   Cela dit, encore une fois, je pense que C++ n'est, à l'heure actuelle, pas le bon choix pour apprendre la programmation.

shlok a écrit :

je viens de suivre le tutoriel c sur le site du zéro.

Il y a déjà un lien vers un cours C dans la présentation.

   À bientôt.

                                                                                                                                 Le Farfadet Spatial

Hors ligne

#21 Le 31/10/2009, à 19:16

delphinus

Re : Petit guide pour aider au choix d'un langage

Bonjour,

Tout d'abord je veux saluer cette initiative de faire ce guide. Bravo, bonne idée et bon courage.

J'aimerai apporter ma contribution sur le C++:

Je partage beaucoup des opinions et idées qui ont été exprimées sur ce sujet en général (algo, uml, une séparation franche entre le c et le c++...). D'ailleurs beaucoup d'ouvrages cités sont déjà dans ma bibliothèque perso.
Après avoir lu tout le post, il ne me semble pas avoir vu l'ouvrage "Accelerated C++, Practical Programming by Example" de Koenig et Moo. Je sais qu'il est rédigé dans la langue de Shakespeare, et que cela peut donc être rédhibitoire pour ce guide, mais je pense qu'il peut être une bonne porte d'entrée au C++ (mais bon, je ne crois pas que le "Programming -- Principles and Practice Using C++" de Stroustrup soit dispo en français). En même temps, je comprends bien qu'on ne peut pas tout mettre, il faut bien faire un choix, et qu'entre Accelerated C++ et Principles and Practice, si on en liste qu'un, autant prendre Stroustrup. Mon but n'est absolument pas de comparer ces 2 livres, en fait pour moi, ils sont tous deux excellents, et je les conseille vivement.

voilà. De nouveau: bravo pour cette initiative.
a+

Hors ligne

#22 Le 01/11/2009, à 13:07

Le Farfadet Spatial

Re : Petit guide pour aider au choix d'un langage

Salut à tous !

delphinus a écrit :

Après avoir lu tout le post, il ne me semble pas avoir vu l'ouvrage "Accelerated C++, Practical Programming by Example" de Koenig et Moo. Je sais qu'il est rédigé dans la langue de Shakespeare, et que cela peut donc être rédhibitoire pour ce guide, mais je pense qu'il peut être une bonne porte d'entrée au C++ (mais bon, je ne crois pas que le "Programming -- Principles and Practice Using C++" de Stroustrup soit dispo en français). En même temps, je comprends bien qu'on ne peut pas tout mettre, il faut bien faire un choix, et qu'entre Accelerated C++ et Principles and Practice, si on en liste qu'un, autant prendre Stroustrup. Mon but n'est absolument pas de comparer ces 2 livres, en fait pour moi, ils sont tous deux excellents, et je les conseille vivement.

Je connais l'ouvrage de KOENING et MOO. Il est bien, en effet et Programming -- Principles and Practice Using C++ n'est à l'heure actuelle disponible qu'en anglais également. Cependant, il y a déjà beaucoup de choses dans ce message, je préfère donc n'en donner qu'un seul ouvrage. Donc, à choisir, je préfère l'ouvrage de STROUSTRUP.

   Sinon, personne pour défendre Eiffel ni Ada : je les supprime.

   À bientôt.

                                                                                                                                 Le Farfadet Spatial

Hors ligne

#23 Le 01/11/2009, à 13:13

rniamo

Re : Petit guide pour aider au choix d'un langage

je connais mal (voir pas du tout wink) eiffel et ada mais le premier a l'air très lourd niveau syntaxe et le second me semble plus proche du delphi/pascal et j'ai comme préjugé (et donc peut être faux) qu'il est plus spécialisé, plus proche de l'électronique à cause de sa robustesse.


< Quelques un des mes programmes  | Cuisine Facile (pour les gourmands) | Fast MVC for PHP >
        \   ^__^
         \  (o o)\_______
            (___)\            )\

Hors ligne

#24 Le 01/11/2009, à 13:24

Le Farfadet Spatial

Re : Petit guide pour aider au choix d'un langage

Salut à tous !

rniamo a écrit :

le premier a l'air très lourd niveau syntaxe

Pas lourd : propre ! C'est à ce prix que Eiffel assure une très grosse cohérence.

   Bon, il faut reconnaître que son créateur à un léger côté intégriste...

le second me semble plus proche du delphi/pascal et j'ai comme préjugé (et donc peut être faux) qu'il est plus spécialisé, plus proche de l'électronique à cause de sa robustesse.

En effet, la syntaxe d'Ada est fortement inspirée de celle de Pascal et c'est un langage extrêmement robuste. Cela dit, non, il n'est pas vraiment spécialisé vers l'électronique. En revanche, il est particulièrement efficace en ce qui concerne la programmation concurrentielle.

   À bientôt.

                                                                                                                                 Le Farfadet Spatial

Hors ligne

#25 Le 01/11/2009, à 23:26

Luc Hermitte

Re : Petit guide pour aider au choix d'un langage

delphinus a écrit :

(mais bon, je ne crois pas que le "Programming -- Principles and Practice Using C++" de Stroustrup soit dispo en français)

A la différence d'AC++, il serait en cours de traduction -- cf la page officielle du livre.
Toutefois, il est à noter qu'il y a extrêmement peu de bons livres d'apprentissage pour le C++, et beaucoup de livres suivant la voie historique. Ils peuvent pratiquement tous être cités du coup .. smile

Hors ligne