Chercher un livre sur le C avec certains critères.
Le
Francois
Bonjour à tous,
Je débute dans le C et personnellement j'apprends surtout avec les
livres. J'ai commencé "Livre du C premier langage" de Delannoy (je
précise que j'avais quand même des petites notions de programmations,
même si, à mon sens, j'étais [ et suis encore ? ] vraiment ce qu'on
appelle un débutant).
Je suis en train de lire le K&R (deuxième édition) qui est bien sûr
beaucoup plus difficile. C'est du concentré, mais quand on y regarde de
prêt, c'est quand assez précis et bien fait. Ceci étant, il y a des
choses qui ne me satisfont pas complètement.
Je trouve que ce livre à une approche trop éloignée de la machine
(comment une donnée est encodée ? comment se passe l'histoire du signed
ou unsigned du point de vue de la machine etc.). Je m'explique.
Bien sûr, le langage C est un langage abstrait de "haut niveau" qui se
doit (en principe) de ne pas faire référence à la machine. Donc c'est
normal qu'un livre sur le C ne parle pas (trop) des problèmes qui
dépendent de l'architecture. Ceci étant, j'aimerais savoir si un tel
livre existe malgré tout. Un livre qui expose le langage C et qui
n'hésite pas de temps en temps à parler de ce qui se passe dans la
machine (bien sûr, justement, ce qui se passe dépend de la machine et
n'est pas universel, mais le livre pourrait présenter les choses sur
seulement une architecture "classique" par exemple). Bon, si je pouvais
éviter les circuits électroniques et compagnie quand même, ça serait
bien. Qu'on me dise que "le complément à 2 fait que l'addition devient
plus simple pour l'ordinateur puisqu'il suffit de faire une addition
classique" me suffit amplement. Une preuve de cela en passant des
explications sur des circuits électroniques peut-être me serait un peu
indigeste.
Bref, j'espère avoir été clair sur cette sorte de compromis que je
recherche (existe-t-il ?). Vous pouvez aller voir cette discussion (où
mon pseudo est sisco)
http://www.siteduzero.com/forum-83-...iable.html
qui pourra peut-être préciser mes aspirations.
Un livre en français, ça serait le top. Mais en anglais, ça le fera aussi.
Je vous remercie d'avance pour votre aide.
François
Je débute dans le C et personnellement j'apprends surtout avec les
livres. J'ai commencé "Livre du C premier langage" de Delannoy (je
précise que j'avais quand même des petites notions de programmations,
même si, à mon sens, j'étais [ et suis encore ? ] vraiment ce qu'on
appelle un débutant).
Je suis en train de lire le K&R (deuxième édition) qui est bien sûr
beaucoup plus difficile. C'est du concentré, mais quand on y regarde de
prêt, c'est quand assez précis et bien fait. Ceci étant, il y a des
choses qui ne me satisfont pas complètement.
Je trouve que ce livre à une approche trop éloignée de la machine
(comment une donnée est encodée ? comment se passe l'histoire du signed
ou unsigned du point de vue de la machine etc.). Je m'explique.
Bien sûr, le langage C est un langage abstrait de "haut niveau" qui se
doit (en principe) de ne pas faire référence à la machine. Donc c'est
normal qu'un livre sur le C ne parle pas (trop) des problèmes qui
dépendent de l'architecture. Ceci étant, j'aimerais savoir si un tel
livre existe malgré tout. Un livre qui expose le langage C et qui
n'hésite pas de temps en temps à parler de ce qui se passe dans la
machine (bien sûr, justement, ce qui se passe dépend de la machine et
n'est pas universel, mais le livre pourrait présenter les choses sur
seulement une architecture "classique" par exemple). Bon, si je pouvais
éviter les circuits électroniques et compagnie quand même, ça serait
bien. Qu'on me dise que "le complément à 2 fait que l'addition devient
plus simple pour l'ordinateur puisqu'il suffit de faire une addition
classique" me suffit amplement. Une preuve de cela en passant des
explications sur des circuits électroniques peut-être me serait un peu
indigeste.
Bref, j'espère avoir été clair sur cette sorte de compromis que je
recherche (existe-t-il ?). Vous pouvez aller voir cette discussion (où
mon pseudo est sisco)
http://www.siteduzero.com/forum-83-...iable.html
qui pourra peut-être préciser mes aspirations.
Un livre en français, ça serait le top. Mais en anglais, ça le fera aussi.
Je vous remercie d'avance pour votre aide.
François

Poser une question


Bienvenu sur fclc qui est une bonne adresse pour perfectionner son C
voire pour débuter (ce fut mon cas ici).
Aucun rapport avec le C, le complément à deux concerne le processeur
ou ce qui l'émule, il te faut acheter un ouvrage sur un assembleur
quelconque ou un ouvrage d'architecture des ordinateurs.
Je ne connais aucun ouvrage sur le C qui parle _substantiellement_ de
ces questions et à juste titre puisque le C présente un certain degré
de portabilité [et puis il n'est pas interdit d'écrire du code C
spécifique à tel compilateur ou telle architecture]. Par ailleurs, je
ne vois non plus aucun ouvrage "généraliste" sur le C susceptible
d'apprendre à programmer pour des architectures variées/spécifiques.
Les ouvrages sérieux évoquent ces questions mais sans la traiter
spécifiquement (Koenig dans son livre sur les pièges du C recommande
un bouquin de Mark Horton, "/How to write portable software in C?/"
mais que je ne connais pas).
À mon avis, ça ne s'apprend pas dans les livres, ça s'apprend petit à
petit, en codant soi-même et en lisant du code qui doit s'adapter à
des architectures différentes (code de bibliothèque) ou spécifiques
(code de compilateur) et en consultant les forums adéquats (fclc ici
et l'analogue anglophone clc)
c'est simple, le C va être transformé en
assembleur de la machine concernée.
si tu veux comprendre ce qui se passe, tu
dois d'abord apprendre l'assembleur (les bases au moins)
de ta machine.
Ensuite tu regardes le fichier assembleur produit
par le compilateur C.
tout deviendra très clair et concret.
Merci beaucoup. :-)
Mais ai-je en face de moi le même Candide que celui du SDZ ?
Effectivement, j'ai tout à fait conscience que ce sont des notions (le
langage et l'aspect machine) distinctes par essence même de ce qu'est le
C (un langage théoriquement portable). Mais je trouve ça dommage que
l'on dissocie malgré tout les deux, je trouve que cela donnerais plus de
sens aux choses. Par exemple :
"Dans le C, on a ça ...
Concrètement, sur un ordinateur il se passe ceci ...
avec tel ou tel mécanismes qui dépendent (plus ou moins) de
l'architecture ... par exemple sur un Intel..."
Je trouve que ça donne du sens. Un peu comme un cours de maths qui
présentent une branche particulière. Peut-être que certains connaissent
le Rouvière sur le calcul diff (livre remarquable) ? Il présente le
calcul diff (c'est un recueil d'exercices). Ce livre est truffé de
remarques sur telle ou telle notion qui ne sont en rien des
mathématiques au sens propres (on sort du cadre des maths, pas de
rigueur etc.) mais pourtant elles éclairent merveilleusement les vrais
démonstrations mathématiques (qui elles sont dans le cadre). Ce qui est
dit en dehors du cadre éclaire souvent ce que l'on veut dire concernant
ce qu'il y a dans le cadre.
Je trouve que dans même ordre d'idée (bon mon parallèle est peut-être un
peu tiré par les cheveux) j'aimerais vraiment bien un livre sur le C (on
présente le C), mais parfois on sort du cadre pour expliquer un peu
concrètement se qui peut se passer.
On m'a indiqué ce livre :
http://www.amazon.fr/gp/product/toc...sr=1-1/qid05023796/ref=dp_toc?ie=UTF8&nR042011&qid05023796&sr=1-1
pour avoir l'intro en pdf :
http://www.cas.mcmaster.ca/~franek/books/052181720XWS.pdf
Qu'en penses tu ?
Tu as hélas probablement raison. On ne trouve pas toujours tout dans les
livres. Ou du moins, on ne trouve pas toujours le livre qu'on voudrait.
Merci pour ta réponses.
N'hésiter à poster vos suggestions si vous en avez.
Oui
Je comprends tout à fait ce que tu recherches, les pédago diraient que
tu as besoin qu'on contextualise. Hélas, je te répète que ce degré d e
pédagogie n'existe pas dans l'apprentissage du C ni d'autres choses
concernant l'informatique. Si tu veux un tel document faudra que tu
l'écrives.
Je t'ai répondu sur clc. Ce livre est très mauvais, j'en attendais
beaucoup lorsque je l'ai acheté puis à la réception j'ai rapidement
compris que CUP a un bon service marketing.
Ce serait bien que par exemple Pierre Maurette qui connait à la fois
le C et l'assembleur et qui est sensible aux questions pédagogiques te
donne son avis. Mais selon moi il faudrait que tu précises ton projet
d'apprentissage, c'est très confus pour l'instant.
Le monde est petit :-)
Exactement !!!
Ouh là ! Dans une autre vie je crois.
A mince ! A un moment donné, je me suis dit que c'était peut-être ce que
je cherchais. Mais pourrais tu s'il te plait préciser "Cambridge
University Press a un bon service marketing". Qu'est-ce qui t'as déçu
exactement par rapport au contenu de livre ? (ah mais j'irais voir sur clc).
Je dis ça car il faut faire attention, les goût peuvent vraiment varier
d'une personne à l'autre. Je sais que tu n'aimes pas trop le K&R alors
que personnellement, au fur et à mesure que je le lis, mon avis sur lui
change et je ne le trouve pas si mal. Je commence à apprécier sa
concision, même je regrette qu'il ne parle pas de temps en temps de se
qui se passe du point de vue de la machine.
A zut, pourtant j'ai l'impression que tu a bien compris les choses.
J'aimerais que un livre sur le C qui :
- parle du complément à 2, en expliquant l'intérêt d'une telle
contorsion (ça en fait je le sais déjà, c'est pour expliquer l'état
d'esprit que j'aimerais retrouver)
- Qu'on y trouve l'explication de l'encodage d'un flottant sur une
architecture particulière.
- Qu'il question sans y passer des lustres de ce qu'on appelle "little
endian" et "big endian".
- Lors qu'une déclaration et initialisation d'une variable que se
passe-t-il "physiquement" sur la machine ? Quel travail relève de la
compilation et quel travail relève de l'exécution du programme ?
- Les espaces de mémoires des variables d'un programme sont-ils déjà
réservés juste après la compilation ou seulement pendant l'exécution ?
- Que devient le nom d'une variable ? Est-il stocké en mémoire ? Où
(RAM) ? Sinon, s'il disparaît, comment l'ordinateur fait pour avoir
accès en lecture/écriture au bon emplacement.
Des trucs comme ça.
Bon, je crois vraiment que tu as raison. Cela se fera petit à petit sans
doute. En fait, je me rends compte que ce qui m'intéresse c'est que je
compresse un peu ce qui se passe dans les tripes de l'ordinateur sans
pour autant tomber dans un excès de technicité.
Et ces deux livres, qu'en pensez vous ?
a) "Architecture de l'ordinateur" par Andrew Tanenbaum
b) "Architecture et technologie des ordinateurs" par Paolo Zanella et
Yves Ligier
Merci pour ta réponse.
François