OVH Cloud OVH Cloud

Apprentissage de la programmation à la maison

46 réponses
Avatar
benoit
Bonjour,
(J'espère que ce groupe est encore un peu vivant :)

Mon fils (15 ans) aimerait apprendre à programmer et je suis un peu
largué sur le sujet. Mes cours de Pascale datent un peu (beaucoup) et je
ne crois pas que ce soit les petits trucs pratiques que j'ai fait avec
AppleScript qui sont le bon chemin pour lui faire découvrir ça.

Je cherche donc des pistes pour qu'il mette les mains dans le moteur. On
est 100% Mac à la maison. Des idées/conseils/...

D'avance merci,

--
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La
pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.
Ici, nous avons réuni théorie et pratique : Rien ne fonctionne... et
personne ne sait pourquoi !" [ Albert Einstein ]

10 réponses

1 2 3 4 5
Avatar
benoit
pehache wrote:

Apparemment. Mais dans un cas comme ça on prévoit une période de
transition avec des éléments de syntaxe déclarés obsolètes, mais
toujours disponibles pour assurer la compatibilité avec l'existant.



La 3 est sortie en 2008 et la 2 a continué jusqu'en 2010 quand même. Ils
fournissent un outil pour transférer le code de la 2 à la 3 en mettant
en avant ce qu'il faut revoir.

--
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La
pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.
Ici, nous avons réuni théorie et pratique : Rien ne fonctionne... et
personne ne sait pourquoi !" [ Albert Einstein ]
Avatar
J.P. Kuypers
In article (Dans l'article)
<1lzl1ge.1j919mwlndybkN%, Benoit
wrote (écrivait) :

Mon fils (15 ans) aimerait apprendre à programmer



Logo ?
<http://www.tortue-logo.fr/fr/tortue-logo>

--
Jean-Pierre Kuypers
Avatar
pehache
Le 09/02/2015 20:20, J.P. Kuypers a écrit :
In article (Dans l'article)
<1lzl1ge.1j919mwlndybkN%, Benoit
wrote (écrivait) :

... je ne crois pas que ce soit les petits trucs pratiques que j'ai
fait avec AppleScript qui sont le bon chemin pour lui faire découvrir
ça.



Pour apprendre la logique de la programmation tout est bon pour autant
que ce soit un peu structuré. On va donc écarter le BASIC et le FORTRAN
dont les GOTO sont devenus hérétiques.



Bon, déjà faudrait voir à se mettre à jour concernant le Fortran. Depuis
la norme Fortran 77 (qui comme son nom l'indique date de 1977...
environ), le Fortran possède toutes les structures de contrôle d'un
langage moderne (tout à fait comparable au C en tous cas). Le GOTO est
toujours présent, mais on peut faire sans.

Par ailleurs, opposer l'instruction GOTO à la programmation structurée
est une erreur. On peut faire de la programmation structurée avec des
GOTO, on peut même en faire en assembleur. La programmation structurée
elle est dans la tête du programmeur avant tout.

Le seul défaut du GOTO c'est qu'il permet de faire facilement du code
spaghetti, non structuré, et imbitable. Mais un programmeur qui fait du
code spaghetti, non structuré, et imbitable, y arrive sans problème dans
n'importe quel langage. Et d'ailleurs dans le genre, les langages objets
mis entre de mauvaises mains, ce n'est pas triste au niveau du résultat...


AppleScript présente déjà l'avantage de permettre de visualiser
directement le peu qu'on arrive à faire au début. Ça aide à motiver,
mieux que l'ASM de l'IBM 360.




Ca c'est pas faux. Mais l'AppleScript c'est quand même un domaine
d'application un peu restreint...
Avatar
pehache
Le 09/02/2015 21:54, Benoit a écrit :
pehache wrote:

Apparemment. Mais dans un cas comme ça on prévoit une période de
transition avec des éléments de syntaxe déclarés obsolètes, mais
toujours disponibles pour assurer la compatibilité avec l'existant.



La 3 est sortie en 2008 et la 2 a continué jusqu'en 2010 quand même. Ils
fournissent un outil pour transférer le code de la 2 à la 3 en mettant
en avant ce qu'il faut revoir.




Mouais... Mais en pratique je vois encore beaucoup d'applications qui
utilisent la version 2.7, y compris des applications développées
récemment. Et si je comprends bien, c'est aussi la version 2.7 qui est
par défaut dans OS X.

On est typiquement dans un cas où la base installée fait que les gens
préfèrent continuer sur l'ancienne version plutôt que migrer vers la
nouvelle, sachant que convertir les codes implique de tout retester.
Avatar
pdorange
pehache wrote:

[...]
Cela dit, je me demande toujours si la programmation orientée objet est
réellement indiquée pour débuter, même si le langage en lui-même est
simple. C'est un niveau d'abstraction qui est assez éloigné du
fonctionnement réel d'une machine.



Pas tant que ça.
Python permet aussi bien du procédural classique que du pur objet avec
tout les intermédiaires imaginables. C'est donc pas un soucis.
J'ajoute que la plupart des languages modernes sont objets (objective-c,
swift, C#...) et qu'il n'est plus a démontrer la productivité accru de
l'objet sur le procédural classique.

[...]
Paradoxalement -mais pas tant que ça en fait-, un langage simpliste comme
le BASIC, qui se trouvait par défaut sur tous les ordis "familiaux" au
début des années 80, était une très bonne façon pour commencer à
programmer.



Oui et non, à l'époque les languages objets n'existaient pas (enfin ils
étaient dans les labos de recherche).
Le Basic est quand même un language pas éléguant et très mal foutu
conceptuellement. Aujourd'hui c'est a déconseiller fortement, on y prend
de (très) mauvaises habitudes.


> Attention :
> il existe une version 3 qui rompt la compaibilité avec python 2 et qui
> est donc assez différent dans certaines élemnts de syntaxe.

C'est malin, ça !



Pas très, mais ça permet de faire évoluer python vers quelque chose
d'encore plus moderne et efficace... Mais bon perso je suis resté avec
la branche 2.7 pour le moment (Mac).

--
Pierre-Alain Dorange Moof <http://clarus.chez-alice.fr/>

Ce message est sous licence Creative Commons "by-nc-sa-2.0"
<http://creativecommons.org/licenses/by-nc-sa/2.0/fr/>
Avatar
pdorange
Benoit wrote:

> Apparemment. Mais dans un cas comme ça on prévoit une période de
> transition avec des éléments de syntaxe déclarés obsolètes, mais
> toujours disponibles pour assurer la compatibilité avec l'existant.

La 3 est sortie en 2008 et la 2 a continué jusqu'en 2010 quand même. Ils
fournissent un outil pour transférer le code de la 2 à la 3 en mettant
en avant ce qu'il faut revoir.



Il y a une mise à jour récente de la branche 2.7 :
2.7.9 du 10/12/2014, c'esy principalement un bug-fix.

--
Pierre-Alain Dorange Moof <http://clarus.chez-alice.fr/>

Ce message est sous licence Creative Commons "by-nc-sa-2.0"
<http://creativecommons.org/licenses/by-nc-sa/2.0/fr/>
Avatar
pehache
Le 09/02/2015 à 22:02, pehache a écrit :

Bon, déjà faudrait voir à se mettre à jour concernant le Fortran. Depuis

la norme Fortran 77 (qui comme son nom l'indique date de 1977...
environ), le Fortran possède toutes les structures de contrôle d'un
langage moderne (tout à fait comparable au C en tous cas). Le GOTO est
toujours présent, mais on peut faire sans.



J'ai écrit un peu vite... Il y encore en effet des cas en F77 où le GOTO
est difficilement évitable (par exemple il manque la structure de
contrôle while()). Il faut attendre le Fortran 90 pour avoir tout ce qu'il
faut pour faire sans GOTO (mais bon, ça fait quand même 20 ans).


Par ailleurs, opposer l'instruction GOTO à la programmation structurée
est une erreur. On peut faire de la programmation structurée avec des
GOTO, on peut même en faire en assembleur. La programmation structurée
elle est dans la tête du programmeur avant tout.



Par exemple, sans GOTO :
---------------------------------
while (condition) do
blabla
blabla
end while
---------------------------------

Et avec GOTO :
---------------------------------
100: if (.not.condition) goto 101
blabla
blabla
goto 100
101: continue
---------------------------------

Alors on peut dire (à raison) que le code est plus lisible dans le premier
cas, mais au niveau structuration les deux codes sont *strictement*
équivalents.
Avatar
pehache
Le 10/02/2015 à 09:17, Pierre-Alain Dorange a écrit :
pehache wrote:

[...]
Cela dit, je me demande toujours si la programmation orientée objet est
réellement indiquée pour débuter, même si le langage en lui-même est
simple. C'est un niveau d'abstraction qui est assez éloigné du
fonctionnement réel d'une machine.



Pas tant que ça.



Ah, si, tu ne peux pas dire le contraire : c'est un niveau d'abstraction
supplémentaire par rapport à la machine.

Python permet aussi bien du procédural classique que du pur objet avec
tout les intermédiaires imaginables. C'est donc pas un soucis.
J'ajoute que la plupart des languages modernes sont objets (objective-c,
swift, C#...) et qu'il n'est plus a démontrer la productivité accru de
l'objet sur le procédural classique.



J'adore ce genre d'affirmation définitive. Il y a aussi des gens qui
disent "Il n'est plus à démontrer la supériorité des tablettes sur les
ordinateurs"...

Le C se porte me semble-t'il très bien, et malgré ses 40 ans il n'est pas
près d'être remplacé pour écrire des OS par exemple.


[...]
Paradoxalement -mais pas tant que ça en fait-, un langage simpliste comme
le BASIC, qui se trouvait par défaut sur tous les ordis "familiaux" au
début des années 80, était une très bonne façon pour commencer à
programmer.



Oui et non, à l'époque les languages objets n'existaient pas (enfin ils
étaient dans les labos de recherche).
Le Basic est quand même un language pas éléguant et très mal foutu
conceptuellement. Aujourd'hui c'est a déconseiller fortement, on y prend
de (très) mauvaises habitudes.



Comme son nom l'indique c'est un langage... basique, qui n'a pas de grandes
prétentions. De là à dire qu'il est mal foutu... J'ai appris à
programmer avec -comme beaucoup de monde de ma génération- et je n'ai pas
l'impression de traîner un passif de mauvaises habitudes à cause de lui.
Comme je l'ai déjà écrit, la programmation structurée c'est dans la
tête.

Et ce n'est pas en voyant certains codes écrits par des jeunes n'ayant
connu que des langages "sophistiqués" donc censés selon toi ne pas donner
de mauvaises habitudes, que je vais faire un complexe de ce point de vue.
Bien au contraire, même...



> Attention :
> il existe une version 3 qui rompt la compaibilité avec python 2 et qui
> est donc assez différent dans certaines élemnts de syntaxe.

C'est malin, ça !



Pas très, mais ça permet de faire évoluer python vers quelque chose
d'encore plus moderne et efficace...



A la manière d'Apple en faisant table rase du passé :-)

Mais bon perso je suis resté avec
la branche 2.7 pour le moment (Mac).
Avatar
pdorange
pehache wrote:

> Pas tant que ça.

Ah, si, tu ne peux pas dire le contraire : c'est un niveau d'abstraction
supplémentaire par rapport à la machine.



Mais qui permet aussi, par exemple, de limiter l'usage des pointeurs de
C/C++ ce qui dut coup simplifie les choses. C'est pas aussi binaire.

[...]
> Python permet aussi bien du procédural classique que du pur objet avec
> tout les intermédiaires imaginables. C'est donc pas un soucis.
> J'ajoute que la plupart des languages modernes sont objets (objective-c,
> swift, C#...) et qu'il n'est plus a démontrer la productivité accru de
> l'objet sur le procédural classique.

J'adore ce genre d'affirmation définitive. Il y a aussi des gens qui
disent "Il n'est plus à démontrer la supériorité des tablettes sur les
ordinateurs"...



Je suis en effet un peu affirmatif, mais il suffit quand même de
regarder l'usage réel des languages de programmation pour constater que
la très grande majorité est désormais objet. C'est pas que le hasard.

<http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html>
<http://lang-index.sourceforge.net/>
<http://pypl.github.io/PYPL.html>

Avec les précautions d'usage sur l'interprétation :
<http://en.wikipedia.org/wiki/Measuring_programming_language_popularity>


Le C se porte me semble-t'il très bien, et malgré ses 40 ans il n'est pas
près d'être remplacé pour écrire des OS par exemple.



Chaque language a ses usages évidemment. C'est comme la radio qui n'a
pas supprimer les livres, ni la TV n'a supprimé la radio, ni internet
n'a supprimé la TV... tout ça se complète.

Reste que Python est un excellent language et parfait pour débuter, mais
ce n'est que mon humble avis...

--
Pierre-Alain Dorange Moof <http://clarus.chez-alice.fr/>

Ce message est sous licence Creative Commons "by-nc-sa-2.0"
<http://creativecommons.org/licenses/by-nc-sa/2.0/fr/>
Avatar
pehache
Le 10/02/2015 à 11:53, Pierre-Alain Dorange a écrit :
pehache wrote:

> Pas tant que ça.

Ah, si, tu ne peux pas dire le contraire : c'est un niveau d'abstraction
supplémentaire par rapport à la machine.



Mais qui permet aussi, par exemple, de limiter l'usage des pointeurs de
C/C++ ce qui dut coup simplifie les choses. C'est pas aussi binaire.



Ce ne contredit pas ce que j'ai écrit (bien au contraire, même, puisque
les pointeurs à la C sont relativement proches du niveau machine). La
question n'est pas de savoir si pointeurs c'est bien ou pas, si c'est plus
simple ou moins simple : faire sans pointeurs, c'est se placer sur un
niveau d'abstraction supplémentaire par rapport à faire avec.


J'adore ce genre d'affirmation définitive. Il y a aussi des gens qui
disent "Il n'est plus à démontrer la supériorité des tablettes sur les
ordinateurs"...



Je suis en effet un peu affirmatif, mais il suffit quand même de
regarder l'usage réel des languages de programmation pour constater que
la très grande majorité est désormais objet. C'est pas que le hasard.

<http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html>
<http://lang-index.sourceforge.net/>
<http://pypl.github.io/PYPL.html>

Avec les précautions d'usage sur l'interprétation :
<http://en.wikipedia.org/wiki/Measuring_programming_language_popularity>



Je ne discute pas la popularité de la programmation objet, ni le nombre de
langages qui s'en réclament. Je ne discute pas non plus l'intérêt de la
programmation objet.

Par contre vouloir en faire l'alpha et l'omega de toute la programmation,
et un passage obligé pour débuter dans le domaine, là je ne suis pas
d'accord.

Il y a des domaines ou des cas où non seulement la programmation objet
n'apporte pas grand-chose, mais où elle est même contre-productive.
Encore une fois à cause du niveau d'abstraction élevé, qui va à
l'encontre par exemple de la performance du code objet généré par le
compilateur. Et si le formalisme objet peut permettre par sa puissance
conceptuelle de simplifier certains codes procéduraux complexes, il peut
aussi complexifier inutilement certains certains codes procéduraux
simples.




Le C se porte me semble-t'il très bien, et malgré ses 40 ans il n'est
pas
près d'être remplacé pour écrire des OS par exemple.



Chaque language a ses usages évidemment. C'est comme la radio qui n'a
pas supprimer les livres, ni la TV n'a supprimé la radio, ni internet
n'a supprimé la TV... tout ça se complète.

Reste que Python est un excellent language et parfait pour débuter, mais
ce n'est que mon humble avis...



Note que je n'ai pas émis d'avis sur Python lui-même, ne l'ayant jamais
pratiqué. Disons que je serais assez réservé, pour l'apprentissage de la
programmation, sur l'utilisation d'un langage imposant dès le départ un
formalisme objet. Ce qui ne semble pas être le cas de Python...
1 2 3 4 5