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

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

    85 30,69%
  • C++

    36 13,00%
  • Python

    55 19,86%
  • Ruby

    16 5,78%
  • Java

    29 10,47%
  • C#

    12 4,33%
  • PHP

    9 3,25%
  • Matlab

    9 3,25%
  • HTML/CSS

    8 2,89%
  • OCaml

    14 5,05%
  • 1 0,36%
  • 1 0,36%
  • 1 0,36%
  • 1 0,36%
+ Répondre à la discussion Actualité déjà publiée
Page 4 sur 14 PremièrePremière 12345678 ... DernièreDernière
  1. #61
    Membre habitué

    Profil pro
    Inscrit en
    septembre 2008
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : septembre 2008
    Messages : 90
    Points : 151
    Points
    151

    Par défaut

    Tout dépend du but du programmeur futur je dirais , quelqu'un qui ne veut faire que du web n'aura pas forcément besoin de certains concepts cela n'empêche pas une certaine rigueur qui est assez indépendante du langage même si certains sont mal foutus sur certains points. quelqu'un de réellement motivé y arrivera. Le langage que j'ai le plus investi c'est le Ruby à titre personnel mais je comprend bien que le C n'offre pas le même niveau d'abstraction.

  2. #62
    Rédacteur/Modérateur

    Avatar de yahiko
    Homme Profil pro
    Ninja
    Inscrit en
    juillet 2013
    Messages
    1 139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ninja

    Informations forums :
    Inscription : juillet 2013
    Messages : 1 139
    Points : 6 450
    Points
    6 450
    Billets dans le blog
    43

    Par défaut

    Plutôt que de bourrer le crâne des étudiants dès le départ avec des notions bas niveau qui n'ont d'incidence que dans ces cas d'utilisations précis (e.g. la représentation interne des flottants), je préfèrerai par exemple que les enseignants en programmation insistent sur l'art de bien écrire les algorithmes, de bien indenter son code, de bien nommer ses variables, d'écrire du code lisible et maintenable, à bien réaliser les tests unitaires, etc, parce que ça, une fois que tu as pris de mauvaises habitudes, c'est très difficile à changer et ça a un coût énorme pour les entreprises.

    Donc vos histoires de bas niveau, j'ai plus l'impression que c'est pour se mousser intérieurement en se disant : "ouaip, moi je suis un bon, car je connais". Sauf que ce n'est pas le principal problème de l'industrie du logiciel.
    Tutoriels et FAQ TypeScript

  3. #63
    Membre éclairé
    Homme Profil pro
    Développeur Java
    Inscrit en
    septembre 2011
    Messages
    258
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : septembre 2011
    Messages : 258
    Points : 847
    Points
    847

    Par défaut

    Citation Envoyé par yahiko Voir le message
    Plutôt que de bourrer le crâne des étudiants dès le départ avec des notions bas niveau qui n'ont d'incidence que dans ces cas d'utilisations précis (e.g. la représentation interne des flottants), je préfèrerai par exemple que les enseignants en programmation insistent sur l'art de bien écrire les algorithmes, de bien indenter son code, de bien nommer ses variables, d'écrire du code lisible et maintenable, à bien réaliser les tests unitaires, etc, parce que ça, une fois que tu as pris de mauvaises habitudes, c'est très difficile à changer et ça a un coût énorme pour les entreprises.
    C'est pas vraiment incompatible avec des notions plus techniques et bas niveau ça ^^

    C'est plutôt de profs comprenant ces enjeux dont on manque, en fait... Pas assez de temps passé en entreprise ^^

  4. #64
    Membre émérite
    Avatar de MarieKisSlaJoue
    Homme Profil pro
    Consultant Office 365
    Inscrit en
    mai 2012
    Messages
    691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Consultant Office 365
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mai 2012
    Messages : 691
    Points : 2 845
    Points
    2 845
    Billets dans le blog
    20

    Par défaut

    Citation Envoyé par codec_abc Voir le message
    La programmation n'est pas facile par nature et ne le sera sans doute jamais. C'est peut-être pour cela qu'on paye des programmeurs : Parce que ca reste un métier avant tout.

    Pour en revenir sur le langage à apprendre en premier je maintiens qu'il faut un langage bas niveau. Sinon un débutant peut-être confronté à un problème dès lors qu'il fait une simple addition. Exemple en python :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    def shouldAlwaysReturnTrue(x, y) :
      return x + y - x == y
    
    x = 2.0
    y = 1.0
    result = shouldAlwaysReturnTrue(x, y)
    print result
    
    x = 1.0E100
    y = 1.0E-5
    result = shouldAlwaysReturnTrue(x, y)
    print result

    L'exemple montre qu'une "formule" mathématique (x + y - x = y) qui est censé être toujours vrai pour n'importe quel nombre devient "mystérieusement" fausse pour certaines valeurs. Comme quoi, l'abstraction fourni par le langage n'a pas durée longtemps. Évidement, ca s'explique à cause de la nature des nombres flottants et de leur représentation. Mais sans aborder des notions bas niveau, on ne peut pas l'expliquer. Donc plutôt que de laisser une personne découvrir cela par lui-même (ce qui peut-être douloureux), autant lui expliquer dès le début.
    j'suis obligé de réagir car c'est exactement la question que je me suis posé récemment. http://www.developpez.net/forums/d14...ction-doubles/
    En effet j'étais tombé sur quelque chose de mystérieux. Et truc de dingue hein. J’ai chercher à comprendre pourquoi ce résultat. Et oui on peu donc faire du haut niveau comme java et d’intéressé à des problème de bas niveau. Tien d'ailleurs j'ai bien sur eux des cours de C, donc comme on semble dire ici, j'ai "appris comment fonctionnait la machine"

    Ah bah tien, ça m'a absolument pas servis.

    Voila, java C, on s'en fous, si t'es pas curieux tu ne quittera de toute façon jamais ta zone de confort et n'apprendra jamais rien de plus que ce que tu as vu en formation.

  5. #65
    Membre actif Avatar de KsassPeuk
    Homme Profil pro
    Doctorant
    Inscrit en
    juillet 2013
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : juillet 2013
    Messages : 76
    Points : 275
    Points
    275

    Par défaut

    Citation Envoyé par yahiko Voir le message
    Donc vos histoires de bas niveau, j'ai plus l'impression que c'est pour se mousser intérieurement en se disant : "ouaip, moi je suis un bon, car je connais". Sauf que ce n'est pas le principal problème de l'industrie du logiciel.
    Citation Envoyé par codec_abc Voir le message
    -Tu obtiens un "stackoverflow exception" quand tu fais trop d'appel récursif.
    -Tu ne peux allouer plus de 4Go de données dans un programme sur un OS 32 bits.
    -Tu ne peux pas mélanger des dlls natives 32 et 64 bits.
    -Un if dont l'issue est souvent la même est plus rapide qu'un if dont l'issue change souvent.
    -Et il y en surement d'autres qui ne me viennent pas à l'esprit.
    @yahiko : pour le coup, ici tu vas trop loin, toutes ces choses, ce n'est pas pour se faire mousser, c'est des vrais problématiques qui peuvent avoir un impact très loin d'être négligeable sur la qualité des logiciels typiquement parce que ...
    @codec_abc : ces problèmes, on peut (c'est pas un cas général) y être confronté. Mais on est très loin de l'étape "j'apprends à faire un programme qui fonctionne" que j'ai mentionné dans mon premier post. On est plutôt à l'étape "je veux faire des programmes qui sont très performants" (et encore un peu dans le "je veux dialoguer finement avec l'OS" pour tes points 2. et 3.).
    Le truc, c'est qu'on optimise quand ça vaut le coût. Et pour ça, il faut d'abord apprendre à isoler les parties du code qui ne sont pas suffisamment performantes, la plupart du temps les hausses de performances se produiront en modifiant les choses à haut niveau. Et progressivement, quand tu auras optimiser les couches supérieures, il faudra faire mieux au niveau inférieur, etc ... Mais tout ça, c'est des problématiques qui sont hors du cadre de "débuter en programmation".
    En particulier, toutes ces optimisations, tu ne pourras les faire sereinement que sur un code robuste, lisible et maintenable d'où :

    Citation Envoyé par yahiko Voir le message
    ... les enseignants en programmation insistent sur l'art de bien écrire les algorithmes, de bien indenter son code, de bien nommer ses variables, d'écrire du code lisible et maintenable, à bien réaliser les tests unitaires, etc ...
    Parce que tout ceci aura un impact bien plus fort sur la qualité des logiciels produits.

    Citation Envoyé par DevTroglodyte Voir le message
    C'est pas vraiment incompatible avec des notions plus techniques et bas niveau ça ^^
    Et justement, là je trouve que (à défaut d'être complètement incompatible), c'est très loin d'être facile. Les cours de programmation, comme tout le reste, ont des plannings serrés. Apprendre à programmer ce n'est pas facile et rajouter en plus un gros bagage technique et (il faut le dire) pas forcément facile à assimiler, c'est un bon moyen de noyer l'apprenant sous une trop grande quantité d'information à la fois.

    EDIT : typos. (Et je ne sais toujours pas ce que C apprend au sujet de la machine).

  6. #66
    Expert éminent
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    août 2003
    Messages
    5 142
    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 142
    Points : 9 983
    Points
    9 983

    Par défaut

    Citation Envoyé par grunk Voir le message
    Il me semble quand même assez primordial de comprendre (au moins globalement) ce qui se passe par exemple derrière un x = new X();.

    L'algorithmie ,pour moi , ça découle plus des maths et d'une certaine logique de l'esprit. La programmation ça demande (sauf très haut niveau) de comprendre ce que fait la machine suite à une commande si on veux pas faire n'importe quoi.


    Quand on aborde les points dont tu parles , on est déjà plus vraiment dans le débutant en programmation. Quand je parle de type c'est savoir ce qu'est un int , un float , découvrir ce que retourne un sizeof(int) et comprendre ce que ça implique sur la mémoire de l'ordinateur ... mais effectivement y'a sans doute mieux que le C.

    Perso j'ai appris avec de l'assembleur puis du C et ce après des cours magistraux sur le fonctionnement d'un PC. J'ai pas refait de C ni d'assembleur depuis plus de 10 ans (et ca me manque pas) mais je suis assez persuadé que un socle technique solide permet d'évoluer bien plus facilement.
    Quand on débute, on n'en a que faire que faire de la taille des nombres ou de ce qui se passe derrière une allocation (que l'on n'a pas besoin de voir avant le polymorphisme en C++).
    Ce qui nous intéresse, c'est l'algorithmie et rien d'autre. Enfin, si. un langage qui permette de tester les algos sans se prendre le choux avec les détails.
    Et de préférence un langage qui permette de tester des algos tout en écrivant des codes corrects histoire de ne pas donner des mauvaises habitudes aux étudiants une fois qu'ils seront en industrie. Et sur ce point, le C est un échec complet.

    Commencer par un langage type Ada, Pascal, voir Python est très bien. Une fois l'algo comprise, des apprenants appelés à devenir de futurs développeurs professionnels pourront se voir enseigner le bas niveau C et/ou asm(s), et en parallèle fonctionnel, OO, déclaratif, etc. Et encore je ne parle que de développeurs, et pas des métiers connexes : BD, IHM, réseau, dev web, etc.

    Bref, oui le C est important pour un développeur professionnel, mais pas en premier : sauf si vous voulez défendre votre beefsteak et limiter le nombre de concurrents dans la profession.

    Citation Envoyé par DonQuiche Voir le message
    Il y a quand même des choix très étonnants, comme le C++, [...]
    C'est tout plutôt que le C en premier langage en ce qui me concerne.
    Et effectivement, le choix du C++ comme premier langage est étonnant. C'est le pari qu'avait fait Francis Glassborrow dans son "Je me Lance" : il enseigne à une ancienne comptable quadra (ou plus, je ne sais plus) les rudiments de la programmation avec le C++ en langage support. Par contre, il ne montre qu'un C++ procédural avec 0 allocation, 0 template, 0 exception, 0 OO, mais des codes 100% corrects et robustes et simples (la chose équivalente est possible en Ada, mais pas en C).
    C'est sûr que si vous ne voulez pas de ce genre de profil comme collègue, il faut imposer le C comme premier langage.

    Citation Envoyé par qvignaud Voir le message
    Étant personnellement concerné par la question jusqu'à il y a peu (actuellement en seconde année d'études), je me permet d'affirmer que débuter par un langage "strict" tel que le C me semble est une très bonne approche, pour diverses raisons :
    • il oblige à comprendre la machine ;
    • il oblige à « tout prévoir » (en termes de mémoire et de types) ;
    • et étant compilé, on est obligé de passer par une phase de « est-ce que LA logique comprend MA logique ? » (et par conséquent « est-ce que ma logique correspond à celle de la machine ? ».)
    Le C ne donne qu'une vision très superficielle de la machine : rien sur les caches, les pielines, les micro-instructions qui servent à programmer les instructions assembleur, ... (Au mieux on perçoit l'ombre des performances qui vacille suivant ce que l'on fait depuis la grotte). Cependant, cela permet de se familiariser avec l'abstraction répandue d'une machine qui offre de la mémoire comme ressource.
    Il oblige à tout prévoir oui. Mais aucun code enseigné à des débutants ne passe le test de Raymond Chen (un if toute les deux lignes). On ne peut pas leur (aux débutants) enseigner un C utilisé correctement. Les profs qui enseignent le C à des débutants sont obligés de le faire au pays magique où les problèmes n'existent pas.

    Citation Envoyé par DevTroglodyte Voir le message
    Ben non, justement, on ne fait pas dans l'approximatif et le vague. C'est pour ça que je trouve aberrant de voir des enseignements de la programmation uniquement sur du haut niveau... ça donne des gens qui trouvent que tout ce que fait la machine est magique, et qui n'ont qu'une très vague idée de comment leur code va commander à la machine. C'est certes plus motivant de voir rapidement le résultat de ce qu'on a codé et appris, mais pas si ça se fait aux dépends de notions importantes.
    Tout à fait, il ne faut pas montrer que le haut niveau. Il faut une fois, l'algorithmie acquisse, montrer des rudiments de bas-nivau. Mais certainement pas commencer par ça.

    Dans votre débat, vous avez perdu l'aspect ordre. Quand on vous dit : "pas de C en premier", vous retenez "pas de C". On dit juste : "pas en premier". Et rien d'autre. En premier il faut un langage qui permette de se concentrer sur l'algo sans avoir son attention détournée par des détails qui ne sont pas pertinents au tout début de la phase d'apprentissage.
    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...

  7. #67
    Membre averti Avatar de Aizen64
    Profil pro
    Inscrit en
    mai 2007
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mai 2007
    Messages : 488
    Points : 374
    Points
    374

    Par défaut

    Citation Envoyé par rt15 Voir le message
    Heu... Pas sûr de comprendre la phrase mais les ArrayList de java ne sont pas des listes chainées. Les ArrayList contiennent principalement une taille et une référence vers un tableau de références.
    Pour une liste chainée, regarder LinkedList.

    Pièce jointe 161857

    Cette représentation mémoire est d'ailleurs franchement trop compliqué dans le cas d'une liste d'entiers, et il y a des gens qui travaillent (enfin) pour que java 10 permettent d'avoir un tableau d'entiers plutot qu'un tableau de référence dans ces listes (Value types).

    Java nous détache vraiment beaucoup de ce qui se passe réellement en mémoire et sur le processeur, et la représentation mémoire de mon screenshot ne nous dit pas tout ! Il y a des champs cachés un peu partout...

    Un bon programmeur C ou assembleur sait souvent mieux comment marche vraiment le java qu'un programmeur java.
    Autant pour moi, la faute à me rappeler ce que ma prof de dev m'avais dit sans vérifier la doc.
    Exprimer une différence d'opinion vaut mieux que :

  8. #68
    Membre actif
    Profil pro
    Inscrit en
    septembre 2009
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : septembre 2009
    Messages : 114
    Points : 270
    Points
    270

    Par défaut

    Citation Envoyé par Luc Hermitte Voir le message
    Dans votre débat, vous avez perdu l'aspect ordre. Quand on vous dit : "pas de C en premier", vous retenez "pas de C". On dit juste : "pas en premier". Et rien d'autre. En premier il faut un langage qui permette de se concentrer sur l'algo sans avoir son attention détournée par des détails qui ne sont pas pertinents au tout début de la phase d'apprentissage.
    Il me semble plutôt que c'est la situation inverse. Apprendre l'algorithmie et apprendre à programmer sont deux choses différentes. L'algorithmie consiste à trouver une suite d'opérations logiques pour résoudre un problème. On a absolument pas besoin de langage de programmation pour ca. La programmation consiste en l'écriture d'un algorithme dans un langage donné pour être traduit en suite d'opération élémentaire exécutable par une machine.

  9. #69
    Invité
    Invité(e)

    Par défaut

    N'importe quel langage fait l'affaire du moment, que l'étudiant S'initie ! à la programmation et non qu'il apprenne en profondeur, qui demande un minimum de savoir que la définition d'un programme en général (suite d'instruction blabla).

    Ça dépend des goûts et des couleurs (perso j'ai étudié avec un langage A, puis j'ai découvert un langage B et me suit rendu compte que j'aurais préféré fortement apprendre avec le langage B).

    Et puis-je rappelé qu'on en apprend tous les jours dans ce domaine, qu'est la programmation.

    Après pour une réponse concrète, je dirais de laisser au candidat le choix du langage d'initiation et ne pas être "esclave" d'un prof qui enseigne qu'un seul langage (le sien)

  10. #70
    Rédacteur/Modérateur

    Avatar de yahiko
    Homme Profil pro
    Ninja
    Inscrit en
    juillet 2013
    Messages
    1 139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ninja

    Informations forums :
    Inscription : juillet 2013
    Messages : 1 139
    Points : 6 450
    Points
    6 450
    Billets dans le blog
    43

    Par défaut

    Citation Envoyé par codec_abc Voir le message
    Il me semble plutôt que c'est la situation inverse. Apprendre l'algorithmie et apprendre à programmer sont deux choses différentes. L'algorithmie consiste à trouver une suite d'opérations logiques pour résoudre un problème. On a absolument pas besoin de langage de programmation pour ca. La programmation consiste en l'écriture d'un algorithme dans un langage donné pour être traduit en suite d'opération élémentaire exécutable par une machine.
    Désolé pour toi, mais tu viens de perdre toute crédibilité à mes yeux.
    A moins que tu n'étais pas sérieux en écrivant ça...
    Tutoriels et FAQ TypeScript

  11. #71
    Membre actif
    Profil pro
    Inscrit en
    septembre 2009
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : septembre 2009
    Messages : 114
    Points : 270
    Points
    270

    Par défaut

    Citation Envoyé par yahiko Voir le message
    Désolé pour toi, mais tu viens de perdre toute crédibilité à mes yeux.
    Et pour quelle raison mon bon monsieur ?

  12. #72
    Expert éminent
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    août 2003
    Messages
    5 142
    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 142
    Points : 9 983
    Points
    9 983

    Par défaut

    Citation Envoyé par codec_abc Voir le message
    Il me semble plutôt que c'est la situation inverse. Apprendre l'algorithmie et apprendre à programmer sont deux choses différentes. L'algorithmie consiste à trouver une suite d'opérations logiques pour résoudre un problème. On a absolument pas besoin de langage de programmation pour ca. La programmation consiste en l'écriture d'un algorithme dans un langage donné pour être traduit en suite d'opération élémentaire exécutable par une machine.
    Là tu parle alors d'apprendre à programmer dans un langage donné. Et tous les langages ne s'utilisent pas de la même façon -- et ce n'est donc pas le propos initial de ce fil de discussion. S'il était facile d'apprendre à utiliser les BASIC ou le Pascal juste à partir de leur grammaire et de leur syntaxe, la chose n'est pas vraie pour des langages plus aliens comme le Prolog ou xslt (qui se programment), ou des langages qui exigent de connaitre des recettes/bonnes pratiques si on veut espérer pondre quelque chose qui tienne la route (comme le C++).

    Bref, et c'est pareil dans toutes les formations, tu ne peux pas lancer l'apprentissage du développement sans par passer par l'apprentissage de l'algorithmie, ou même de la conception. Il est illusoire de vouloir décorréler langage et algorithmie de la sorte.
    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...

  13. #73
    Membre actif
    Profil pro
    Inscrit en
    septembre 2009
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : septembre 2009
    Messages : 114
    Points : 270
    Points
    270

    Par défaut

    Citation Envoyé par Luc Hermitte Voir le message
    Là tu parle alors d'apprendre à programmer dans un langage donné.
    C'est bien le sujet non ?

    Citation Envoyé par Luc Hermitte Voir le message
    Il est illusoire de vouloir décorréler langage et algorithmie de la sorte.
    J'ai eu des cours d'algorithmie en pseudo-code sur papier avant d'être initier sur machine. Et ca fonctionnait comme méthode d'enseignement.

  14. #74
    Expert éminent
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    août 2003
    Messages
    5 142
    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 142
    Points : 9 983
    Points
    9 983

    Par défaut

    Non. Le sujet est quel langage pour apprendre à programmer.
    Et pas quel langage pour apprendre à programmer en C++ (ou autre) -- Vous pouvez trouver ça idiot, et pourtant, prolog et lisp m'avaient bien aidé à appréhender la méta-programmation en C++. Et j'ai l'impression qu'un langage à Monades va avoir sont intérêt vu certains articles que je croise en ce moment relativement aux ranges qui sont en préparation pour le C++17)
    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. #75
    Membre actif
    Profil pro
    Inscrit en
    septembre 2009
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : septembre 2009
    Messages : 114
    Points : 270
    Points
    270

    Par défaut

    Citation Envoyé par Luc Hermitte Voir le message
    Non. Le sujet est quel langage pour apprendre à programmer.
    Et donc je peux répondre C.

    Citation Envoyé par Luc Hermitte Voir le message
    Vous pouvez trouver ça idiot, et pourtant, prolog et lisp m'avaient bien aidé à appréhender la méta-programmation en C++. Et j'ai l'impression qu'un langage à Monades va avoir sont intérêt vu certains articles que je croise en ce moment relativement aux ranges qui sont en préparation pour le C++17)
    C'est tout à fait possible. Et je suis moi-même en train d'apprendre Haskell, comme quoi on peut pas me taxer de quelqu'un qui veut voir que des 0 et des 1 Après, il faut bien dissocier deux choses les concepts utilisés dans certains langages et les langages de programmation eux-mêmes. On peut tout à fait comprendre ce qu'est une monade sans faire de programmation (d'ailleurs cette notion vient du monde mathématique).

    J'imagine que la question aurait été moins stérile si on avait précisé si on cherchait à enseigner certains concepts utile pour programmer (que l'on peut enseigner dans un contexte général) ou si le but est d'apprendre à faire un programme fonctionnel (ou on va probablement se restreindre à langage et un périmètre bien défini)

    Après, je pense qu'il faut un minimum comprendre comment "ca fonctionne en dessous" pour faire un programme fonctionnel, ou du moins avoir conscience des limites de son programme. Ce n'est peut-être pas votre vision des choses mais comme c'est la façon dont on m'a appris à programmer, j'ai pu par moi-même constaté les limites de cette approche.

  16. #76
    Membre émérite
    Avatar de MarieKisSlaJoue
    Homme Profil pro
    Consultant Office 365
    Inscrit en
    mai 2012
    Messages
    691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Consultant Office 365
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mai 2012
    Messages : 691
    Points : 2 845
    Points
    2 845
    Billets dans le blog
    20

    Par défaut

    Citation Envoyé par codec_abc Voir le message
    Après, je pense qu'il faut un minimum comprendre comment "ca fonctionne en dessous" pour faire un programme fonctionnel, ou du moins avoir conscience des limites de son programme. Ce n'est peut-être pas votre vision des choses mais comme c'est la façon dont on m'a appris à programmer, j'ai pu par moi-même constaté les limites de cette approche.
    Je suis en total désaccord avec ton avis mais j'aime bien l'idée de constaté les limites d'une approche.
    Il faudrait peut être commencer à tourner les débat de apprentissage du code par, quelles sont les limites quand on commence par le procédurale avec une gestion de la mémoire (Comme en C), quelles sont les limites quand on commence à apprendre par le procédurale sans gestion de la mémoire (Comme en python), quelles sont les limites quand on commence à apprendre par l'orienté objet.

    Je continue pas les exemples, mais on aurai au moins un débat de fond sur les limites de chaque approche, et à quel type de profil elle convient. Ça serai beaucoup plus intéressant à suivre que ce qui ressemble à une guerre de clocher...

    Bon pour commencer il faudrait qu'on arrête les articles avec dedans "Le meilleurs langage..."

  17. #77
    Expert éminent
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    août 2003
    Messages
    5 142
    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 142
    Points : 9 983
    Points
    9 983

    Par défaut

    Citation Envoyé par codec_abc Voir le message
    a- Et donc je peux répondre C.

    b- J'imagine que la question aurait été moins stérile si on avait précisé si on cherchait à enseigner certains concepts utile pour programmer (que l'on peut enseigner dans un contexte général) ou si le but est d'apprendre à faire un programme fonctionnel (ou on va probablement se restreindre à langage et un périmètre bien défini)

    Après, je pense qu'il faut un minimum comprendre comment "ca fonctionne en dessous" pour faire un programme fonctionnel, ou du moins avoir conscience des limites de son programme. Ce n'est peut-être pas votre vision des choses mais comme c'est la façon dont on m'a appris à programmer, j'ai pu par moi-même constaté les limites de cette approche.
    a- Si tu ne veux pas mettre de côté des élèves, tu peux oui.
    b- Quand la question est "Quel langage pour débuter ?", cela sous-entend toujours : "le débutant n'y connait rien, il n'a jamais touché à un langage, et il ne connait rien à l'algo". Et vous proposez un langage qui impose de manipuler des détails en parallèle des premiers pas en algorithmie. Sérieusement ? Ca ne vous choque pas de devoir expliquer les segfault qui se passent 5 minutes après l'endroit qui sont à leur origine à des gens qui sont encore en train de réfléchir à comment savoir si 13547 est premier ou pas ? (certes on a enfin le mode sanatize de clang, mais n'est-ce pas un peu violent comme approche ?)

    Sinon, oui, il est intéressant et important de voir des détails de gestion de ressources dans un monde sans exceptions. Mais pas au tout début! Et non, cela ne t'apprend ni comment ça fonctionne dessous (p.ex. en quoi l'enseignement du C en premier langage enseigne comment malloc est implémenté, et en quoi savoir comment malloc est implémenté, ou s'utilise, est utile à un débutant qui ne sait pas encore sortir une liste de nombres premiers ou de trier les lignes d'un fichier texte -- algos très basiques au demeurant).

    J'aime beaucoup la question soulevé par MarieKisSlaJoue (et sa conclusion aussi). D'autant que l'on n'a pas évoqué les langages fonctionnels (hormis une incompréhension soulevée au sujet d'OCaml qui a eu (a?) ses années de gloire après le Pascal en prépa).
    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...

  18. #78
    Membre éprouvé
    Profil pro
    Inscrit en
    décembre 2004
    Messages
    521
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : décembre 2004
    Messages : 521
    Points : 909
    Points
    909

    Par défaut

    Difficile de répondre à cette question : il existe des centaines de langages et personne ne les connait tous. Une réponse sera donc forcément orientée, il suffit de lire les résultats : comme C est depuis longtemps et reste (avec son évolution objet) le langage le plus utilisé, il arrive en tête.
    Alors qu'il existe des tas de langages spécialisés pour l'éducation, l'apprentissage et les débuts dans le domaine, et qu'aucun n'est cité... C'est vraisemblablement un signe qu'ils n'intéressent pas les "professionnels de l'informatique" qui se pressent sur ce site, mais ont-ils toutes les billes pour juger ?
    Est-ce qu'un "langage-pour-débuter" doit obligatoirement être un "langage-demandé-par-les-entreprises" : C/C++, Java, Python, C#... ?
    Et qu'appelle-t-on "débuter la programmation" ?
    • S'y lancer à 5 ans comme on le fera peut-être bientôt dans les écoles françaises ? Dans ce cas, Logo est très bien pour faire avancer et tourner une souris sur l'écran et constater que "tout ne se fait pas tout seul".
    • S'y lancer à la retraite, pour enfin comprendre de quoi parlent sans arrêt ses petits enfants ? Inutile de songer à C en général, plutôt Python, mieux encore Ruby.
    • S'y lancer en pleine force de l'âge, pas pour faire forcément une nouvelle vie dans la programmation, mais pour s'amuser aussi ? Plutôt D que C(++) déjà, ou mieux C#. Et pourquoi pas Forth ?
    L'avis publié ci-dessus est mien et ne reflète pas obligatoirement celui de mon entreprise.

  19. #79
    Membre actif
    Profil pro
    Inscrit en
    septembre 2009
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : septembre 2009
    Messages : 114
    Points : 270
    Points
    270

    Par défaut

    Citation Envoyé par Luc Hermitte Voir le message
    Quand la question est "Quel langage pour débuter ?", cela sous-entend toujours : "le débutant n'y connait rien, il n'a jamais touché à un langage, et il ne connait rien à l'algo". Et vous proposez un langage qui impose de manipuler des détails en parallèle des premiers pas en algorithmie. Sérieusement ? Ca ne vous choque pas de devoir expliquer les segfault qui se passent 5 minutes après l'endroit qui sont à leur origine à des gens qui sont encore en train de réfléchir à comment savoir si 13547 est premier ou pas ? (certes on a enfin le mode sanatize de clang, mais n'est-ce pas un peu violent comme approche ?)
    Non je commencerai par du C ou de l'assembleur sur microcontrôleur. Un truc du style : un Z80 avec deux boutons en entrée et une led en sortie. objectif : allumer la led quand le bouton 1 est enfoncé mais pas le 2. Zéro algorithmie la-dedans (à moins de chercher la petite bête). En plus, suivant les gouts, les étudiants peuvent trouver ça fun. Et pour l'algorithmie, nul besoin de langage de programmation, surtout au début. 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 ?

  20. #80
    Membre chevronné Avatar de psychadelic
    Profil pro
    Inscrit en
    mai 2010
    Messages
    917
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mai 2010
    Messages : 917
    Points : 2 157
    Points
    2 157

    Par défaut

    J'ai voté Ruby, car c'est le seul langage qui se rapproche de CoffeeScript...

    Citation Envoyé par cuicui78 Voir le message
    Pour apprendre la prog je trouve que le lua est plutôt pas mal.
    le python également.

    Si on veut apprendre simplement les concept de programmation, mieux vaut ne pas encombrer le cerveau avec la gestion mémoire.
    Donc le c ou le c++ a éviter je pense. Mon premier langage est le c++, et ca a pas été facile au début ^^
    Suis plutôt d'accord


    Citation Envoyé par Zefling Voir le message
    On ne programme pas en JS, PHP, LibreOffice Basic comme en Java (avec ou sans annotation). Ce n'est pas vraiment de la prog, mais il y aussi SQL et le CSS (ça peut devenir compliqué). Java ne sert à rien si on veut du HTML5 et si on programme comme en Java en JS, on a toutes les chances de faire un truc horrible.
    Je suis pas trop certain de comprendre le sens de ton message. ??!

    Pour ma part je regrette qu'on ait pas mis javascript dans la liste, mais je pense que pour une initiation à la programation ce n'est pas si mal, et c'est un langage qui cache bien son jeu, car ces possibilités semblent sans fin, et donc d'accompagner l'évolution du "programmeur en herbe" vers les sommets de la programmation..

    Brackets (Adobe) est écrit en javascript
    NetFix est entièrement écrit basé sur du javascript
    «La pluralité des voix n'est pas une preuve, pour les vérités malaisées à découvrir, tant il est bien plus vraisemblable qu'un homme seul les ait rencontrées que tout un peuple.» [ René Descartes ] - Discours de la méthode

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