IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langages de programmation Discussion :

Chronologie d'apprentissage programmation


Sujet :

Langages de programmation

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    196
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 196
    Points : 62
    Points
    62
    Par défaut Chronologie d'apprentissage programmation
    Salut a toutes et tous.

    Pour apprendre un langage évolué est il nécessaire de passer par des langages plus simples ?
    Je me permets un parallele avec les maths.
    Pour passer par exemple une licence il est necessaire de commencer par 1 + 1 = 2
    Pour resoudre une integrale il faut imperativement savoir resoudre une derivee.

    Les maths exigent des prerecquis.

    Je me demande s'il y a une progression "logique" dans l'apprentissage des langages comme il y en a une en maths ?

    Imaginons un jeune qui veuille devenir un jour l'egal de Mitnick. ( ca n'est pas mon cas, qui suis un pépé a barbe blanche). Il va se demander : je commence par quoi ?

    Aller du plus facile au plus difficile par etapes logiques ?
    Commencer par le basic et le DOS ? Pas certain du tout que ça puisse faire partie des etapes logiques.
    Attaquer directement un langage evolué ?
    Debuter par le C ++ ou l'assembleur ou langage machine ?

    Si la programmation s'apprenait a l'école.
    Que ferait on en maternelle ? En CP ? En CM 1, en CM 2 etc...etc....jusqu'au niveau bac + 5 par exemple ?
    Et a partir de quand ça se specialiserait ?
    L'emule de Mitnick devrait il suivre le meme cursus que l'emule de Bill Gates par exemple ?

    En maths c'est evident. Le passionné de Mecanique quantique va diverger dans ses etudes par rapport au passionné de Relativite.
    Ces sciences etant incompatibles...puisque c'est le Graal des scientifiques.

    Et en programmation ?

    Bon week end et merci de votre attention.

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Je dirais que ça dépend non seulement des personnes, mais de l'âge.

    Personnellement, j'ai commencé avec le BASIC sur Amstrad CPC. C'est assez génial: Cela permet en quelques instructions de faire de l'affichage texte n'importe où, du dessin... Je pense que le plus proche équivalent serait le Basic d'une calculatrice assez avancée, comme une TI-89 Titanium (ou si tu as du pognon, une Voyage 200). C'est le genre de choses qui aide à prendre goût à la programmation.

    Ensuite, je conseillerais quelque chose avec lequel on peut faire de la programmation graphique assez facilement, comme par exemple VB6. Puis, on repart en console avec apprentissage du C pour apprendre le fonctionnement les pointeurs, que je juge indispensable. Je déconseille d'enchaîner directement sur C++ (compliqué, et bcp de pratiques issues du C sont mauvaises en C++)sans rien entre les deux, et conseille plutôt de passer à C# 2.0 (ou à défaut, Java).

    Une fois qu'on maîtrise C et C# 2.0, on peut jeter un œil à C++ et C++/CLI pour interfacer les deux, mais ce n'est pas le genre de langage dans lequel je programmerais autre chose qu'une couche de compatibilité.

    PS: Sinon, à défaut de calculatrices, peut-être KPL...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    196
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 196
    Points : 62
    Points
    62
    Par défaut
    Tres bien et merci.

    Perso j'ai fait du Basic GFA et j'ai encore les cours.
    Du TOS Tramiel
    Du Dos Amiga et j'ai encore les bouquins.
    Du Dos Microsoft. J'ai.
    Du Visual basic. J'ai.
    De l'assembleur du 68.000 et j'ai toujours les cours.
    Et ensuite directement au C ++. J'ai.

    Mais juste pour "etre au courant " et avoir des bases. Sans cible professionnelle.
    Je n'ai pas l'honneur d'etre programmeur et je ne l'ai jamais voulu sinon j'aurais pu. Les maths et la programmation n'etant pas in ompatibles.
    Pas ma cible.


    Mais c'est pour conseiller aux jeunes qui veulent s'occuper de programmation.

    Lorsqu'on est tres jeune ( lycee) on ne va pas se mettre a la programmation sans un but precis. Les dilettantes professionnels Lycee sont rares.
    Si le jeune dit : je veux devenir ingenieur informaticien eh bien le cursus est tres facile a trouver. Type de bac. Ecoles. Genre SupInfo et c'est parti. droit sur des rails

    Si le jeune dit : Je veux devenir un hacker celebre et etre capable de venir a bout de la protection de la PS3 ( zut ! ca vient d'etre fait ) eh bien je ne connais pas le cursus a suivre.
    Et une motivation pareille venant d'un lycéen ça mérite d'etre confortée et ne pas etre decouragee.
    Une cible est une cible. Et tellement de jeunes n'en ont pas du tout.

    Si on dit a un jeune lyceen qu'il faut devenir ingenieur informaticien pour faire ça il va vous rire au nez. Certains bidouilleurs geniaux n'ont pas fait ce genre d'etudes et sont capables de prouesses a 15 ans. Ils ont etudié quoi ?
    Direct l'assembleur ? Puis la cryptologie ?

    Bizarre bizarre hein ?

    Bon week end

  4. #4
    Expert éminent sénior
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    6 803
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 6 803
    Points : 32 058
    Points
    32 058
    Par défaut
    DOS n'est pas plus simple que Windows, et complètement obsolète ==> à oublier.

    je ne suis pas convaincu par la pertinence de l'étape VB6, langage certes simple mais complètement obsolète. VB.NET permet de faire tellement plus, et est à peine plus compliqué.....et en plus, c'est une porte naturelle vers le C#.

    globalement, je dirais aussi qu'il est inutile de faire beaucoup d'étapes. Un langage simple(KPL cité ci-dessus), juste pour faire des trucs marrants quelques jours, et piger la logique de base. Et ensuite, on définit son besoin, et on choisit le langage en fonction.

    Je souhaite faire du multi-plateformes? Java
    Je souhaite toutouiller le bas niveau et piloter l'électronique? C
    Je souhaite faire des interfaces Windows qui gèrent des trucs? .NET, soit VB, soit C#(j'ai une grosse préférence pour VB, il faut vraiment avoir des besoins exotiques pour en sentir les limites, mais les "vrais" préfèrent C#)
    Je souhaite faire de la 3D temsp réel? C++

    Certains de ces langages sont plus accessibles que d'autres, mais passer par VB.NET pour faire de la 3D par la suite, c'est à mon sens une perte de temps.
    Les 4 règles d'airain du développement informatique sont, d'après Michael C. Kasten :
    1)on ne peut pas établir un chiffrage tant qu'on a pas finalisé la conception
    2)on ne peut pas finaliser la conception tant qu'on a pas complètement compris toutes les exigences
    3)le temps de comprendre toutes les exigences, le projet est terminé
    4)le temps de terminer le projet, les exigences ont changé
    Et le serment de non-allégiance :
    Je promets de n’exclure aucune idée sur la base de sa source mais de donner toute la considération nécessaire aux idées de toutes les écoles ou lignes de pensées afin de trouver celle qui est la mieux adaptée à une situation donnée.

  5. #5
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Franchement, la programmation je suis tombé dedans quand j'étais petit. J'ignore à quel âge j'ai vraiment programmé sur l'Amstrad pour la première fois, mais je pianotais déjà "papa" et "maman" dessus quand j'étais encore en maternelle.
    Mais plus en détails, ce qui séduit c'est de voir l'effet à l'écran, comme du dessin ou de la Text User Interface. Ce qui exclut de commencer par le C standard.

    Mon choix de carrière, ça a été "je veux faire de la programmation" d'abord, puis c'est devenu plus spécifique (bas niveau, etc.)

    Aussi, ce que j'ai dit au-dessus, c'était mon parcours conseillé. Mon parcours vécu, c'était plutôt:
    • Officieusement
      • Basic sur Amstrad CPC 6128 (avec le manuel qui contenait un cours) pendant des années, jusqu'au lycée
      • Basic sur Casio Graph 60 et un peu TI-83
      • Basic sur TI-89 (À partir de la terminale)
      • 4 heures d'assembleur 68k pour TI-89 un soir
      • 5 lignes d'assembleur Z80 sur l'Amstrad, compilées avec un livre.
    • Entrée en BTS Informatique Industrielle, début des vrais cours
      • C sous MS-DOS
      • Assembleur 68k sur simulateur
      • Javascript (a tellement changé depuis que mon savoir est sans doute obsolète)
      • Visual Basic 6
    • Seconde année de BTS
      • C sous Windows (continué officieusement pendant les années qui sont suivi)
      • Assembleur 8086
      • (mauvais) C++
      • C++ sous Windows avec Microsoft Foundation Classes (MFC)
    • Entrée à l'ISTY
      • C sous *n*x
      • Java
      • Prolog (dont j'ai tout oublié)
      • Bases de données, SQL
      • C avec OpenMP
      • C avec lex et yacc
        • Plus pas mal de matières plus théoriques, bien sûr: Algo, théorie des langages/compilation, parallélisme, architecture, etc.
    • Grâce à Dvp.com
      • C# 2.0
      • Vrai C++
      • C standard
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  6. #6
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    En fait, au niveau des langages "finaux", je conseillerais:
    • Pour le développement professionnel, C# (2.0 minimum), Java à la rigueur.
    • Pour la connaissance bas niveau, C ou C++
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    196
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 196
    Points : 62
    Points
    62
    Par défaut
    Eh bien c'est magnifique tout ça.
    Grand merci. Je note tout ça..pour d'autres, pas pour moi qui ait fait ma carrière ailleurs.

    Je constate que la programmation bifurque (specialisation) plus tot que les maths. Il faut cibler plus rapidement.
    En maths le tronc commun est plus long. On peut faire des maths sans cible utilitariste pendant longtemps.
    En programmation non. L'eventail s'ouvre plus vite.

    Merci encore et bon week end.

  8. #8
    Membre éclairé Avatar de metagoto
    Profil pro
    Hobbyist programmateur
    Inscrit en
    Juin 2009
    Messages
    646
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Hobbyist programmateur

    Informations forums :
    Inscription : Juin 2009
    Messages : 646
    Points : 845
    Points
    845
    Par défaut
    J'ai aussi commencé par le BASIC sur Amstrad CPC 6128.
    C'était une autre époque, et qu'est-ce que je pouvais programmer comme une merde! OK, j'avais 8 ans.
    Ca m'a essentiellement appris à être patient devant des lignes de codes et accessoirement que "La Doc" est la seule chose à laquelle se fier (mais c'est pas pour autant que je la lisais..)

    Comme conseils, franchement j'hésite. A posteriori, dans MON cas, et bien j'aurai souhaité commencer par du C le plus tôt possible. Comme langage impératif, pour avoir des notions du "coût des choses", le C ça le fait.

    Sinon, dans une famille donnée (impératif, fonctionnel... fortement/faiblement typé, statique/dynamique...), j'ai envie de dire que le langage importe peu. Il faut juste s'y mettre.
    Dans tous ces langages, on aura du "1+1=2". Certains irront plus loins et on découvrira que c'est une question de loi de composition interne sur un ensemble avec élément neutre machin.. ceci, cela..

    Le plus important est que l'étude du langage en question intéresse un minimum la personne.

    Pour un jeune qui voudrait être l'égal de Mitnick, alors je lui conseillerai un cursus dans la psychologie ou la pub. Il me semble que Mitnick était un adepte du social engineering..

  9. #9
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    780
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 780
    Points : 1 176
    Points
    1 176
    Par défaut
    je ne pense pas qu'on puisse raisonner comme tu le fais avec des branches qui bifurquent.

    tu as en programmation des concepts généraux qui peuvent s'apprendre sans toucher un ordinateur. Puis ensuite chaque langage intègre un ou plusieurs de ces concepts.

    Là où tu peux faire une hierarchie, c'est par exemple apprendre un langage de bas niveau et ensuite de plus haut niveau etc..

    Mais tu n'es pas obligé.

    Un langage "haut niveau" de dernière génération sera peut être plus simple pour un débutant qu'un langage bas niveau. Ou plutôt la complexité sera cachée.

    Tu peux apprendre des langages dans l'ordre historique, mais est-ce vraiment intérressant pour démarrer? Personne n'apprend un assembleur désuet des années 1950 - je dis ça, j'y connais rien- .

    Tu peux aussi apprendre juste un langage multi-paradigme comme le C++ qui te permet de faire aussi bien du haut que du bas niveau, de l'objet ou de l'assembleur.

    Donc ma réponse est: non il n'est pas besoin de connaître d'abord des langages simples puis des langages plus complexes pour commencer.

    Quand je parle de langage simple, je parle de langages qui utilisent des concepts plus "simple" que d'autres.

    Des exemples de concepts avec lesquels les gens ont du mal en général:

    - les pointeurs
    - la récursivité
    - la programmation objet

    Comme tu le vois, il n'y a pas de langages associés à ces concepts.

Discussions similaires

  1. comment commencer l'apprentissage de la programmation web
    Par Developpeur87 dans le forum Débuter
    Réponses: 1
    Dernier message: 01/12/2008, 08h38
  2. [TP] Programme d'apprentissage de langue
    Par flofun dans le forum Turbo Pascal
    Réponses: 8
    Dernier message: 05/11/2007, 21h45
  3. méthode d'apprentissage pour programmer?
    Par ghyslain dans le forum C#
    Réponses: 13
    Dernier message: 30/06/2007, 21h24

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