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

Affichage des résultats du sondage: Quel langage devrait-on utiliser pour l’initiation à la programmation ?

Votants
203. Vous ne pouvez pas participer à ce sondage.
  • Java

    43 21,18%
  • Python

    30 14,78%
  • C

    59 29,06%
  • C++

    10 4,93%
  • Pascal

    15 7,39%
  • MatLab

    5 2,46%
  • C#/VB.NET

    5 2,46%
  • Perl

    6 2,96%
  • PHP

    6 2,96%
  • Ruby

    2 0,99%
  • Haskell

    3 1,48%
  • OCaml

    3 1,48%
  • Autre (À préciser)

    15 7,39%
  • 1 0,49%
Actualités Discussion :

Quel langage devrait-on utiliser pour introduire la programmation ?

  1. #61
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2009
    Messages
    1 030
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2009
    Messages : 1 030
    Points : 4 203
    Points
    4 203
    Par défaut
    Citation Envoyé par valkirys Voir le message
    Luc Hermitte et LSMetag pourquoi cette obsession de l'algorithmie?
    Je m'explique si le but est d'introduire la programmation on a d'un coté l’écosystème ( compilateur, bibliothèques,... ) et le "support" c'est à dire quelque chose à programmer qui permet de voir par étape progressivement l'évolution du travail fourni.
    Le point important est d'arriver à une quantité suffisante de pratique pour que la qualité et les automatismes soient là.


    C'est très classique, pas palpitant (mais faut bien y passer) par contre le niveau reste pas bien haut...
    De toute façon, la liste ci-dessus c'est celle pour l'intérro à la fin du semestre! Dans la vraie vie soit on a d'autres algos métiers soit on utilise des libs.
    Ca me gêne de fixer cette liste comme objectif de "l'initiation à la programmation".
    Quand je parle "algorithmie", ce n'est pas apprendre par coeur des algos déjà faits ou des méthodes pour résoudre des problématique. C'est apprendre à réfléchir par soi même pour résoudre n'importe quel problème. Et cette façon de penser, on ne l'a pas forcément quand on débute les cours de "programmation".
    Rien que 2 boucles imbriquées, c'est déjà balèze à comprendre pour les débutants.

    Tu as 2 types de programmeurs :

    - Ceux qui codent au kilomètre et incrémentent le code existant, sans aucune structuration ou réflexion en amont. L'application finira par péter, ramer, à ne plus pouvoir être maintenue (il y a souvent peu de commentaires d'ailleurs).
    - Ceux qui réfléchissent d'abord au scénario qui résoudra leur problématique, et le retranscrivent dans le code en un minimum de lignes (parfois en restructurant du code existant) et quelques commentaires expliquant leur scénario. Il peut aussi proposer des améliorations du code existant par ce biais.

    Il y en a un qui utilise l'algorithmie, pas l'autre.

    Oui les boîtes ont, en général (pas toujours), des algos métiers, qui peuvent être bons ou pas (on fait avec). Mais on doit rajouter par dessus les nôtres, ou tout refaire. De base, une techno est très limitée en librairies. Oui on peut utiliser des libs tierces, si on a les moyens ou si les conditions d'utilisation le permettent. Mais avoir des boîtes noires c'est toujours dangereux en entreprise. Dans une appli critique où un bug important doit être résolu dans l'heure, tu ne peux pas te le permettre. Et dans une start-up, c'est toi qui dois réfléchir aux architectures/structures de l'appli.

  2. #62
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    tech lead c++ linux
    Inscrit en
    Août 2004
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : tech lead c++ linux

    Informations forums :
    Inscription : Août 2004
    Messages : 4 262
    Points : 6 680
    Points
    6 680
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par CodeurPlusPlus Voir le message
    C, COBOL et ADA, des langages fonctionnels ????
    Citation Envoyé par nchal Voir le message
    Alors oui, impératif et fonctionnel sont des paradigmes opposés mais tout le monde les confond pour une raison qui m'est inconnu
    Mais comme on sait que tout le monde confond les paradigmes mais pas les langages ont peu en déduire (facilement) qu'il voulait dire impératif.
    Citation Envoyé par tomlev Voir le message
    J'avoue, cette classification me laisse assez perplexe... peut-être qu'il voulait dire "procéduraux", et non "fonctionnels"...

    D'autre part je ne pense vraiment pas qu'on puisse dire que Ruby est "purement objet" ... D'après Wikipedia :
    Effectivement, je me suis un peu emmêlé les pinceaux, j'ai rédigé trop vite. Je voulais bien dire "procédural" à la place d "fonctionnel" et je pensais à Scheme (fork oo de lisp) pour Ruby. My bad.
    « L'effort par lequel toute chose tend à persévérer dans son être n'est rien de plus que l'essence actuelle de cette chose. »
    Spinoza — Éthique III, Proposition VII

  3. #63
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    tech lead c++ linux
    Inscrit en
    Août 2004
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : tech lead c++ linux

    Informations forums :
    Inscription : Août 2004
    Messages : 4 262
    Points : 6 680
    Points
    6 680
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Luc Hermitte Voir le message
    Soit, s'il n'y a pas un if toutes les deux lignes, le code C est faux.
    Est-ce que la notion de "code juste" est primordial lors de l'apprentissage? (nous parlons des premières années, pas de la spécialisation).

    Citation Envoyé par Luc Hermitte Voir le message
    Ce qui est important pour commencer, c'est un langage qui permettent de se concentrer sur l'algorithmie dans un premier temps.
    S'il s'agit d'algorithmie, ne vaut-il pas mieux se concentrer sur du pur théorique? A-t-on besoin d'un langage pour travailler l'algorithmie?

    Ce sont des questions "naïves", je n'ai pas d'avis arrêté sur le sujet.
    « L'effort par lequel toute chose tend à persévérer dans son être n'est rien de plus que l'essence actuelle de cette chose. »
    Spinoza — Éthique III, Proposition VII

  4. #64
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 275
    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 275
    Points : 10 985
    Points
    10 985
    Par défaut
    Citation Envoyé par valkirys Voir le message
    Luc Hermitte et LSMetag pourquoi cette obsession de l'algorithmie?
    Nous n'avons pas les mêmes définitions il semblerait. Savoir aligner des if/else ou parcourir des tableaux pour appliquer des choses dessus, même simples, c'est de l'algorithmie. Certes très basique, mais cela en est. Et sans ça, on ne va nulle part. C'est la base. Quand cette base est perturbée par des considérations bas niveau comme : comprendre l'agencement de la mémoire et savoir allouer ce qu'il faut, libérer quand on a finit et réagir aux cas où on ne peut plus allouer, alors on déroute les débutants et on en perd en chemin. Tout le monde ne jongle pas instantanément avec toutes ces notions.


    Citation Envoyé par r0d Voir le message
    Est-ce que la notion de "code juste" est primordial lors de l'apprentissage? (nous parlons des premières années, pas de la spécialisation).

    S'il s'agit d'algorithmie, ne vaut-il pas mieux se concentrer sur du pur théorique? A-t-on besoin d'un langage pour travailler l'algorithmie?
    Ne pas montrer des codes mauvais est important. Car après des mauvaises habitudes sont prises et elles perdurent très, très longtemps -- la preuve: le type de code non robuste/incorrect montré par Raymond Chen dans son billet, le type que je suis persuadé que vous voyez régulièrement en production autour de vous ; je me trompe ?. Ces mauvaises habitudes prises en C ont d'ailleurs été à l'origine de la mauvaise presse du C++. Mais bon, est-ce la discussion pour ressortir ce vieux débat ?

    Et oui un langage est important. Ou plus exactement un outil objectif et bête qui permette d'observer le comportement des algorithmes pondus est important. Une simulation papier, ne stimulera pas grand monde. De plus elle risquera d'être aussi fausse que les premiers algos. Ce qui fait qu'au final il n'y aura pas vraiment de progression.
    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...

  5. #65
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 629
    Points : 10 554
    Points
    10 554
    Par défaut
    Pour ma part:
    • En autodidacte: langage Casio () et Pascal pour l'option Informatique au lycée
    • Pascal à la faculté en parallèle de l'algorithmie
    • SML pour le génie logiciel
    • C parce qu'à la faculté tous les ordinateurs sont sous Linux et tout le monde peut ainsi "parler le même langage" (<- )
    • 3 fois rien: Assembleur z80 (si je dis pas de bêtises parce que c'est le plus facile - basique) + assembleur Intel pour les cours "entrailles machine"
    • Java et un peu de C++ (<- il le faut bien) pour la programmation objet
    • Lisp pour la programmation fonctionnelle
    • Ada pour le temps réel (c'était pour coder les schémas "temps réel" des écluses, des feux tricolores, ... )
    • HTML + 3 fois rien Javascript pour les cours Internet (C'était au début de HTML 4 le truc pour les vrais hommes poilus avec toutes les balises qui sont devenues obsolètes comme cite, quote, b, u, area, frameset, ...)
    • XML + HTML pour le cours sur les langages à balises (un cours de quelques heures parce que c'est un sujet important)
    • SQL + PL/SQL pour les bases de données (et aussi, trois rien, un truc en Java BDD Objet)
    • UML (bon c'est un méta-langage) pour la conception/ méthodologie de travail
    • Prolog pour le cours IA mais là il ne faut pas déconner j'ai abandonné
    • Langage script bash, pour faire des scripts linux (à la faculté tout est vraiment sous Linux) (et en plus ce n'était pas tant débutant que cela)
    • LaTeX en autodidacte pour tous les rapports et les documents que j'avais à écrire. Que j'ai abandonné à la sortie de la faculté


    Et vous savez quoi: le seul stage que j'ai eu c'était en Python‎/ Zope et le premier travail que j'ai trouvé, c'était développeur COBOL

  6. #66
    Membre éprouvé

    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Avril 2009
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2009
    Messages : 162
    Points : 1 228
    Points
    1 228
    Par défaut Et Ada ?
    Étonnant dans une étude américaine sur ce sujet (ce sont quand même les américains qui sont à l'initiative du langage) de ne pas voir apparaître Ada.Cet héritier de Pascal est moins facile à mettre en œuvre que Python, mais sa rigueur (parfois pénible pour le programmeur expérimenté), son typage fort et la qualité des messages d'erreurs en font un excellent langage pour l'apprentissage de programmation.

    Python est très bien pour la simplicité de la syntaxe mais pas assez typé pour des débutants.
    Méfiez-vous des programmeurs qui portent des tournevis ! (Dijkstra)

  7. #67
    Membre expérimenté Avatar de nchal
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    512
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Avril 2012
    Messages : 512
    Points : 1 654
    Points
    1 654
    Par défaut
    Citation Envoyé par Luc Hermitte Voir le message
    Nous n'avons pas les mêmes définitions il semblerait. Savoir aligner des if/else ou parcourir des tableaux pour appliquer des choses dessus, même simples, c'est de l'algorithmie. Certes très basique, mais cela en est. Et sans ça, on ne va nulle part. C'est la base. Quand cette base est perturbée par des considérations bas niveau comme : comprendre l'agencement de la mémoire et savoir allouer ce qu'il faut, libérer quand on a finit et réagir aux cas où on ne peut plus allouer, alors on déroute les débutants et on en perd en chemin. Tout le monde ne jongle pas instantanément avec toutes ces notions.
    Parce que pour toi faire des if/else en C, cela implique de savoir comment marche la gestion de la mémoire ? Tu peux très bien occulter toutes ces mécaniques et te focaliser sur l'algo. Tu me diras que, du coup, on prend des mauvaises habitude et je te répondrai que c'est pareil, quelque soit le langage.
    Donc pour se focaliser sur l'algo, faire du pseudo-code, ça peut être pas mal en fait.
    Si la réponse vous convient, un petit ça encourage.
    Avant tout nouveau post, pensez à : la FAQ, Google et la fonction Recherche
    Si vous devez poster, pensez à: Ecrire en français, la balise [CODE] (#) et surtout

  8. #68
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 275
    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 275
    Points : 10 985
    Points
    10 985
    Par défaut
    Citation Envoyé par nchal Voir le message
    Parce que pour toi faire des if/else en C, cela implique de savoir comment marche la gestion de la mémoire ? Tu peux très bien occulter toutes ces mécaniques et te focaliser sur l'algo. Tu me diras que, du coup, on prend des mauvaises habitude et je te répondrai que c'est pareil, quelque soit le langage.
    Donc pour se focaliser sur l'algo, faire du pseudo-code, ça peut être pas mal en fait.
    Tu ne peux pas, en C, t'intéresser aux tableaux sans devoir faire une parenthèse sur la gestion de la mémoire.
    Au 2e, 3e cours maximum, il faut avoir vu les pointeurs avant de pouvoir aller plus loin, ne serait-ce que pour avoir des fonctions/procédures avec des paramètres sortants.

    Et non, ce n'est pas pareil avec les autres langages. Même le C++ est plus newbs friendly que le C car on peut y avoir des tableaux (vraiment dynamiques -> testez la lecture de fichiers textes dont on ne connait ni le nombre de lignes, ni la taille de chaque ligne, et dont on veut trier les lignes) sans devoir s'intéresser à la mémoire.
    Et on peut se focaliser sur l'algo sans donner des mauvaises habitudes relativement au langage employé pour faire pratiquer l'algo quand le langage n'est pas le C. Dans beaucoup d'autres langage, la collecte de la mémoire des tableaux sera automatique, ce qui permet de montrer des codes qui ont à minima une garantie basique face à des cas dégradés -- en C, on ne peut pas offrir cette garantie basique quand on fait l'impasse sur la gestion des cas dégradés car il faut tout faire soit même côté libérations -> et ce sont les mauvaises habitudes que je critique.
    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...

  9. #69
    Membre expérimenté Avatar de nchal
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    512
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Avril 2012
    Messages : 512
    Points : 1 654
    Points
    1 654
    Par défaut
    Citation Envoyé par Luc Hermitte Voir le message
    Tu ne peux pas, en C, t'intéresser aux tableaux sans devoir faire une parenthèse sur la gestion de la mémoire.
    Au 2e, 3e cours maximum, il faut avoir vu les pointeurs avant de pouvoir aller plus loin, ne serait-ce que pour avoir des fonctions/procédures avec des paramètres sortants.

    Et non, ce n'est pas pareil avec les autres langages. Même le C++ est plus newbs friendly que le C car on peut y avoir des tableaux (vraiment dynamiques -> testez la lecture de fichiers textes dont on ne connait ni le nombre de lignes, ni la taille de chaque ligne, et dont on veut trier les lignes) sans devoir s'intéresser à la mémoire.
    Et on peut se focaliser sur l'algo sans donner des mauvaises habitudes relativement au langage employé pour faire pratiquer l'algo quand le langage n'est pas le C. Dans beaucoup d'autres langage, la collecte de la mémoire des tableaux sera automatique, ce qui permet de montrer des codes qui ont à minima une garantie basique face à des cas dégradés -- en C, on ne peut pas offrir cette garantie basique quand on fait l'impasse sur la gestion des cas dégradés car il faut tout faire soit même côté libérations -> et ce sont les mauvaises habitudes que je critique.
    Du coup, on a problème majeur. On ne peut décemment pas faire commencer la programmation par un langage objet car il faut avoir les bases avant de voir les concepts avancés mais les langages objet sont pratiques pour apprendre l'algo. D'un autre côté, il faudrait voir des langages procéduraux mais ceux-ci impliquent des concepts trop compliqués pour commencer l’algorithmie...
    Si la réponse vous convient, un petit ça encourage.
    Avant tout nouveau post, pensez à : la FAQ, Google et la fonction Recherche
    Si vous devez poster, pensez à: Ecrire en français, la balise [CODE] (#) et surtout

  10. #70
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 275
    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 275
    Points : 10 985
    Points
    10 985
    Par défaut
    Les langages procéduraux sont aussi impératifs. Et ils offrent la possibilité de découper un problème complexe en sous-problèmes plus simples. AMA, ce n'est pas un soucis pour initier au développement. Après, si tu voulais mettre en avant les langages fonctionnels, comme je le disais je n'ai pas vraiment d'avis tranché sur la question -- mis à part que je n'adhère pas à l'argument comme quoi ils sont plus intuitifs, voire instinctifs : les recettes de cuisines et les directions que l'on donne dans la rue sont en impératifs, pas en fonctionnel.

    Concernant les langages OO comme premier langage. Je ne suis pas persuadé, contrairement à d'autres que j'ai pu croiser, qu'il faille commencer par le paradigme OO.
    Si tu réagis à mon : "le C++ est plus abordable que le C pour débuter", c'est que tu, comme beaucoup, as l'image du C++ comme d'un C avec des objets. C'est une très mauvaise image du C++. Pour des débutants en développement, le C++ doit être abordé comme un C, mais où la gestion des ressources et où la gestion des cas dégradés sont traitées avec du RAII et des exceptions. Et nous avons là un tout autre langage qui n'a rien à voir. Langage plus simple à utiliser, et où il est plus aisé d'écrire des codes robustes et maintenables à la fois. L'OO ... cela peut venir bien après.

    Même chose avec Python, je doute que les cours pour débutants en développement commencent par présenter l'OO en Python.
    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...

  11. #71
    Membre expérimenté Avatar de nchal
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    512
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Avril 2012
    Messages : 512
    Points : 1 654
    Points
    1 654
    Par défaut
    Je ne vois pas le C++ comme langage OO, je trouve même qu'il en est très loin.
    On m'a vendu le C++ comme du C objet. J'avais des attentes concernant ce langage en partant de ce principe. Mais en essayant le C++, je me suis aperçu que ce n'est pas du tout du C objet mais une autre forme de C, avec qulques concepts des langages haut niveau. En étant très fan du concept objet (par exemple, j'adore le smalltalk), j'ai été très déçu par le C++ mais ça vaudrait le coup que je réessaie sans a priori. Bref je m'égare ...
    Et après réflexion (et débat), il est vrai que le C++ peut être un bon langage pour commencer (même si je reste persuadé que voir l'assembleur même très peu de temps est indispensable)
    Si la réponse vous convient, un petit ça encourage.
    Avant tout nouveau post, pensez à : la FAQ, Google et la fonction Recherche
    Si vous devez poster, pensez à: Ecrire en français, la balise [CODE] (#) et surtout

  12. #72
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3
    Points : 0
    Points
    0
    Par défaut
    Si on parle de cycle supérieur, et qu'on part du principe qu'il s'agit de futurs développeurs, je choisirai le Java pour les raisons suivantes:

    1/ Java oblige à programmer objet. Ce n'est pas le cas de Python, C, C++, etc... pour lesquels quelqu'un de non rigoureux (et c'est bien sûr le cas d'un débutant) à vite fait de dévier vers du vieux code procédural. Je pense qu'en 2014, c'est primordial de penser objet ; sauf si on planifie de toujours se limiter à des petits programmes de 10 lignes.

    2/ Tout est pointeur ; ce qui oblige le débutant a bien comprendre les mécanismes d'instanciation d'objets en mémoire. Tant qu'on ne fait pas de new, on manipule des objets déjà existants.

    3/ Tous les concepts sont présents : classes abstraites, type génériques, annotations, expressions lambda, Junit, etc... mais on utilise que ce que l'on veut dépendamment du niveau d'avancement

    4/ Des travaux pratiques peuvent être mis en place dans tous les domaines: web, ux, mobile, embarqué, serveur, etc...

    5/ Toute la chaîne de développement est gratuite (à moins que l'éducation nationale ne sache plus quoi faire de son argent et donc ça n'est pas un argument)

    6/ Et en plus ça peut servir à trouver du travail plus tard

  13. #73
    Membre du Club Avatar de dom_beau
    Homme Profil pro
    Développeur scientifique
    Inscrit en
    Août 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur scientifique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2013
    Messages : 10
    Points : 57
    Points
    57
    Par défaut Effet "Wow"!
    Allô!

    J'exprime ici un avis bien personnel et discutable.

    Il y a plusieurs années, j'aurais dit C++ à cause de sa puissance, etc. Puis j'ai changé d'avis sur le sujet et j'aurais alors dit Python à cause de la facilité à développer, sa structure simple et sa portabilité. Mais aujourd'hui, je dirais le combo HTML-JavaScript-CSS simplement à cause du "wow! effect".

    Je m'explique: pour capter l'attention et développer l'intérêt, il est bon de produire rapidement un logiciel qui a un beau "look & feel", donc un beau GUI, qui soit attrayant et, bien sûr, interactif. C'est la meilleure façon, selon moi, de susciter l'attention et de capter l'intérêt. Une fois cela posé, l'étudiant sera plus porté à aller plus loin et, par le fait même, améliorera plus facilement sa compréhension de la structure sous-jacente du code (c'est pour ça qu'on a développé Alice et Scratch!). Le trio HTML-JavaScript-CSS permet de produire de beaux programmes avec de beaux et intéressants GUI, tout en permettant d'introduire les notions de base de programmation via le JavaScript. C'est portable sur toutes les plateformes, c'est interpreté et on peut développer avec le plus simple des éditeurs de texte. Aucun outil n'est nécessaire, ni même l'installation de package ou quoi que ce soit.

    Attention: je dis bien HTML-JavaScript-CSS et non pas seulement HTML. Je ne dis pas que produire des pages web statiques soit une bonne façon d'apprendre à programmer. C'est le dynamisme de JavaScript qui permet d'introduire les notions de programmation de base.

    Voilà. Mon humble avis!

  14. #74
    Nouveau Candidat au Club

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    452
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Afghanistan

    Informations forums :
    Inscription : Juin 2003
    Messages : 452
    Points : 0
    Points
    0
    Billets dans le blog
    1
    Par défaut Definitivement javascript puis java
    Moi je pense réellement que le meilleur langage pour apprendre a programmer est javascript.
    et surtout pas le C , d'ailleur je trouve ca idiot d'apprendre le C pour commencé l'informatique ou faire de l'algorithmique, le C c fait pour de l'embarquer , créer un system d'exploitation, des drivers etc... c une partie de l'informatique intéressante mais c trop compliqué pour commencer.


    Javascript permet de commencer par des programmes simple sans fonction puis ensuite d'aborder la réutilisation de composant en utilisant les fonctions ( un des principes de base de l'informatique on réinvente pas la roue a chaque fois qu'on code sauf pour apprendre ).
    ensuite on peut aborder la notion de programmation objet et puis la notion de réutilisation pousser au niveaux objet.

    Avec javascript on peux facilement passer de la theorie sur papier avec un algorithme a une implementation concrete avec des structures de données simple.


    Ensuite en faisant du javascript dans un navigateur on peut apprendre la chose essentiel dans l'informatique pour un programme, c'est l'interaction avec un Humain (interface homme machine ) et avec le matériel l'écran, le clavier et la souris, et ca seul javascript peut le permettre sans avoir a installer
    un environnement de développement très lourd qui sera essentiel par la suite quand même.


    Ensuite une fois tous ca bien assimilé on peut passer a la vitesse supérieur avec java .....

  15. #75
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 275
    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 275
    Points : 10 985
    Points
    10 985
    Par défaut
    Citation Envoyé par Ganaga Voir le message
    Si on parle de cycle supérieur, et qu'on part du principe qu'il s'agit de futurs développeurs, je choisirai le Java pour les raisons suivantes:

    1/ Java oblige à programmer objet. Ce n'est pas le cas de Python, C, C++, etc... pour lesquels quelqu'un de non rigoureux (et c'est bien sûr le cas d'un débutant) à vite fait de dévier vers du vieux code procédural. Je pense qu'en 2014, c'est primordial de penser objet ; sauf si on planifie de toujours se limiter à des petits programmes de 10 lignes.

    3/ Tous les concepts sont présents : classes abstraites, type génériques, annotations, expressions lambda, Junit, etc... mais on utilise que ce que l'on veut dépendamment du niveau d'avancement
    Sur ces deux points -- je peux être d'accord sur d'autres.
    1- Tu te trompes Java n'oblige pas à programmer objet. Les fonctions statiques et l'abondance de setters sont des contre exemples de la pensée objets/services.
    De plus, le paradigme objet n'est en rien supérieur aux autres. Le concepteur d'Erlang s'est exprimé sur le sujet il y a peu. A.Stepanov a posé les fondements de la bibliothèques de conteneurs et algorithmes du C++, et il revendique que le design n'est pas objet.

    3- Tous les concepts, même OO ne sont pas présents.
    Il n'y a pas d'héritage qui ne permette pas une substituabilité syntaxique. C'est à dire un héritage qui ne fasse que importer du code. Ruby a ça. C++ a ça également avec l'héritage privé.
    Il n'y a pas de support natif de la programmation par contrat -- une conséquence de l'absence d'héritage public d'autre chose de que classe 100% abstraites.
    Il n'y a d'ailleurs pas d'héritage multiple de classes non 100% abstraite (i.e. les interfaces)
    Il n'y a pas de multi-method (i.e. de polymorphisme sur plus d'un type).

    On pourrait aussi remarquer l'absence de choses venant d'autres paradigmes et que le C++ offre. En termes de généricité, celle offerte par Java est très limitée. On est loin du Duck Typing. Mais je me restreins à l'OO.
    Bref. Sur ces deux points là, Eiffel est un bien meilleur langage (je ne connais pas Smalltalk, je ne peux pas en parler)
    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. #76
    Membre habitué
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2009
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2009
    Messages : 122
    Points : 167
    Points
    167
    Par défaut
    Personnellement je serais plus pour prendre le problème à l'envers. Je ne vois pas trop l'intérêt d'aller apprendre à un étudiant qui veut se spécialiser dans le développement Androïd d'apprendre l'Ada. Il serait peut-être temps de penser à plus spécialiser les formations que de vouloir sortir des développeurs "généraliste" qui n'ont finalement aucune notion de la réalité métier. Combien d'étudiant veulent faire des jeux vidéo ? Combien d'entre eux y arrivent vraiment ? Entre autre car les places sont rares mais aussi car c'est loin d'être aussi ludique qu'ils le pensent et que c'est de loin un environnement métier très complexe.

    Quel langage devrait-on utiliser pour introduire la programmation ?
    Cette question est assez subjective en fin de compte. Chacun aura plutôt tendance à vouloir répondre selon deux critères : son propre penchant pour un langage et le langage de plus demandé selon lui.

    Je pense que ce qui permet le mieux d'apprendre à programmer, c'est tout simplement en apprenant à l'étudiant à répondre à ces attentes lorsqu'il a intégré ce cursus. Si les écoles avaient des orientations définis, cela serait plus simple l'étudiant pourrait s'inscrire dans celle qui répondra le mieux à ces attentes.

    On a souvent tendance à dire que notre métier et avant tout un métier de passionné. J'aime à croire que cela est vrai, donc quelque soit la difficulté du langage, si c'est ce que souhaite faire l'étudiant, il surmontera la difficulté. Faites faire du C à un étudiant qui rêve de faire des jeux sur Androïd et vous allez le perdre. Faites faire du Java à un jeune qui rêve de programmer des robots et ça sera la déprim...

    Le problème n'est donc pas vraiment de trouver un meilleur langage, pour l'initiation, d'ailleurs c'est quoi un meilleur langage ? Il faut simplement trouver celui qui correspond le mieux au attente des étudiants soit en se spécialisant à la base, soit en utilisant un langage proche de l'algorithmie tout en les laissant s'épanouir à travers des projets qui leur tient à cœur.

  17. #77
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    tech lead c++ linux
    Inscrit en
    Août 2004
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : tech lead c++ linux

    Informations forums :
    Inscription : Août 2004
    Messages : 4 262
    Points : 6 680
    Points
    6 680
    Billets dans le blog
    2
    Par défaut
    <HS>
    Citation Envoyé par super_navide Voir le message
    et surtout pas le C , d'ailleur je trouve ca idiot d'apprendre le C pour commencé l'informatique ou faire de l'algorithmique, le C c fait pour de l'embarquer , créer un system d'exploitation, des drivers etc... c une partie de l'informatique intéressante mais c trop compliqué pour commencer.

    Javascript permet de commencer par des programmes simple sans fonction puis ensuite d'aborder la réutilisation de composant en utilisant les fonctions ( un des principes de base de l'informatique on réinvente pas la roue a chaque fois qu'on code sauf pour apprendre ).
    ensuite on peut aborder la notion de programmation objet et puis la notion de réutilisation pousser au niveaux objet.

    Avec javascript on peux facilement passer de la theorie sur papier avec un algorithme a une implementation concrete avec des structures de données simple.

    Ensuite en faisant du javascript dans un navigateur on peut apprendre la chose essentiel dans l'informatique pour un programme, c'est l'interaction avec un Humain (interface homme machine ) et avec le matériel l'écran, le clavier et la souris, et ca seul javascript peut le permettre sans avoir a installer
    un environnement de développement très lourd qui sera essentiel par la suite quand même.

    Ensuite une fois tous ca bien assimilé on peut passer a la vitesse supérieur avec java .....
    Citation Envoyé par super_navide Voir le message
    Moi je pense réellement que le meilleur langage pour apprendre a programmer est javascript.
    Je me demande si finalement, il ne faudrait pas commencer par le français

    Désolé, pas pu résister
    No offense ♥

    </HS>
    « L'effort par lequel toute chose tend à persévérer dans son être n'est rien de plus que l'essence actuelle de cette chose. »
    Spinoza — Éthique III, Proposition VII

  18. #78
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par LSMetag Voir le message
    Quand je parle "algorithmie", ce n'est pas apprendre par coeur des algos déjà faits ou des méthodes pour résoudre des problématique. C'est apprendre à réfléchir par soi même pour résoudre n'importe quel problème. Et cette façon de penser, on ne l'a pas forcément quand on débute les cours de "programmation".
    Rien que 2 boucles imbriquées, c'est déjà balèze à comprendre pour les débutants.
    Zut, c'est ce que l'on apprenait à faire en cours de math il y a 20-30 ans au lycée entre autre en géométrie. Lycéen : utiliser http://www.geogebra.org/cms/fr/ pour apprendre à faire pareil de nos jours.
    C'est dure de commencer à réfléchir à la fac
    Si deux boucles imbriquées donnent des sueurs froides c'est que l'enseignement est trop tardif ( et cherche à corriger de mauvaises habitudes ) ou que cette personne devrait faire autre chose pour notre bien.

    Citation Envoyé par LSMetag Voir le message
    Oui les boîtes ont, en général (pas toujours), des algos métiers, qui peuvent être bons ou pas (on fait avec). Mais on doit rajouter par dessus les nôtres, ou tout refaire. De base, une techno est très limitée en librairies. Oui on peut utiliser des libs tierces, si on a les moyens ou si les conditions d'utilisation le permettent. Mais avoir des boîtes noires c'est toujours dangereux en entreprise. Dans une appli critique où un bug important doit être résolu dans l'heure, tu ne peux pas te le permettre. Et dans une start-up, c'est toi qui dois réfléchir aux architectures/structures de l'appli.
    On est loin du cas du débutant mais il ne faut pas oublier de les informer là dessus assez vite
    Je parlais des algo de base ( tri ...) c'est implémenté partout java, python, stl du C++, et il y a surement des lib linux qui permettent de le faire en C... il serait ridicule de les réécrire déjà du point de vu de la maintenance ce qui n'est pas standard coûte cher.
    Moi qui faisait confiance à Google sous android, Apple sous iOS, php à l'insu de mon plein gré.

    Citation Envoyé par Luc Hermitte Voir le message
    Nous n'avons pas les mêmes définitions il semblerait. Savoir aligner des if/else ou parcourir des tableaux pour appliquer des choses dessus, même simples, c'est de l'algorithmie. Certes très basique, mais cela en est. Et sans ça, on ne va nulle part. C'est la base.
    Ok c'est moi je suis vieux. J'ai trouvé cela http://perso.limsi.fr/cecile/Enseign...ursAlgo_V1.pdf ça correspond à vos propos.
    Faudrait changer le nom

    j'avais écrit comme première réponse :
    IF algorithmie? Non, c'est juste des gotos déguisés et structurés !
    Là on est juste au niveau des normes d'un langage.
    L'algorithmie de base chez moi c'est : http://www.enseignement.polytechniqu...nf431-poly.pdf

    Citation Envoyé par Luc Hermitte
    Quand cette base est perturbée par des considérations bas niveau comme : comprendre l'agencement de la mémoire et savoir allouer ce qu'il faut, libérer quand on a finit et réagir aux cas où on ne peut plus allouer, alors on déroute les débutants et on en perd en chemin. Tout le monde ne jongle pas instantanément avec toutes ces notions.
    Si on commence par l'assembleur c'est étude de la mémoire à plein temps!
    Mais après on connait où se trouvent les variables ( bugs qui permettent les exploits...), les pointeurs... J'ai appris comme ça et c'est la voie royale mais je comprends bien que ce n'est pas pour tout le monde.

    Le fait que l'on en perd en chemin bah c'est bien mieux qu'ils fassent autre chose qui leur plaise, non?
    Moi j'aime pas le fonctionnel, c'est pas grave j'en fais pas.

  19. #79
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 275
    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 275
    Points : 10 985
    Points
    10 985
    Par défaut
    Je suis sûr qu'il y en a plein qui aiment "développer" et qui ne touchent pas une bille en assembleur. Nouvelle question pour ce trolldi : est-ce que c'est grave ? Faut-il sélectionner les développeurs pour que les moins "bons" partent vers d'autres voies ?

    BTW, au sujet du cours qui est pour toi l'unique exemple type d'un cours algo:
    Ce cours s’adresse aux élèves de deuxième année de l’Ecole Polytechnique, c’est-à-dire à des étudiants sachant déjà programmer et ayant acquis une certaine familiarité avec les notions d’algorithme et de complexité calculatoire. Ses objectifs sont typiques d’un cours avancé de second cycle universitaire.
    La définition de ces profs ne semble pas si éloignée de celle que je peux avoir quant à ce qu'est un algorithme.

    PS: en cours de maths il y a 25ans, je n'ai pas souvenir de boucles. Et encore moins à deux dimensions. Durant l'option info, qui était dispensée par un prof de maths, si, mais là c'était normal. Et allez savoir pourquoi les cours d'infos commençaient bien souvent par la description de l'architecture des (micro- seulement?)ordinateurs avec les UA & cie.
    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...

  20. #80
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2009
    Messages
    1 030
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2009
    Messages : 1 030
    Points : 4 203
    Points
    4 203
    Par défaut
    Citation Envoyé par valkirys Voir le message
    Zut, c'est ce que l'on apprenait à faire en cours de math il y a 20-30 ans au lycée entre autre en géométrie. Lycéen : utiliser http://www.geogebra.org/cms/fr/ pour apprendre à faire pareil de nos jours.
    C'est dure de commencer à réfléchir à la fac
    Si deux boucles imbriquées donnent des sueurs froides c'est que l'enseignement est trop tardif ( et cherche à corriger de mauvaises habitudes ) ou que cette personne devrait faire autre chose pour notre bien.
    Et pourtant ce n'est pas la même chose.
    Ce que j'ai remarqué, c'est que la plupart d'entre nous, même en Master, étaient mauvais en maths, et avaient du mal, en image et en 3D.
    J'ai commencé dans un IUT assez réputé malgré mes 08/20 de moyenne en maths (130 personnes sélectionnées, pour 50 diplômés). Et oui, à part quelques cas particuliers qui avaient commencé à programmer au lycée ou avant, tout le monde, à 18/19 ans, était logé à la même enseigne et devait apprendre à raisonner rien que pour faire un tri. On t'apprenait pas le Quick Sort, Tri à Bulles ou truc comme ça. On te disait ce que c'était une fois que t'avais imaginé l'algo correspondant.

    En maths, certes il y a un cheminement de pensée, mais c'est toujours pour aboutir à des formules qu'on nous a apprises. En plus, tu te fais flinguer si tu ne rédiges pas avec les expressions vues en cours. On n'est pas vraiment dans la logique.
    Dans un de nos premiers examens, après 6 mois d'ADA, un des exercices concernait un tableau multidimensionnel => boucles imbriquées. Tout le monde n'a pas réussi.

    Citation Envoyé par valkirys
    On est loin du cas du débutant mais il ne faut pas oublier de les informer là dessus assez vite
    Je parlais des algo de base ( tri ...) c'est implémenté partout java, python, stl du C++, et il y a surement des lib linux qui permettent de le faire en C... il serait ridicule de les réécrire déjà du point de vu de la maintenance ce qui n'est pas standard coûte cher.
    Moi qui faisait confiance à Google sous android, Apple sous iOS, php à l'insu de mon plein gré.
    C'est sûr on ne va pas réinventer la roue. Mais apprendre à l'inventer au début, c'est ça qui construit notre façon de penser par la suite. Evidemment tu fais confiance à de grosses sociétés ou de gros consortiums. Sinon tu coderais en assembleur. On ne va pas réinventer non plus DirectX. Mais voila, ça doit être soit éprouvé, soit très réactif au niveau du support. C'était pas le cas chez IBM pour Websphere (sensé être éprouvé...)!!!


    Citation Envoyé par valkirys
    Si on commence par l'assembleur c'est étude de la mémoire à plein temps!
    Mais après on connait où se trouvent les variables ( bugs qui permettent les exploits...), les pointeurs... J'ai appris comme ça et c'est la voie royale mais je comprends bien que ce n'est pas pour tout le monde.
    Tu ne savais pas déjà programmer avant de commencer ton cycle universitaire ?

    Commencer par l'assembleur est une autre façon de faire. Tu regardes comment fonctionne la machine avant de programmer. Tu en dégoûtes juste une tonne c'est tout.
    Je ne dis pas qu'il ne faut pas voir en parallèle comment fonctionne un ordi, via par exemple les portes logiques ou le binaire. Mais commencer la programmation en assembleur...

    Inversement, ceux qui savaient bien coder en C/C++ se tapaient 02/20 en exam d'assembleur (2,5/20 de moyenne de promo) en fin de formation de DUT. Ca ne les a pas empêché d'obtenir des Master ou Doctorats, de devenir ingénieurs, chefs de projet, architectes ou chercheurs.

Discussions similaires

  1. [aide] Quel type de champs utiliser pour mettre un "+"
    Par lothar59 dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 04/03/2007, 14h05
  2. [Remoting] Comment savoir quel channel un client utilise pour se connecter?
    Par eldoctor.Sylvain dans le forum Framework .NET
    Réponses: 1
    Dernier message: 18/09/2006, 15h40
  3. Quel langage ont-ils utilisé ?
    Par ®om dans le forum Langages de programmation
    Réponses: 9
    Dernier message: 04/08/2006, 13h29
  4. [Librairies] Quel système de cache utiliser pour un forum?
    Par Cyrius dans le forum Bibliothèques et frameworks
    Réponses: 8
    Dernier message: 16/10/2005, 11h43
  5. Quel format de fichier utiliser pour les maps ?
    Par fb57 dans le forum OpenGL
    Réponses: 3
    Dernier message: 23/09/2004, 20h22

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