Mais l'assembleur ce n'est jamais qu'une abstraction aussi, (...)
equations de Maxwell et la physique quantique (...) abstraction plus faible.
Mais l'assembleur ce n'est jamais qu'une abstraction aussi, (...)
equations de Maxwell et la physique quantique (...) abstraction plus faible.
Mais l'assembleur ce n'est jamais qu'une abstraction aussi, (...)
equations de Maxwell et la physique quantique (...) abstraction plus faible.
Johann Dantant wrote:
(...)
Le premier but d'une école devrait être d'enseigner un savoir faire. De
mon
expérience un savoir faire en programmation ça passe par une progression
logique, depuis la machine vers le haut niveau, point barre.
Pourquoi ne pas commencer alors à Turing, puis le lamda-calcul
typé (équivalence de Church au passage si on a 2mn), puis le
reste n'est que mise en pratique ?
Parmi tous les
collègues et stagiaires que j'ai eu et que j'ai encore, seuls ceux qui
ont
suivi cette logique ont de réelles compétences utilisables pour faire
autre
chose que des camemberts ou des histogrammes.
Sérieux ? T'es sur qu'ils ont tous commencé la prog par l'ASM ?
Quel est le critère de "bonne méthode pédagogique" ? Pour moi,
c'est celle qui permet de faire entre de manière durable un max
d'information en un min de temps à un max d'élèves.
Et le C est d'expérience un bon moyen de perdre du temps
et des élèves en route.
Plus sérieusement, il y a des choses qui sont *jolies* dans
un code et qu'on laisse tomber parce que non maintenables (genre
un i |= ~1 vu récemment ici).
Naivement j'espérais que la contractualisation de la recherche c'était
de
donner de l'argent sur des résultats et non sur des objectifs...
Qu'est-ce
que je suis naïf...
Disons que la meilleure idée peut donner la pire mise en pratique
si on ne fait pas attention à ce qu'on fait.
Johann Dantant wrote:
(...)
Le premier but d'une école devrait être d'enseigner un savoir faire. De
mon
expérience un savoir faire en programmation ça passe par une progression
logique, depuis la machine vers le haut niveau, point barre.
Pourquoi ne pas commencer alors à Turing, puis le lamda-calcul
typé (équivalence de Church au passage si on a 2mn), puis le
reste n'est que mise en pratique ?
Parmi tous les
collègues et stagiaires que j'ai eu et que j'ai encore, seuls ceux qui
ont
suivi cette logique ont de réelles compétences utilisables pour faire
autre
chose que des camemberts ou des histogrammes.
Sérieux ? T'es sur qu'ils ont tous commencé la prog par l'ASM ?
Quel est le critère de "bonne méthode pédagogique" ? Pour moi,
c'est celle qui permet de faire entre de manière durable un max
d'information en un min de temps à un max d'élèves.
Et le C est d'expérience un bon moyen de perdre du temps
et des élèves en route.
Plus sérieusement, il y a des choses qui sont *jolies* dans
un code et qu'on laisse tomber parce que non maintenables (genre
un i |= ~1 vu récemment ici).
Naivement j'espérais que la contractualisation de la recherche c'était
de
donner de l'argent sur des résultats et non sur des objectifs...
Qu'est-ce
que je suis naïf...
Disons que la meilleure idée peut donner la pire mise en pratique
si on ne fait pas attention à ce qu'on fait.
Johann Dantant wrote:
(...)
Le premier but d'une école devrait être d'enseigner un savoir faire. De
mon
expérience un savoir faire en programmation ça passe par une progression
logique, depuis la machine vers le haut niveau, point barre.
Pourquoi ne pas commencer alors à Turing, puis le lamda-calcul
typé (équivalence de Church au passage si on a 2mn), puis le
reste n'est que mise en pratique ?
Parmi tous les
collègues et stagiaires que j'ai eu et que j'ai encore, seuls ceux qui
ont
suivi cette logique ont de réelles compétences utilisables pour faire
autre
chose que des camemberts ou des histogrammes.
Sérieux ? T'es sur qu'ils ont tous commencé la prog par l'ASM ?
Quel est le critère de "bonne méthode pédagogique" ? Pour moi,
c'est celle qui permet de faire entre de manière durable un max
d'information en un min de temps à un max d'élèves.
Et le C est d'expérience un bon moyen de perdre du temps
et des élèves en route.
Plus sérieusement, il y a des choses qui sont *jolies* dans
un code et qu'on laisse tomber parce que non maintenables (genre
un i |= ~1 vu récemment ici).
Naivement j'espérais que la contractualisation de la recherche c'était
de
donner de l'argent sur des résultats et non sur des objectifs...
Qu'est-ce
que je suis naïf...
Disons que la meilleure idée peut donner la pire mise en pratique
si on ne fait pas attention à ce qu'on fait.
Jean-Marc Bourguet wrote:Mais l'assembleur ce n'est jamais qu'une abstraction
aussi, (...) equations de Maxwell et la physique
quantique (...) abstraction plus faible.
Elle est bien bonne.
Personne ici avant cela n'était entré dans la discussion
de savoir quel niveau d'abstraction rendait le mieux
compte de "ce qui se passe vraiment" ; la réponse étant
bien évidente : aucun, par définition.
La question qui était posé, c'est de choisir un langage
d'enseignement parmi les langages qui permettent de
controler un ordinateur.
L'assembleur (doublé d'un rapide coup d'oeil sur le format
de codage des instructions par le CPU) est le plus bas
niveau que l'on puisse concevoir.
On n'a pas prétendu qu'on pouvait psychanalyser l'électron
avec, juste que c'était le premier langage qui permettait
d'entrer des ordres pour la machine ; par construction.
Cessez donc de souffler ce relativisme décourageant.
Jean-Marc Bourguet wrote:
Mais l'assembleur ce n'est jamais qu'une abstraction
aussi, (...) equations de Maxwell et la physique
quantique (...) abstraction plus faible.
Elle est bien bonne.
Personne ici avant cela n'était entré dans la discussion
de savoir quel niveau d'abstraction rendait le mieux
compte de "ce qui se passe vraiment" ; la réponse étant
bien évidente : aucun, par définition.
La question qui était posé, c'est de choisir un langage
d'enseignement parmi les langages qui permettent de
controler un ordinateur.
L'assembleur (doublé d'un rapide coup d'oeil sur le format
de codage des instructions par le CPU) est le plus bas
niveau que l'on puisse concevoir.
On n'a pas prétendu qu'on pouvait psychanalyser l'électron
avec, juste que c'était le premier langage qui permettait
d'entrer des ordres pour la machine ; par construction.
Cessez donc de souffler ce relativisme décourageant.
Jean-Marc Bourguet wrote:Mais l'assembleur ce n'est jamais qu'une abstraction
aussi, (...) equations de Maxwell et la physique
quantique (...) abstraction plus faible.
Elle est bien bonne.
Personne ici avant cela n'était entré dans la discussion
de savoir quel niveau d'abstraction rendait le mieux
compte de "ce qui se passe vraiment" ; la réponse étant
bien évidente : aucun, par définition.
La question qui était posé, c'est de choisir un langage
d'enseignement parmi les langages qui permettent de
controler un ordinateur.
L'assembleur (doublé d'un rapide coup d'oeil sur le format
de codage des instructions par le CPU) est le plus bas
niveau que l'on puisse concevoir.
On n'a pas prétendu qu'on pouvait psychanalyser l'électron
avec, juste que c'était le premier langage qui permettait
d'entrer des ordres pour la machine ; par construction.
Cessez donc de souffler ce relativisme décourageant.
Misterjack wrote:L'intérêt d'apprendre le C c'est de comprendre ce que l'on fait et de ne
pas travailler "en aveugle".
scanf("%d",&i);
scanf("%s", prenom);
C'est clair qu'une fois qu'on a compris tout ce que font ces
lignes, on a compris beaucoup de choses.
Mais bon nombre de débutant font ça "en aveugle" (pendant quelques
mois en tout cas).
Commencer par le C permet à l'étudiant de
savoir ce qu'il fait et l'aidera à résoudre beaucoup plus facilement ses
problèmes, et à passer plus facilement à d'autres langages ou plateformes.
A condition qu'il réussisse à le faire.
Etre obligé de comprendre le hardware avant de savoir programmer
en C me semble un argument défavorable pour le C.
Avant de programmer, en C ou en assembleur, il me semble
nécessaire de savoir écrire un algorithme.
Résultat après 3 ans : une maîtrise correcte du C, une autonomie en C++
et Java. Et ceux qui bossent vriament le truc ont rapidement un très bon
niveau.
Et si on avait commencé par autre chose ?
Non, AMHA le principal problème c'est de faire un code
maintenable, et la question n'est plus de savoir ce qu'on
fait que de savoir le partager de manière péreine.
Marcel Dassault disait : "Un bel avion vole bien". A méditer.
Et Airbus a fait le Belouga ;-)
Misterjack wrote:
L'intérêt d'apprendre le C c'est de comprendre ce que l'on fait et de ne
pas travailler "en aveugle".
scanf("%d",&i);
scanf("%s", prenom);
C'est clair qu'une fois qu'on a compris tout ce que font ces
lignes, on a compris beaucoup de choses.
Mais bon nombre de débutant font ça "en aveugle" (pendant quelques
mois en tout cas).
Commencer par le C permet à l'étudiant de
savoir ce qu'il fait et l'aidera à résoudre beaucoup plus facilement ses
problèmes, et à passer plus facilement à d'autres langages ou plateformes.
A condition qu'il réussisse à le faire.
Etre obligé de comprendre le hardware avant de savoir programmer
en C me semble un argument défavorable pour le C.
Avant de programmer, en C ou en assembleur, il me semble
nécessaire de savoir écrire un algorithme.
Résultat après 3 ans : une maîtrise correcte du C, une autonomie en C++
et Java. Et ceux qui bossent vriament le truc ont rapidement un très bon
niveau.
Et si on avait commencé par autre chose ?
Non, AMHA le principal problème c'est de faire un code
maintenable, et la question n'est plus de savoir ce qu'on
fait que de savoir le partager de manière péreine.
Marcel Dassault disait : "Un bel avion vole bien". A méditer.
Et Airbus a fait le Belouga ;-)
Misterjack wrote:L'intérêt d'apprendre le C c'est de comprendre ce que l'on fait et de ne
pas travailler "en aveugle".
scanf("%d",&i);
scanf("%s", prenom);
C'est clair qu'une fois qu'on a compris tout ce que font ces
lignes, on a compris beaucoup de choses.
Mais bon nombre de débutant font ça "en aveugle" (pendant quelques
mois en tout cas).
Commencer par le C permet à l'étudiant de
savoir ce qu'il fait et l'aidera à résoudre beaucoup plus facilement ses
problèmes, et à passer plus facilement à d'autres langages ou plateformes.
A condition qu'il réussisse à le faire.
Etre obligé de comprendre le hardware avant de savoir programmer
en C me semble un argument défavorable pour le C.
Avant de programmer, en C ou en assembleur, il me semble
nécessaire de savoir écrire un algorithme.
Résultat après 3 ans : une maîtrise correcte du C, une autonomie en C++
et Java. Et ceux qui bossent vriament le truc ont rapidement un très bon
niveau.
Et si on avait commencé par autre chose ?
Non, AMHA le principal problème c'est de faire un code
maintenable, et la question n'est plus de savoir ce qu'on
fait que de savoir le partager de manière péreine.
Marcel Dassault disait : "Un bel avion vole bien". A méditer.
Et Airbus a fait le Belouga ;-)
La question est de savoir par où commencer l'enseignement.
Johann veut "une progression logique, depuis la machine vers
le haut niveau", j'ai simplement poussé au bout sa logique
de progression logique des composants vers les composés.
J'ai exagéré à peine, on tient bien compte d'effets
quantiques lors de la fabrication de circuits intégrés.
Je ne suis certainement pas d'accord. Le niveau description
le plus bas ayant parfois une utilité pour le programmeur
est celui juste au dessous, où les ALU et les pipelines et
les délais d'accès aux mémoires ont une existence.
Il y avait aussi accessoirement une idée à laquelle je
m'opposais implicitement, la description des processeurs
registre + mémoire + exécution séquentielle n'est plus
pertinente depuis une dizaine d'année pour réfléchir sur les
performances.
Ce jeu d'instructions n'a survécu que parce que la
compatibilité avec le passé est une obligation.
La question est de savoir par où commencer l'enseignement.
Johann veut "une progression logique, depuis la machine vers
le haut niveau", j'ai simplement poussé au bout sa logique
de progression logique des composants vers les composés.
J'ai exagéré à peine, on tient bien compte d'effets
quantiques lors de la fabrication de circuits intégrés.
Je ne suis certainement pas d'accord. Le niveau description
le plus bas ayant parfois une utilité pour le programmeur
est celui juste au dessous, où les ALU et les pipelines et
les délais d'accès aux mémoires ont une existence.
Il y avait aussi accessoirement une idée à laquelle je
m'opposais implicitement, la description des processeurs
registre + mémoire + exécution séquentielle n'est plus
pertinente depuis une dizaine d'année pour réfléchir sur les
performances.
Ce jeu d'instructions n'a survécu que parce que la
compatibilité avec le passé est une obligation.
La question est de savoir par où commencer l'enseignement.
Johann veut "une progression logique, depuis la machine vers
le haut niveau", j'ai simplement poussé au bout sa logique
de progression logique des composants vers les composés.
J'ai exagéré à peine, on tient bien compte d'effets
quantiques lors de la fabrication de circuits intégrés.
Je ne suis certainement pas d'accord. Le niveau description
le plus bas ayant parfois une utilité pour le programmeur
est celui juste au dessous, où les ALU et les pipelines et
les délais d'accès aux mémoires ont une existence.
Il y avait aussi accessoirement une idée à laquelle je
m'opposais implicitement, la description des processeurs
registre + mémoire + exécution séquentielle n'est plus
pertinente depuis une dizaine d'année pour réfléchir sur les
performances.
Ce jeu d'instructions n'a survécu que parce que la
compatibilité avec le passé est une obligation.
Je t'invite si tu as du temps à fréquenter le forum c++,
à lire les "Design Pattern" ou "Rumination in C++".
Par exemple, il faut pas coder longtemps pour réaliser
que les exceptions sont la meilleure solution à ce jour à la
gestion d'erreur. Et que l'OO est la meilleure pour
lier libération des ressources et gestion d'erreur.
Je t'invite si tu as du temps à fréquenter le forum c++,
à lire les "Design Pattern" ou "Rumination in C++".
Par exemple, il faut pas coder longtemps pour réaliser
que les exceptions sont la meilleure solution à ce jour à la
gestion d'erreur. Et que l'OO est la meilleure pour
lier libération des ressources et gestion d'erreur.
Je t'invite si tu as du temps à fréquenter le forum c++,
à lire les "Design Pattern" ou "Rumination in C++".
Par exemple, il faut pas coder longtemps pour réaliser
que les exceptions sont la meilleure solution à ce jour à la
gestion d'erreur. Et que l'OO est la meilleure pour
lier libération des ressources et gestion d'erreur.
C'est incroyable, la Fac d'orleans vient de passer au LMD et ils ont viré
le C des programmes.
Ils ont conservé le Caml pour les 2eme années
Et ont remplacé Pascal (1ere année) et C (2eme année) par je Java sur
les deux années.
C'est incroyable, la Fac d'orleans vient de passer au LMD et ils ont viré
le C des programmes.
Ils ont conservé le Caml pour les 2eme années
Et ont remplacé Pascal (1ere année) et C (2eme année) par je Java sur
les deux années.
C'est incroyable, la Fac d'orleans vient de passer au LMD et ils ont viré
le C des programmes.
Ils ont conservé le Caml pour les 2eme années
Et ont remplacé Pascal (1ere année) et C (2eme année) par je Java sur
les deux années.
l'expérience nous a montré que l'acquisition des concepts se faisait
plus facilement via un langage (dit) de haut niveau.
L'assembleur peur aussi sembler un mauvais investissement du fait qu'il
change de machine en machine. Pourtant, les principes de bases restent
toujours plus ou moins les mêmes
dans ce cas pourquoi ne pas utiliser une machine de turing pour
apprendre la programation ??
l'expérience nous a montré que l'acquisition des concepts se faisait
plus facilement via un langage (dit) de haut niveau.
L'assembleur peur aussi sembler un mauvais investissement du fait qu'il
change de machine en machine. Pourtant, les principes de bases restent
toujours plus ou moins les mêmes
dans ce cas pourquoi ne pas utiliser une machine de turing pour
apprendre la programation ??
l'expérience nous a montré que l'acquisition des concepts se faisait
plus facilement via un langage (dit) de haut niveau.
L'assembleur peur aussi sembler un mauvais investissement du fait qu'il
change de machine en machine. Pourtant, les principes de bases restent
toujours plus ou moins les mêmes
dans ce cas pourquoi ne pas utiliser une machine de turing pour
apprendre la programation ??
Benoît Dejean writes:
|> et après tout Java, soit disant disant "code once run everywhere" ...
C'est bien connu, Java, c'est du « write once, debug everywhere ».
Enfin, c'est quand même plus portable que le C++. Au moins, quand j'ai
une GUI à réaliser. (Et si je n'ai pas de GUI, je ne me sers pas de
Java:-).)
Benoît Dejean <bnet@ifrance.com> writes:
|> et après tout Java, soit disant disant "code once run everywhere" ...
C'est bien connu, Java, c'est du « write once, debug everywhere ».
Enfin, c'est quand même plus portable que le C++. Au moins, quand j'ai
une GUI à réaliser. (Et si je n'ai pas de GUI, je ne me sers pas de
Java:-).)
Benoît Dejean writes:
|> et après tout Java, soit disant disant "code once run everywhere" ...
C'est bien connu, Java, c'est du « write once, debug everywhere ».
Enfin, c'est quand même plus portable que le C++. Au moins, quand j'ai
une GUI à réaliser. (Et si je n'ai pas de GUI, je ne me sers pas de
Java:-).)