En début d'année, je vais suivre une formation dans l'automatisme et
l'informatique Industriel.
cependant je ne connais rien en langage de programmation. je suis à la
recherche de site voir des livres, afin de prendre de l'avance.
Question au passage, pour apprendre le C++ j'entend différente sons de
cloche, certain dissent qu'il faut apprendre le C au parvant, d'autre le
conseil fortement enfin d'autre que cela n'est absolument pas nécessaire.
On Aug 28, 4:17 pm, (Pascal J. Bourguignon) wrote:
Donc la première chose à apprendre, c'est à ne pas faire de faute d'orthographe ou de grammaire.
Besides a mathematical inclination, an exceptionally good mastery of one's native tongue is the most vital asset of a competent programmer. -- E. W. Dijkstra
Quand j'étais au lycée, mon prof d'anglais insistait toujours que « good writing is clear and concise ». Ça vaut aussi quand ce qu'on écrit est un programme. (Et l'orthographie et la grammaire son essentielles pour la clarité.)
-- James Kanze (GABI Software) email: Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
On Aug 28, 4:17 pm, p...@informatimago.com (Pascal J. Bourguignon)
wrote:
Donc la première chose à apprendre, c'est à ne pas faire de faute
d'orthographe ou de grammaire.
Besides a mathematical inclination, an exceptionally
good mastery of one's native tongue is the most vital
asset of a competent programmer.
-- E. W. Dijkstra
Quand j'étais au lycée, mon prof d'anglais insistait
toujours que « good writing is clear and concise ». Ça vaut
aussi quand ce qu'on écrit est un programme. (Et
l'orthographie et la grammaire son essentielles pour la
clarité.)
--
James Kanze (GABI Software) email:james.kanze@gmail.com
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
On Aug 28, 4:17 pm, (Pascal J. Bourguignon) wrote:
Donc la première chose à apprendre, c'est à ne pas faire de faute d'orthographe ou de grammaire.
Besides a mathematical inclination, an exceptionally good mastery of one's native tongue is the most vital asset of a competent programmer. -- E. W. Dijkstra
Quand j'étais au lycée, mon prof d'anglais insistait toujours que « good writing is clear and concise ». Ça vaut aussi quand ce qu'on écrit est un programme. (Et l'orthographie et la grammaire son essentielles pour la clarité.)
-- James Kanze (GABI Software) email: Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
James Kanze
On Aug 29, 12:47 am, (Pascal J. Bourguignon) wrote:
Mickaël Wolff writes: > Pascal J. Bourguignon a écrit :
>> D'un autre côté, ce ne sont pas les langages que je conseillerais à >> des débutants en informatique, mais plutôt lisp (ou scheme), ou >> python, ou forth.
> Je ne suis pas d'accord. Les langages interprétés introduisent de s
Qui a parlé d'interprète? Là n'est pas la question. Ce qui compte c'est d'avoir un environnement interactif et réactif, une boucle de lecture, évaluation et affichage (= Read Eval Print Loop = REPL).
C'est un des aspects importants. Un autre, c'est d'exiger un minimum de « magique » autour. (Fonction main, etc.)
Quand il s'agit d'apprendre la « programmation ». Tôt ou tard, il faut bien s'adresser aussi aux questions de la génie informatique. Avec les conceptions de compilation séparée, travail en équipe, etc. Le posteur initial a parlé de l'automatisme, ce qui laisse penser que la fiabilité pourrait être importante ; à ce moment-là, le typage statique (et très strict) s'impose, par exemple. (Et donc, le Lisp est à exclure.) Mais on ne peut pas tout apprendre d'un coup.
-- James Kanze (GABI Software) email: Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
On Aug 29, 12:47 am, p...@informatimago.com (Pascal J. Bourguignon)
wrote:
Mickaël Wolff <mickael.wo...@laposte.net> writes:
> Pascal J. Bourguignon a écrit :
>> D'un autre côté, ce ne sont pas les langages que je conseillerais à
>> des débutants en informatique, mais plutôt lisp (ou scheme), ou
>> python, ou forth.
> Je ne suis pas d'accord. Les langages interprétés introduisent de s
Qui a parlé d'interprète? Là n'est pas la question. Ce qui compte
c'est d'avoir un environnement interactif et réactif, une boucle de
lecture, évaluation et affichage (= Read Eval Print Loop = REPL).
C'est un des aspects importants. Un autre, c'est d'exiger un
minimum de « magique » autour. (Fonction main, etc.)
Quand il s'agit d'apprendre la « programmation ». Tôt ou tard,
il faut bien s'adresser aussi aux questions de la génie
informatique. Avec les conceptions de compilation séparée,
travail en équipe, etc. Le posteur initial a parlé de
l'automatisme, ce qui laisse penser que la fiabilité pourrait
être importante ; à ce moment-là, le typage statique (et très
strict) s'impose, par exemple. (Et donc, le Lisp est à exclure.)
Mais on ne peut pas tout apprendre d'un coup.
--
James Kanze (GABI Software) email:james.kanze@gmail.com
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
On Aug 29, 12:47 am, (Pascal J. Bourguignon) wrote:
Mickaël Wolff writes: > Pascal J. Bourguignon a écrit :
>> D'un autre côté, ce ne sont pas les langages que je conseillerais à >> des débutants en informatique, mais plutôt lisp (ou scheme), ou >> python, ou forth.
> Je ne suis pas d'accord. Les langages interprétés introduisent de s
Qui a parlé d'interprète? Là n'est pas la question. Ce qui compte c'est d'avoir un environnement interactif et réactif, une boucle de lecture, évaluation et affichage (= Read Eval Print Loop = REPL).
C'est un des aspects importants. Un autre, c'est d'exiger un minimum de « magique » autour. (Fonction main, etc.)
Quand il s'agit d'apprendre la « programmation ». Tôt ou tard, il faut bien s'adresser aussi aux questions de la génie informatique. Avec les conceptions de compilation séparée, travail en équipe, etc. Le posteur initial a parlé de l'automatisme, ce qui laisse penser que la fiabilité pourrait être importante ; à ce moment-là, le typage statique (et très strict) s'impose, par exemple. (Et donc, le Lisp est à exclure.) Mais on ne peut pas tout apprendre d'un coup.
-- James Kanze (GABI Software) email: Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
LMC
"James Kanze" a écrit dans le message de news:
On Aug 28, 4:17 pm, (Pascal J. Bourguignon) wrote:
Donc la première chose à apprendre, c'est à ne pas faire de faute d'orthographe ou de grammaire.
Besides a mathematical inclination, an exceptionally good mastery of one's native tongue is the most vital asset of a competent programmer. -- E. W. Dijkstra
Quand j'étais au lycée, mon prof d'anglais insistait toujours que « good writing is clear and concise ». Ça vaut aussi quand ce qu'on écrit est un programme. (Et l'orthographie et la grammaire son essentielles pour la ==> sont essentielles pour la clarté. clarité.)
-- James Kanze (GABI Software) email: Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
"James Kanze" <james.kanze@gmail.com> a écrit dans le message de news:
6e962a88-8623-41c6-b86f-6d89a321dee1@k7g2000hsd.googlegroups.com...
On Aug 28, 4:17 pm, p...@informatimago.com (Pascal J. Bourguignon)
wrote:
Donc la première chose à apprendre, c'est à ne pas faire de faute
d'orthographe ou de grammaire.
Besides a mathematical inclination, an exceptionally
good mastery of one's native tongue is the most vital
asset of a competent programmer.
-- E. W. Dijkstra
Quand j'étais au lycée, mon prof d'anglais insistait
toujours que « good writing is clear and concise ». Ça vaut
aussi quand ce qu'on écrit est un programme. (Et
l'orthographie et la grammaire son essentielles pour la
==> sont essentielles pour la clarté.
clarité.)
--
James Kanze (GABI Software) email:james.kanze@gmail.com
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
On Aug 28, 4:17 pm, (Pascal J. Bourguignon) wrote:
Donc la première chose à apprendre, c'est à ne pas faire de faute d'orthographe ou de grammaire.
Besides a mathematical inclination, an exceptionally good mastery of one's native tongue is the most vital asset of a competent programmer. -- E. W. Dijkstra
Quand j'étais au lycée, mon prof d'anglais insistait toujours que « good writing is clear and concise ». Ça vaut aussi quand ce qu'on écrit est un programme. (Et l'orthographie et la grammaire son essentielles pour la ==> sont essentielles pour la clarté. clarité.)
-- James Kanze (GABI Software) email: Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
LMC
"James Kanze" a écrit dans le message de news:
On Aug 28, 4:17 pm, (Pascal J. Bourguignon) wrote:
Donc la première chose à apprendre, c'est à ne pas faire de faute d'orthographe ou de grammaire.
Besides a mathematical inclination, an exceptionally good mastery of one's native tongue is the most vital asset of a competent programmer. -- E. W. Dijkstra
Quand j'étais au lycée, mon prof d'anglais insistait toujours que « good writing is clear and concise ». Ça vaut aussi quand ce qu'on écrit est un programme. (Et l'orthographie et la grammaire son essentielles pour la ==> orthographe et non orthographie clarité.)
-- James Kanze (GABI Software) email: Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
"James Kanze" <james.kanze@gmail.com> a écrit dans le message de news:
6e962a88-8623-41c6-b86f-6d89a321dee1@k7g2000hsd.googlegroups.com...
On Aug 28, 4:17 pm, p...@informatimago.com (Pascal J. Bourguignon)
wrote:
Donc la première chose à apprendre, c'est à ne pas faire de faute
d'orthographe ou de grammaire.
Besides a mathematical inclination, an exceptionally
good mastery of one's native tongue is the most vital
asset of a competent programmer.
-- E. W. Dijkstra
Quand j'étais au lycée, mon prof d'anglais insistait
toujours que « good writing is clear and concise ». Ça vaut
aussi quand ce qu'on écrit est un programme. (Et
l'orthographie et la grammaire son essentielles pour la ==> orthographe et
non orthographie
clarité.)
--
James Kanze (GABI Software) email:james.kanze@gmail.com
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
On Aug 28, 4:17 pm, (Pascal J. Bourguignon) wrote:
Donc la première chose à apprendre, c'est à ne pas faire de faute d'orthographe ou de grammaire.
Besides a mathematical inclination, an exceptionally good mastery of one's native tongue is the most vital asset of a competent programmer. -- E. W. Dijkstra
Quand j'étais au lycée, mon prof d'anglais insistait toujours que « good writing is clear and concise ». Ça vaut aussi quand ce qu'on écrit est un programme. (Et l'orthographie et la grammaire son essentielles pour la ==> orthographe et non orthographie clarité.)
-- James Kanze (GABI Software) email: Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
James Kanze
On Aug 29, 2:26 pm, (Pascal J. Bourguignon) wrote:
Le C est déjà un raccourci, le mieux serait de commencer par l'assembleur. ;-)
L'assembleur est déjà un raccourcie ; le mieux serait de commencer par les codes binaires :-). Et pour bien programmer au niveau applicatif dans beaucoup de domaines, il faut l'oublier, même si on le connaît, parce que c'est bien plusieurs niveaux d'abstraction plus bas.
Bon, mais serrieusement, concernant le C++, le problème c'est que c'est un langage qui n'est pas fini.
C'est, il me semble, un caractèristique essentiel de tout langage de programmation utilisable.
Pour pouvoir l'utiliser en tant que C++ comme l'entendent ceux qui préconisent son apprentissage sans passer par C, il faut avoir implémenté une sacré bibliothèque de mécanismes de base (comme les soit-disant "Smart Pointer"), et d'objets, et il faut bien sur s'interdir d'utiliser tous les opérateurs du C problématiques. En clair, il faut avoir implémenté au dessus de C++ un nouveau langage e t n'utiliser que celui-ci.
Je ne sais pas d'où tu tires ça. Pour utiliser C++ comme langage de base, il suffit de la bibliothèque standard et le collecteur de Boehm, Or, une installation de C++ sans le premier n'est pas une installation de C++, et l'autre peut (et doit) faire partie de l'installation aussi (et n'est nécessaire que si on fait soi-même de l'allocation dynamique -- certainement pas le cas dans les premiers programmes qu'on écrit).
C'est certain que dans le contexte d'un cours, on pourrait vouloir offrir les bibliothèques mieux conçues que la bibliothèque standard (ne serait-ce que pour éviter les confusions entre size_t et int, et les problèmes potentiels quand on les melange). Mais ce n'est pas quelque chose d'essentiel.
Or pour implémenter ce nouveau langage, il faut savoir programmer en C, car on ne peut utiliser que C pour implementer un stl::vector.
Mais on ne doit pas implémenter std::vector. Il est là.
-- James Kanze (GABI Software) email: Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
On Aug 29, 2:26 pm, p...@informatimago.com (Pascal J. Bourguignon)
wrote:
Le C est déjà un raccourci, le mieux serait de commencer par
l'assembleur. ;-)
L'assembleur est déjà un raccourcie ; le mieux serait de
commencer par les codes binaires :-). Et pour bien programmer au
niveau applicatif dans beaucoup de domaines, il faut l'oublier,
même si on le connaît, parce que c'est bien plusieurs niveaux
d'abstraction plus bas.
Bon, mais serrieusement, concernant le C++, le problème c'est
que c'est un langage qui n'est pas fini.
C'est, il me semble, un caractèristique essentiel de tout
langage de programmation utilisable.
Pour pouvoir l'utiliser en tant que C++ comme l'entendent ceux qui
préconisent son apprentissage sans passer par C, il faut avoir
implémenté une sacré bibliothèque de mécanismes de base (comme les
soit-disant "Smart Pointer"), et d'objets, et il faut bien sur
s'interdir d'utiliser tous les opérateurs du C problématiques. En
clair, il faut avoir implémenté au dessus de C++ un nouveau langage e t
n'utiliser que celui-ci.
Je ne sais pas d'où tu tires ça. Pour utiliser C++ comme langage
de base, il suffit de la bibliothèque standard et le collecteur
de Boehm, Or, une installation de C++ sans le premier n'est pas
une installation de C++, et l'autre peut (et doit) faire partie
de l'installation aussi (et n'est nécessaire que si on fait
soi-même de l'allocation dynamique -- certainement pas le cas
dans les premiers programmes qu'on écrit).
C'est certain que dans le contexte d'un cours, on pourrait
vouloir offrir les bibliothèques mieux conçues que la
bibliothèque standard (ne serait-ce que pour éviter les
confusions entre size_t et int, et les problèmes potentiels
quand on les melange). Mais ce n'est pas quelque chose
d'essentiel.
Or pour implémenter ce nouveau langage, il faut savoir programmer en
C, car on ne peut utiliser que C pour implementer un stl::vector.
Mais on ne doit pas implémenter std::vector. Il est là.
--
James Kanze (GABI Software) email:james.kanze@gmail.com
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
On Aug 29, 2:26 pm, (Pascal J. Bourguignon) wrote:
Le C est déjà un raccourci, le mieux serait de commencer par l'assembleur. ;-)
L'assembleur est déjà un raccourcie ; le mieux serait de commencer par les codes binaires :-). Et pour bien programmer au niveau applicatif dans beaucoup de domaines, il faut l'oublier, même si on le connaît, parce que c'est bien plusieurs niveaux d'abstraction plus bas.
Bon, mais serrieusement, concernant le C++, le problème c'est que c'est un langage qui n'est pas fini.
C'est, il me semble, un caractèristique essentiel de tout langage de programmation utilisable.
Pour pouvoir l'utiliser en tant que C++ comme l'entendent ceux qui préconisent son apprentissage sans passer par C, il faut avoir implémenté une sacré bibliothèque de mécanismes de base (comme les soit-disant "Smart Pointer"), et d'objets, et il faut bien sur s'interdir d'utiliser tous les opérateurs du C problématiques. En clair, il faut avoir implémenté au dessus de C++ un nouveau langage e t n'utiliser que celui-ci.
Je ne sais pas d'où tu tires ça. Pour utiliser C++ comme langage de base, il suffit de la bibliothèque standard et le collecteur de Boehm, Or, une installation de C++ sans le premier n'est pas une installation de C++, et l'autre peut (et doit) faire partie de l'installation aussi (et n'est nécessaire que si on fait soi-même de l'allocation dynamique -- certainement pas le cas dans les premiers programmes qu'on écrit).
C'est certain que dans le contexte d'un cours, on pourrait vouloir offrir les bibliothèques mieux conçues que la bibliothèque standard (ne serait-ce que pour éviter les confusions entre size_t et int, et les problèmes potentiels quand on les melange). Mais ce n'est pas quelque chose d'essentiel.
Or pour implémenter ce nouveau langage, il faut savoir programmer en C, car on ne peut utiliser que C pour implementer un stl::vector.
Mais on ne doit pas implémenter std::vector. Il est là.
-- James Kanze (GABI Software) email: Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
James Kanze
On Aug 29, 3:01 pm, Fabien LE LEZ wrote:
On Fri, 29 Aug 2008 14:26:30 +0200, (Pascal J. Bourguignon):
>Or pour implémenter ce nouveau langage, il faut savoir programmer en >C, car on ne peut utiliser que C pour implementer un stl::vector.
Il ne faut pas implémenter std::vector<> : c'est déjà fait.
Effectivement, les programmeurs responsables de VC++, g++ et consorts, doivent avoir un très bon niveau en C++ et en C.
Du C, je n'en suis pas si sûr. Avant la norme, j'ai dû implémenter mon propre std::vector, et il n'y avait pas tellement de C dedans.
-- James Kanze (GABI Software) email: Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
On Aug 29, 3:01 pm, Fabien LE LEZ <grams...@gramster.com> wrote:
On Fri, 29 Aug 2008 14:26:30 +0200, p...@informatimago.com (Pascal J.
Bourguignon):
>Or pour implémenter ce nouveau langage, il faut savoir programmer en
>C, car on ne peut utiliser que C pour implementer un stl::vector.
Il ne faut pas implémenter std::vector<> : c'est déjà fait.
Effectivement, les programmeurs responsables de VC++, g++ et
consorts, doivent avoir un très bon niveau en C++ et en C.
Du C, je n'en suis pas si sûr. Avant la norme, j'ai dû
implémenter mon propre std::vector, et il n'y avait pas
tellement de C dedans.
--
James Kanze (GABI Software) email:james.kanze@gmail.com
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
int main(void){ try{ f(1); }catch(...){ return(1); } return(0); }
/* -*- mode: compilation; default-directory: "/tmp/" -*- Compilation started at Sat Aug 30 14:38:03
g++ -o a a.c++ -Werror && ./a ; echo status = $? /bin/bash: line 1: 10416 Segmentation fault ./a status = 139
Compilation finished at Sat Aug 30 14:38:03 */
Ce programme compile sans erreur (même avec -Werror), et cependant plante lamentablement.
Compatibilité C oblige. En C++, la risque (pour le débuttant) est moindre, parce qu'il n'aurait pas appris l'opérateur &. (D'ailleurs, même en C, ce n'est pas un sujet qu'on aborde dans les première leçons.)
Je n'ai pas l'impression que la vérification des types à la compilation aide en quoi que ce soit.
Pour des petits essais d'école, c'est d'une utilité limitée. Pour de grandes applications, c'est essentielle.
Le compilateur aurait surement mieux faire de moins vérifier ce que JE tape, et de plus prendre soin de générer LUI-MÊME du code qui fonctionne.
Ne soit pas ridicule. Il y a des limites à ce qu'on peut faire avec l'analyse statique. Ce genre de code *doit* provoquer un core dump ; le problème (s'il y en a), c'est qu'en C ou en C++, il n'est pas garanti d'en provoquer un tout de suite.
[...]
Ici, même une erreur à l'exécution n'est pas catastrophique car le programme peut l'attraper et la gérer.
Ce qui est rarement une bonne idée s'il s'agit d'une erreur de programmation.
-- James Kanze (GABI Software) email: Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
On Aug 30, 2:47 pm, p...@informatimago.com (Pascal J. Bourguignon)
wrote:
Gabriel Dos Reis <g...@cs.tamu.edu> writes:
> | Il y a plein d'expressions en C++ qui sont catastrophique pour le
> | programme.
int main(void){
try{
f(1);
}catch(...){
return(1);
}
return(0);
}
/*
-*- mode: compilation; default-directory: "/tmp/" -*-
Compilation started at Sat Aug 30 14:38:03
g++ -o a a.c++ -Werror && ./a ; echo status = $?
/bin/bash: line 1: 10416 Segmentation fault ./a
status = 139
Compilation finished at Sat Aug 30 14:38:03
*/
Ce programme compile sans erreur (même avec -Werror), et cependant
plante lamentablement.
Compatibilité C oblige. En C++, la risque (pour le débuttant)
est moindre, parce qu'il n'aurait pas appris l'opérateur &.
(D'ailleurs, même en C, ce n'est pas un sujet qu'on aborde dans
les première leçons.)
Je n'ai pas l'impression que la vérification des types à la
compilation aide en quoi que ce soit.
Pour des petits essais d'école, c'est d'une utilité limitée.
Pour de grandes applications, c'est essentielle.
Le compilateur aurait surement mieux faire de moins vérifier
ce que JE tape, et de plus prendre soin de générer LUI-MÊME du
code qui fonctionne.
Ne soit pas ridicule. Il y a des limites à ce qu'on peut faire
avec l'analyse statique. Ce genre de code *doit* provoquer un
core dump ; le problème (s'il y en a), c'est qu'en C ou en C++,
il n'est pas garanti d'en provoquer un tout de suite.
[...]
Ici, même une erreur à l'exécution n'est pas catastrophique
car le programme peut l'attraper et la gérer.
Ce qui est rarement une bonne idée s'il s'agit d'une erreur de
programmation.
--
James Kanze (GABI Software) email:james.kanze@gmail.com
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
int main(void){ try{ f(1); }catch(...){ return(1); } return(0); }
/* -*- mode: compilation; default-directory: "/tmp/" -*- Compilation started at Sat Aug 30 14:38:03
g++ -o a a.c++ -Werror && ./a ; echo status = $? /bin/bash: line 1: 10416 Segmentation fault ./a status = 139
Compilation finished at Sat Aug 30 14:38:03 */
Ce programme compile sans erreur (même avec -Werror), et cependant plante lamentablement.
Compatibilité C oblige. En C++, la risque (pour le débuttant) est moindre, parce qu'il n'aurait pas appris l'opérateur &. (D'ailleurs, même en C, ce n'est pas un sujet qu'on aborde dans les première leçons.)
Je n'ai pas l'impression que la vérification des types à la compilation aide en quoi que ce soit.
Pour des petits essais d'école, c'est d'une utilité limitée. Pour de grandes applications, c'est essentielle.
Le compilateur aurait surement mieux faire de moins vérifier ce que JE tape, et de plus prendre soin de générer LUI-MÊME du code qui fonctionne.
Ne soit pas ridicule. Il y a des limites à ce qu'on peut faire avec l'analyse statique. Ce genre de code *doit* provoquer un core dump ; le problème (s'il y en a), c'est qu'en C ou en C++, il n'est pas garanti d'en provoquer un tout de suite.
[...]
Ici, même une erreur à l'exécution n'est pas catastrophique car le programme peut l'attraper et la gérer.
Ce qui est rarement une bonne idée s'il s'agit d'une erreur de programmation.
-- James Kanze (GABI Software) email: Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
pjb
James Kanze writes:
Bon, mais serrieusement, concernant le C++, le problème c'est que c'est un langage qui n'est pas fini.
C'est, il me semble, un caractèristique essentiel de tout langage de programmation utilisable.
Non, un important caractère est que le langage soit extensible. Pas qu'il faille commencer par écrire 20,000 lignes de code pour pouvoir l'utiliser.
-- __Pascal_Bourguignon__ _ Software patents are endangering () ASCII ribbon against html email (o_ the computer industry all around / 1962:DO20I=1.100 // the world http://lpf.ai.mit.edu/ 2001:my($f)=`fortune`; V_/ http://petition.eurolinux.org/
James Kanze <james.kanze@gmail.com> writes:
Bon, mais serrieusement, concernant le C++, le problème c'est
que c'est un langage qui n'est pas fini.
C'est, il me semble, un caractèristique essentiel de tout
langage de programmation utilisable.
Non, un important caractère est que le langage soit extensible. Pas
qu'il faille commencer par écrire 20,000 lignes de code pour pouvoir
l'utiliser.
--
__Pascal_Bourguignon__ _ Software patents are endangering
() ASCII ribbon against html email (o_ the computer industry all around
/ 1962:DO20I=1.100 // the world http://lpf.ai.mit.edu/
2001:my($f)=`fortune`; V_/ http://petition.eurolinux.org/
Bon, mais serrieusement, concernant le C++, le problème c'est que c'est un langage qui n'est pas fini.
C'est, il me semble, un caractèristique essentiel de tout langage de programmation utilisable.
Non, un important caractère est que le langage soit extensible. Pas qu'il faille commencer par écrire 20,000 lignes de code pour pouvoir l'utiliser.
-- __Pascal_Bourguignon__ _ Software patents are endangering () ASCII ribbon against html email (o_ the computer industry all around / 1962:DO20I=1.100 // the world http://lpf.ai.mit.edu/ 2001:my($f)=`fortune`; V_/ http://petition.eurolinux.org/
pjb
James Kanze writes:
Compatibilité C oblige. En C++, la risque (pour le débuttant) est moindre, parce qu'il n'aurait pas appris l'opérateur &.
Bien sur que si. Pour définir une "reférence", ou pour faire un ET binaire.
(D'ailleurs, même en C, ce n'est pas un sujet qu'on aborde dans les première leçons.)
Je n'ai pas l'impression que la vérification des types à la compilation aide en quoi que ce soit.
Pour des petits essais d'école, c'est d'une utilité limitée. Pour de grandes applications, c'est essentielle.
La preuve que non. Si sur un programme de trois lignes ce n'est pas efficace, comment peut il l'être sur un programme de 200,000 lignes?
Le compilateur aurait surement mieux faire de moins vérifier ce que JE tape, et de plus prendre soin de générer LUI-MÊME du code qui fonctionne.
Ne soit pas ridicule. Il y a des limites à ce qu'on peut faire avec l'analyse statique. Ce genre de code *doit* provoquer un core dump ; le problème (s'il y en a), c'est qu'en C ou en C++, il n'est pas garanti d'en provoquer un tout de suite.
En effet il y a des limites. Et ces limites sont si proches de zero dans le cas de langages comme C ou C++, qu'il serait préférable qu'ils n'agravent pas leur cas avec des problèmes "statiques" supplémentaires.
[...]
Ici, même une erreur à l'exécution n'est pas catastrophique car le programme peut l'attraper et la gérer.
Ce qui est rarement une bonne idée s'il s'agit d'une erreur de programmation.
Ce qui est essentiel dans des systèmes critiques.
-- __Pascal Bourguignon__ http://www.informatimago.com/ You never feed me. Perhaps I'll sleep on your face. That will sure show you.
James Kanze <james.kanze@gmail.com> writes:
Compatibilité C oblige. En C++, la risque (pour le débuttant)
est moindre, parce qu'il n'aurait pas appris l'opérateur &.
Bien sur que si. Pour définir une "reférence", ou pour faire un ET
binaire.
(D'ailleurs, même en C, ce n'est pas un sujet qu'on aborde dans
les première leçons.)
Je n'ai pas l'impression que la vérification des types à la
compilation aide en quoi que ce soit.
Pour des petits essais d'école, c'est d'une utilité limitée.
Pour de grandes applications, c'est essentielle.
La preuve que non. Si sur un programme de trois lignes ce n'est pas
efficace, comment peut il l'être sur un programme de 200,000 lignes?
Le compilateur aurait surement mieux faire de moins vérifier
ce que JE tape, et de plus prendre soin de générer LUI-MÊME du
code qui fonctionne.
Ne soit pas ridicule. Il y a des limites à ce qu'on peut faire
avec l'analyse statique. Ce genre de code *doit* provoquer un
core dump ; le problème (s'il y en a), c'est qu'en C ou en C++,
il n'est pas garanti d'en provoquer un tout de suite.
En effet il y a des limites. Et ces limites sont si proches de zero
dans le cas de langages comme C ou C++, qu'il serait préférable qu'ils
n'agravent pas leur cas avec des problèmes "statiques" supplémentaires.
[...]
Ici, même une erreur à l'exécution n'est pas catastrophique
car le programme peut l'attraper et la gérer.
Ce qui est rarement une bonne idée s'il s'agit d'une erreur de
programmation.
Ce qui est essentiel dans des systèmes critiques.
--
__Pascal Bourguignon__ http://www.informatimago.com/
You never feed me.
Perhaps I'll sleep on your face.
That will sure show you.
Compatibilité C oblige. En C++, la risque (pour le débuttant) est moindre, parce qu'il n'aurait pas appris l'opérateur &.
Bien sur que si. Pour définir une "reférence", ou pour faire un ET binaire.
(D'ailleurs, même en C, ce n'est pas un sujet qu'on aborde dans les première leçons.)
Je n'ai pas l'impression que la vérification des types à la compilation aide en quoi que ce soit.
Pour des petits essais d'école, c'est d'une utilité limitée. Pour de grandes applications, c'est essentielle.
La preuve que non. Si sur un programme de trois lignes ce n'est pas efficace, comment peut il l'être sur un programme de 200,000 lignes?
Le compilateur aurait surement mieux faire de moins vérifier ce que JE tape, et de plus prendre soin de générer LUI-MÊME du code qui fonctionne.
Ne soit pas ridicule. Il y a des limites à ce qu'on peut faire avec l'analyse statique. Ce genre de code *doit* provoquer un core dump ; le problème (s'il y en a), c'est qu'en C ou en C++, il n'est pas garanti d'en provoquer un tout de suite.
En effet il y a des limites. Et ces limites sont si proches de zero dans le cas de langages comme C ou C++, qu'il serait préférable qu'ils n'agravent pas leur cas avec des problèmes "statiques" supplémentaires.
[...]
Ici, même une erreur à l'exécution n'est pas catastrophique car le programme peut l'attraper et la gérer.
Ce qui est rarement une bonne idée s'il s'agit d'une erreur de programmation.
Ce qui est essentiel dans des systèmes critiques.
-- __Pascal Bourguignon__ http://www.informatimago.com/ You never feed me. Perhaps I'll sleep on your face. That will sure show you.
Fabien LE LEZ
On Sun, 31 Aug 2008 14:17:28 +0200, (Pascal J. Bourguignon):
Pas qu'il faille commencer par écrire 20,000 lignes de code pour pouvoir l'utiliser.
As-tu déjà essayé d'écrire un programme en C++ ? J'en doute de plus en plus.
On Sun, 31 Aug 2008 14:17:28 +0200, pjb@informatimago.com (Pascal J.
Bourguignon):
Pas
qu'il faille commencer par écrire 20,000 lignes de code pour pouvoir
l'utiliser.
As-tu déjà essayé d'écrire un programme en C++ ?
J'en doute de plus en plus.