Bonjour,Avant de me lancer, comme je débute en C++, j'aimerais bien avoir des
suggestions pour traiter la chose suivante :
[...]
Si vous avez des exemples/suggestions, les plus simples qui soient (je
suis une bille en programmation, alors faut que je puisse comprendre),
Je ne suis pas certain que C++ soit le langage le plus adapté pour débuter.
En fait je suis presque certain du contraire... Pourquoi ne pas utilise Java,
C#, Python ou Basic ?
* Soit le "scope of work" est de découvrir C++ et alors les tortues ne
Bonjour,
Avant de me lancer, comme je débute en C++, j'aimerais bien avoir des
suggestions pour traiter la chose suivante :
[...]
Si vous avez des exemples/suggestions, les plus simples qui soient (je
suis une bille en programmation, alors faut que je puisse comprendre),
Je ne suis pas certain que C++ soit le langage le plus adapté pour débuter.
En fait je suis presque certain du contraire... Pourquoi ne pas utilise Java,
C#, Python ou Basic ?
* Soit le "scope of work" est de découvrir C++ et alors les tortues ne
Bonjour,Avant de me lancer, comme je débute en C++, j'aimerais bien avoir des
suggestions pour traiter la chose suivante :
[...]
Si vous avez des exemples/suggestions, les plus simples qui soient (je
suis une bille en programmation, alors faut que je puisse comprendre),
Je ne suis pas certain que C++ soit le langage le plus adapté pour débuter.
En fait je suis presque certain du contraire... Pourquoi ne pas utilise Java,
C#, Python ou Basic ?
* Soit le "scope of work" est de découvrir C++ et alors les tortues ne
Je sais que ce genre de question peut lancer une guerre et est
peut-être simplement un troll, mais j'ai une nouvelle réponse
depuis quelques temps et je veux la diffuser ici.
Par curiosité, quelle est cette réponse ?
Elle suivait :Que peut-on faire de spécial avec ces langages qu'on ne peut pas
faire avec C++ et qui est _important pour un débutant_ ?
Du graphisme, par exemple. Mais le problème ne se pose pas dans ce
que permettent de faire ces langages, mais plus dans la simplicité
des langages.
Un débutant ne fait pas de graphisme.
(En sens inverse, il y a plein de choses simples qu'on peut faire
avec C++, très simplement et pas avec plusieurs de ces langages.
Il vous faut des exemples ?)
S'ils peuvent améliorer ma culture, je veux bien.
double nb;
cin >> nb;
Ça me semble déjà beaucoup :-)
(ceci dit, je ne connais pas assez Python pour savoir si c'est
simple ou non dans ce langage, mais encore une fois, je ne dis
pas que les autres langages sont mauvais, je demande simplement
ce qu'ils ont de plus que C++, pour les vrais débutants...)
Je sais que ce genre de question peut lancer une guerre et est
peut-être simplement un troll, mais j'ai une nouvelle réponse
depuis quelques temps et je veux la diffuser ici.
Par curiosité, quelle est cette réponse ?
Elle suivait :
Que peut-on faire de spécial avec ces langages qu'on ne peut pas
faire avec C++ et qui est _important pour un débutant_ ?
Du graphisme, par exemple. Mais le problème ne se pose pas dans ce
que permettent de faire ces langages, mais plus dans la simplicité
des langages.
Un débutant ne fait pas de graphisme.
(En sens inverse, il y a plein de choses simples qu'on peut faire
avec C++, très simplement et pas avec plusieurs de ces langages.
Il vous faut des exemples ?)
S'ils peuvent améliorer ma culture, je veux bien.
double nb;
cin >> nb;
Ça me semble déjà beaucoup :-)
(ceci dit, je ne connais pas assez Python pour savoir si c'est
simple ou non dans ce langage, mais encore une fois, je ne dis
pas que les autres langages sont mauvais, je demande simplement
ce qu'ils ont de plus que C++, pour les vrais débutants...)
Je sais que ce genre de question peut lancer une guerre et est
peut-être simplement un troll, mais j'ai une nouvelle réponse
depuis quelques temps et je veux la diffuser ici.
Par curiosité, quelle est cette réponse ?
Elle suivait :Que peut-on faire de spécial avec ces langages qu'on ne peut pas
faire avec C++ et qui est _important pour un débutant_ ?
Du graphisme, par exemple. Mais le problème ne se pose pas dans ce
que permettent de faire ces langages, mais plus dans la simplicité
des langages.
Un débutant ne fait pas de graphisme.
(En sens inverse, il y a plein de choses simples qu'on peut faire
avec C++, très simplement et pas avec plusieurs de ces langages.
Il vous faut des exemples ?)
S'ils peuvent améliorer ma culture, je veux bien.
double nb;
cin >> nb;
Ça me semble déjà beaucoup :-)
(ceci dit, je ne connais pas assez Python pour savoir si c'est
simple ou non dans ce langage, mais encore une fois, je ne dis
pas que les autres langages sont mauvais, je demande simplement
ce qu'ils ont de plus que C++, pour les vrais débutants...)
Bonjour.
Avant de me lancer, comme je débute en C++, j'aimerais bien avoir des
suggestions pour traiter la chose suivante :
les données :
nb Tortues, définies par nom, famille, de 0 à 10 valeurs de longévité.
Il y a dès le départ, indépendamment du langage choisi (à priori, le
Je pense,Tortues sera un enregistrement :
OK, selon le langage, ce pourra être un record, une struct, une class,
( nom <chaine caractères> ,
A priori, pourquoi pas ...
famille <chaine caractères>,
famille est un choix parmi un nombre fini de possibilités,
longevite <Tableau de 1 à 10 Entiers>,
A peu près la même chose que pour famille. A ceci près que le nombre
MoyenneLongevite <Reel> )
Là, je ne comprends pas. Dans votre ébauche d'algo, vous semblez écrire
1 ébauche d'algo :
TantQue il y-a une Tortue à entrer
saisie(nom)
saisie(famille)
si pas_DejaEntree(nom,famille) -- on vérifie que les
-- caractéristiques n'ont pas -- déjà été fournies,
-- (même nom, même famille)
Apparemment, vous acceptez plusieurs fois le même nom, si les familles
Bonjour.
Avant de me lancer, comme je débute en C++, j'aimerais bien avoir des
suggestions pour traiter la chose suivante :
les données :
nb Tortues, définies par nom, famille, de 0 à 10 valeurs de longévité.
Il y a dès le départ, indépendamment du langage choisi (à priori, le
Je pense,Tortues sera un enregistrement :
OK, selon le langage, ce pourra être un record, une struct, une class,
( nom <chaine caractères> ,
A priori, pourquoi pas ...
famille <chaine caractères>,
famille est un choix parmi un nombre fini de possibilités,
longevite <Tableau de 1 à 10 Entiers>,
A peu près la même chose que pour famille. A ceci près que le nombre
MoyenneLongevite <Reel> )
Là, je ne comprends pas. Dans votre ébauche d'algo, vous semblez écrire
1 ébauche d'algo :
TantQue il y-a une Tortue à entrer
saisie(nom)
saisie(famille)
si pas_DejaEntree(nom,famille) -- on vérifie que les
-- caractéristiques n'ont pas -- déjà été fournies,
-- (même nom, même famille)
Apparemment, vous acceptez plusieurs fois le même nom, si les familles
Bonjour.
Avant de me lancer, comme je débute en C++, j'aimerais bien avoir des
suggestions pour traiter la chose suivante :
les données :
nb Tortues, définies par nom, famille, de 0 à 10 valeurs de longévité.
Il y a dès le départ, indépendamment du langage choisi (à priori, le
Je pense,Tortues sera un enregistrement :
OK, selon le langage, ce pourra être un record, une struct, une class,
( nom <chaine caractères> ,
A priori, pourquoi pas ...
famille <chaine caractères>,
famille est un choix parmi un nombre fini de possibilités,
longevite <Tableau de 1 à 10 Entiers>,
A peu près la même chose que pour famille. A ceci près que le nombre
MoyenneLongevite <Reel> )
Là, je ne comprends pas. Dans votre ébauche d'algo, vous semblez écrire
1 ébauche d'algo :
TantQue il y-a une Tortue à entrer
saisie(nom)
saisie(famille)
si pas_DejaEntree(nom,famille) -- on vérifie que les
-- caractéristiques n'ont pas -- déjà été fournies,
-- (même nom, même famille)
Apparemment, vous acceptez plusieurs fois le même nom, si les familles
Dans le message ,"Michel Michaud" writes:Que peut-on faire de spécial avec ces langages qu'on ne peut pas
faire avec C++ et qui est _important pour un débutant_ ?
Mauvaise question. Penses plutôt à
Ce n'est pas la mauvaise question, c'est ma (une ?) réponse à la
remarque qui dit que C++ n'est pas bon pour un débutant...
« Que peut-on faire de dangereux ou quelles mauvaises habitudes peut
prendre un débutant avec C++ et qu'on ne pourrait pas faire avec
tous ces langages ? »
J'attends une réponse
Et il ne faut pas dévier la question : si on me dit que C++ n'est
pas bon pour un débutant, je demande des explications. Poser une
autre question n'est pas une réponse.
Dans le message vpqzmugeol3.fsf@ecrins.imag.fr,
"Michel Michaud" <mm@gdzid.com> writes:
Que peut-on faire de spécial avec ces langages qu'on ne peut pas
faire avec C++ et qui est _important pour un débutant_ ?
Mauvaise question. Penses plutôt à
Ce n'est pas la mauvaise question, c'est ma (une ?) réponse à la
remarque qui dit que C++ n'est pas bon pour un débutant...
« Que peut-on faire de dangereux ou quelles mauvaises habitudes peut
prendre un débutant avec C++ et qu'on ne pourrait pas faire avec
tous ces langages ? »
J'attends une réponse
Et il ne faut pas dévier la question : si on me dit que C++ n'est
pas bon pour un débutant, je demande des explications. Poser une
autre question n'est pas une réponse.
Dans le message ,"Michel Michaud" writes:Que peut-on faire de spécial avec ces langages qu'on ne peut pas
faire avec C++ et qui est _important pour un débutant_ ?
Mauvaise question. Penses plutôt à
Ce n'est pas la mauvaise question, c'est ma (une ?) réponse à la
remarque qui dit que C++ n'est pas bon pour un débutant...
« Que peut-on faire de dangereux ou quelles mauvaises habitudes peut
prendre un débutant avec C++ et qu'on ne pourrait pas faire avec
tous ces langages ? »
J'attends une réponse
Et il ne faut pas dévier la question : si on me dit que C++ n'est
pas bon pour un débutant, je demande des explications. Poser une
autre question n'est pas une réponse.
Dans le message
,Michel Michaud wrote:Que peut-on faire de spécial avec ces langages qu'on ne
peut pas faire avec C++ et qui est _important pour un
débutant_ ?
La question se pose en sens inverse, non ? Qu'est-ce qu'il faut
Pourquoi faudrait-il poser la question en sens inverse. Si
quelqu'un dit que C++ n'est pas bon pour un débutant, je
demande des explications... Poser une autre question n'est pas
une réponse et indique simplement que l'affirmation de base
était peut-être gratuite.
apprendre de spécial (propre au langage) avant de pouvoir
écrire des programmes simples et corrects ? Donc, par
exemple, pour commencer en Java, il faut avoir aborder des
classes et des fonctions statiques (ce qui est prèsqu'une
contradiction) avant de pouvoir commencer --
Oui en ce sens-là, ce sont des avantages de C++ comme je le
laissais entrevoir dans mon message. J'avais dit
« (En sens inverse, il y a plein de choses simples qu'on peut
faire avec C++, très simplement et pas avec plusieurs de ces
langages. Il vous faut des exemples ?) »
Mais je ne veux pas dévier la question : on dit que C++ n'est
pas bon pour un débutant. Je veux bien, mais qu'on me dise ce
qui rend Java ou autres meilleurs pour ce rôle...
en C++, les fonctions, mais aussi quelques petits détails
sur les comportements indéfinis (ne pas modifier un objet
deux fois dans la même expression), et la
Ce sont des détails qui ne touchent pas les débutants... Je
parle de comportements indéfinis à mes élèves de temps en
temps, mais ce n'est pas pour les empêcher de faire ce qu'ils
auraient naturellement l'intention de faire. Plutôt pour leur
confirmer qu'ils ont raison de vouloir éviter certaines choses
qui ne leur semblent pas très sûres.
syntaxe des déclarations (pour reconnaître quand on a
déclaré une fonction, et non une variable.
Encore une fois, c'est un cas qui ne touche vraiment pas les
débutants... Un débutant ne sait pas ce qu'est une fonction :
il ne veut ni en faire, ni savoir comment en déclarer une, ni
comment choisir ce qui devrait en être une et ce qui serait
les paramètres.
L'idée de faire son programme en un gros bloc lui plaît assez
en fait !
Et le copier-coller semble leur meilleur ami.
Je suis heureux de pouvoir faire 150 pages de mon livre
d'introduction à la programmation (environ le tiers) avant
d'introduire la notion de modularité dans le code.
Il y a beaucoup à faire avant d'y arriver, si on veut pouvoir
se concentrer sur ce point à partir de ce moment. Si faire des
boucles ou un série de conditions complexes est encore un
problème, je ne veux pas faire des fonctions... pas encore !
(À part ce dernier, je ne dis pas qu'il ne faut pas les
apprendre, quelque soit le langage du début. Mais c'est
peut-être un peu exagéré d'exiger l'apprentissage des
classes et des fonctions statiques avant de pouvoir écrire
quoique ce soit.)
On te répondra qu'ils (les débutants) peuvent faire ça sans
comprendre ce que c'est.
Je trouve que le problème est de nier par la suite l'existence
ou l'utilité de la notion de fonctions (ou variables)
globales, surtout dans des langages qui abusent des classes
pour y mettre des fonctions statiques...
On ne peut dire qu'il faut faire des classes, expliquer la POO
et l'intérêt des classes et en même temps faire des classes
qui n'en sont pas selon les principes qu'on vient d'expliquer.
Dans le message
1117206712.189835.44300@g14g2000cwa.googlegroups.com,
Michel Michaud wrote:
Que peut-on faire de spécial avec ces langages qu'on ne
peut pas faire avec C++ et qui est _important pour un
débutant_ ?
La question se pose en sens inverse, non ? Qu'est-ce qu'il faut
Pourquoi faudrait-il poser la question en sens inverse. Si
quelqu'un dit que C++ n'est pas bon pour un débutant, je
demande des explications... Poser une autre question n'est pas
une réponse et indique simplement que l'affirmation de base
était peut-être gratuite.
apprendre de spécial (propre au langage) avant de pouvoir
écrire des programmes simples et corrects ? Donc, par
exemple, pour commencer en Java, il faut avoir aborder des
classes et des fonctions statiques (ce qui est prèsqu'une
contradiction) avant de pouvoir commencer --
Oui en ce sens-là, ce sont des avantages de C++ comme je le
laissais entrevoir dans mon message. J'avais dit
« (En sens inverse, il y a plein de choses simples qu'on peut
faire avec C++, très simplement et pas avec plusieurs de ces
langages. Il vous faut des exemples ?) »
Mais je ne veux pas dévier la question : on dit que C++ n'est
pas bon pour un débutant. Je veux bien, mais qu'on me dise ce
qui rend Java ou autres meilleurs pour ce rôle...
en C++, les fonctions, mais aussi quelques petits détails
sur les comportements indéfinis (ne pas modifier un objet
deux fois dans la même expression), et la
Ce sont des détails qui ne touchent pas les débutants... Je
parle de comportements indéfinis à mes élèves de temps en
temps, mais ce n'est pas pour les empêcher de faire ce qu'ils
auraient naturellement l'intention de faire. Plutôt pour leur
confirmer qu'ils ont raison de vouloir éviter certaines choses
qui ne leur semblent pas très sûres.
syntaxe des déclarations (pour reconnaître quand on a
déclaré une fonction, et non une variable.
Encore une fois, c'est un cas qui ne touche vraiment pas les
débutants... Un débutant ne sait pas ce qu'est une fonction :
il ne veut ni en faire, ni savoir comment en déclarer une, ni
comment choisir ce qui devrait en être une et ce qui serait
les paramètres.
L'idée de faire son programme en un gros bloc lui plaît assez
en fait !
Et le copier-coller semble leur meilleur ami.
Je suis heureux de pouvoir faire 150 pages de mon livre
d'introduction à la programmation (environ le tiers) avant
d'introduire la notion de modularité dans le code.
Il y a beaucoup à faire avant d'y arriver, si on veut pouvoir
se concentrer sur ce point à partir de ce moment. Si faire des
boucles ou un série de conditions complexes est encore un
problème, je ne veux pas faire des fonctions... pas encore !
(À part ce dernier, je ne dis pas qu'il ne faut pas les
apprendre, quelque soit le langage du début. Mais c'est
peut-être un peu exagéré d'exiger l'apprentissage des
classes et des fonctions statiques avant de pouvoir écrire
quoique ce soit.)
On te répondra qu'ils (les débutants) peuvent faire ça sans
comprendre ce que c'est.
Je trouve que le problème est de nier par la suite l'existence
ou l'utilité de la notion de fonctions (ou variables)
globales, surtout dans des langages qui abusent des classes
pour y mettre des fonctions statiques...
On ne peut dire qu'il faut faire des classes, expliquer la POO
et l'intérêt des classes et en même temps faire des classes
qui n'en sont pas selon les principes qu'on vient d'expliquer.
Dans le message
,Michel Michaud wrote:Que peut-on faire de spécial avec ces langages qu'on ne
peut pas faire avec C++ et qui est _important pour un
débutant_ ?
La question se pose en sens inverse, non ? Qu'est-ce qu'il faut
Pourquoi faudrait-il poser la question en sens inverse. Si
quelqu'un dit que C++ n'est pas bon pour un débutant, je
demande des explications... Poser une autre question n'est pas
une réponse et indique simplement que l'affirmation de base
était peut-être gratuite.
apprendre de spécial (propre au langage) avant de pouvoir
écrire des programmes simples et corrects ? Donc, par
exemple, pour commencer en Java, il faut avoir aborder des
classes et des fonctions statiques (ce qui est prèsqu'une
contradiction) avant de pouvoir commencer --
Oui en ce sens-là, ce sont des avantages de C++ comme je le
laissais entrevoir dans mon message. J'avais dit
« (En sens inverse, il y a plein de choses simples qu'on peut
faire avec C++, très simplement et pas avec plusieurs de ces
langages. Il vous faut des exemples ?) »
Mais je ne veux pas dévier la question : on dit que C++ n'est
pas bon pour un débutant. Je veux bien, mais qu'on me dise ce
qui rend Java ou autres meilleurs pour ce rôle...
en C++, les fonctions, mais aussi quelques petits détails
sur les comportements indéfinis (ne pas modifier un objet
deux fois dans la même expression), et la
Ce sont des détails qui ne touchent pas les débutants... Je
parle de comportements indéfinis à mes élèves de temps en
temps, mais ce n'est pas pour les empêcher de faire ce qu'ils
auraient naturellement l'intention de faire. Plutôt pour leur
confirmer qu'ils ont raison de vouloir éviter certaines choses
qui ne leur semblent pas très sûres.
syntaxe des déclarations (pour reconnaître quand on a
déclaré une fonction, et non une variable.
Encore une fois, c'est un cas qui ne touche vraiment pas les
débutants... Un débutant ne sait pas ce qu'est une fonction :
il ne veut ni en faire, ni savoir comment en déclarer une, ni
comment choisir ce qui devrait en être une et ce qui serait
les paramètres.
L'idée de faire son programme en un gros bloc lui plaît assez
en fait !
Et le copier-coller semble leur meilleur ami.
Je suis heureux de pouvoir faire 150 pages de mon livre
d'introduction à la programmation (environ le tiers) avant
d'introduire la notion de modularité dans le code.
Il y a beaucoup à faire avant d'y arriver, si on veut pouvoir
se concentrer sur ce point à partir de ce moment. Si faire des
boucles ou un série de conditions complexes est encore un
problème, je ne veux pas faire des fonctions... pas encore !
(À part ce dernier, je ne dis pas qu'il ne faut pas les
apprendre, quelque soit le langage du début. Mais c'est
peut-être un peu exagéré d'exiger l'apprentissage des
classes et des fonctions statiques avant de pouvoir écrire
quoique ce soit.)
On te répondra qu'ils (les débutants) peuvent faire ça sans
comprendre ce que c'est.
Je trouve que le problème est de nier par la suite l'existence
ou l'utilité de la notion de fonctions (ou variables)
globales, surtout dans des langages qui abusent des classes
pour y mettre des fonctions statiques...
On ne peut dire qu'il faut faire des classes, expliquer la POO
et l'intérêt des classes et en même temps faire des classes
qui n'en sont pas selon les principes qu'on vient d'expliquer.
Du graphisme, par exemple. Mais le problème ne se pose pas
dans ce que permettent de faire ces langages, mais plus
dans la simplicité des langages.
Un débutant ne fait pas de graphisme.
Pourtant, ce livre sur l'apprentissage de la programmation en
Python (donc pour débutants), aborde le graphisme assez vite
(au milieu de l'ouvrage) :
http://www.ulg.ac.be/cifen/inforef/swi/python.htm Faire du
graphisme en Python, en Java ou en Visual Basic est
relativement accessible. Le "débutant ne fait pas de
graphisme" ne s'applique qu'au C++.
Du graphisme, par exemple. Mais le problème ne se pose pas
dans ce que permettent de faire ces langages, mais plus
dans la simplicité des langages.
Un débutant ne fait pas de graphisme.
Pourtant, ce livre sur l'apprentissage de la programmation en
Python (donc pour débutants), aborde le graphisme assez vite
(au milieu de l'ouvrage) :
http://www.ulg.ac.be/cifen/inforef/swi/python.htm Faire du
graphisme en Python, en Java ou en Visual Basic est
relativement accessible. Le "débutant ne fait pas de
graphisme" ne s'applique qu'au C++.
Du graphisme, par exemple. Mais le problème ne se pose pas
dans ce que permettent de faire ces langages, mais plus
dans la simplicité des langages.
Un débutant ne fait pas de graphisme.
Pourtant, ce livre sur l'apprentissage de la programmation en
Python (donc pour débutants), aborde le graphisme assez vite
(au milieu de l'ouvrage) :
http://www.ulg.ac.be/cifen/inforef/swi/python.htm Faire du
graphisme en Python, en Java ou en Visual Basic est
relativement accessible. Le "débutant ne fait pas de
graphisme" ne s'applique qu'au C++.
Richard Delorme wrote:Du graphisme, par exemple. Mais le problème ne se pose pas
dans ce que permettent de faire ces langages, mais plus
dans la simplicité des langages.Un débutant ne fait pas de graphisme.Pourtant, ce livre sur l'apprentissage de la programmation en
Python (donc pour débutants), aborde le graphisme assez vite
(au milieu de l'ouvrage) :
http://www.ulg.ac.be/cifen/inforef/swi/python.htm Faire du
graphisme en Python, en Java ou en Visual Basic est
relativement accessible. Le "débutant ne fait pas de
graphisme" ne s'applique qu'au C++.
Je ne sais pas exactement ce qu'on entend ici sous
« graphisme », mais je crois que le point de Michel, c'est
qu'une application réele graphique n'est pas abordable par un
débuttant. Pour diverses raisons -- en Java, pour commencer, une
telle application est forcément multithread, et je vois mal un
débuttant aborder le threading.
Richard Delorme wrote:
Du graphisme, par exemple. Mais le problème ne se pose pas
dans ce que permettent de faire ces langages, mais plus
dans la simplicité des langages.
Un débutant ne fait pas de graphisme.
Pourtant, ce livre sur l'apprentissage de la programmation en
Python (donc pour débutants), aborde le graphisme assez vite
(au milieu de l'ouvrage) :
http://www.ulg.ac.be/cifen/inforef/swi/python.htm Faire du
graphisme en Python, en Java ou en Visual Basic est
relativement accessible. Le "débutant ne fait pas de
graphisme" ne s'applique qu'au C++.
Je ne sais pas exactement ce qu'on entend ici sous
« graphisme », mais je crois que le point de Michel, c'est
qu'une application réele graphique n'est pas abordable par un
débuttant. Pour diverses raisons -- en Java, pour commencer, une
telle application est forcément multithread, et je vois mal un
débuttant aborder le threading.
Richard Delorme wrote:Du graphisme, par exemple. Mais le problème ne se pose pas
dans ce que permettent de faire ces langages, mais plus
dans la simplicité des langages.Un débutant ne fait pas de graphisme.Pourtant, ce livre sur l'apprentissage de la programmation en
Python (donc pour débutants), aborde le graphisme assez vite
(au milieu de l'ouvrage) :
http://www.ulg.ac.be/cifen/inforef/swi/python.htm Faire du
graphisme en Python, en Java ou en Visual Basic est
relativement accessible. Le "débutant ne fait pas de
graphisme" ne s'applique qu'au C++.
Je ne sais pas exactement ce qu'on entend ici sous
« graphisme », mais je crois que le point de Michel, c'est
qu'une application réele graphique n'est pas abordable par un
débuttant. Pour diverses raisons -- en Java, pour commencer, une
telle application est forcément multithread, et je vois mal un
débuttant aborder le threading.
Je ne sais pas exactement ce qu'on entend ici sous « graphisme
», mais je crois que le point de Michel, c'est qu'une
application réele graphique n'est pas abordable par un
débuttant. Pour diverses raisons -- en Java, pour commencer,
une telle application est forcément multithread, et je vois
mal un débuttant aborder le threading.
Pour des exemples de débutant, je pense que l'on peut s'en
passer. Dans les exemples données ici :
http://www.apl.jhu.edu/~hall/java/Swing-Tutorial/
je ne vois pas beaucoup de multitâche, juste un minimum de
programmation évenementiel dont on peut ignorer les détails
d'implémentation.
Après, pour des vrais programmes professionnels, il vaut mieux
connaître comment fonctionne le multitâche, il est vrai.
Toutefois, Java n'est peut-être pas le meilleur exemple de
simplicité pour le débutant.
En Python, le Hello, World fenêtré n'est guère plus compliqué
que le Hello, World textuel du C++ :
#----------8<-----------------
from Tkinter import *
root = Tk()
w = Label(root, text="Hello, world!")
w.pack()
root.mainloop()
#----------8<-----------------
Je ne dis pas que cet exemple doit être le premier abordé pour
apprendre la programmation, mais je pense franchement qu'il
peut être vu assez rapidement, après quelques jours
d'apprentissage seulement. Je pense qu'il peut aussi être
appris de manière autodidacte, par un lycéen par exemple.
A mon avis il est très frustrant d'être initié à la
programmation et de ne jamais écrire quelque chose qui
ressemble à un vrai programme.
Je ne sais pas exactement ce qu'on entend ici sous « graphisme
», mais je crois que le point de Michel, c'est qu'une
application réele graphique n'est pas abordable par un
débuttant. Pour diverses raisons -- en Java, pour commencer,
une telle application est forcément multithread, et je vois
mal un débuttant aborder le threading.
Pour des exemples de débutant, je pense que l'on peut s'en
passer. Dans les exemples données ici :
http://www.apl.jhu.edu/~hall/java/Swing-Tutorial/
je ne vois pas beaucoup de multitâche, juste un minimum de
programmation évenementiel dont on peut ignorer les détails
d'implémentation.
Après, pour des vrais programmes professionnels, il vaut mieux
connaître comment fonctionne le multitâche, il est vrai.
Toutefois, Java n'est peut-être pas le meilleur exemple de
simplicité pour le débutant.
En Python, le Hello, World fenêtré n'est guère plus compliqué
que le Hello, World textuel du C++ :
#----------8<-----------------
from Tkinter import *
root = Tk()
w = Label(root, text="Hello, world!")
w.pack()
root.mainloop()
#----------8<-----------------
Je ne dis pas que cet exemple doit être le premier abordé pour
apprendre la programmation, mais je pense franchement qu'il
peut être vu assez rapidement, après quelques jours
d'apprentissage seulement. Je pense qu'il peut aussi être
appris de manière autodidacte, par un lycéen par exemple.
A mon avis il est très frustrant d'être initié à la
programmation et de ne jamais écrire quelque chose qui
ressemble à un vrai programme.
Je ne sais pas exactement ce qu'on entend ici sous « graphisme
», mais je crois que le point de Michel, c'est qu'une
application réele graphique n'est pas abordable par un
débuttant. Pour diverses raisons -- en Java, pour commencer,
une telle application est forcément multithread, et je vois
mal un débuttant aborder le threading.
Pour des exemples de débutant, je pense que l'on peut s'en
passer. Dans les exemples données ici :
http://www.apl.jhu.edu/~hall/java/Swing-Tutorial/
je ne vois pas beaucoup de multitâche, juste un minimum de
programmation évenementiel dont on peut ignorer les détails
d'implémentation.
Après, pour des vrais programmes professionnels, il vaut mieux
connaître comment fonctionne le multitâche, il est vrai.
Toutefois, Java n'est peut-être pas le meilleur exemple de
simplicité pour le débutant.
En Python, le Hello, World fenêtré n'est guère plus compliqué
que le Hello, World textuel du C++ :
#----------8<-----------------
from Tkinter import *
root = Tk()
w = Label(root, text="Hello, world!")
w.pack()
root.mainloop()
#----------8<-----------------
Je ne dis pas que cet exemple doit être le premier abordé pour
apprendre la programmation, mais je pense franchement qu'il
peut être vu assez rapidement, après quelques jours
d'apprentissage seulement. Je pense qu'il peut aussi être
appris de manière autodidacte, par un lycéen par exemple.
A mon avis il est très frustrant d'être initié à la
programmation et de ne jamais écrire quelque chose qui
ressemble à un vrai programme.
Je sais que ce genre de question peut lancer une guerre et est
peut-être simplement un troll, mais j'ai une nouvelle réponse
depuis quelques temps et je veux la diffuser ici.
Par curiosité, quelle est cette réponse ?
Elle suivait :Que peut-on faire de spécial avec ces langages qu'on ne peut
pas faire avec C++ et qui est _important pour un débutant_ ?
C'est ce que j'appelle une question, pas une réponse ;-)
Pourtant, ce livre sur l'apprentissage de la programmation en
Python (donc pour débutants), aborde le graphisme assez vite
(au milieu de l'ouvrage) :
http://www.ulg.ac.be/cifen/inforef/swi/python.htm
Faire du graphisme en Python, en Java ou en Visual Basic est
relativement accessible. Le "débutant ne fait pas de graphisme" ne
s'applique qu'au C++.
En Python, l'équivalent amélioré :
- plus court : pas de déclaration de variable.
Je sais que ce genre de question peut lancer une guerre et est
peut-être simplement un troll, mais j'ai une nouvelle réponse
depuis quelques temps et je veux la diffuser ici.
Par curiosité, quelle est cette réponse ?
Elle suivait :
Que peut-on faire de spécial avec ces langages qu'on ne peut
pas faire avec C++ et qui est _important pour un débutant_ ?
C'est ce que j'appelle une question, pas une réponse ;-)
Pourtant, ce livre sur l'apprentissage de la programmation en
Python (donc pour débutants), aborde le graphisme assez vite
(au milieu de l'ouvrage) :
http://www.ulg.ac.be/cifen/inforef/swi/python.htm
Faire du graphisme en Python, en Java ou en Visual Basic est
relativement accessible. Le "débutant ne fait pas de graphisme" ne
s'applique qu'au C++.
En Python, l'équivalent amélioré :
- plus court : pas de déclaration de variable.
Je sais que ce genre de question peut lancer une guerre et est
peut-être simplement un troll, mais j'ai une nouvelle réponse
depuis quelques temps et je veux la diffuser ici.
Par curiosité, quelle est cette réponse ?
Elle suivait :Que peut-on faire de spécial avec ces langages qu'on ne peut
pas faire avec C++ et qui est _important pour un débutant_ ?
C'est ce que j'appelle une question, pas une réponse ;-)
Pourtant, ce livre sur l'apprentissage de la programmation en
Python (donc pour débutants), aborde le graphisme assez vite
(au milieu de l'ouvrage) :
http://www.ulg.ac.be/cifen/inforef/swi/python.htm
Faire du graphisme en Python, en Java ou en Visual Basic est
relativement accessible. Le "débutant ne fait pas de graphisme" ne
s'applique qu'au C++.
En Python, l'équivalent amélioré :
- plus court : pas de déclaration de variable.
Michel Michaud wrote:Pourquoi faudrait-il poser la question en sens inverse. Si
quelqu'un dit que C++ n'est pas bon pour un débutant, je
demande des explications... Poser une autre question n'est pas
une réponse et indique simplement que l'affirmation de base
était peut-être gratuite.
Oui, mais le problème n'est pas, à mon avis, ce qu'on peut faire
de spécial -- si on parle vraiment du b a ba de la programmation,
il y a beaucoup de langages qui ont tout ce qu'il faut.
Et plus -- à la rigueur, des classes, des templates, des
exceptions... sont tous des choses dont un débuttant n'a pas
besoin au début.
Oui en ce sens-là, ce sont des avantages de C++ comme je le
laissais entrevoir dans mon message. J'avais dit
« (En sens inverse, il y a plein de choses simples qu'on peut
faire avec C++, très simplement et pas avec plusieurs de ces
langages. Il vous faut des exemples ?) »
D'accord, mais c'était un deuxième point. Tu as commencé par
suggérer qu'il y avait des choses qui manquaient dans les autres
langages, non qu'il y avait des choses en trop qu'on ne pouvait
pas éviter.
Et si on disait que tous les deux ont des défauts majeurs dans
ce rôle ? Pas les même, évidemment, mais ni l'un ni l'autre
n'est parfait. Loin de là.
en C++, les fonctions, mais aussi quelques petits détails
sur les comportements indéfinis (ne pas modifier un objet
deux fois dans la même expression), et la
Ce sont des détails qui ne touchent pas les débutants... Je
parle de comportements indéfinis à mes élèves de temps en
temps, mais ce n'est pas pour les empêcher de faire ce qu'ils
auraient naturellement l'intention de faire. Plutôt pour leur
confirmer qu'ils ont raison de vouloir éviter certaines choses
qui ne leur semblent pas très sûres.
Que les élèves n'apprenent pas l'expression « comportement
indéfini », je veux bien.
AMHA, un débuttant doit arriver au niveau de déclarer
ses propres fonctions très, très vite. Particulièrement
^^^^^^^^^^^^^^^^^^^^^
en C++ -- un programme C++ sans au moins une fonction, ça
n'existe pas.
Mais ce n'est pas là la question. Le problème, c'est quand
l'élève veut définir une variable initialisée (et tu ne vas pas
me dire que la définition des variables, ni leur initialisation,
ne concerne pas les débuttants). Et que ça définition s'avère en
fait être une déclaration de fonction. Et que le message du
compilateur est complètement incompréhensible pour l'élève.
L'idée de faire son programme en un gros bloc lui plaît assez
en fait !
Et c'est probablement la première chose qu'il faut lui
désapprendre, alors. Quand j'ai donné des cours de C, on était
aux fonctions dès la troisième leçon.
Je suis heureux de pouvoir faire 150 pages de mon livre
d'introduction à la programmation (environ le tiers) avant
d'introduire la notion de modularité dans le code.
Alors, de quoi est-ce que tu parle ?
Je suppose que ça dépend des élèves. Les seules fois que j'ai
donné des cours, c'était à des adultes, des ingénieurs en
électronique. Donc, le niveau de base y était ; il ne manquait
que la connaissance de l'informatique. J'ai pû couvrir if, while
et for dans à peu près deux heures, sans trop de problèmes.
Mais alors, où est le problème avec Java ?
Michel Michaud wrote:
Pourquoi faudrait-il poser la question en sens inverse. Si
quelqu'un dit que C++ n'est pas bon pour un débutant, je
demande des explications... Poser une autre question n'est pas
une réponse et indique simplement que l'affirmation de base
était peut-être gratuite.
Oui, mais le problème n'est pas, à mon avis, ce qu'on peut faire
de spécial -- si on parle vraiment du b a ba de la programmation,
il y a beaucoup de langages qui ont tout ce qu'il faut.
Et plus -- à la rigueur, des classes, des templates, des
exceptions... sont tous des choses dont un débuttant n'a pas
besoin au début.
Oui en ce sens-là, ce sont des avantages de C++ comme je le
laissais entrevoir dans mon message. J'avais dit
« (En sens inverse, il y a plein de choses simples qu'on peut
faire avec C++, très simplement et pas avec plusieurs de ces
langages. Il vous faut des exemples ?) »
D'accord, mais c'était un deuxième point. Tu as commencé par
suggérer qu'il y avait des choses qui manquaient dans les autres
langages, non qu'il y avait des choses en trop qu'on ne pouvait
pas éviter.
Et si on disait que tous les deux ont des défauts majeurs dans
ce rôle ? Pas les même, évidemment, mais ni l'un ni l'autre
n'est parfait. Loin de là.
en C++, les fonctions, mais aussi quelques petits détails
sur les comportements indéfinis (ne pas modifier un objet
deux fois dans la même expression), et la
Ce sont des détails qui ne touchent pas les débutants... Je
parle de comportements indéfinis à mes élèves de temps en
temps, mais ce n'est pas pour les empêcher de faire ce qu'ils
auraient naturellement l'intention de faire. Plutôt pour leur
confirmer qu'ils ont raison de vouloir éviter certaines choses
qui ne leur semblent pas très sûres.
Que les élèves n'apprenent pas l'expression « comportement
indéfini », je veux bien.
AMHA, un débuttant doit arriver au niveau de déclarer
ses propres fonctions très, très vite. Particulièrement
^^^^^^^^^^^^^^^^^^^^^
en C++ -- un programme C++ sans au moins une fonction, ça
n'existe pas.
Mais ce n'est pas là la question. Le problème, c'est quand
l'élève veut définir une variable initialisée (et tu ne vas pas
me dire que la définition des variables, ni leur initialisation,
ne concerne pas les débuttants). Et que ça définition s'avère en
fait être une déclaration de fonction. Et que le message du
compilateur est complètement incompréhensible pour l'élève.
L'idée de faire son programme en un gros bloc lui plaît assez
en fait !
Et c'est probablement la première chose qu'il faut lui
désapprendre, alors. Quand j'ai donné des cours de C, on était
aux fonctions dès la troisième leçon.
Je suis heureux de pouvoir faire 150 pages de mon livre
d'introduction à la programmation (environ le tiers) avant
d'introduire la notion de modularité dans le code.
Alors, de quoi est-ce que tu parle ?
Je suppose que ça dépend des élèves. Les seules fois que j'ai
donné des cours, c'était à des adultes, des ingénieurs en
électronique. Donc, le niveau de base y était ; il ne manquait
que la connaissance de l'informatique. J'ai pû couvrir if, while
et for dans à peu près deux heures, sans trop de problèmes.
Mais alors, où est le problème avec Java ?
Michel Michaud wrote:Pourquoi faudrait-il poser la question en sens inverse. Si
quelqu'un dit que C++ n'est pas bon pour un débutant, je
demande des explications... Poser une autre question n'est pas
une réponse et indique simplement que l'affirmation de base
était peut-être gratuite.
Oui, mais le problème n'est pas, à mon avis, ce qu'on peut faire
de spécial -- si on parle vraiment du b a ba de la programmation,
il y a beaucoup de langages qui ont tout ce qu'il faut.
Et plus -- à la rigueur, des classes, des templates, des
exceptions... sont tous des choses dont un débuttant n'a pas
besoin au début.
Oui en ce sens-là, ce sont des avantages de C++ comme je le
laissais entrevoir dans mon message. J'avais dit
« (En sens inverse, il y a plein de choses simples qu'on peut
faire avec C++, très simplement et pas avec plusieurs de ces
langages. Il vous faut des exemples ?) »
D'accord, mais c'était un deuxième point. Tu as commencé par
suggérer qu'il y avait des choses qui manquaient dans les autres
langages, non qu'il y avait des choses en trop qu'on ne pouvait
pas éviter.
Et si on disait que tous les deux ont des défauts majeurs dans
ce rôle ? Pas les même, évidemment, mais ni l'un ni l'autre
n'est parfait. Loin de là.
en C++, les fonctions, mais aussi quelques petits détails
sur les comportements indéfinis (ne pas modifier un objet
deux fois dans la même expression), et la
Ce sont des détails qui ne touchent pas les débutants... Je
parle de comportements indéfinis à mes élèves de temps en
temps, mais ce n'est pas pour les empêcher de faire ce qu'ils
auraient naturellement l'intention de faire. Plutôt pour leur
confirmer qu'ils ont raison de vouloir éviter certaines choses
qui ne leur semblent pas très sûres.
Que les élèves n'apprenent pas l'expression « comportement
indéfini », je veux bien.
AMHA, un débuttant doit arriver au niveau de déclarer
ses propres fonctions très, très vite. Particulièrement
^^^^^^^^^^^^^^^^^^^^^
en C++ -- un programme C++ sans au moins une fonction, ça
n'existe pas.
Mais ce n'est pas là la question. Le problème, c'est quand
l'élève veut définir une variable initialisée (et tu ne vas pas
me dire que la définition des variables, ni leur initialisation,
ne concerne pas les débuttants). Et que ça définition s'avère en
fait être une déclaration de fonction. Et que le message du
compilateur est complètement incompréhensible pour l'élève.
L'idée de faire son programme en un gros bloc lui plaît assez
en fait !
Et c'est probablement la première chose qu'il faut lui
désapprendre, alors. Quand j'ai donné des cours de C, on était
aux fonctions dès la troisième leçon.
Je suis heureux de pouvoir faire 150 pages de mon livre
d'introduction à la programmation (environ le tiers) avant
d'introduire la notion de modularité dans le code.
Alors, de quoi est-ce que tu parle ?
Je suppose que ça dépend des élèves. Les seules fois que j'ai
donné des cours, c'était à des adultes, des ingénieurs en
électronique. Donc, le niveau de base y était ; il ne manquait
que la connaissance de l'informatique. J'ai pû couvrir if, while
et for dans à peu près deux heures, sans trop de problèmes.
Mais alors, où est le problème avec Java ?