Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Chercher un livre sur le C avec certains critères.

200 réponses
Avatar
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-245206-p1-afficher-le-codage-binaire-du-contenu-d-une-variable.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

10 réponses

1 2 3 4 5
Avatar
candide
On 8 mar, 15:06, Francois wrote:


Bienvenu sur fclc qui est une bonne adresse pour perfectionner son C
voire pour débuter (ce fut mon cas ici).

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.


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)

Avatar
Stephane Legras-Decussy
"Francois" a écrit dans le message de news:
47d29d15$0$17315$
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.


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.

Avatar
Francois

Bienvenu sur fclc qui est une bonne adresse pour perfectionner son C
voire pour débuter (ce fut mon cas ici).



Merci beaucoup. :-)

Mais ai-je en face de moi le même Candide que celui du SDZ ?

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.


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.

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é


On m'a indiqué ce livre :

http://www.amazon.fr/gp/product/toc/0521520436/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 ?

À 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)


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.

Avatar
candide
On 9 mar, 03:52, Francois wrote:

Mais ai-je en face de moi le même Candide que celui du SDZ ?



Oui

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).


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.






On m'a indiqué ce livre :

http://www.amazon.fr/gp/product/toc/0521520436/sr=1-1/qid05023796/. ..



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.

Avatar
Francois
Mais ai-je en face de moi le même Candide que celui du SDZ ?



Oui


Le monde est petit :-)

Je comprends tout à fait ce que tu recherches, les pédago diraient que
tu as besoin qu'on contextualise.


Exactement !!!

Hélas, je te répète que ce degré de
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.


Ouh là ! Dans une autre vie je crois.


On m'a indiqué ce livre :

http://www.amazon.fr/gp/product/toc/0521520436/sr=1-1/qid05023796/...



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.


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.

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.


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


Avatar
espie
In article ,
candide wrote:
On 9 mar, 03:52, Francois wrote:

Mais ai-je en face de moi le même Candide que celui du SDZ ?


Oui

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).


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é de
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.


Euh, dans les bouquins sans doute, dans les cours, c'est une autre
affaire... bien oblige d'expliquer a un moment ou un autre comment
les choses marchent si on veut pouvoir parler de buffer-overflow
et assimiles.

Pour l'aspect global, c'est un peu different. Si on veut des bouquins
qui soient ecrits par des gens qui parlent de ce qu'ils connaissent,
on tombe imperativement sur des programmeurs... et si on veut des
bouquins C corrects, de preference des gens qui font du code
portables... a une epoque mon test favori de validite d'un bouquin
de C, c'etait la representation des entiers. Tout bouquin qui te dit
que les entiers font 32 bits (sans preciser quoi que ce soit) est nocif.

Pour le reste, si tu as lu et corrige suffisamment de code, tu sais que
les debutants (et les moins debutants) ont une imagination debordante
pour utiliser des bouts qui sont machine-dependent de facon gratuite...

Alors, ca peut entrainer une reaction dans l'autre sens, a presenter
les choses qui marchent de facon universelle, et qui permettent de
toutes facons d'ecrire 99% du code...


Avatar
Jeff
Francois wrote:

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-245206-p1-afficher-le-codage-binaire-du-contenu-d-une-variable.html


Les forums web comme celui_là, developpez, hardware, etc... c'est le
degré absolu de la programmation :-) (j'y ai vu des codes entiers à coup
de "system", c'est dire...)
L'âge moyen doit être inférieur à 20 piges, avec des noobs se permettant
de publier des "tutos" alors qu'ils n'ont aucune expérience
professionnelle et d'un niveau à faire mourir de rire même un consultant
débutant !
Bref, le meilleur bouquin reste le K&R
Pour tout ce qui est architecture, voir les bouquins spécialisés sur
l'OS (Win32 et autres)

Avatar
candide
On 9 mar, 12:47, Jeff wrote:
Francois wrote:

Les forums web comme celui_là, developpez, hardware, etc... c'est le
degré absolu de la programmation :-)
(j'y ai vu des codes entiers à coup
de "system", c'est dire...)
L'âge moyen doit être inférieur à 20 piges,


Et bien Pierre Maurette, Jean-Marc Bourguet, E. Delahaye et peut-être
d'autres qui viennent tous d'ici le font quand même remonter. Le
niveau avec. On attend plus que toi.

avec des noobs se permettant
de publier des "tutos" alors qu'ils n'ont aucune expérience
professionnelle et d'un niveau à faire mourir de rire même un consulta nt
débutant !


Et alors quel est le problème? Il s'agit de mettre le pied à l'étrier
du bourricot. Ce genre de forum est désinhibiteur. Le niveau global en
langage C est sans doute aujourd'hui plus élevé qu'il n'était il y a
20 ans quand tu vois que t'as beaucoup de gamins de 16 ans qui savent
coder un GUI en GTK ou qui font des jeux avec la SDL (bibliothèque
graphique 2D) voire OpenGL. T'as regardé le tuto de éo sur le site
du zéro avant de le critiquer ? Il est super bien fait, je ne connais
rien de mieux, il contient très peu d'inexactitudes, il est soucieux
de portabilité et il ludique, que demande le peuple ? J'aurais moins
galéré à apprendre le C si je l'avais lu quand j'ai commencé.

Bref, le meilleur bouquin reste le K&R


Si tu veux apprendre tout seul, ce livre est une calamité (je sais
bien que certains ici ont appris le C ainsi), il est difficile de
faire pire d'un point de vue pédagogique. Ce livre a une valeur
sentimentale pour beaucoup ce qui fait que les jugements émis à son
sujet ne sont pas toujours sereins. Mais objectivement, ce livre est
d'une totale incohérence dans la présentation des notions, je n'aurais
aucune peine à le démontrer sur la base d'un certain nombre de
critères que je juge nécessaires et qui ne sont pas vérifiées. Mais
bon désolé je n'ai pas le temps pour l'instant mais je poserai un jour
le problème ici. De toute façon, le public et l'environnement ne sont
pas du tout le même qu'il y a trente ans (K&R1).

Pour tout ce qui est architecture, voir les bouquins spécialisés sur
l'OS (Win32 et autres)


C'est plus compliqué que ça.

Avatar
Francois
Les forums web comme celui_là, developpez, hardware, etc... c'est le
degré absolu de la programmation :-) (j'y ai vu des codes entiers à coup
de "system", c'est dire...)
L'âge moyen doit être inférieur à 20 piges, avec des noobs se permettant
de publier des "tutos" alors qu'ils n'ont aucune expérience
professionnelle et d'un niveau à faire mourir de rire même un consultant
débutant !
Bref, le meilleur bouquin reste le K&R



Ah, je comprends ce que vous voulez dire, il y a un peu de vrai, mais
c'est un jugement un peu à l'emporte-pièce. Si vous regardez bien la
discussion que j'ai mise en lien, mes interlocuteurs donnent des
réponses de très bonnes qualités et la discussion est plutôt de bonne tenue.

Pour ce qui est des tutoriels, ceux qui portent la mention "officiel"
sont je trouve remarquable, car justement ils partent de zéros. Pour un
débutant absolu, c'est très appréciable d'avoir par exemple une
explication étape par étape de toutes les démarches d'installations pour
arriver à afficher le "Hello world". On trouve rarement cela dans les
livres ; souvent, pour la partie installation, on doit se contenter d'un
laconique "renseignez vous après d'un spécialiste de votre système".
C'est bête, mais ça peu décourager le débutant absolu (et nous avons
tous été un débutant absolu un débutant absolu)

Je me suis permis de poser la question sur comp.lang.c, voici le lien
pour ceux que ça intéresse :

http://groups.google.fr/group/comp.lang.c/browse_thread/thread/2f01341b361993bc/972851b9a4c199a5#972851b9a4c199a5

Comme je l'ai dit sur le clc, je cherche quelque chose qui regroupe
vraiment deux "domaines" réellement distincts, qui sont toujours
présentés séparément tant ils sont vastes tous les deux. Donc, je crois
bien que cela se fera comme d'habitude. Je prendrai un peu de ça dans
tel livre et un peu de ça ailleurs.
Le petit inconvénient, c'est que je n'apprends bien qu'avec des livres
et ce genre de livres ça coûte cher parfois pour une qualité qui déçoit
(vous savez, le livre que vous payez 35 euros sur amazon pour découvrir
que c'est un immonde copier-coller de plein trucs sur internet, torché à
la va-vite).

C'est pour ça que je voulais avoir vos avis. Je garde un oeil attentif
sur ce fil pour lire vos éventuelles propositions.

Merci.

François

Avatar
Michel
candide wrote:

Le niveau global en
langage C est sans doute aujourd'hui plus élevé qu'il n'était il y a
20 ans quand tu vois que t'as beaucoup de gamins de 16 ans qui savent
coder un GUI en GTK ou qui font des jeux avec la SDL (bibliothèque
graphique 2D) voire OpenGL. T'as regardé le tuto de éo sur le site
du zéro avant de le critiquer ?


C'est une plaisanterie ?
Plus personne ne sait justement programmer sans lib externe de nos jours.
Les tutos, c'est du délire complet tellement il y a d'inepties la- dendans.
Même après 10 ans d'expérience en C, je n'osais pas encore faire de
formations dignes de ce nom à mes clients.
Alors des gosses de 16 ans...

1 2 3 4 5