Quel langage pour débuter en programmation ?

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 »

Pour rebondir sur ce message plein de sagesse, et qui je l’espère va calmer le troll et les attaques personnelles, mon approche de l’apprentissage consiste à inculquer la curiosité et la passion, pour que les gens aient envie d’aller voir plus loin, découvrir d’autres langages et façons de faire.

1 « J'aime »

On ne peut pas dire “Tout sauf [blabla]” sans argumenter. Ce n’est pas constructif et n’apporte rien du tout au sujet.

ruby :) c’est le mieux pour commencer, c’est le mieux pour continuer, et c’est le mieux pour l’expertise aussi ;)

Un retour après 10 ans à proposer Python en tant que premier langage :
http://prog21.dadgum.com/203.html

(spoiler : il préconise désormais JS)

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