Quel langage pour débuter en programmation ?

Bonjour tout le monde,

Je pense que le mieux pour choisir son langage c’est de savoir vers quelle plateforme nous aimerions créer un produit. Ce qui motive les développeurs c’est la passion.

En sachant cela, si je croise une personne qui veut apprendre la programmation. Ma première question c’est : Quel produit tu veux créer ? Et qu’est-ce qui anime cette envie ?

Si j’ai une réponse à ces deux questions alors je vais pouvoir proposer différents langages, sans forcer l’orientation de la personne.

En réponse à CrEv : ADA c’est très bien mais généralement appris (rarement) après le Pascal, et pour apprendre certains concepts de haut niveau, tu as pas besoin d’une énorme machine comme ADA pour apprendre aux étudiants des notions de base comme les pointeurs. Comme j’ai déjà écrit, ADA est désormais très peu utilisé en éducation, pour la 2eme partie de l’enseignement c’est généralement Java ou C#, je te donne des faits ce ne sont pas des opinions. Donc tu continue à ne rien comprendre, ça va devenir comique. Tu as le droit d’avoir des opinions, même si elles sont ridicules, mais quand tu affirmes des informations fausse c’est utile de corriger.

En réponse à Toila, il y à effectivement une nouvelle mode sur l’éducation sur Python mais quand tu y regarde de près Python est surtout utilisé pour faire une initiation à la programmation à des étudiants qui ne sont pas destinés à devenir ingénieur, donc dans des écoles généralistes. Les écoles d’ingénieurs qui veulent former des développeurs professionnels utilisent encore majoritairement Java ( ou parfois C#) pour la 2eme partie de l’enseignement (la première partie est souvent faites en Python, Pascal ou C).

ADA c’est très bien

En passant, vu que tu veux jouer au plus malin, c’est Ada et non ADA

je te donne des faits ce ne sont pas des opinions. Donc tu continue à ne rien comprendre, ça va devenir comique. Tu as le droit d’avoir des opinions, même si elles sont ridicules, mais quand tu affirmes des informations fausse c’est utile de corriger.

Tu peux pointer ces infos fausses ? Par contre ça devient navrant de te voir obligé de sortir des attaques perso au lieu d’arguments.

D’autant plus qu’à mon avis la question n’était pas à propos de ce qu’on peut apprendre en école.

Et pour compléter la réponse, un langage avec un repl peut être un excellent choix pour débuter et apprendre de manière interactive.

Parce que quand tu as repris tous mes propos point par point en ne les comprenant pas, en les déformant, et en prenant tout de travers et en me faisant dire des choses que je n’avais pas dit c’est pas une attaque perso ?
Ou est ce que j’ai écrit que le C serais un “bon” langage pour apprendre la programmation ?
Bref agresser les gens en essayant même pas de les comprendre c’est bien pire qu’une attaque perso c’est un comportement non seulement agressif mais totalement navrant. Tu connais l’histoire de la paille et de la poutre ? Tu ose me critiquer sur une chose ou toi tu fait 1000 fois pire.
Bref tu es un Troll c’est tout, tu n’a pas la moindre idée de ce dont tu parles, tes “infos” sont fausses et basées sur ta seule “imagination”, tu ne connais même pas les programmes des écoles et Universités et tu n’a pas la moindre idée de savoir pourquoi les profs utilisent tel ou tel langage et dans quel but, tu ne fait qu’affabuler et agresser les gens c’est tout.

Ben disons que vu que le sujet c’est quand même de savoir quel langage est bien pour débuter et que tu repond en parlant de debuter par c ou pascal excuse moi de le prendre dans le sens du sujet et de critiquer ces choix. Après si ce n’était pas pour dire que c est bien pour débuter j’ai un peu l’impression que tu n’as donc jamais répondu au sujet…

Mais c’est vrai que je n’ai aucune idée de ce que c’est un dev, de pourquoi on apprend tel type de langage, etc.

Et sinon, tu propose quoi pour répondre à la question alors ?

Si tu regardes les programmes des Universités tu verra que certaines se servent de Pascal pour l’initiation à la programmation (procédures, pointeurs), Pascal étant vraiment un très beau langage pour apprendre à programmer de façon lisible, cependant cet enseignement peu être fait avec n’importe quel autre langage. Plus tard dans le cursus ils apprennent des concepts de plus haut niveau comme la POO, généralement avec Java (ou sinon souvent C#), qui fait partie des langages conseillés pour l’éducation pour tout un tas de raison. A la sortie de leur formation les étudiants sont adaptés aux besoins des entreprises car Java fait parti des langages les plus demandé par les recruteurs, et d’autre part C# étant très proche de Java la formation à Java forme donc aussi du même coup à C#. La formation à C++ qui est un peu différent demande une adaptation mais un étudiant qui à appris avec Java ou C# n’a généralement pas de mal à passer à C++. Bref un étudiant qui à suivi le cursus Pascal puis Java , ou directement Java est parfaitement adapté à la demande du marché qui se porte principalement sur ces trois principaux langages, à savoir Java, C# et C++.
La formations en utilisant Python pose probleme car Python est en fait trop simple et ne forme pas à la programmation Java, C# ou C++ car Python utilise des concepts très éloignés c’est pour cette raison que au final les écoles non informatiques qui veulent faire une petite initiation à la programmation ont tendance à proposer Python pour sa simplicité, alors que les écoles d’ingénieurs qui forment des développeurs utilisent le plus souvent en France et dans le reste du monde généralement soit Java soit C#.

1 « J'aime »

car Python utilise des concepts très éloignés c’est pour cette raison
que au final les écoles non informatiques qui veulent faire une petite
initiation à la programmation ont tendance à proposer Python pour sa
simplicité, alors que les écoles d’ingénieurs qui forment des
développeurs utilisent le plus souvent en France et dans le reste du
monde généralement soit Java soit C#.

C’est archifaux, le langage le plus enseigné au états unis dans les université comme premier langage c’est Python.

Ce que tu dis était vrai il y a 15 ans. Plus maintenant.

Je te conseille de lire ça http://www.paulgraham.com/javacover.html

Et ça surtout http://www.paulgraham.com/pypar.html

Et puis pour te prouver que ton affirmation est fausse fait quelques recherches sur Google, je veux pas avancer de chffre faux mais il me semble que 8 université sur 10 au états unis dans les département CS commencent par Python, a vérifier.

Voilà

Ce que tu as donné comme lien c’est un billet d’humeur, un simple troll d’un blogueur, pas une donnée valable. Donc pour prouver que ton troll est bon tu donne un lien d’un autre troll, je me laisse aller à penser que tu es pas ingénieur parce que la méthode scientifique tu as jamais entendu parler…
Je ne vais pas tout les faire, mais un exemple ici avec une école réputée, à savoir Centrale Nantes : Initiation des bases avec un langage de bas niveau, ici le C, puis le reste des études avec Java.
A l’école centrale Paris , qui est une des écoles d’ingénieurs les plus réputée, c’est C, C++ et Java.

Ce qui se passe c’est que les écoles non informatiques (exemple Harvard qui est une Business School qui enseigne Python au département mathématique, ou encore HEC école de commerce en France qui utilise aussi Python) se donnent comme nouvelle mission d’avoir un petit cours d’initiation à la programmation, et ce souvent en Python car c’est particulièrement plus simple que C ou Java, et ce qui fait monter la position de Python dans le palmarès des langages éducatif, mais Java reste largement très utilisé comme langage éducatif dans tout l’enseignement supérieur spécialisé informatique et ce dans le monde entiers.
Python c’est facile, c’est cool, mais Python ne prépare pas à devenir un expert en Java, C# ou C++, le trio de tête des ingénieurs recherchés par les entreprises.
Je ne suis pas certains qu’il soit pertinent d’utiliser Python à la place de C ou Pascal pour l’initiation préalable, je comprends que c’est plus facile, donc moins galère pour les étudiants et les profs, mais je ne suis pas partisan d’une éducation ou tout est trop facile et ou on apprends pas la valeur de l’effort, car au final on se retrouve souvent avec des étudiants incapable de programmer quoi que ce soit.

Pour te donner raison il y à bien une étude qui montre la croissance de Python dans le monde éducatif je ne le nie pas, mais suite à cet article tu peu voir ce sondage Quel langage devrait-on utiliser pour introduire la programmation ?
Pourquoi les développeurs ont ils mis comme langage éducatif le C et le Java devant Python ? et pourquoi Pascal arrive encore en 4eme position malgré qu’il soit passé de mode ?

Demande aux animateurs du forum human codeurs si leurs clients leur demandent des développeurs Python ou des développeurs Java ou C#.
Python ça peu être un moyen mais c’est pas un but.

2 « J'aime »

Tout simplement parce que c’est un sondage de développeur répondu par 90% de personnes qui n’ont pas vraiment réfléchi à la question, et qui répondent par rapport à leur propre vécu en indiquant le plus souvent le langage qu’ils ont eux même appris en premier.

Pourtant dans ce même lien, il y a un diagramme qui place python en tête pour les “39 top US computer science department”. On est bien sur des formations de spécialistes en informatique, et non pas de généralistes pour qui l’informatique est juste “un plus de culture générale” abordé en initiation uniquement.

Aussi tu parles de Centrale, mais ces écoles sont généralistes et forment plutôt des industriels et analystes que des informaticiens développeurs. Si la plupart des écoles abordent Java, C et C++, c’est tout simplement pour répondre au marché de l’emploi.

2 « J'aime »

Le C a une base sémantique aussi proche de l’algorithmie que le Brainfuck … À savoir l’assignation d’une valeur dans une case mémoire (et encore c’est faux). Le C n’est clairement pas bon pour l’étude de l’algorithmie, il suffit de voir la différence d’implémentation d’un arbre rouge et noir en C et en OCaml pour s’en rendre compte.

Par contre, le C est très proche de la machine et intraséquement lié à l’assembleur. Il est d’ailleurs plus facile d’inférer l’assembleur avec un code C qu’avec de l’OCaml. Et c’est la qualité du C (c’est une des raisons aussi pour laquelle Linus fait le noyau en C et pas en C++). Dans des problématiques bas-niveau tel que l’embarqué ou la machine virtuelle, c’est le meilleur langage selon moi. Dans l’implémentation d’algorithme complexe, c’est les langages fonctionnels qui sont en bien meilleur position car bien plus proche des mathématiques avec la correspondance de Curry-Howard.

Donc non, le C n’est pas bon pour l’algorithmie.

3 « J'aime »

Un sondage sur developpez.com, ça n’est pas une “donnée valable”, c’est juste du bruit amassé en demandant à des ânes de voter. Le niveau sur ce site a toujours été déplorable, et ça n’est pas parce que 4000 programmeurs francophones font l’effort de venir répondre à des questions stupides pendant leurs horaires de bureau qu’on doit écouter leur avis.

Quant à Centrale Paris, je suis sûr que tu apprécieras le fait que, depuis peu, le premier langage de programmation étudié lorsque l’on intègre l’école est Python.

Bref, je ne pense pas que les gens apprennent à programmer lorsqu’ils étudient du C, du Pascal, du Python ou du Java en cours. Je pense qu’ils apprennent à programmer quand ils commencent à se poser des questions par eux-mêmes, et à faire leurs propres projets ; et je pense qu’il est préférable que ces questions soient “comment factoriser mon code, le rendre modulaire et facile à maintenir” plutôt que “comment éviter que mon code ne segfaulte” ou “comment implémenter (pour la troisième fois) une structure de liste chaînée”.

L’apprentissage de la programmation ne devrait pas avoir pour objectif de “savoir programmer en Java et en C#”, comme tu as l’air de le penser. Surtout pas pour des ingénieurs comme les centraliens d’ailleurs.

3 « J'aime »

Dans l’implémentation d’algorithme complexe, c’est les langages
fonctionnels qui sont en bien meilleur position car bien plus proche des
mathématiques avec la correspondance de Curry-Howard.

C’est complètement absurde.

Ce que je t’ai donné ce n’est pas qu’un simple troll d’un blogueur, c’est l’avis que Paul Graham a donné il y a 10 ans sur Java, et qui est plus que pertinent encore aujourd’hui.

Et pour info je suis développeur Java dans une start-up, donc je ne parle pas dans le vide en disant que c’est vraiment pas adapté a l’apprentissage.

Java est devenu un standard de l’industrie (merci Sun, merci Oracle) mais pas un standard de l’apprentissage. C’est bien trop verbeux pour un débutant, il y a beaucoup trop de chose inutile, du genre que tout doit être encapsulé dans une méthode, avec un point d’entrée.

De plus apprendre le web avec les technologie JEE c’est une aberration, surtout quand tu commences a y ajouter des immondices comme JSF etc…

Après c’est vraiment pas personnel, mais j’ai l’impression que pour toi marché du travail = SSII et grand groupe. T’as l’air de penser qu’il n’y a du travail qu’en Java et C#, or ce n’est pas vrai,

En France effectivement c’est deux langages qui sont très demandé dans les domaines très corporate, mais tu trouve facilement du travail en Ruby/Python avec Rails et Django, surtout sur Paris.

Après moi je ne crache pas sur Java, ca fait partie de mon métier, mais vraiment pour commencer il y a mieux.

2 « J'aime »

Eh bien je t’invite à me corriger dans ce cas :) !

1 « J'aime »

Clairement, c’est parce que Java est devenu un standard utilisé majoritairement en entreprise qu’il est appris en école, je pense pas qu’il y ai de langage ultime pour apprendre la programmation mais je pense qu’il est important qu’au cours de son cursus une personne qui apprends la programmation apprennent un panel de langages avec des concepts différents. Après comme premier langage je ne conseillerai pas Java, trop verbeux, trop lourd à faire fonctionner, rien qu’à voir l’overhead pour faire un hello world, il est en est de même pour tous les langages compilés. Après j’ai jamais vraiment fait de python, mais c’est clairement un des langages les plus adapté pour commencé la programmation, car on peut lancer des petits script facilement, la syntaxe de base est simple mais assez compléte pour pouvoir faire un maximum de chose.

2 « J'aime »

il est en est de même pour tous les langages compilés.

Je suppose que par “overhead” tu veux dire “plein de code difficile à expliquer au débutant qui ne sert à rien”. Dans ce cas, ce que tu dis est faux.

@dinosaure> L’algorithmique n’a rien à voir avec Curry Howard ou avec les maths. Qu’est-ce que tu veux de plus ? Ouvre un livre d’algo au hasard, cherche un endroit où on dit “ah tiens c’est plus facile en Caml parce que Curry-Howard”, y’en a pas, point.

J’ai pas dit que ça servait à rien, ça sert juste à rien pour débuter la programmation. Un débutant doit avoir un langage facile à utiliser pour pouvoir facilement appliquer des algorithmes, et clairement une majorité de langages compilés ne sont pas adapté à ça car nécessite d’avoir des notions supplémentaires qui ne sont pas directement lié à l’algorithmie.

Oui enfin tu es tellement vague que l’on n’a aucune idée de ce dont tu parles. À lire ton message, on a l’impression que tu penses directement aux bouts de code du style

public static void main(String[] args) { ... }

et je suis d’accord avec le fait que ces morceaux de code sont inutilement compliqués pour le débutant. Par contre, ça n’est pas vrai de dire que « tous les langages compilés » demandent d’écrire ce genre de code. Un helloworld en OCaml, c’est

print_string "Hello world !"

et c’est tout.

j’aime bien être vague, mais oui je parlais entre autre de la déclaration du static, mais aussi des options de compilation compliqué en C par exemple, après oui j’aurai dut être plus clair en ciblant les langages compilés dérivés du C tels que Java, C#, C++

Je pense que le débat est (presque) inutile.

Apprendre un seul langage et l’utiliser toute sa vie n’a que peu d’intérêt.
Apprendre plusieurs langages, tester des patterns, des frameworks, etc. est la seule constante à avoir.

Commencer par du bas niveau, très/trop concret (C, Assembleur) puis partir sur du haut niveau, de la POO, etc. (Ruby, etc.) puis tester du fonctionnel (Scala, etc.) … ou le faire dans l’ordre inverse ne change pas grand chose.
Au final, il faudra pratiquer du bas comme du haut pour mettre les choses en perspective et prendre du niveau.

Le premier langage que l’on apprend est souvent le plus dur :)

4 « J'aime »
Human Coders - Le centre de formation recommandé par les développeur·se·s pour les développeur·se·s