Apprendre le Python

Salut à tous!

D’abord, je voudrais m’excuser si jamais ce n’était pas dans la bonne section, mais je me suis dis que vu que ce n’était pas de la programmation, je ne posterais pas dans la section y étant dédiée.

J’ai lu quelques billets sur le Python, ça m’a l’air d’être LE langage pour commencer la POO (?), malgré qu’une connaissance m’ai conseillé le Free Pascal (conseil qui commence à dater cependant).

Seulement il y a un HIC, deux en fait!

  • Je ne connais qu’un seul langage et qui est en langage web en plus de ça: HTML :laughing:, je n’ai donc absolument aucune notion de programmation objet.

  • Je ne sais pas vraiment quelles sont mes motivations, ça m’a pris comme ça, en voyant que certains pouvaient pondre des trucs intéressants avec le python, et peut-être aussi le fait de vouloir mieux comprendre le fonctionnement d’un logiciel, mais je n’ai pas vraiment de projets en tête de faire tel ou tel script ou logiciel.

J’ai également vu qu’on pouvait faire de l’interface graphique avec GTK+, et ça me parrait sympa.

Ensuite j’ai cherché un peu de quoi apprendre, et j’ai trouvé un .pdf de Gerard Swinnen.

Mon problème, étant que je n’aime pas lire via le PC, je préfère de loin les bouquins, ça me fait moins mal aux yeux, et en général je retiens mieux, alors un pdf de plus de 300 pages, j’ai bien peur de ne pas pouvoir le lire.

J’ai donc cherché sur mon site bien aimé, à savoir amazon.fr et y ai trouvé ce livre: amazon.fr/Apprendre-%C3%A0-p … 043&sr=1-2

Un livre O’Reilly, éditeur qui me semble être réputé ?

Enfin voilà, j’aimerais savoir si certains ici connaissaient le Python, et si c’est une bonne idée de commencer par ça, sachant que je n’ai aucune notion de programmation, et que j’aimerais commencer “proprement”.

Quels conseils pourriez-vous me donner ?

J’aimerais également savoir si ce langage est bien répandu, et plus particulièrement sous Linux, ou si je me fais une fausse idée ?

Également savoir, si c’était un langage aussi simple que certains le prétendent, car j’ai pas mal de trucs en ce moment, entre les cours, le bac dans un an, le permis, la gratte,…, et donc si c’était un langage qui nécéssiterait pas forcément du travail chaque jour, car je manque un peu de temps.

Ah oui et, que me faudrait-il pour pouvoir “coder” sous Linux ? CPython ?

J’aimerais avoir vos avis, car je pense que vous êtes bien placé pour savoir si ce langage est bien adapté à linux, même si jusqu’ici, je n’ai pas lu le contraire!

Voilà, d’avance merci.

PS: J’aurais pu poster dans un forum dédié principalement à la programmation, mais je préfère le faire ici, je pense que ça sera plus convivial, voilà.

:wink:

Salut,

On recommende souvent le Python pour commencer.
Je suis moi-même en train lire ce cours. Ne t’inquiétes pas c’est compréhensible et le Python n’est pas dur.

Pour coder il te faut l’interpréteur(tape python dans un shell pour savoir s’il est installé) et un éditeur de texte.

[quote]Mon problème, étant que je n’aime pas lire via le PC, je préfère de loin les bouquins, ça me fait moins mal aux yeux, et en général je retiens mieux, alors un pdf de plus de 300 pages, j’ai bien peur de ne pas pouvoir le lire.[/quote]imprimes le en recto verso 4 pages par feuilles, ça te fera jamais que 38 pages.

Pour faire de la POO je pense qu’un langage orienté objet est plutôt recommandé.
Je ne connais pas beaucoup de langages qui le sont il y a java et et tout les dérivé de smalltalk/sqeak/seaside.

Mais l’orienté objet n’est pas la seule bonne programmation actuelle un langage scriptuel mixte (objet et non objet) comme python, perle ou ruby sont très simpas pour apprendre.

Bien sur ils sont tout trois très bien supporté sous Linux.

fran.b ne sera pas d’accord avec moi, mais AMA, le perl est le plus pedagogique.
On a déjà eu la même discussion:
forum.debian-fr.org/viewtopic.ph … grammation

Merci de vos réponses!

[quote]On recommende souvent le Python pour commencer.
Je suis moi-même en train lire ce cours. Ne t’inquiétes pas c’est compréhensible et le Python n’est pas dur.[/quote]

D’accord, et tu débutes dans la programmation ?

Sinon j’ai bien le python sur ma machine donc ça c’est bon :wink:

Je vais voir comment je peux faire pour faire l’impression en x4, merci c’est une bonne idée, j’èspere que ce ne sera pas trop petit. :wink:

Pour ce qui est du Perl je viens de lire le sujet, les deux ont l’air d’avoir pas mal de points communs, qu’entends-tu par plus pédagogique ?

C’est peut etre le moins facile a apprendre mais je préconise le C dans le respect des normes ca evite les codages degueulasse apres mais bon comme je le dis c’est peut etre pas le plus facile au démarrage :wink:

quote="ymer"
qu’entends-tu par plus pédagogique ?[/quote]Je pense qu’il est moins sensible aux erreurs de syntaxe que beaucoup d’autres langages, ce qui permet de se concentrer plus sur l’algorythmique et sur la mécanique et qu’il permet d’aborder plusieurs paradigmes differents de programmation (fonctionnel, OO, logique). En plus, il est simple.
Un peu comme du basic (ce n’est pas ici une critique).
Mais bon, je n’ai pas une experience enorme de la pedagogie informatique (2/3 ans en fac, et pas du perl), fran peut, lui, me semble pouvoir justifier d’une experience bien plus valide (sans vouloir le mettre sur un piedestal).
Et je ne connais pas python

[quote=“mattotop”]fran.b ne sera pas d’accord avec moi, mais AMA, le perl est le plus pedagogique.
On a déjà eu la même discussion:
forum.debian-fr.org/viewtopic.ph … grammation[/quote]
:smiley:

Effectivement, disons que en gros une rigueur syntaxique est indispensable pour débuter la programmation. Le gros problème d’un élève est d’écrire un programme qui fasse exactement ce qu’il a en tête. Un bon langage pédagogique (à mon avis) est un langage tel que si le programme se compile, alors c’est qu’il fait bien ce que l’élève croit. Caml est un exemple, Perl est un contre exemple parfait :slightly_smiling: (si, si en plus d’être parfois «write only»), ADA est une caricature. Après, il y a le débat fonctionnel/impératif et objet/pas objet…
Python est bien de ce coté notamment en donnant une sémantique à l’indentation. Son problème (rédhibitoire à mes yeux) est que python 2.1 est incompatible avec python 2.3 mais le redevient (on dirait) avec python 2.4… C’est le bazar à la maison python!

Hum, d’accord je pense comprendre, même si dès que ça devient technique je suis dans les choux! :wink:

Merci bien, je vais donc imprimer le cours et m’y mettre dès ce week-end

[quote=“ymer”]Merci de vos réponses!
D’accord, et tu débutes dans la programmation ?
[/quote]
Oui.

On dit souvent qu’il n’est pas nécessaire d’avoir un bon niveau en math pour faire de la programmation. Si on a bon niveau on apprend mieux, plus vite ? Qu’est ce que tu en penses, fran ?

Ben j’ai pas eu besoin de bosser pour me taper des 13-15 de moyenne (pas toujours dans toutes les matières malheureusement) jusqu’en maitrise de maths ou j’ai bifurqué vers l’info. Donc d’experience de quelqu’un de plutot pas trop mové en maths naturellement, je dirais que ça n’est pas une qualité essentielle pour la programmation. C’est bien parcequ’il y a aussi de la théorie mathématique lourde que j’ai pu m’exprimer en DEA d’info, parceque je ne suis pas un trés grand programmeur. Disons que les maths m’ont donné un esprit qui me permet d’aborder à peu prés n’importe quel type de langage sans formation (même le brainfuck), mais ça ne me rend pas subtil dans ma programmation.

Et il y a des voies bizarres: un des meilleurs développeur (productivité+subtilité) que j’ai fréquenté était un linguiste (incapable de faire une addition sans la programmer), et ses langages informatiques de predilection etaient le pascal et le lisp.

Vala mon experience.

Je demande parce que avec mes 11h de math par semaine, peut-être que la logique mathématique aide à apprendre plus vite. Avec l’apprentissage du python, j’ai vu qu’il y avait des choses qu’on retrouvait en math comme les suites récurrentes.

Il nous faut 2 cobayes pour faire une expérience… :laughing:

Si on veut un langage fortement typé il y a l’eiffel. Pour l’ADA j’ai entendu dire qu’il était utilisé dans certains appli’ comme l’aéronautique, pour sa dureté de compilation :slightly_smiling:

A peu près toutes les mathématiques trouvent une application en programmation. Les ensembles avec les bases de données, la récursivité avec les fonctions récursives, les matrices dans des moteurs graphiques,… J’ai même appris que la géométrie non euclidienne conçu de manière complètement abstraite ont eu une application pour les GPS.

Sinon moi je sais pas si je suis un bon programmeur ou pas mais en maths je suis pas un as.

Sinon les lisp/shem/script fu j’aime vraiment pas.

Idem, je suis pas tip top niveau math, j’éspère que ça n’aura pas trop de conséquences.

quote="Yoko"
Pour l’ADA j’ai entendu dire qu’il était utilisé dans certains appli’ comme l’aéronautique, pour sa dureté de compilation :slightly_smiling:
(…)[/quote]C’est surtout pour certaines qualités mathématiques dans la structure (la partie interface, l’equivalent du .h du c/c++, celle qu’on peut definir avant de construire le code) qui permettent, avant d’essayer d’ecrire un programme complexe, de savoir s’il va respecter certaines contraintes (notament temps réel, mais aussi famines, pb d’ordonnancement, etc…).
C’est un langage dédié à l’industrie, c’est sûr.

[quote=“dimm”][quote=“ymer”]Merci de vos réponses!
D’accord, et tu débutes dans la programmation ?
[/quote]
Oui.

On dit souvent qu’il n’est pas nécessaire d’avoir un bon niveau en math pour faire de la programmation. Si on a bon niveau on apprend mieux, plus vite ? Qu’est ce que tu en penses, fran ?[/quote]

En gros, je dirais que programmer, c’est organiser de manière claire des données (l’organisation de ces données contenant les fonctions de manipulation de ces données). L’analyse consiste à définir cette organisation, la programmation à l’implémenter. Le tout nécessite une rigueur certaine et une aisance à manipuler des objets purement abstraits.
Le but de l’éducation consiste à développer cette capacité. Avant (années 1930), cela se faisait par la philo et la manipulation des concepts philosophiques ou la géométrie, puis ça s’est fait sur la manipulation de concepts purement mathématiques (les fameuses maths modernes ou encore la géométrie) [Actuellement, c’est un peu plus flou, on demande beaucoup plus de technique (tout en ayant enlevé 1/3 de l’horaire) en Maths, et on a rendu plus abstrait d’autres matières (histoire par exemple)]. C’est pour ça que je trouve qu’on donne trop d’importance sur le contenu des programmes dans les lycées, d’ailleurs au final les gens ne sont jamais conscients de ce qu’ils ont réellement appris au lycée (disant tous n’avoir rien appris au lycée et tout appris après) sauf lorsqu’ils ratent après («mon prof en Maths/Français/Anglais/… était nul et je ne m’en suis jamais remis»).
Bref, quelqu’un peut très bien être mauvais en Maths (parce qu’il n’aime pas ça) et être très à l’aise dans la manipulation abstraite. Cette personne, si elle aime ce qu’elle fait, sera sans doute douée pour l’informatique. En fait, plus ça va, plus je constate que les qualités demandées dans les différentes matières sont tout le temps les mêmes et que le goût et l’envie d’apprendre et de comprendre font qu’on est brillant ou mauvais dans une matière donnée à capacité de manipulation de concepts identique. Mais c’est un point de vue purement personnel… je serais curieux de voir d’autres points de vue…

ADA a été conçu par Sophia Antipolis suite à un appel d’offre du Pentagone (appel qu’il a emporté). Le pentagone ne voulait pas qu’il y ait une erreur du type de celle ci en Fortran

      DO 10 I=1,1000
<blabla>
10  CONTINUE

la boucle est exécutée 1000 fois avec I allant de 1 à 1000

      DO 10 I=1.1000
<blabla>
10  CONTINUE

une variable de type flottant DO10I est crée et on lui attribue la valeur 1.1, la boucle est exécutée une seule fois avec une valeur I arbitraire.
Cette erreur s’est produite lors d’un calcul de temps d’allumage pour un satellite anglais. Le satellite a été perdu et ça a couté cher. Le problème aurait été évité si Fortran n’admettait pas de variable non déclarée. Le Pentagone souhaitait que ce type de pbm n’arrive pas pour ses missiles (bonne idée quand même non :slightly_smiling:).

T’a façon d’appréhender la programmation est intéressante.
Moi je vois la programmation comme la description d’un programme. On “discute” avec l’ordinateur lui disant ce qu’il doit faire au travers d’instruction. Tout est déductible. Il suffit de comprendre un langage (dans le sens “quels sont ses objectifs?” “de qui hérite-t-il?” “par qui as-t-il était conçu?” bref comprendre sa logique) pour pouvoir programmer avec sans difficulté.

La manipulation de donnée c’est le but de la programmation pas le moyen (tu me dis si j’ai mal compris ton propos). Nos point de vu son différents mais ils ne sont pas opposé le moins du monde. En tout cas le miens est bien moins recherché et beaucoup plus basé sur la définition qu’il y avait dans les meures à une époque (on parle bien de langage). Bien que ma définition semble saugrenu tellement elle est basique, je me rend compte tout les jours en cours que beaucoup ne le comprennent pas.

Ensuite sur le fait que tout les matières demandent les même compétences je ne suis pas d’accord. C’est vrai que la motivation est le point initial il n’est pas nécessaire. Les sciences allant de l’économie, à la physique en passant par les maths et l’info, demandent de la logique tout peut se déduire (mis à part quelques axiomes). Pour les langues ça n’est pas démontrable, c’est explicable quand on fait de l’histoire des langues mais c’est tout. Il faut apprendre pour savoir. Pour ce qui est de l’art il ne demande aucune déduction ni règle logique. Pour moi voici les trois domaines d’études possibles.

Ce coup ci, c’est moi qui n’ai pas compris ce que tu bvoulais dire :laughing:

[quote=“Yoko”]
Ensuite sur le fait que tout les matières demandent les même compétences je ne suis pas d’accord. C’est vrai que la motivation est le point initial il n’est pas nécessaire. Les sciences allant de l’économie, à la physique en passant par les maths et l’info, demandent de la logique tout peut se déduire (mis à part quelques axiomes). Pour les langues ça n’est pas démontrable, c’est explicable quand on fait de l’histoire des langues mais c’est tout. Il faut apprendre pour savoir. Pour ce qui est de l’art il ne demande aucune déduction ni règle logique. Pour moi voici les trois domaines d’études possibles.[/quote]
Qu’est ce qui est explicable dans les langues??? En fait, je n’ai aucune idée sur ce qu’est enseigner une langue et sur ce point je ne serais pas formel. Cependant, tu considères la logique de manière restrictive: l’art et son histoire sont découpés en mouvements, tendances. Tout cela est très abstrait et admet des règles propres. De même une langue nécessite de comprendre une grammaire qui elle même repose sur des concepts très abstraits avec des règles précises: regardes la grammaire espagnole (castillane eartells :slightly_smiling:) à laquelle je ne comprends rien, la grammaire anglaise. Quelqu’un d’excellent en langues doit savoir manipuler ces concepts abstraits. Aux Etats Unis, une des voies privilégiés pour manipuler l’abstraction est le droit qui est particulièrement sophistiqué là bas. Quelqu’un de très bon en droit a quasiment toutes les portes ouvertes (un peu comme quelqu’un sortant de l’X en France).