Affichage des résultats du sondage: Selon vous, quel est le meilleur langage pour apprendre la programmation ?

Votants
274. Vous ne pouvez pas participer à ce sondage.
  • C

    85 31,02%
  • C++

    36 13,14%
  • Python

    53 19,34%
  • Ruby

    16 5,84%
  • Java

    28 10,22%
  • C#

    12 4,38%
  • PHP

    9 3,28%
  • Matlab

    9 3,28%
  • HTML/CSS

    8 2,92%
  • OCaml

    14 5,11%
  • 1 0,36%
  • 1 0,36%
  • 1 0,36%
  • 1 0,36%
+ Répondre à la discussion Actualité déjà publiée
Page 5 sur 14 PremièrePremière 123456789 ... DernièreDernière
  1. #81
    Membre confirmé
    Avatar de gb_68
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    août 2006
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : août 2006
    Messages : 221
    Points : 457
    Points
    457

    Par défaut

    Citation Envoyé par Luc Hermitte Voir le message
    Bref, oui le C est important pour un développeur professionnel, mais pas en premier
    Pareil, je déconseillerais le C comme tout premier langage pour débuter la programmation.

    Le problème n'est pas forcément l’aspect "bas niveau", mais surtout que ce langage utilise beaucoup "d'astuces" et fait énormément confiance au programmeur. Cela est très bien pour le développeur confirmé mais plutôt néfaste pour le néophyte.

    Pour cela, un langage du type Pascal est à mon sens préférable tout en permettant aussi de voir des manipulations plus pointues mais pas de manière prématurée comme cela serait le cas en C.
    Et quand je dis Pascal, je pense au Pascal de base privée (au moins dans un premier temps) des extensions qui ont pu lui être apportées.

    Un exemple est la notion de "pointeur" (au sens large) qui ne devrait être abordée pour les langages procéduraux que lors de l'étude des structures de données, quand elle devient nécessaire (listes, arbres). En C, elle le sera sans doute plus (trop ?) tôt, car étant le seul moyen d'émuler un passage par référence, très employés lors de la manipulation de tableaux (qui en plus se transforment en pointeur automatiquement selon le contexte), indispensables pour utiliser des chaînes de caractères ....

    Citation Envoyé par codec_abc Voir le message
    A-t-on besoin d'un langage de programmation et/ou d'un ordinateur pour résoudre le problème des tours de hanoi, un rubix's cube, ou encre pour trier une pile d'assiettes ?
    Mais pour décrire correctement un algorithme, il faut bien un langage ou au minimum quelque chose de formalisé.

    Le Pascal a aussi l'avantage d'être très proche des pseudo-code utilisés en algorithmie.

  2. #82
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    novembre 2002
    Messages
    6 674
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : novembre 2002
    Messages : 6 674
    Points : 21 191
    Points
    21 191

    Par défaut

    Citation Envoyé par gb_68 Voir le message
    Pareil, je déconseillerais le C comme tout premier langage pour débuter la programmation.

    Le problème n'est pas forcément l’aspect "bas niveau", mais surtout que ce langage utilise beaucoup "d'astuces" et fait énormément confiance au programmeur. Cela est très bien pour le développeur confirmé mais plutôt néfaste pour le néophyte.

    Pour cela, un langage du type Pascal est à mon sens préférable tout en permettant aussi de voir des manipulations plus pointues mais pas de manière prématurée comme cela serait le cas en C.
    Et quand je dis Pascal, je pense au Pascal de base privée (au moins dans un premier temps) des extensions qui ont pu lui être apportées.

    Un exemple est la notion de "pointeur" (au sens large) qui ne devrait être abordée pour les langages procéduraux que lors de l'étude des structures de données, quand elle devient nécessaire (listes, arbres). En C, elle le sera sans doute plus (trop ?) tôt, car étant le seul moyen d'émuler un passage par référence, très employés lors de la manipulation de tableaux (qui en plus se transforment en pointeur automatiquement selon le contexte), indispensables pour utiliser des chaînes de caractères ....

    Mais pour décrire correctement un algorithme, il faut bien un langage ou au minimum quelque chose de formalisé.

    Le Pascal a aussi l'avantage d'être très proche des pseudo-code utilisés en algorithmie.
    Tout dépend de ce que tu veux enseigner.

    Pour former un type à la programmation embarquée, le C est tout indiqué...(même si la programmation embarquée peut de nos jours se faire en C#...même plus besoin d'assembleur...pff même pas drôle).

    Quand à l'algorithmique, elle n'a jamais eut besoin de langage de programmation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SI LE FEU EST VERT
      LA VOITURE PASSE
    SI LE FEU EST ORANGE
      ACCELERER UN BON COUP FAIRE COMME S'IL ETAIT ROUGE
    SI LE FEU EST ROUGE
      ON S'ARRETE
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Produits : UPnP, RemoteOffice, FlashPascal

  3. #83
    Expert éminent
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    août 2003
    Messages
    5 113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : août 2003
    Messages : 5 113
    Points : 9 796
    Points
    9 796

    Par défaut

    L'algo n'a jamais eu besoin de langage mais.
    - un langage sans algo ne rime à rien (même pour jouer avec des diodes, ou p.Ex. réaliser un branchement pour savoir quels cristaux/led éclairer en fonction du nombre à représenter (afficheur digital de chiffres), il y a de l'algo, aussi rigicule et triviale soit-elle pour nous)
    - et l'algo sans langage ne permet pas de tester et valider les algos.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  4. #84
    Membre chevronné
    Avatar de Chauve souris
    Homme Profil pro
    amateur (éclairé ?)
    Inscrit en
    novembre 2005
    Messages
    830
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : Paraguay

    Informations professionnelles :
    Activité : amateur (éclairé ?)

    Informations forums :
    Inscription : novembre 2005
    Messages : 830
    Points : 1 879
    Points
    1 879

    Par défaut Apprendre à programmer n'est pas programmer !

    Perso j'ai commencé avec le Basic sur Amstrad CPC464, j'ai touché aussi du Basic Microsoft 1.0 avec des lignes 10,20, 30... etc. Je n'ai pas beaucoup aimé. Puis est venu le Turbo Pascal que j'ai commencé, toujours sur mon Amstrad, en CP/M 2.2 (oui, je suis un authentique dinosaure qui a échappé à la chute de la comète ). Le Pascal j'ai beaucoup aimé, c'était procédural et structuré. J'ai aussi aimé le Turbo C v1.5. Ceci pour ma petite autobiographie.

    Ceci étant dit je vais dire ici quelque chose de pas "politically correct", c'est le cas de le dire, l'initiation à la programmation se doit d'avoir un gros manuel dans la langue maternelle de l'élève. On est là pour apprendre la programmation pas pour apprendre l'anglais. Donc on exclue le Java, premièrement parce que c'est un foutoir, deuxièmement parce que rien n'est traduit (oui, je sais, je vais avoir plein de petits pouces rouges tournés vers le bas ).

    Partant du principe que, dans toute acquisition de connaissances, c'est le début qui est le plus dur, je suis partisan d'apprendre le C, tout en précisant que c'est juste pour apprendre et que, dans la vraie vie, on n'utilise pas un tel bazar. Mais, pour moi, il est tout aussi utile de savoir pourquoi ça marche que de savoir pourquoi ça ne marche pas. Une fois à l'aise et ayant souffert, on pourra montrer les limites du C et comprendre alors les avantages de la programmation objet. En C++ on va alors se constituer, même si elle existe dans les Library, une class string avec tout ce qu'il faut : création, concaténation, suppression. Une fois cela acquis on va monter le niveau et s'installer confortablement devant un Visual Studio (Express parce que c'est très vilain de pirater ). Un peu de programmation console pour ne pas être dépaysé. Ensuite on va se risquer à la programmation Windows en commençant par le ras des pâquerettes : les API. Il y a d'ailleurs un tuto bien fait ici http://bob.developpez.com/tutapiwin/. Toujours pour comprendre pourquoi ça marche (ou que ça ne marche pas si on a fait des fotes). Aussi obliger les élèves à documenter (en bon français, pas en sabir de d'jeun'z) leurs fonctions (description, conditions d'entrée, conditions de sortie). Et après toutes ces choses ardues et austères on peut passer à la programmation actuelle. A ce stade j'aime bien le C#.
    "Toute l'histoire de l'informatique n'a été que l'histoire des systèmes d'exploitations" (Le Manifeste du PC)

  5. #85
    Membre du Club
    Homme Profil pro
    Inscrit en
    janvier 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : janvier 2014
    Messages : 13
    Points : 42
    Points
    42

    Par défaut Tout dépend du but

    But 1 :
    - élever l'apprenant.
    Prendre son temps, commencer par comprendre la machine. le fait qu'un interrupteur est une mémoire à 1 bit. et remonter depuis le réel connu jusqu'aux mémoires, codages de l'informatique numérique, machine de turing, alu.
    puis passer par une succession de langages.
    Machine, Assembleur, C et un langage fonctionnel type erlang ou ocaml en parallele , C orienté objet (pas de c++ au début surtout), java, python, lua etc..

    Il comprendra chaque chose, profondément.

    But 2:
    - vite vite trouver un boulot (mal considéré et mal payé)
    C# VB et .NET, si c'est coté client, et Java/Php coté serveur. le reste vous le piquerez sur le tas.
    On ne comprendra rien, on fera des copier-coller, on construira des énormes bousins lents et qui plantent sans possibilité de savoir où ni pourquoi. Il faudra acheter 3 serveurs car sinon cela n'ira pas assez vite...
    On fera tourner l'industrie Américaine et les sociétés de services Françaises, et même EDF. Tout en racontant la vie de son employeur à google ou stackoverflow , histoire de laisser de l'avance aux dites sociétés américaines.

  6. #86
    Membre averti
    Avatar de mrqs2crbs
    Profil pro
    Inscrit en
    juin 2013
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juin 2013
    Messages : 99
    Points : 315
    Points
    315
    Billets dans le blog
    2

    Par défaut

    Citation Envoyé par DonQuiche Voir le message
    Structure and interpretation of computer programs Si je ne m'abuse pas cela a longtemps été (et c'est peut-être encore) le premier cours donné aux étudiants en informatique du MIT. ....
    j'ai commencé à regarder cette doc, c'est plutôt intéressant,
    leurs préfaces explique le choix de Lisp (scheme dans ce cas précis), voici brutes les parties concernant ce choix pour l'apprentissage

    If Lisp is not a mainstream language, why are we using it as the framework for our discussion of programming? Because the language possesses unique features that make it an excellent medium for studying important programming constructs and data structures and for relating them to the linguistic features that support them. The most significant of these features is the fact that Lisp descriptions of processes, called procedures, can themselves be represented and manipulated as Lisp data. The importance of this is that there are powerful program-design techniques that rely on the ability to blur the traditional distinction between ``passive'' data and ``active'' processes. As we shall discover, Lisp's flexibility in handling procedures as data makes it one of the most convenient languages in existence for exploring these techniques. The ability to represent procedures as data also makes Lisp an excellent language for writing programs that must manipulate other programs as data, such as the interpreters and compilers that support computer languages. Above and beyond these considerations, programming in Lisp is great fun.
    hormis la facilité d'apprentissage, qui permet d'accentuer l'apprentissage sur les concepts, on peut lire ici entre les lignes la possibilité qu'offre Lisp, à générer du code de manière programmatique.

    et dans une autre préface, c'est le formalisme mathématique de Lisp qui est mis en avant:

    Scheme, the dialect of Lisp that we use, is an attempt to bring together the power and elegance of Lisp and Algol. From Lisp we take the metalinguistic power that derives from the simple syntax, the uniform representation of programs as data objects, and the garbage-collected heap-allocated data. From Algol we take lexical scoping and block structure, which are gifts from the pioneers of programming-language design who were on the Algol committee. We wish to cite John Reynolds and Peter Landin for their insights into the relationship of Church's lambda calculus to the structure of programming languages. We also recognize our debt to the mathematicians who scouted out this territory decades before computers appeared on the scene. These pioneers include Alonzo Church, Barkley Rosser, Stephen Kleene, and Haskell Curry.
    Bon peut-être aussi qu'ils utilisent Lisp pour l'apprentissage, parce qu'à l'origine ça sort des labos du MIT.
    Mais, moi ça me donne envie de découvrir un peu plus Lisp.

  7. #87
    Membre averti
    Profil pro
    Développeur .NET
    Inscrit en
    février 2005
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : février 2005
    Messages : 198
    Points : 418
    Points
    418

    Par défaut

    Perso, il n'y a pas de meilleur langage. Il y a des langages où intellect l’appréhende plus facilement.

    Certains sont directement plus dans le bain avec python, d'autres avec C ou C++ ou encore Java.

    Je vois un peu cela comme la cuisine. Certains sont à l'aise avec certaines techniques et d'autre pas et inversement.


    Donc pour résumer, le meilleur langage pour apprendre, c'est lui que ton esprit comprend le plus naturellement.

  8. #88
    Nouveau Candidat au Club
    Homme Profil pro
    Commerçant
    Inscrit en
    mars 2013
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Commerçant
    Secteur : Transports

    Informations forums :
    Inscription : mars 2013
    Messages : 1
    Points : 0
    Points
    0

    Par défaut Je suis le seul ici à vraiment débuter... déjà 2 weekends

    Le but d'un débutant en programmation est, je pense, de créer un son programme et au fur et à mesure de cette "tentative" de comprendre comment ça marche. C'est bien plus amusant et à l'approche de ma pension je ne compte plus en faire un métier. (Encore que...)

    J'ai passé 2 weekends de recherches et suivi les conseils de certains d'entre vous: Python/PyCharm! Oui mais... pas d'outils valables! (Pour un débutant) Il y a bien des librairies machin et truc pour créer des fenêtres, encore faut-il savoir les mettre en oeuvre (Je suis un vrai débutant), et un programme sans fenêtre ça sert à quoi?
    Python est fort bien documenté pour les pro. On peut faire du html+css avec Notepad++, voire le bloc-note de Bill, mais c'est quand même plus facile avec Dreamweaver!

    Je découvre à l'instant le couple Pascal/Lazarus (C'est plus à la mode, je sais) et "Les bases de la programmation (Eric Thirion)". Une interface graphique avec affichage du code juste à côté, comme dans DW, et un bouquin bien fait. Je ne suis plus perdu et je me fiche un peu des piles et autres threads, on verra ça plus tard... si besoin...

    Et pour les plus fortunés il y a aussi WinDev et son language-à-lui qui sert juste à faire des programmes d'abord et éventuellement à les comprendre ensuite... (Mais vous les pros je connais vos opinions à propos de ce dernier.)

    Le gars qui veut apprendre la programmation pour juste "savoir programmer" équivaut au condamné à vie qui se met à étudier la géographie...

  9. #89
    Expert confirmé Avatar de DonQuiche
    Inscrit en
    septembre 2010
    Messages
    2 735
    Détails du profil
    Informations forums :
    Inscription : septembre 2010
    Messages : 2 735
    Points : 5 413
    Points
    5 413

    Par défaut

    Citation Envoyé par Michedou Voir le message
    Et pour les plus fortunés il y a aussi WinDev et son language-à-lui qui sert juste à faire des programmes d'abord et éventuellement à les comprendre ensuite... (Mais vous les pros je connais vos opinions à propos de ce dernier.)
    C'est un langage L5G dédié au RAD (rapid application development). C'est très puissant pour ce pour quoi il est fait, pas très intéressant en-dehors de ça.

    En clair, si ton but est de faire une appli consistant essentiellement en des formulaires standards permettant d'éditer une base de données, c'est un bon choix, y compris pour des non-débutants. Pour le reste, ça ne t'avancera pas des masses et ce sera plutôt un frein (manque d'aides sur le web), et il y a d'autres langages dotés d'éditeurs graphiques pour l'ui.

    J'ai passé 2 weekends de recherches et suivi les conseils de certains d'entre vous: Python/PyCharm! Oui mais... pas d'outils valables! (Pour un débutant) Il y a bien des librairies machin et truc pour créer des fenêtres, encore faut-il savoir les mettre en oeuvre (Je suis un vrai débutant), et un programme sans fenêtre ça sert à quoi?
    La discussion se tenait surtout dans le contexte implicite du cours encadré par un professeur. Dans ce contexte le débutant n'étant de toute façon pas capable de construire une application complète avec fenêtres, ça ne sert pas à grand chose de lui faire dessiner des boutons et compagnie, à part pour la motivation, et ça nécessite de le confronter tout de suite à des concepts plus avancés (les objets).

    On préfère donc le faire se concentrer au début sur des exos de base en ligne de commande. Une fois qu'il a assimilé ça, lui expliquer comment créer une fenêtre est un jeu d'enfants en comparaison dans un langage moderne.

    Alors je comprends ton point de vue. Sauf que tu n'as fait qu'éviter le vrai obstacle et que tu vas devoir t'y confronter tôt ou tard et plutôt tôt : celui consistant à écrire un algorithme et pas simplement dessiner des boutons et les câbler cahincaha. A ce moment là tu iras chercher sur Internet quelqu'un qui aura fait exactement ce que tu veux pour continuer à éviter le problème mais évidemment tu ne trouveras pas.

    Donc si à un moment tu te trouves face à un mur infranchissable et que tu ne sais pas comment faire parce que tu n'as pas l'air d'apprendre malgré le temps passé, c'est qu'il est peut-être temps de reprendre les bases avec un bon bouquin d'initiation à la programmation et des exercices en ligne de commande. Après ça tout coulera de source.

    Le gars qui veut apprendre la programmation pour juste "savoir programmer" équivaut au condamné à vie qui se met à étudier la géographie...
    Le début est très difficile, tu es face à un mur. Après c'est seulement difficile mais pas plus que pour un pro et les tâches de base deviennent quand même triviales. Disons que si tu réussis à passer la phase d'apprentissage (le moment où tu sauras écrire des algos basiques - ce sur quoi tu devrais te concentrer au début), le reste s'apprendra bien tout seul.

  10. #90
    Membre averti
    Avatar de mrqs2crbs
    Profil pro
    Inscrit en
    juin 2013
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juin 2013
    Messages : 99
    Points : 315
    Points
    315
    Billets dans le blog
    2

    Par défaut

    Citation Envoyé par Michedou Voir le message
    J'ai passé 2 weekends de recherches et suivi les conseils de certains d'entre vous: Python/PyCharm! Oui mais... pas d'outils valables! (Pour un débutant) Il y a bien des librairies machin et truc pour créer des fenêtres, encore faut-il savoir les mettre en oeuvre (Je suis un vrai débutant), et un programme sans fenêtre ça sert à quoi?
    Python est fort bien documenté pour les pro. On peut faire du html+css avec Notepad++, voire le bloc-note de Bill, mais c'est quand même plus facile avec Dreamweaver!

    Je découvre à l'instant le couple Pascal/Lazarus (C'est plus à la mode, je sais) et "Les bases de la programmation (Eric Thirion)". Une interface graphique avec affichage du code juste à côté, comme dans DW, et un bouquin bien fait. Je ne suis plus perdu et je me fiche un peu des piles et autres threads, on verra ça plus tard... si besoin...
    DonQuiche a bien résumé la situation.

    mais c'est vrai qu'au début on est super impatient d'avoir un résultat visuel.

    si c'est pour te faire plaisir avec un environnement de développement tout en un (où tu peux designer tes interfaces utilisateurs, et où tu t'embêteras pas avec des dépendances externes) va voir ce que ça donne avec Visual Basic + visual studio (je sens que je vais me faire arracher la tête par les développeurs les plus orthodoxes):
    http://msdn.microsoft.com/fr-fr/library/2x7h1hfk.aspx
    tu trouveras pas mal de tutos pour démarrer sur le web

    windows avait aussi sorti http://smallbasic.com/ pour les très grands débutants (mais là je trouve pas de ressources en français, bon d'un autre côté en info il vaut mieux se mettre assez vite à l'anglais --3eme couche--)

    bonne continuation, et puis surtout prend du plaisir.

  11. #91
    Expert éminent sénior

    Profil pro
    Développeur informatique
    Inscrit en
    novembre 2006
    Messages
    6 089
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : novembre 2006
    Messages : 6 089
    Points : 11 540
    Points
    11 540

    Par défaut

    Citation Envoyé par Amine Horseman Voir le message
    Qu’en pensez-vous ?
    Avant d'apprendre à programmer il faudrait apprendre à construire correctement un projet informatique et construire une architecture.

    Donc logiquement il faudrait apprendre UML et les design-patterns , les notions de P.O.O. avant même de pondre la moindre ligne de code...
    j'ai tellement vu de projets mal structurés en milieu professionnel dont un proche de l'échec total...

    ceci dit c'est évident que pour quelqu'un qui n'a jamais vu une ligne de code, il faut bien commencer un jour et commencer par un langage simple pour apprendre la logique de programmation

    Citation Envoyé par williamp Voir le message
    But 2:
    - vite vite trouver un boulot (mal considéré et mal payé)
    C# VB et .NET, si c'est coté client, et Java/Php coté serveur. le reste vous le piquerez sur le tas.
    On ne comprendra rien, on fera des copier-coller, on construira des énormes bousins lents et qui plantent sans possibilité de savoir où ni pourquoi. Il faudra acheter 3 serveurs car sinon cela n'ira pas assez vite...
    .
    c'est exact ; s'il y a des énormes bousins lents comme tu le mentionnes c'est qu'il y a un paquet de gens qui n'ont pas assez d'expérience d'une part et ensuite que les équipes ne savent pas bâtir d'architecture de projet avec des ensembles cohérents de classes métiers notamment...
    * Descartes: "je pense donc je suis"
    * Bob l'éponge : "je pense donc j'essuie"
    * l'infirmière : "je panse donc je suis"

  12. #92
    Rédacteur
    Avatar de pcaboche
    Homme Profil pro
    Inscrit en
    octobre 2005
    Messages
    2 784
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Singapour

    Informations forums :
    Inscription : octobre 2005
    Messages : 2 784
    Points : 9 479
    Points
    9 479

    Par défaut

    Citation Envoyé par Mat.M Voir le message
    Avant d'apprendre à programmer il faudrait apprendre à construire correctement un projet informatique et construire une architecture.

    Donc logiquement il faudrait apprendre UML et les design-patterns , les notions de P.O.O. avant même de pondre la moindre ligne de code...
    j'ai tellement vu de projets mal structurés en milieu professionnel dont un proche de l'échec total...
    Il ne faut pas oublier : la POO est une avancée par rapport à la programmation procédurale, et c'est devenu quasiment le standard dans l'industrie (C++, Java, C#...)

    Cependant, en POO il est très facile de se planter (multiplication des classes, gestion des effets de bords en tous genres : exceptions, multi-threading...). Donc à mon avis, il faut prendre du recul...

    Pour apprendre à programmer, je dirais :

    SQL (et toute l'algèbre relationnelle qui va avec).

    OCaml
    Même si c'est de moins en moins utilisé, c'est très formateur :
    - on apprend à réfléchir sur la manière de résoudre un problème, et la complexité (notation grand O)
    - récursivité
    - système de typage (typage statique, inférence de type, Variants...)
    - types génériques (ex: 'a)
    - fonctions d'ordre supérieur
    - pile et consommation mémoire (récursivité terminale ou pas)

    À un moment on atteindra les limites du langage (notamment : manque de bibliothèques, de parallelisme...), mais en ayant acquis au passage un certain bagage.
    On peut alors directement se tourner vers F#, ou bien Haskell (pour les plus téméraires).

    F#
    Une grande partie de ce que l'on a appris en OCaml est directement transférable à F# (mais F# possède quelques subtilités propres à .Net; le fait de commencer par OCaml se concentrer sur les principes de base).

    On découvre par exemple qu'il y a plus d'exceptions et des fonctionalités propres (ex: Sequence).
    Et ça permet de se familiariser avec .Net

    C#
    On déjà les base d'algorithmie, on aborde la POO mais on n'est pas complètement dépaysé :
    - énumération, hierarchies de classe (Variants)
    - inférence de type (let a = ... var a = ...), typage statique
    - types génériques ('a list List<T>)
    - lambdas
    - Linq (c'est là qu'on apprécie de comprendre les lambdas et l'algèbre relationnelle...)

    Donc on n'est pas complètement perdu.
    Les plus grands changements : une syntaxe plus verbeuse, les variables sont toutes "mutables", il y a beaucoup d'exceptions et plus de risques d'effets de bord...

    Après, c'est surtout une question de s'habituer à des outils de plus en plus complexes ou des langages de plus en plus verbeux (Java, C++...)

    Mais bon, tout ça risque de disparaître...
    En effet, le jour où on aura des ordinateurs quantiques, on programmera sans doute dans d'autres types de langages; peut-être quelque chose plus proche de Prolog (diverses clauses d'un prédicat donné quantum superposition; unification de variable quantum entanglement).
    Enfin là, je m'avance beaucoup (et je ne trouve pas d'études allant dans ce sens).
    "On en a vu poser les armes avant de se tirer une balle dans le pied..."
    -- pydévelop

    Derniers articles:

    (SQL Server) Introduction à la gestion des droits
    (UML) Souplesse et modularité grâce aux Design Patterns
    (UML) Le Pattern Etat
    Autres articles...

  13. #93
    Membre émérite

    Homme Profil pro
    Responsable développement
    Inscrit en
    décembre 2003
    Messages
    1 696
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Responsable développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : décembre 2003
    Messages : 1 696
    Points : 2 963
    Points
    2 963

    Par défaut

    Bonjour.

    J'ai voté pour le langage C, même si j'ai très vite lâché ce langage pour le C++.

    J'ai choisi ce langage pour la rigueur qu'il impose au développeur (cela pourrait très bien être un autre langage qui a les mêmes contraintes, mais je ne les connais pas).

    Le typage fort est une contrainte qui oblige le développeur à ne pas mélanger les choux avec les carrottes. Un int est un int, un float est un float. La gestion des pointeurs, des pointeurs de pointeurs, etc... oblige un débutant à se triturer le cerveau, et donc à être précis et rigoureux. Et surtout à comprendre ce qui se passe.

    Des langages avec des var, auto, $toto = 1 puis $toto = "Trop cool le php", ne sont pas des langages qui apprennent la rigueur. Ils apprennent surtout qu'on peut faire les choses de 50 façons différentes, et c'est cela qui sera déroutant pour un débutant. L'informatique, c'est de la rigueur et de la constance, tout langage "d'apprentissage" qui s'inscrit dans cet esprit sera le bienvenu pour les futurs développeurs.

    Après, je suis d'accord que l'on peut se lancer dans l'informatique à partir de n'importe quel langage. J'ai voté C parce qu'à mon sens, c'est celui qui fournira les bases les plus solides, de par la rigueur qu'il impose. Je ne suis pas en train de dire que l'on ne peut pas être rigoureux si l'on ne fait pas du langage C, mais que ce langage prépare plus rapidement à la rigueur nécessaire à tous les projects des autres langages.

    Après pour ne pas citer plusieurs messages, la programmation n'est pas un fin en soi. Un informaticien doit ingérer de nombreuses notions (OS, réseau, BD, algo, architecture des machines, etc... etc...), avec le dosage adéquat selon les compétences.
    Media Foundation video decoder mpeg1/mpeg2, MediaSource Kinect
    http://sourceforge.net/projects/mfnode/

    http://jeux.developpez.com/faq/directx/?page=dshow

  14. #94
    Expert éminent
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    août 2003
    Messages
    5 113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : août 2003
    Messages : 5 113
    Points : 9 796
    Points
    9 796

    Par défaut

    Citation Envoyé par moldavi Voir le message
    J'ai choisi ce langage pour la rigueur qu'il impose au développeur (cela pourrait très bien être un autre langage qui a les mêmes contraintes, mais je ne les connais pas).
    Le C requiert de la rigueur, mais il n'est pas un bon langage pour l'apprendre. Cet argument est une vaste blague que l'on voit régulièrement.

    (je copie-colle des choses que j'ai déjà dites ailleurs)

    La majorité des cours est faite de telle sorte que la rigueur passe à la trappe car sinon les codes C seraient incompréhensibles pour des élèves débutants. Du coup, ce n'est pas du tout le premier truc appris ou retenu. Bien au contraire.

    Résultat, beaucoup de codes C que l'on trouve ne passent pas le test "de Chen" (un if toutes les deux lignes, lien donné il y a 2-3 pages). En partie à cause des mauvaises pratiques (car pratiques simplifiées pour des cours) enseignées qui restent, en partie par fainéantise ("ouais, ça arrive jamais ça, on a toujours assez de RAM", ou encore "bon, alors si vous voulez que l'on prenne en compte ce cas dégradé, ça coutera deux jours de plus"). Et oui, il faudrait être rigoureux et avoir ces ifs toutes les deux lignes. Mais non, dans les faits rares sont ceux à qui cette rigueur a été enseignée, et rares ceux sont qui ont compris l'intérêt de cette rigueur. Regarder la proportion des appels foireux à realloc dans les codes C est aussi un bon indice de cette rigueur qui n'est pas du tout acquise dans ce langage qui est soit disant censé l'enseigner....

    Les quelques qui vont retenir cette rigueur, ou même seulement entre-percevoir cette rigueur, c'est dû au travail supplémentaire (et probablement personnel) qu'ils ont fourni alors que cela ne leur était pas demandé.


    Bref, j'assume mon "foutaises" quand j'entends/lis que "le C enseigne la rigueur". C'est tout le contraire dans les faits.

    L'Ada qui l'impose (parce que sinon ça ne compile pas -- à contrario de parce que sinon ça va pas planter à la pleine lune) a plus de chance de donner des notions de rigueur que le C à des élèves débutants.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  15. #95
    Expert éminent
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    août 2003
    Messages
    5 113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : août 2003
    Messages : 5 113
    Points : 9 796
    Points
    9 796

    Par défaut

    J'y pense, sur le sujet de "par quel langage commencer entre C et C++ ?", il y avait eu cet article, et la discussion qui s'en était suivie -> http://www.developpez.net/forums/d12...e-debutants-c/

    Certes, le débat est très restreint car les autres langages comme Ada, Pascal, OCaml, voire LISP, Python ou Ruby ne sont pas abordés. Mais cela donnera peut-être des précisions à ceux qui perpétuent la tradition du bas-niveau d'abord sur pourquoi la communauté C++ est globalement en désaccord avec ça.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  16. #96
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    août 2011
    Messages
    337
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : août 2011
    Messages : 337
    Points : 996
    Points
    996

    Par défaut

    Faire commencer par C ou C++ c'est : je t'attache une enclume aux pieds, je te balance dans la piscine, nage.

    Les autres langages de programmation, les enclumes seront juste un peu moins lourdes.

    Faut pas rêver, les langages utilisés en production ne sont pas des langages aux vertus pédagogiques insoupçonnées, ils n'ont juste pas été conçus pour ça. Et quand je vois certains proposer des langages fonctionnels... Pour des matheux peut-être, et encore !

  17. #97
    Débutant
    Profil pro
    Inscrit en
    mai 2006
    Messages
    687
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mai 2006
    Messages : 687
    Points : 167
    Points
    167

    Par défaut

    Prolog est un bon choix je pense de part sa flexibilité et sa concision

  18. #98
    Membre expérimenté Avatar de nirgal76
    Homme Profil pro
    Autre
    Inscrit en
    septembre 2007
    Messages
    736
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : septembre 2007
    Messages : 736
    Points : 1 483
    Points
    1 483

    Par défaut

    Pour les mêmes raisons que les autres, je dirais le C (ou le pascal, delphi permet d'apprendre rapidement).
    ensuite, apprendre au développeur en devenir qu'on ne fait pas tout avec un seul langage mais que l'on doit utiliser le plus approprié à ce que l'on veut réaliser.

  19. #99
    Rédacteur
    Avatar de pcaboche
    Homme Profil pro
    Inscrit en
    octobre 2005
    Messages
    2 784
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Singapour

    Informations forums :
    Inscription : octobre 2005
    Messages : 2 784
    Points : 9 479
    Points
    9 479

    Par défaut

    Citation Envoyé par GPPro Voir le message
    Et quand je vois certains proposer des langages fonctionnels... Pour des matheux peut-être, et encore !
    En même temps, si c'est pour se retrouver avec des gens ayant une licence d'info mais n'arrivent pas à écrire une fonction récursive, c'est pas si déconnant que ça...

    En effet j'ai vu pas mal de gens qui, sortis des boucles for et while, sont complètement perdus. Ça fait peur.

    Et puis qu'est-ce qu'on entend par "matheux" ? On demande de faire des algos simples, pas des équations différentielles, des transformées de Fourier ou des statistiques. Pour cela il y a MatLab ou R.


    Sinon, plutôt que de faire du C / C++ (comme tu dis, c'est comme nager avec une enclume), je trouve que Delphi est vraiment bien pour débuter.
    Malheureusement, il est en perte de vitesse.
    "On en a vu poser les armes avant de se tirer une balle dans le pied..."
    -- pydévelop

    Derniers articles:

    (SQL Server) Introduction à la gestion des droits
    (UML) Souplesse et modularité grâce aux Design Patterns
    (UML) Le Pattern Etat
    Autres articles...

  20. #100
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    août 2011
    Messages
    337
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : août 2011
    Messages : 337
    Points : 996
    Points
    996

    Par défaut

    Citation Envoyé par pcaboche Voir le message
    En même temps, si c'est pour se retrouver avec des gens ayant une licence d'info mais n'arrivent pas à écrire une fonction récursive, c'est pas si déconnant que ça...

    En effet j'ai vu pas mal de gens qui, sortis des boucles for et while, sont complètement perdus. Ça fait peur.

    Et puis qu'est-ce qu'on entend par "matheux" ? On demande de faire des algos simples, pas des équations différentielles, des transformées de Fourier ou des statistiques. Pour cela il y a MatLab ou R.


    Sinon, plutôt que de faire du C / C++ (comme tu dis, c'est comme nager avec une enclume), je trouve que Delphi est vraiment bien pour débuter.
    Malheureusement, il est en perte de vitesse.
    Le fonctionnel c'est rajouter une couche de complexité à quelque chose de non trivial à la base. Penser fonctionnel ne vient pas naturellement. C'est en ça que proposer un langage fonctionnel pour des débutants est aberrant. Après évidemment si dans le bagage du débutant tu mets la récursivité...

Discussions similaires

  1. Quel est le meilleur langage pour débuter la programmation ?
    Par Amine Horseman dans le forum Actualités
    Réponses: 144
    Dernier message: 28/11/2014, 17h06
  2. Quel est le meilleur langage pour la reconnaissance d'empreintes ?
    Par hanou88 dans le forum Traitement d'images
    Réponses: 4
    Dernier message: 09/02/2011, 07h58
  3. Débat : Quel est le meilleur langage pour coder en open-source ?
    Par Katleen Erna dans le forum Actualités
    Réponses: 15
    Dernier message: 17/08/2009, 10h54
  4. Quel est le meilleur langage pour la portabilité : Windows & Linux (voire Mac) ?
    Par iubito dans le forum Débats sur le développement - Le Best Of
    Réponses: 57
    Dernier message: 26/11/2007, 23h45
  5. Réponses: 4
    Dernier message: 12/05/2007, 00h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo