OVH Cloud OVH Cloud

Newbies en C++ !

437 réponses
Avatar
Fuxy
Bonsoir à tous,


Voilà, il y a encore 1 mois, j'étais sous Windoz XP et je "bidouillais"
en VisualBasic 6.0

Depuis je suis passé sous Linux Suse 9.1 et je souhaiterais continuer à
"bidouiller", je ne cherche pas à développer des applications énormes,
mais juste des petits trucs pour m'amuser.

J'ai vu que sous Linux, le C++ avait l'air très répendu, j'ai donc
installé KDevelop qui permet de programmer en C++.

Et voilà, j'en suis à ce stade, j'ai acheté un bouquin sur le C++, j'en
suis à la page 10 ! et je me dis que ça a l'air un peu compliqué ...

Pouvez vous me conseiller ? est ce que le C++ est un bon choix pour moi
qui n'y connait rien ?

Merci pour votre aide.

A Bientot

--
Mail envoyé depuis Thunderbird
Sous Linux Suse 9.1 Pro

10 réponses

Avatar
Pierre Maurette
Fabien LE LEZ a écrit:

On Tue, 10 Aug 2004 15:49:42 +0200, Pierre Maurette
:

Les
[macro]assembleurs proposent


Bah oui, mais justement, mon propos était que le C était plus proche
de l'assembleur pur jus (i.e. tel que je le décris) que du C++.
Il existe quand même une différence fondamentale entre le C et

l'assembleur. Le C garantit un résultat, sans plus. Il a le choix des
moyens. L'assembleur (macro ou pas) permet de définir complètement les
moyens. En gros, l'assembleur n'optimise pas.

mov dword ptr MaVar1, 0
mov dword ptr MaVar2, 0
mov dword ptr MaVar1, 0
mov dword ptr MaVar2, 0

MaVar1 = 0;
MaVar2 = 0;
MaVar1 = 0;
MaVar2 = 0;

Le code C(/C++) génèrera peut-être:
xor eax, eax
mov dword ptr MaVar1, eax
mov dword ptr MaVar2, eax

Ou rien du tout, si MaVar1 et MaVar2 ne sont utilisées qu'une seule
fois (par exemple).

On pourra tenter:
volatile int MaVar1, Mavar2;

mais sans garantie...

Donc, C et assembleur, c'est pas pareil.
En revanche, avec un compilateur C implémentant asm, _asm ou __asm, je
sais faire pratiquement tout ce que l'assembleur sait faire.
--
Pierre


Avatar
Alain Naigeon
"drkm" a écrit dans le message news:

"Alain Naigeon" writes:

"Fabien LE LEZ" a écrit dans le message news:


On Tue, 10 Aug 2004 12:51:45 +0200, "PurL" :

Mais encore. Quelles sont tes alternatives à std::vector<> et
std::string?


Tes propres objets


Pour un débutant, ça risque d'être un peu délicat de programmer un
conteneur, non ?


Non, si le *prof* n'est pas débutant - dans Stroustrup ça marche bien.
Vous pouvez toujours comparer un mauvais cours méthode A avec
un bon cours méthode B, ça ne dit rien sur A et B.


On ne parle pas ici d'exercices,


On parle donc d'enseignement sans exercices ?

--

Français *==> "Musique renaissance" <==* English
midi - facsimiles - ligatures - mensuration
http://anaigeon.free.fr | http://www.medieval.org/emfaq/anaigeon/
Alain Naigeon - - Strasbourg, France





Avatar
drkm
Alexandre Bacquart writes:

Je ne trouve pas l'apprentissage de C++ "amusant"


Moi si.

--drkm, en recherche d'un stage : http://www.fgeorges.org/ipl/stage.html

Avatar
Fabien LE LEZ
On Tue, 10 Aug 2004 15:56:23 +0200, "Alain Naigeon"
:

Baser un cours sur une extension propriétaire, c'est très bien, mais
on ne peut pas appeler ça un cours de C++.


Je ne dis pas qu'on doit, mais toi
tu dis qu'on ne doit pas. Nuance.


Yep, je persiste et signe : si on décide de faire un cours de Visual
C++, il faut l'appeler "Cours de Visual C++" et pas "cours de C++" ou
"cours de gymnastique". Ou alors, il y a tromperie sur la marchandise,
et il faut contacter les services de répression des fraudes.


--
;-)


Avatar
Richard Delorme
Jean-Marc Bourguet wrote:
Richard Delorme writes:


Jean-Marc Bourguet wrote:



On appelle la programmation structurée la programmation sans
goto¹. A ma connaissance, l'assembleur abuse des jmp, jnz et
compagnies qui ne sont que des goto.



Bizarre, si tu lis un peu l'article que tu references, tu tombes tout
de suite sur ma definition qui est celle de Dijstra d'apres l'article.
L'important est la structure de controle, pas la maniere dont on
l'implemente.


Ah ? Quand Dijstra écrit : « I became convinced that the go to statement
should be abolished from all "higher level" programming languages » ne
trouve-t-il pas important que le langage apporte son support à la
programmation structurée ?

C'est plutot du a de la difference de niveau d'abstraction et a
l'absence de typage.


Il y a un minimum de typage : registre entier, flottant, etc. et


Les contraintes sur les registres et autres limitations quand aux
operandes d'une instruction ne sont pas du typage ou alors il va
falloir changer la definition de typage dans le cadre d'un langage de
programmation.


Quel est l'intérêt d'un type sinon de rendre illégal certaines
constructions ?

les macro-assembleurs actuels autorisent souvent la manipulation de
structures de données de manière assez transparente, donnant un
semblant d'abstraction.


J'ai beaucoup de mal a continuer appeler "programmation en assembleur"
tout ce qu'on peut optenir a partir d'un macro-assembleur (ceux-ci
etant generalement complet, on peut *theoriquement* faire un
compilateur C avec...)


Ah ?



Avatar
drkm
"Alain Naigeon" writes:

"Fabien LE LEZ" a écrit dans le message news:


On Tue, 10 Aug 2004 12:51:45 +0200, "PurL" :

Mais encore. Quelles sont tes alternatives à std::vector<> et
std::string?


Tes propres objets


Pour un débutant, ça risque d'être un peu délicat de programmer un
conteneur, non ?


Non, si le *prof* n'est pas débutant - dans Stroustrup ça marche bien.
Vous pouvez toujours comparer un mauvais cours méthode A avec
un bon cours méthode B, ça ne dit rien sur A et B.


On ne parle pas ici d'exercices, mais d'alternatives à std::vector<>
et std::string. Que le débutant devrait développer au lieu d'utiliser
ceux de la SL.

--drkm, en recherche d'un stage : http://www.fgeorges.org/ipl/stage.html




Avatar
Alexandre Bacquart
Richard Delorme wrote:

On appelle la programmation structurée la programmation sans goto¹. A ma
connaissance, l'assembleur abuse des jmp, jnz et compagnies qui ne sont
que des goto.


switch/case, if, for, do, while... ne sont que des goto déguisés. Tu
oublies de dire qu'en assembleur, on peut (le plus souvent) aussi faire
des "gosub" (appels de fonctions). Depuis la nuit des temps, la
programmation structurée n'est pas une question de langage, mais de
maîtrise du langage de la part des programmeurs.


--
Tek

Avatar
Pierre Maurette
"Alain Naigeon" a écrit:
[...]
*je* ne suis pas partisan de les ignorer, simplement je trouve
provocant - et en tout cas questionnable -
M. Naigeon, j'apprécie énormément le tour que prend la conversation,

et je dois dire que vos opinions me séduisent. Je me permets toutefois
une remarque tout à fait marginale: "questionnable" (ainsi que
"questionable") n'existe pas en français. Le terme anglais
"questionable" se traduit tout simplement par "discutable", ou
éventuellement "douteux".
MAis bon, j'ai longtemps utilisé "consista[e]nt" .....
--
Pierre

Avatar
drkm
"Alain Naigeon" writes:

"Gabriel Dos Reis" a écrit dans le message
news:

Quelles sont tes alternatives à std::vector<> et std::string?


L'énorme et intéressante quantités de choses qui servent
à les écrire :-o

*je* ne suis pas partisan de les ignorer, simplement je trouve
provocant - et en tout cas questionnable - la position consistant
à dire qu'il est démodé d'enseigner comment ça marche !


Cela est certes intéressant. Mais il s'agit ici d'enseigner le C++
à des débutants, sans utiliser la SL. Ce que plusieurs personnes ici
veulent dire, je pense, c'est que le débutant commencera par apprendre
et utiliser std::vector<> et std::string. Puis il découvrira petit à
petit les subtilités du langage et les recoins de la SL. Une
illustration consistant à disséquer une implémentation de std::string
ou std::vector<> est intéressante, mais ne saurait être abordée dès
les chapitres d'introduction afin de disposer de classes de chaînes ou
de vecteurs, pour l'obscure raison que l'on ne soit pas utiliser la
SL.

--drkm, en recherche d'un stage : http://www.fgeorges.org/ipl/stage.html


Avatar
Richard Delorme
Fabien LE LEZ wrote:
On Tue, 10 Aug 2004 14:48:07 +0200, Richard Delorme
:


On appelle la programmation structurée la programmation sans goto¹. A ma
connaissance, l'assembleur abuse des jmp, jnz et compagnies qui ne sont
que des goto.



Oui et non.

C :

do
{ machin;
} while (truc != bidule);


exemple de programmation structurée : simple et lisible.


ASM :

:debut_boucle
machin
cmp truc, bidule
jnz :debut_boucle


exemple de programmation spaghetti : illisible.

Comparer un if/else ou un switch/case avec sa version assembleur pour
mieux comprendre :

en C :
if (A == B) machin;
else truc;

en asm :
cmp A, B
jnz label_1
machin
jmp label_2
label_1:
truc
label_2:

Ça ne commence pas à faire spaghetti et illisible ?

L'écriture est différente (en Basic aussi, d'ailleurs) mais le
principe de la boucle est indentique.


Est-ce que tout n'est pas dans le sucre syntaxique ?

--
Richard