Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Quel langage devrait-on utiliser pour introduire la programmation ?

Le , par Hinault Romaric

8PARTAGES

9  0 
Quel langage devrait-on utiliser pour l’initiation à la programmation ?
Dans les années 80, Pascal était le langage de programmation le plus utilisé pour l’initiation à la programmation.

Compte tenu du faible taux d’utilisation du langage en milieu professionnel, Pascal a été progressivement abandonné par les universités en faveur des langages plus populaires en entreprise comme Java et C++.

De nos jours, il semblerait que les universités se tourneraient vers un autre langage de programmation. Python serait devenu le langage de programmation le plus utilisé dans les grandes universités américaines pour l’initiation à la programmation, selon un récent sondage de l’association Computing Machinery (ACM).

Le sondage a été mené par le chercheur en informatique Philip Guo, après avoir constaté un bond considérable de la fréquentation de son site destiné à l’apprentissage de la programmation avec Python.

Son étude menée auprès des 39 meilleurs départements informatiques des États-Unis a permis de constater que huit des dix premiers départements de CS (Computer Science) et 27 départements de son échantillon utilisent le langage Python pour l’enseignement de la programmation de niveau 0 et/ou de niveau 1.


Dans la liste, on retrouve les prestigieuses universités scientifiques du MIT et de Berkeley. De plus, Philip Guo a constaté que les plus grands fournisseurs de MOOC (Massive Open Online Courses) aux États-Unis proposent également Python comme porte d’entrée dans l’univers de la programmation informatique.

Compte tenu de la popularité de Java dans le monde professionnel, le langage demeure très présent dans des cours avancés. Certaines universités de l’étude ont opté pour l’initiation de Python au niveau 0 et de Java au niveau 1. MatLab, langage très orienté mathématique, est également assez utilisé pour l’initiation à la programmation auprès des scientifiques et des ingénieurs.

Philip Guo constate par contre que les langages Web populaires comme JavaScript, PHP et Ruby ne sont pratiquement jamais enseignés, tout comme les langages intimement liés à une plateforme (C#, VB.NET) et les langages fonctionnels très populaires chez les chercheurs que sont Haskell et OCaml.

Cette tendance peut-elle se confirmer en France ? Nous ne disposons pas d’information permettant de répondre à cette question.

Source : ACM

Et vous ?

Qu’en pensez-vous ? Quel langage devrait-on utiliser pour l’initiation à la programmation ?

Avec quel langage avez-vous fait vos premiers pas dans l’univers de la programmation ?

Une erreur dans cette actualité ? Signalez-le nous !

Avatar de ctxnop
Membre chevronné https://www.developpez.com
Le 09/07/2014 à 16:04
Dans la mesure où l'école ne peut pas faire apprendre 50 langages différents aux étudiants, ce qui n'aurait de toute façon aucun sens en admettant que ce soit possible, la majorité des élèves apprennent à l'école un langage qui n'est pas celui qu'ils pratiqueront dans leurs vie professionnelle. En conséquence, il faut pour moi favoriser un cycle d'apprentissage qui améliore la vitesse et la qualité d'apprentissage en autodidacte des langages non vus a l'école.

Bien que je suis certain que beaucoup seront en total désaccord, l'expérience m'a montré que les gens qui ont été initié a la programmation avec des langages haut niveau tels que Python, PHP ou même Java/C#, ont beaucoup de mal a se faire à un langage qu'ils n'ont jamais vu. Alors que ceux qui ont fait des langages beaucoup plus bas niveau tels que le C ou le C++, sans forcément être spécialement bon dans ces langages, migrent beaucoup plus facilement vers autre chose.
Bien évidemment, ça ne veut absolument pas dire que c'est une règle générale applicable sans exception. Il y a toujours des gens qui apprennent tel ou tel langage d'abord et qui deviennent très bon dans ce langage et sont capable d'apprendre facilement autre chose après.

C'est pour ces raison que je pense qu'il faut commencer par 30 minutes d'assembleur... Littéralement 30 minutes.
Le but n'est absolument pas d'apprendre a programmer en assembleur, mais de comprendre comment est-ce que la machine fonctionne. Je ne comptes même plus les gens que je reçois a la sortie d'un BTS SIO ou équivalent et qui sont persuadés que le processeur lit un fichier texte et comprend "if", "else", "while", etc... Pour eux, ils savent donner des ordre a la machine, ils savent que la machine peut recevoir des ordre, mais le "comment" tiens de la magie.
Et puis ca ne fait pas de mal de savoir ce qu'est la vrai difficulté. Il y a beaucoup trop de gens a se plaindre d'aise...

Ensuite il faut passer sur du C, pas forcément très longtemps non plus, la encore le but n'est pas d'apprendre a développer en C en milieu pro. Si le langage utilisé par l'entreprise n'est pas le C, on se moque totalement que la personne ne soit pas très douée. Le but est d'apprendre la gestion des ressources, de la mémoire. La différence entre une valeur et une référence. Je ne sais pas si le C est le plus adapté pour apprendre ces choses, mais en tout cas il n'est pas mauvais. En fait l'important ici c'est d'avoir un langage qui apprenne l'existence des choses qui sont masquées dans les langages de plus haut niveau (certains diront "modernes", alors C ou autre chose, tant qu'il faut gérer les ressources, qu'il faut tout typer, qu'il n'y a pas de garbage collector, etc...
Quand on connais tout ça, s'en passer dans un langage qui les masque ne pose aucune difficulté. Mais quand on a appris avec un langage qui masque tout ça et donc qu'on ne connais rien à ces choses, passer sur un langage qui ne les masque pas est une vrai galère.
La encore, je rappel que pour moi le but de l'apprentissage en école n'est pas de sortir en connaissant le langage le plus utiliser en entreprise, mais plutôt d'être capable d'apprendre très rapidement le langage utilisé dans l'entreprise où on est pris.

Enfin, passer sur a peu près n'importe quel langage, peu importe, pour le reste de l'apprentissage (voir les choses de plus haut niveau). Le gros de l'apprentissage peut se faire sur Java, Python, Whatever, tant que les bases posées par l'assembleur et le C sont connues. Mais ça peut également être du C/C++. Je pense qu'un langage objet est important dans la mesure où énormément de langage sont objet ou on des notions très proches. Sachant également qu'on peut tout à fait avoir de la gestion automatique de la mémoire et des ressources sur du C++, il reste un choix envisageable.

Toutes les personnes que je connais qui ont eu ce cursus n'ont eu aucune difficultés particulière a apprendre le langage utilisé en entreprise, qu'il soit le Java, le Python, le PHP, le Javascript, etc...
Par contre, pas une seule des personne de ma connaissance ayant commencé par Python, Perl ou PHP, a été capable de changer de langage sorti de l'école...
Évidemment il se peut que ce soit une coïncidence. Peut être que mes connaissances qui ont commencés par Python étaient juste nuls et donc trop débiles pour apprendre autre chose. C'est tout à fait possible.
Encore une fois, c'est mon expérience perso, ce n'est donc clairement pas significatif et d'autres auront probablement des expériences très différentes.

EDIT: humm... je ne m'étais pas aperçu que j'avais écris un tel pavé... désolé
25  1 
Avatar de clairetj
Membre confirmé https://www.developpez.com
Le 09/07/2014 à 14:51
Citation Envoyé par Hinault Romaric Voir le message

Qu’en pensez-vous ? Quel langage devrait-on utiliser pour l’initiation à la programmation ?
J'aimerais une clarification sur ce point: est-ce que l'on parle d'initiation à la programmation pour des enfants (à partir du primaire) étant donné que de nombreux débats sur l'apprentissage de la programmation dès la primaire sont présent ce le forum ou est-ce que l'on parle d'initiation à la programmation pour des personnes qui souhaitent travailler dans le domaine de l'informatique et du développement ?
12  0 
Avatar de CodeurPlusPlus
En attente de confirmation mail https://www.developpez.com
Le 12/07/2014 à 0:30
Euh non, quand on est nul, faut pas se trouver d'excuse.

Si le prof est nul, on se passe de son aide. Si le livre est nul, on prend un autre livre.

Après le BAC on doit accepter l'idée qu'on est le seul responsable de ses réussites comme de ses échecs... sinon on n'acquiert jamais vraiment le sens des responsabilités.
9  0 
Avatar de Katyucha
Expert confirmé https://www.developpez.com
Le 01/08/2014 à 12:50
Pour ma part, je dirais tous et aucun !

Pourquoi ? Parce qu'avant d'apprendre un langage, il faudrait que les gens apprennent : Comment fonctionne un ordinateur ? Quel est sa structure ?
Un bus, de la mémoire, du cpu...etc Ensuite, comment ton OS fonctionne : c'est quoi un thread, un processus, un appel mémoire...etc

J'en ai marre d'avoir des développeurs en face de moi qui ont aucune connaissance minimum de fonctionnement d'un ordinateur
"Wesh, je comprends pas, y a marqué : can't fork. ca veut dire quoi?"
" ouais là, tu me rajoutes de la mémoire ?" - Bah non gros ***, une session apache me bouffe 100M, tu ne crois pas que t'as un problème de ton coté?

Nos développeurs actuels utilisent des langages de plus haut niveau et résultat : ils ne savent plus comment roule leur programme
9  0 
Avatar de Denis la Malice
Membre actif https://www.developpez.com
Le 13/08/2014 à 9:53
int main (int argc, char *argv[], char *arge[])
{

Bonjour,
j'ai commencé la programmation en autodidacte sur assembleur M6800. Puis quand j'ai abordé les études supérieures, le premier langage enseigné était de l'assembleur sur "gros système". Très peu pédagogique parce que très peu productif (codage sur cartes perforées, mise en file d'attente pour être compilé, mise en file d'attente pour être exécuté, et reboot du "gros système" chaque fois qu'un blaireau avait codé une boucle sans fin, erreur impardonnable sur sustème temps réel). Il fallait une demi-journée pour que toute la classe ait réussi à afficher "Hello, world !" sur l'imprimante. C’était dans les années 70.

Quand j'ai repris mes études dans les années 80, le langage utilisé pour l'initiation à la programmation était le Pascal. Ensuite étaient enseignés le C et quelques assembleurs (68000, 8080, "gros système".

Quand je suis retourné à l'école pour enseigner, j'ai choisi le C pour l'initiation. Le but de la formation étant non seulement de diplômer les étudiants mais aussi d'identifier les forts potentiels. Et le C pour ça est très révélateur de la qualité du développeur. Le compilateur ne corrige pas grand chose (je peux créer un tableau de 9 octets et mettre un zéro dans le dixième élément). Les autres enseignants m'avaient déconseillé le C parce que "c'est plus dur à corriger".

Il faut beaucoup de rigueur pour bien écrire en C. C'est au professeur d'apporter cette rigueur, parce que le compilateur, lui, il s'en fout.

Peu importe que le langage d'initiation soit utilisé par la suite. Le but est de comprendre les mécanismes de base de codage des algorithmes. Il faut un langage simple, clair et surtout une méthode pédagogique efficace, claire et pertinente. ;

}
9  0 
Avatar de Vun100
Membre à l'essai https://www.developpez.com
Le 09/07/2014 à 16:06
Dans l'ordre je dirais:

C : apprendre les bases de la programmation
Assembleur : pour comprendre réellement au niveau mémoire ce qui se passe quand on écrit une instruction. (pas besoin d'aller loin, juste comprendre)
C++ et autres langages de plus haut niveau.

Les langages de haut niveau c'est bien, c'est rapide et c'est productif. Mais la majorité des personnes commençant en haut ne redescendrons jamais vers des langage plus bas niveau et ne comprendrons donc jamais réellement ce qui se passe sur leur machine, ni du travail effectué avant pour que ça soit si facile pour eux.

Après ce n'est que mon avis.
11  3 
Avatar de r0d
Expert éminent https://www.developpez.com
Le 11/07/2014 à 15:22
<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 &#9829;

</HS>
9  1 
Avatar de CodeurPlusPlus
En attente de confirmation mail https://www.developpez.com
Le 13/07/2014 à 17:51
Si, dans dix ans ils le feront parce qu'entre temps, il y a un moment où ils n'auront plus le choix. Quand ils feront de la merde en entreprise et que la seule chose qu'ils auront à dire pour leur défense au moment où on les mettra à la porte sera "ah mais c'est pas de ma faute, j'avais des profs nuls", ils se rendront compte qu'il y a un truc qui cloche dans leurs têtes et non dans celles des profs.

J'étais étudiant en informatique à la fin des années 90, en IUT qui plus est, et je te le confirme : il y avait au moins la moitié de la promo qui était partiellement autodidacte et peut-être 20% des élèves qui savaient déjà écrire des programmes de quelques centaines à quelques milliers de lignes avant d'entamer leurs études d'informatique.

Aujourd'hui, je suis prof, et je te confirme également que ce n'est plus du tout le cas des étudiants actuels. Aujourd'hui on en a trop qui trichent (on tente de trouver un code déjà existant et de le modifier en croyant que cela ne va pas se voir), qui se foutent éperdument de la programmation, et qui se voient tous chefs dans cinq ans. Ha ha ha.
8  0 
Avatar de r0d
Expert éminent https://www.developpez.com
Le 09/07/2014 à 18:45
Citation Envoyé par Pierre Louis Chevalier Voir le message
Java est infiniment mieux comme langage d’apprentissage pour les ingénieurs développeurs en devenir, car il prépare non seulement à Java qui est très utilisé en entreprise (bien plus que Python), mais aussi à C++
Je ne suis pas d'accord avec ce point. D'expérience, 95% des javaistes que j'ai vu se mettre au c++ l'ont très mal vécu et n'ont rien produit de bon. L'inverse est en revanche beaucoup moins systématique. Surtout que vu le succès de java, beaucoup de développeurs c ou c++ sont plus ou moins contraint de se mettre à java (ou c#). Et de ce que j'ai vu, passer de C++ à java est ennuyeux, mais pas vraiment douloureux.

Quoi qu'il en soit, je suis de l'avis qu'il faut commencer par du bas niveau. Ma vision idéale d'un apprentissage pour le développement logiciel est la suivante: pour commencer, quelques exercices en relation avec les machines de Turing. Ensuite, un peu d'assembleur, quelques heures. Ensuite un langage fonctionnel et fortement typé (C, COBOL, ADA...). Ensuite, un langage pur objet (Smalltalk, Ruby, ...). Enfin, les langages à la mode (java, C++ et C#).

Après, ça dépend aussi la carrière souhaitée par l'étudiant. Ceux qui veulent être pur développeurs, éventuellement architectes, n'ont pas les mêmes besoins que ceux qui veulent être très vite chef de projet ou administrateurs divers et variés.

Je pense également que nous allons nous spécialiser de plus en plus. C'est déjà un peu le cas mais je pense que ça va être de plus en plus marqué, et que les cursus pour dev web, dev orienté donnée, dev orienté back-end, embarqué, etc., vont se différencier de plus en plus, et de plus en plus tôt.

@brief J'ai voté pour le C dans le sondage, pour aller dans le sens du "commencer par du bas niveau", malgré le fait que je déteste le C (je déteste programmer en C mais ça ne m'empêche pas de reconnaître ses nombreuses qualités).
10  3 
Avatar de Mr_Exal
Membre expert https://www.developpez.com
Le 16/07/2014 à 12:02
Citation Envoyé par benjani13 Voir le message
Je n'ai pas dit que tout le monde doit être passionné, mais de là à n'avoir que 3 ou 4 personnes sur 90 dans une promo oui je trouve ça étrange.
Moi pas. Vu comment les études supérieures sont chiantes ...

edit: Les seules années qui m'ont vraiment apporter en termes d'études c'est le BTS IRIS que j'ai fais, le reste (la licence pro et deux ans d'école privée) rien du tout (enfin, si deux diplômes pour être payé plus cher). Encore heureux que j'étais en alternance sinon je crois que je me serais pendu avant la fin de la première année ...
7  0