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: Quels sont les langages de programmation à conseiller à un débutant ?

Votants
224. Vous ne pouvez pas participer à ce sondage.
  • Assembleur

    7 3,13%
  • Basic

    18 8,04%
  • Bash

    3 1,34%
  • C

    54 24,11%
  • C++

    37 16,52%
  • C#

    62 27,68%
  • Cobol

    1 0,45%
  • Delphi

    2 0,89%
  • Fortran

    3 1,34%
  • Go

    0 0%
  • Java

    85 37,95%
  • Javascript

    38 16,96%
  • Kotlin

    24 10,71%
  • Ladder

    0 0%
  • Pascal

    91 40,63%
  • PHP

    18 8,04%
  • Python

    126 56,25%
  • Ruby

    11 4,91%
  • Rust

    51 22,77%
  • Swift

    0 0%
  • Typescript

    64 28,57%
  • Visual Basic

    7 3,13%
  • VBA

    14 6,25%
  • VHDL

    0 0%
  • Autres (à préciser)

    4 1,79%
  • Je ne sais pas

    0 0%
Sondage à choix multiple
Débats sur le développement - Le Best Of Discussion :

Les étudiants de première année doivent-ils être initiés à la programmation en s’appuyant sur Python ou Java


Sujet :

Débats sur le développement - Le Best Of

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert confirmé
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 771
    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 771
    Par défaut
    Moi j'aime bien mon enseignement université en 2000
    • l'assembleur, mais le truc le + simple: 6800
    • 1 langage pour le génie logiciel/ algorithmie (**): SML (<- la blague c'est Stupide M*rdique Language ) [remplacé par Scheme]
    • 1 langage procédural (*): C le roi (+ du "bas niveau" au passage) et Pascal (pas Delphi): 1 légère notion de pointeurs mais c'est surtout assez proche de l'algorithmie (avec les blocs de déclarations variables, corps, ... et la manipulation des données également) et 1 compilation très rapide (idéal pour l'apprentissage)
    • 1 langage objet [pur]: Java le roi (ou éventuellement Smalltalk)
    • 1 langage fonctionnel: Lisp
    • les langages listings sont obsolètes: COBOL, BASIC

    J'avais vu d'autres langages mais liés à leurs domaines: Prolog (moteurs d'inférences), Programmation Orientée Aspect (ce sont des modules Java), bash/ sh (administration Linux), Merise (c'est 1 méthode, mais il y a tellement de trucs que bon)

    Et les incontournables: C++ (clients lourds), SQL (BD), XML (méta), HTML/ JavaScript (Web + Programmation Orientée Prototypes, maintenant on ajoute CSS et TypeScript), Ada (industriel) … maintenant on ajoute Python (script)


    Édit: *: programmation impérative me dit Internet ce terme venu des fonds des âges

    **: la + grosse partie que je me souvienne, c'est d'avoir 1 langage ultra simple à apprendre, essentiellement basé sur les booléens et ainsi prouver la validité d'un algorithme (tables de vérité/ Karnaugh, tautologie, …)

  2. #2
    Membre très actif
    Homme Profil pro
    Programmeur des cavernes
    Inscrit en
    Août 2017
    Messages
    364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Programmeur des cavernes
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2017
    Messages : 364
    Par défaut
    C, C# ou Java, Python. Dans cet ordre. Commencer par Python c'est détruire le cerveau d'un futur programmeur.

  3. #3
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 972
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 972
    Par défaut
    Je suis assez d'accord avec ceci mais en même temps j'y apporterai un petit bémol :
    Python n'est pas un bon langage pour débuter, il est très facile de coder avec, trop facile justement. Pas de type (c'est optionnel et je doute qu'un débutant le fasse), python lui apprendra pas a bien coder correctement.
    Déjà, l'une des affirmation est fausse.
    Python est typé, certes, dynamiquement, mais typé quand même.
    Python peut tout à fait être le bon langage pour apprendre à coder correctement si on est rigoureux.
    Mais c'est la qu'est le problème. Il est tellement permissif qu'il est très facile de prendre de mauvaises habitudes.

    Ce que je reproche à ces langages "faciles" (pas seulement python mais bien d'autres y compris le langage qui a ma préférence, le C#), c'est qu'on écrit des lignes très facilement mais qu'un débutant va voir que ça fonctionne et ne se posera pas plus de question que ça.

    J'ai croisé beaucoup trop de personnes se disant développeur mais ne comprenant pas ce qui se cache derrière une ligne de code et se retrouvant avec des comportements non désirés ou des performances dégradées sans être capables de l'expliquer. Trouver du code fonctionnel sur internet est à la portée de n'importe qui (encore plus avec ChatGPT).
    Le comprendre et avoir conscience de ce qui se passe en interne, c'est déjà plus compliqué.

    Pour moi l'apprentissage de la programmation passe par plusieurs étapes et plusieurs langages.

    Dans un premier temps, il faut comprendre les concepts basiques (variables, typage, conditions, itérations).
    En cela n'importe quel langage peut faire l'affaire.
    Python à l'avantage d'avoir une syntaxe très simple et l'IDLE permet de faire rapidement des expériences, c'est top !
    Petit bémol, il n'a pas naturellement (à ma connaissance) d'instruction Do..While (il faut bricoler même s'il n'y a rien d'insurmontable).

    Une fois ces concepts acquis, on peut écrire des codes plus complexes qui utilisent en utilise plusieurs (voire les imbrique).
    Python étant basé sur l'indentation, le débutant est obligé de prendre cette habitude, ce qui à mon sens contribue à la lisibilité.

    Pour ce qui de la POO, je déconseillerai fortement Python dont la philosophie basée sur l'ouverture complète est en totale contraction avec le principe d'encapsulation.
    Un débutant non accompagné n'a pas conscience de l'existence de la fameuse convention de nommage avec l'undescore et même s'il en a conscience, il peut choisir de l'ignorer pour une raison ou une autre.
    Je déconseillerai également le C# (même si je l'adore) car il existe trop de mécanismes simplifiant l'écriture mais qui, encore une fois, n'aident pas à comprendre ce qui se passe réellement.
    Je conseillerai un vieux Delphi 7 même s'il est très verbeux (ou alors C# mais sur un Framework inférieur à la 3.5).

    Enfin, je conseillerai de passer un petit moment sur l'assembleur pour aider à comprendre comment fonctionne la machine.

    La suite dépendra du domaine et de la techno choisis.

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    952
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 952
    Par défaut
    Le problème pour moi c'est que la question est pas très bien posée déjà.

    Il veut faire quoi le débutant ? Un petit truc chouette pour sa bande de potes vite fait ou il veut devenir un professionnel ?

    Dans le premier cas, Java ou Python serait sans doute une bonne réponse.

    Mais s'il veut devenir un professionel, un avec qui on a envie de bosser et pas juste un singe copier/coller de Stackoverflow, il faut les bases théoriques/pratiques.

    Gestion de la mémoire, Gestion des IO, les Threads d'UI, programmation impératives, objets, le langage de programmation n'est que le support pour apprendre ça correctement.

    Je ne suis pas forcément pour apprendre passer obligatoirement par le C/C++ en tant que tel, mais quelques cours sur à quoi ressemble les instructions les plus élémentaires (assembleur) ou par exemple à quoi ressemble la réalité (et donc pourquoi il faut éviter de faire le petit malin en recodant tout la main), exemple : implémentation de la fonction strlen :



    Sans même aller jusqu'à former quelqu'un a être capable d'écrire ça lui même on voit qu'il existe plusieurs version, et que la raison c'est que la portabilité + l'archi-optimization de ces fonctions élémentaires via des instructions assembleurs toujours plus riches au fur et à mesure des générations de processeur que tout les langages appelles plutôt que de recodés eux-même.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Ce qu'il faut pour commencer, c'est un langage simple, transactionnel, qui permette de faire de l'appli ligne de commande.
    Evidemment, comme une grande majorité de personne, je pense au langage C qui fut mon langage premier.

    Du coup, je pense à un autre langage transactionnel qui pourrait être très intéressant tout en apportant plus d'élements que le C, le langage Rust.

    ce qui serait un réel avantage je pense vu qu'il me semble être un langage d'avenir.

    Ensuite, apprendre un langage orienté objet (.Net ou Java).
    le choix d'apprendre les langages web (javascript/Java) vs data (python/scala/R) vs embarqué (C/Rust/...) devrait être ensuite dans une option dans les années plus avancées.

  6. #6
    Membre éprouvé
    Homme Profil pro
    Développeur
    Inscrit en
    Août 2003
    Messages
    1 500
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Août 2003
    Messages : 1 500
    Par défaut
    Pour la première année, je vous rejoints avec C (ou Rust)

    Ensuite, je dirais qu'il serait bien de faire du Go car ça progresse en entreprise. J'ai fait plusieurs entreprises et elle changeait de JAVA (car trop gourmand pour des microservices, beaucoup de RAM nécessaire pour faire tourner un IDE, ...) vers un autre langage (Python ou Go).

  7. #7
    Membre confirmé
    Homme Profil pro
    Architecte réseau
    Inscrit en
    Février 2024
    Messages
    269
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Architecte réseau

    Informations forums :
    Inscription : Février 2024
    Messages : 269
    Par défaut
    Question facile ! Python est un standard industriel là pour durer au contraire de Java qui est passé de mode.

  8. #8
    Rédacteur
    Avatar de eclesia
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    2 111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 111
    Par défaut
    et bien je dirais pour commencer : LUA un langage simple et qui a l'inverse de C/C++ n'est pas pollué par quantité de syntaxe et de concept qu'on ne trouve que dans ces languages.

    et continuer sur : Java et Typescript, python si c'est un besoin.

  9. #9
    Expert confirmé

    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Avril 2002
    Messages
    2 892
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Directeur des systèmes d'information
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 892
    Par défaut
    Citation Envoyé par RenarddeFeu Voir le message
    Question facile ! Python est un standard industriel là pour durer au contraire de Java qui est passé de mode.
    Java n'est pas du tout passé de mode et il est même numéro 1 sur les offres d'emploi.

  10. #10
    Invité de passage
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Novembre 2021
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Consultant en sécurité

    Informations forums :
    Inscription : Novembre 2021
    Messages : 1
    Par défaut
    La réponse reste quand même vachement liée à ce que les étudiants veulent faire plus tard,
    - C, C++, ASM et Rust sont bien pour développer des choses pour de l'embarqué, bricoler du Linux, faire des logiciels ultra rapide, des drivers,
    - Bash pour tout ceux qui sont amener à travailler sur Linux ou plus largement les Unix-likes,
    - Python pour des choses autour de l'IA
    - C# pour des app exclusivement Linux ou des jeux sur moteur ou sans moteur
    - Java, Kotlin, et un langage compilé machine type C, C++, Rust pour les app Android,
    - Swift pour du dev Apple exclusivement,
    - PHP et JS et même ASP sont bien pour aller faire du site web,
    - Pascal, Fortran et tous ces "vieux langages pour des app et librairies scientifiques,
    - Ada car c'est formateur.
    ...

    Le VBA par contre ne me semble pas d'avenir pour quelqu'un en école de dev car : MS va l'abandonner au profit de Python et que de toute façon les ingénieurs dans les domaines scientifiques l'apprennent déjà à l'école (avec Python pour certaines écoles), donc un besoin en spécialistes plus restreint.
    Pour le/les Basic, à par s'amuser sur son émulateur C64 a faire des rétro app à vendre sur itch.io je ne vois pas d'intérêt pratique pour lequel des gens serait près à payer, mais après je ne suis pas quelqu'un qui à fait un cursus traditionnel de prog.

  11. #11
    Membre confirmé
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Mai 2015
    Messages
    341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Mai 2015
    Messages : 341
    Par défaut Ce n'est que mon opinion...


    Perso, je pense qu'il faut d'abord apprendre "les bases" avant d'utiliser des langages de plus haut niveau. Je dirais donc,

    • Le C, qui est un langage "relativement" facile a apprendre, mais parfois difficile a utiliser correctement. Cela permettra de mettre en évidence à l'étudiant les différents problèmes universelles en programmation: Typage, gestion de la mémoire et pointeurs. Et au passage, un peu d'assembleur pour comprendre ce qui est fait d'un "code source" lorsqu'on le compile peut être très utile.
    • En // je dirais Pascal, pour l'étude de la programmation structurée, et l'études des principales "Structures de données" (stack, list, dict, ...).
    • Ensuite, tout en restant dans les langages "qui compilent nativement", Ada, Rust et (C++). Ils permettent l'utilisation de la POO, avec les avantages et les défauts des concepts de la POO (encapsulation, héritage, polymorphisme) . Je mets volontairement le C++ à part, car sa syntaxe est horrible, rendant un "code source" difficile à lire (et on lit plus souvent un code qu'on en écrit). Le passage par cette étape permet aussi d'aborder les "Design Patterns" (voir le GoF).
    • Pour finir, étudier un langage dit de "haut niveau". Là je préconniserais Python, non seulement parce qu'il est simple a apprendre une fois les étapes précédentent franchie. Mais attention, "Python" a tendance à se compliquer au fil du temps. Mais si on s'en tient aux "bases" du langages, c'est le meilleur choix.


    Armé ainsi, on peut plus facilement s'adapter à ce qu'on rencontrera dans le future. Mais si l'étudiant est curieux, je pense qu'il est bon d'avoir des notions de ce qu'est :

    • Le travail fait par un compilateur (lexer, parser, type checker, IR code, ...). Qui expose un tas de "concepts", qu'on retrouvera tout au long de sa carrière, et de mieux comprendre le pourquoi et le comment des choses qui sont ce qu'elles sont actuellement.
    • Le travail d'un RTOS, (µC/OS II ou III ou FreeRTOS). C'est non seulement très instructif, mais permet de mettre en lumière et d'expliquer ce qui régit nos programmes.


    Et si notre étudiant à le feu sacré,

    • Définir un (nouveau) petit langage, via la compréhension des règles BNF.
    • De développer un interprèteur et/ou un compilateur pour ce petit langage.


    Ensuite, tout dépend du sur quoi on tombe dans son boulot, où on a pas trop le choix des armes.

    BàV et Peace & Love.

  12. #12
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 972
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 972
    Par défaut
    L'avantage du Pascal (sur lequel j'ai également commencé pendant mes études) est qu'il permettait de maitriser les fondamentaux, puis les concepts POO, tout en mettant des garde-fous pour éviter de prendre de mauvaise habitudes.
    Par mauvaises habitudes, je rejoins Calvaire sur Python et son typage pas très strict, ou encore sa vision de l'encapsulation en POO (sur laquelle j'ai eu des débats houleux avec certains membres du forum).

    Donc dans un premier temps, pour acquérir les bases, j'aurais laissé le Pascal.
    Mais effectivement, à moi aussi, le C parait être une excellente option.

    Pour l'objet, également j'aurais laissé le Pascal, ou plutôt le Delphi qui est son héritier.
    Le C#, qui est mon langage de prédilection, est excellent pour faire de l'objet.
    Mais Microsoft a tellement travaillé dessus pour gagner en productivité qu'il masque aujourd'hui une partie de ce qu'un étudiant devrait connaître.
    Le GC n'aide pas non plus à comprendre la durée de vie d'un objet.

    Pour le Web, je n'imagine pas un apprentissage sans HTML/CSS/JS.
    Cela peut paraître vieux jeu mais j'ai vu passer tellement d'alternants qui faisait des appli avec ASP/Net et MVC ou d'autres outils et qui n'avais aucune idée de ce qui se cachait sous le capot.

    Pour le mobile, C# et MAUI.

  13. #13
    Membre averti
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Septembre 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2011
    Messages : 18
    Par défaut
    Rien de tout ça !

    Un bon retour au LSE, voilà ce qu'il leur faut !

    PS : ceci est un message d'outre-tombe...

  14. #14
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2019
    Messages
    308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

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

    Informations forums :
    Inscription : Septembre 2019
    Messages : 308
    Par défaut
    Je rejoins popo sur le fait que le pascal (la version Object Pascal) a l'avantage d'être simple, très structuré et clair, et contient les concepts objet. Il permet d'apprendre les bases de programmation objet et autres, ce qui n'empêche pas ensuite de s'orienter vers d'autres langages.
    A part Ada qui est un peu trop austère, je ne vois aucun langage adapté à un apprentissage rigoureux, excepté éventuellement une variante objet du Basic.

  15. #15
    Membre confirmé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Décembre 2008
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2008
    Messages : 108
    Par défaut Apprendre à marcher avant de courir
    Avant d'apprendre un langage, il faut commencer par apprendre les bases de l'algorithmie/logique, comment fonctionne un ordinateur (mémoire, cpu, etc...) et les principaux paradigmes de programmation:
    1. impératif structuré (le paradigme de base de tous les processeurs courants)
    2. fonctionnel basé sur la théorie du lambda-calcul de Church (celui qui a permis d'inventer la POO ou les bases de l'IA). Bien que simple et puissant, la plupart des développeurs ont du mal avec ce paradigme.
    3. programmation orienté objet (utile pour les grosses applications)
    4. logique basé sur la théorie des prédicats du premier ordre (anecdotique dans son usage, mais qui a son intérêt pour les systèmes experts et l'IA). C'est certainement le paradigme le plus difficile à apprendre.

    La mise en pratique des paradigmes pourra se faire en utilisant un langage de programmation lié:
    1. impératif structuré: Pascal/Delphi mais sans objets
    2. fonctionnel: Lisp ou Python qui permettent de mettre en pratique plus de choses que Java ou C#
    3. programmation orienté objet: je dirais Eiffel car il permet de tout faire (héritage multiple, etc) mais aussi il propose des solutions pour gérer les cas dangereux. Ensuite on pourra passer à un langage comme C# ou Java qui ne supportent qu'un sous-ensemble du paradigme.
    4. logique: Prolog

  16. #16
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 972
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 972
    Par défaut
    Cela n'engage que moi.
    Mais je trouve que l'héritage multiple pose plus de problème qu'il n'en résout.

Discussions similaires

  1. Quels langages de programmation utilisez-vous pour Arduino ?
    Par Michael Guilloux dans le forum Arduino
    Réponses: 13
    Dernier message: 21/04/2020, 21h33
  2. Dans quels langages de programmation seriez-vous prêt à vous investir en 2017 ?
    Par Community Management dans le forum Langages de programmation
    Réponses: 70
    Dernier message: 21/02/2020, 19h14
  3. Quels sont les langages de programmation que vous détestez le plus, et pourquoi ?
    Par Community Management dans le forum Langages de programmation
    Réponses: 214
    Dernier message: 31/08/2017, 10h38
  4. Sondage : quels sont les langages de programmation que vous maîtrisez ?
    Par Michael Guilloux dans le forum Débats sur le développement - Le Best Of
    Réponses: 81
    Dernier message: 27/03/2017, 09h33

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