Conseils apprendre un / des (?) langage(s) de programmation

Hello,

Comme le rythme du troisième trimestre est assez soft en Term, j’aimerai bien me mettre vraiment sérieusement à la programmation.

Pour l’instant, j’apprends le Python que je commence à maîtriser, je suis sur les interfaces graphiques là. Mais la seule ressource que j’ai pour apprendre c’est le livre de Claude Delannoy.

J’ai plusieurs questions pour vous :

  • J’aimerais bien avoir touché sérieusement à 2 langages de programmation au moins avant la prépa. On m’a parlé de Java et de C, et de C++. Sachant que je ne connais rien d’autre que Python, que j’ai un peu de temps à perdre mais pas trop non plus, laquelle me conseilleriez-vous ? Et surtout, est-il efficace d’apprendre 2 langages en même temps (développer dans la mesure du possible un même challenge dans les deux langages différents), ou vaut-il mieux que j’attende les grandes vacances pour la deuxième ?
  • Ensuite, je suis pas du tout régulière dans mon apprentissage et ça c’est mal. Je pense qu’il me faudrait plus de ressources ou des challenges réguliers pour que je m’y mette vraiment linéairement. Est-ce que vous auriez ce type de ressources à me conseiller ?

Je ne sais pas si c’est utile de le préciser, mais j’aime bien tout ce qui est programmation de petites applications utiles, ou sites (ce que je bosse en ce moment justement), ou des trucs pour résoudre des problèmes de maths ca serait cool aussi, bref je n’ai pas de visée particulière c’est vraiment just for fun.

Voilà, merci bien à ceux qui passeraient !

PS : Je sais que les langages vus en prépas en Python et Ocaml. Mais mon objectif n’est PAS de m’avancer sur la prépa ou de faire des trucs que l’on va voir en prépa. Juste de m’amuser :slight_smile: Et apparemment Ocaml c’est pas ce qu’il y a de plus amusant.

Pour Python, il y a pas grand chose à connaître en vue du concours..
Tu peux amplement tout apprendre avant ou pendant la sup concernant l’épreuve d’informatique pour tous.
Il y a un très bon livre qui correspond - à mon avis - à ce que tu recherches pour Python, c’est le livre « Informatique pour tous en classes préparatoires aux grandes écoles » de Benjamin Wack édition Eyrolles. Dans ce livre je trouve que, il y a à la fois amplement tout pour réussir l’épreuve d’IPT et en plus, il permet de s’amuser un peu pour faire des programmes qui peuvent être liés à la physique: Genre résoudre des équations scalaire d’ordre 2 avec python ou des méthodes pour résoudre des équations différentielles numériquement.

Remarque : ironiquement OCaml est probablement le langage le plus adapté pour faire des sites web après Python dans les langages que tu as cité (avec le framework répondant au doux nom d’Ocsigen). Et ça peut être très amusant OCaml ! Mais ça dépend évidemment de tes centres d’intérêt. C’est un langage développé par des chercheurs, donc tu peux découvrir pas mal de concepts puissants de programmation fonctionnelle (et autres), cependant pour le comprendre il faut une certaine maturité qu’on a pas forcément quand on débute la programmation je pense. Bref, oublions ça.

Moi je te conseille de continuer à apprendre Python et à pratiquer, parce que c’est quand même ça le plus important quand on débute un langage de programmation (et encore plus si on a pas programmé avant), il faut pratiquer. Tu as dit que tu aimais résoudre des problèmes de maths, donc je pense que ça t’intéresserait de te pencher sur la liste de problèmes du Project Euler, ça t’entrainera un peu ! De plus, il te reste sûrement beaucoup encore à apprendre sur Python, c’est pas du tout un langage qu’on maîtrise en quelques mois, loin de là ! Et non, je ne pense pas que ce soit vraiment efficace d’apprendre deux langages en même temps, je trouve que ce serait se compliquer la tâche de devoir s’habituer à deux langages à la fois (bon après les langages que tu as cité sont assez proches les uns des autres donc ça va). Enfin, je trouve que Python est particulièrement adapté pour ce que tu aimes faire.

Si toutefois tu souhaites découvrir autre chose (après tout on s’en fout du langage, l’important c’est de s’amuser), je ne saurais pas précisément quoi te conseiller pour un deuxième langage. Celui que j’aime le plus parmi les trois est le C et je n’aime pas vraiment Java, ni C++, mais on n’a pas tous les mêes goûts et encore une fois ça dépend surtout de tes centres d’intérêt et de ce que tu veux faire (clairement le C ne me semble pas du tout adapté pour faire des sites web). Donc expérimente, c’est à toi de voir ce qui peut te plaire le plus.

N.B. : le programme de prépa est vraiment ridicule c’est vrai, donc il y a pas vraiment besoin d’aller très loin dans l’apprentissage de Python.

Le C si elle débute, elle va souffrir avec la gestion mémoire ..
Je te dirais de continuer sur Python :slight_smile:
( et si tu veux faire du web, apprendre des vrais langages web, mais python avec Django est déja puissant)

Merci à tous de vos conseils :slight_smile:

@Phoenens : Thanks pour le livre :slight_smile: Ca me déplairait pas de voir ce qu’on fait en prépa mais ce n’est pas non plus mon but ultime quoi. L’application à la physique me paraît vachement intéressante par contre, parce que ca me stimulerait pour étendre mes connaissances dans cette matière parallèlement. :slight_smile:

@Charo : Ah ouais ? :open_mouth: En fait, je connais pas Ocaml donc je peux pas juger personnellement. Mon oncle qui programme beaucoup m’a dit que c’était un peu pourrave VS python et langage C / C++ si on devait faire un classement sur des caractéristiques générales… C’est pour ça :slight_smile: (mais je pense qu’il a essayé de me diriger vers Python parce que c’est le plus « facile » à apprendre au début).
Thansk pour le Project Euler ! Ca a l’air bien cool comme site, faut que je le parcoure plus en détail.

De plus, il te reste sûrement beaucoup encore à apprendre sur Python, c’est pas du tout un langage qu’on maîtrise en quelques mois, loin de là !
+100000.
Ok donc je me contenterais de Python pour l’instant. Juste, c’est quoi la différence entre C et C++ ? (parce que dans ma tête vu qu’il y a la même lettre c’était sensiblement la même chose :laughing: ). Et c’est « adapté » pour quoi en particulier ?

@Ewind : Mon oncle (encore lui :laughing: ) m’a dit que c’était hard car « plus proche de la machine »… J’en sais pas plus. Ok merci, en vous lisant, je pense que c’est ce que je vais faire.

mathophilie a écrit:

Hello,

  • Ensuite, je suis pas du tout régulière dans mon apprentissage et ça c’est mal. Je pense qu’il me faudrait plus de ressources ou des challenges réguliers pour que je m’y mette vraiment linéairement. Est-ce que vous auriez ce type de ressources à me conseiller ?

Je ne sais pas si c’est utile de le préciser, mais j’aime bien tout ce qui est programmation de petites applications utiles, ou sites (ce que je bosse en ce moment justement), ou des trucs pour résoudre des problèmes de maths ca serait cool aussi, bref je n’ai pas de visée particulière c’est vraiment just for fun.
projecteuler.net/

JeanN a écrit:

[quote=« mathophilie »]
Hello,

  • Ensuite, je suis pas du tout régulière dans mon apprentissage et ça c’est mal. Je pense qu’il me faudrait plus de ressources ou des challenges réguliers pour que je m’y mette vraiment linéairement. Est-ce que vous auriez ce type de ressources à me conseiller ?

Je ne sais pas si c’est utile de le préciser, mais j’aime bien tout ce qui est programmation de petites applications utiles, ou sites (ce que je bosse en ce moment justement), ou des trucs pour résoudre des problèmes de maths ca serait cool aussi, bref je n’ai pas de visée particulière c’est vraiment just for fun.
projecteuler.net/
[/quote]
Merci JeanN, Charo a été plus rapide :grin:

Il y a longtemps le C++ était appelé « C with classes » et était en effet une sorte de surcouche du C qui permettait l’utilisation du paradigme de programmation orientée objet. Aujourd’hui, bien que les noms C et C++ soient similaires, le C++ est un langage très différent du C: c’est un langage qui se veut haut niveau et qui propose beaucoup d’abstractions (ie il facilite beaucoup la vie du programmeur), tout en permettant au programmeur d’avoir un contrôle assez fin sur ces abstractions, mais il reste tout aussi compatible avec la programmation bas niveau que le C.

Le C est un langage vieux de plus de 40 ans, et qui n’a que peu évolué depuis sa création, et n’est plus adapté à un style de programmation moderne. S’il y a encore dix ans il était à peu près indispensable de connaître très bien le C, je pense que ce n’est plus le cas aujourd’hui dans de nombreuses situations, et débuter la programmation avec un langage très haut niveau genre Python est en effet une très bonne chose.

darklol a écrit:

Il y a longtemps le C++ était appelé « C with classes » et était en effet une sorte de surcouche du C qui permettait l’utilisation du paradigme de programmation orientée objet. Aujourd’hui, bien que les noms C et C++ soient similaires, le C++ est un langage très différent du C: c’est un langage qui se veut haut niveau et qui propose beaucoup d’abstractions (ie il facilite beaucoup la vie du programmeur), tout en permettant au programmeur d’avoir un contrôle assez fin sur ces abstractions, mais il reste tout aussi compatible avec la programmation bas niveau que le C.

Le C est un langage vieux de plus de 40 ans, et qui n’a que peu évolué depuis sa création, et n’est plus adapté à un style de programmation moderne. S’il y a encore dix ans il était à peu près indispensable de connaître très bien le C, je pense que ce n’est plus le cas aujourd’hui dans de nombreuses situations, et débuter la programmation avec un langage très haut niveau genre Python est en effet une très bonne chose.
Ok merci pour les éclaircissements. Bon bah je vais poursuivre en python alors :slight_smile:

mathophilie a écrit:

@Charo : Ah ouais ? :open_mouth: En fait, je connais pas Ocaml donc je peux pas juger personnellement. Mon oncle qui programme beaucoup m’a dit que c’était un peu pourrave VS python et langage C / C++ si on devait faire un classement sur des caractéristiques générales…
Il y a des choses plus difficiles à faire en OCaml qu’en Python, notamment écrire de mauvais programmes bâclés.

Mais la seule ressource que j’ai pour apprendre c’est le livre de Claude Delannoy.
Un livre?? pour apprendre un langage? quelle drôle d’idée en 2016 :slight_smile:
Utilise le web :slight_smile: Lis par exemple la doc de la lib standard de python pour avoir une idée de ce quelle contient.

Autre chose : un langage s’apprend en codant…donc il te faut coder un projet que tu trouves fun. On ne maitrise un langage qu’une fois qu’on a codé un projet d’une taille raisonnable (enfin c’est un prérequis…c’est nécessaire et non suffisant).
ENsuite il y a les bases de l’algo. Si tu ne connais pas les structures de données classiques (vector, tree, list, set…) tu ne peux pas coder correctement qq le langage.

Pourquoi passer à autre chose si python te permet de coder ce que tu veux?
As tu regardé numpy/scipy/matplotlib? Puisqu’on parle de science ca me semble un must.

Bref, je te déconseille d’apprendre telle ou telle partie d’un langage parce que c’est le chapitre suivant dans un bouquin…
Code un assez gros projet qui te plait et tu apprendras ce dont tu as besoin (je suppose que tu as déjà les bases).

En python, une maxime dit « ca existe, ne le recode pas ». C’est pour dire que python vient avec des TONNES de libs qui font en gros tout ce dont on peut rêver…il faut juste avoir dans l’idée que ca existe et aller lire la doc.

fakbill a écrit:

Mais la seule ressource que j’ai pour apprendre c’est le livre de Claude Delannoy.
Un livre?? pour apprendre un langage? quelle drôle d’idée en 2016 :slight_smile:
Utilise le web :slight_smile: Lis par exemple la doc de la lib standard de python pour avoir une idée de ce quelle contient.

Autre chose : un langage s’apprend en codant…donc il te faut coder un projet que tu trouves fun. On ne maitrise un langage qu’une fois qu’on a codé un projet d’une taille raisonnable (enfin c’est un prérequis…c’est nécessaire et non suffisant).
ENsuite il y a les bases de l’algo. Si tu ne connais pas les structures de données classiques (vector, tree, list, set…) tu ne peux pas coder correctement qq le langage.

Pourquoi passer à autre chose si python te permet de coder ce que tu veux?
As tu regardé numpy/scipy/matplotlib? Puisqu’on parle de science ca me semble un must.

Bref, je te déconseille d’apprendre telle ou telle partie d’un langage parce que c’est le chapitre suivant dans un bouquin…
Code un assez gros projet qui te plait et tu apprendras ce dont tu as besoin (je suppose que tu as déjà les bases).

En python, une maxime dit « ca existe, ne le recode pas ». C’est pour dire que python vient avec des TONNES de libs qui font en gros tout ce dont on peut rêver…il faut juste avoir dans l’idée que ca existe et aller lire la doc.
Ahah ben oui je sais c’est pour ca que je recherchais des ressources cools en plus :slight_smile:
Je connaissais pas numpy et tout, je vais regarder.

Je vais essayer de trouver un projet qui me plaît… Merci !

darklol a écrit:

Il y a longtemps le C++ était appelé « C with classes » et était en effet une sorte de surcouche du C qui permettait l’utilisation du paradigme de programmation orientée objet. Aujourd’hui, bien que les noms C et C++ soient similaires, le C++ est un langage très différent du C: c’est un langage qui se veut haut niveau et qui propose beaucoup d’abstractions (ie il facilite beaucoup la vie du programmeur), tout en permettant au programmeur d’avoir un contrôle assez fin sur ces abstractions, mais il reste tout aussi compatible avec la programmation bas niveau que le C.

Le C est un langage vieux de plus de 40 ans, et qui n’a que peu évolué depuis sa création, et n’est plus adapté à un style de programmation moderne. S’il y a encore dix ans il était à peu près indispensable de connaître très bien le C, je pense que ce n’est plus le cas aujourd’hui dans de nombreuses situations, et débuter la programmation avec un langage très haut niveau genre Python est en effet une très bonne chose.
Mouais. .En finance notamment, la majorité des outils sont en Cobol.
( Et la première chose que n’importe quel solveur numérique installe, c’est une lib de calcul en Fortran. ). Donc connaitre un langage de bas niveau c’est très utile, mais pas pour commencer.

Sinon, savoir recoder la roue c’est plutôt un bon moyen d’apprendre. ( algo de tri, etc)

Ewind a écrit:

Mouais. .En finance notamment, la majorité des outils sont en Cobol.
( Et la première chose que n’importe quel solveur numérique installe, c’est une lib de calcul en Fortran. ). Donc connaitre un langage de bas niveau c’est très utile, mais pas pour commencer.
Je n’ai jamais dit que ça n’était pas utile (d’ailleurs le C++ peut aussi bien être considéré comme un langage bas niveau qu’un langage haut niveau).

S’il y a encore autant de C, de Cobol et de Fortran, c’est bien parce que ces langages sont vieux et qu’on préfère travailler sur de vieilles bases plutôt que d’avoir à tout recoder. Et ça n’est pas une bonne chose du tout. La quasi totalité des nouveaux projets ne sont plus écrits ni en Fortran, ni en Cobol. Le C reste encore assez présent: il est en effet utile de le connaître, mais on peut largement s’en dispenser dans de nombreuses situations comme je l’ai dit.

Et ça fait longtemps qu’il existe des alternatives modernes aux bibliothèques scientifiques écrites en Fortran.

darklol a écrit:

Et ça fait longtemps qu’il existe des alternatives modernes aux bibliothèques scientifiques écrites en Fortran.
Une dépendance de numpy c’est LAPACK ( bliblio de calcul en C) qui lui même dépend de bliblios écrites en Fortran :slight_smile:

corderaide a écrit:

Fortran et C ont un avantage qu’aucun autre langage courant n’a : ils sont très rapides pour peu que tu optimises. Et fortran n’est pas très compliqué à apprendre (C un peu plus).
(ok, on peut coder un truc en python et faire python to c, mais je suis pas sûr que ça soit ultra optimisé contrairement à un code natif)
Qu’est-ce qu’il faut pas entendre. Ce serait quoi la raison du fait qu’ils soient plus rapides, parce que les compilateurs Fortran et C produisent du code machine peut-être? Et du coup C++, Rust, Go (je cite des langages à la mode), et les compilateurs JIT on oublie? Crois-moi aujourd’hui plus personne n’utilise Fortran pour ses « performances » lol. La seule (mauvaise) raison de travailler avec du Fortran aujourd’hui c’est comme je l’ai dit pour maintenir des projets vieux de plusieurs décennies.
Ewind a écrit:
Une dépendance de numpy c’est LAPACK ( bliblio de calcul en C) qui lui même dépend de bliblios écrites en Fortran :slight_smile:
Ça n’est pas parce que numpy a des dépendances en Fortran que tout à coup ça devient le saint Graal…

Trouve moi une bliblio de calcul scientifique qui ne passe pas par du Fortran a un moment.
Sinon y a le fait que changer d’outil demanderais un budget colossal pour tout recoder?

darklol a écrit:

aujourd’hui plus personne n’utilise Fortran pour ses « performances » lol.
en parallel , il doit performer plus ? :slight_smile:

Ewind a écrit:

Trouve moi une bliblio de calcul scientifique qui ne passe pas par du Fortran a un moment.
Mmh au hasard, la GNU Scientific Library? Celle-ci a l’avantage d’être très générale. Pour des choses un peu plus spécifiques (genre juste algèbre linéaire par exemple), on trouve plein de bibliothèques fantastiques en C++
Ewind a écrit:
Sinon y a le fait que changer d’outil demanderais un budget colossal pour tout recoder?
Oui, et c’est bien la seule raison qui font que Fortran et Cobol par exemple existent toujours aujourd’hui. Et ça n’est valable que pour les projets très spécifiques (exemple en finance). MAIS: je reste persuadé que recoder entièrement un projet dans un langage moderne permettrait à terme d’économiser bien plus d’argent que de s’entêter à utiliser des trucs vieux de 30 ans.

darklol a écrit:

recoder entièrement un projet dans un langage moderne
par un recodeur automatique robot ? ou à la main ?