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
Jean-Marc Bourguet
candide writes:

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.


La tâche est ardue et je ne relève pas l'ensemble des problèmes que je
vois, sans parler de ceux que je ne vois même pas.

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 !


Et alors quel est le problème?


Le problème du borgne myope, astigmate, hypermétrope et daltonnien en même
temps enseignant à l'aveugle est qu'il présente une vision pas trop fiable
du monde.

regardé le tuto de éo sur le site du zéro avant de le critiquer ?


Je viens d'aller voir... je ne suis pas impressionné. Il échoue à mes
trois tests:
- int ça permet de stocker des nombres de -2^31-1 à 2^31
- double ça permet de stocker des nombres décimaux
- confusion tableau/pointeur

Il est super bien fait, je ne connais rien de mieux, il contient très peu
d'inexactitudes,


Je préfère ne pas voir quelque chose qui en a beaucoup pour toi parce qu'en
cherchant simplement pour mes trois petits tests, j'en ai vu d'autres .

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 n'est pas un bon livre pour apprendre à programmer en utilisant le C,
c'est un bon livre pour apprendre le C.

A+

--
Jean-Marc
FAQ de fclc: http://www.isty-info.uvsq.fr/~rumeau/fclc
Site de usenet-fr: http://www.usenet-fr.news.eu.org


Avatar
candide
On 9 mar, 14:52, Michel <nospam> wrote:
candide wrote:
Bref, le meilleur bouquin reste le K&R


Si tu veux apprendre tout seul, ce livre est une calamité


En passant :

http://www.faqs.org/faqs/C-faq/learn-c-cpp-today/

Books:
------

[1] "The C Programming Language" (2nd ed.)
Brian W. Kernighan & Dennis Ritchie


Pourquoi n'ont-ils pas écrit, comme pour Kernighan,
Dennis M. Ritchie ?


(K&R) text. This book is commonly referred to as the New Testament as


On en sort pas ...

it includes the modifications incorporated by the ANSI standard,


ANSI alias le messie donc.

while retaining the nature of the 1st edition. This book assumes
that the reader has some basic programming knowledge. So if


Absolument pas, ce n'est pas du tout le problème. Le problème, c'est
(entre autres) que les auteurs (plutôt Kernighan qui aurait écrit le
livre sauf les appendices) ne savent pas ce qu'est un rasoir d'Occam :
/Entities should not be multiplied beyond necessity/ .

you're just starting to program and C is the first language, this
might not be the ideal book. This is one of THE BEST books on C and
a must have, especially if you're starting your own little
programming library.


C'est simple, dans K&R, une bibliothèque est une virtualité c'est
quelque chose qui existe mais qui n'est pas tangible. D'ailleurs
expliquent-t-ils seulement ce qu'est une bibliothèque (en général, pas
la bibliothèque standard), je vérifierai.


Bon, sinon je ne vois pas pourquoi tu as cité cette faq, ses auteurs
(clc) sont des apôtres, à quoi pourrait-on donc s'attendre ?



Avatar
YBM
Bon, sinon je ne vois pas pourquoi tu as cité cette faq, ses auteurs
(clc) sont des apôtres, à quoi pourrait-on donc s'attendre ?


Alors c'est cette autre FAQ qu'il faut lire :
http://www.seebs.net/faqs/c-iaq.html

Avatar
candide
On 9 mar, 15:05, Jean-Marc Bourguet wrote:


Je viens d'aller voir... je ne suis pas impressionné.


Moi non plus. Pour être très franc, je n'ai pas appris le

Il échoue à mes
trois tests:
- int ça permet de stocker des nombres de -2^31-1 à 2^31


En effet mais pour moi ce n'est pas rédhibitoire, c'est un manque de
précaution oratoire

- double ça permet de stocker des nombres décimaux
- confusion tableau/pointeur

Il est super bien fait, je ne connais rien de mieux, il contient très peu
d'inexactitudes,


Je préfère ne pas voir quelque chose qui en a beaucoup pour toi parce qu'en
cherchant simplement pour mes trois petits tests, j'en ai vu d'autres .

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 n'est pas un bon livre pour apprendre à programmer en utilisant le C,
c'est un bon livre pour apprendre le C.

A+

--
Jean-Marc
FAQ de fclc: http://www.isty-info.uvsq.fr/~rumeau/fclc
Site de usenet-fr:http://www.usenet-fr.news.eu.org




Avatar
candide
On 9 mar, 15:05, Jean-Marc Bourguet wrote:



- int ça permet de stocker des nombres de -2^31-1 à 2^31
- double ça permet de stocker des nombres décimaux
- confusion tableau/pointeur

Il est super bien fait, je ne connais rien de mieux, il contient très peu
d'inexactitudes,


Je préfère ne pas voir quelque chose qui en a beaucoup pour toi parce qu'en
cherchant simplement pour mes trois petits tests, j'en ai vu d'autres .

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 n'est pas un bon livre pour apprendre à programmer en utilisant le C,
c'est un bon livre pour apprendre le C.

A+

--
Jean-Marc
FAQ de fclc: http://www.isty-info.uvsq.fr/~rumeau/fclc
Site de usenet-fr:http://www.usenet-fr.news.eu.org




Avatar
Jean-Marc Bourguet
candide writes:

On 9 mar, 15:05, Jean-Marc Bourguet wrote:

candide writes:

T'as regardé le tuto de éo sur le site
du zéro avant de le critiquer ? Il est super bien fait,


Je viens d'aller voir... je ne suis pas impressionné.


Moi non plus.


Ca te gènerait beaucoup d'être consistant? J'ai remis le message auquel
je répondais et qui était de toi.

Pour être très franc, je n'ai pas appris le
?


Il échoue à mes
trois tests:
- int ça permet de stocker des nombres de -2^31-1 à 2^31


En effet mais pour moi ce n'est pas rédhibitoire, c'est un manque de
précaution oratoire


A mettre en rapport avec ce que tu disais:

il contient très peu d'inexactitudes, il est soucieux de portabilité




A+

--
Jean-Marc
FAQ de fclc: http://www.isty-info.uvsq.fr/~rumeau/fclc
Site de usenet-fr: http://www.usenet-fr.news.eu.org



Avatar
Francois
On constate même que c'est nuisible d'avoir un modèle trop précis
d'implémentation.


Disons qu'il faudrait que l'auteur soit honnête avec son lecteur, que
sur certains passages d'explications l'auteur cesse de parler du langage
C et que les choses peuvent se passer différemment suivant la plate-forme.
Au même titre que dans un livre de maths (théorèmes + démonstrations),
il y a des remarques (par exemple : "dans la pratique on appliquera ce
théorème dans telle situation" ou "finalement dans cette longue et
indigeste démonstration, c'est très simple, on ne fait qu'appliquer ceci
..., le fil rouge est ...) qui aident, parfois de manière cruciale, à
comprendre les choses. Pourtant, et c'est parfaitement clair pour le
lecteur, ces remarques éclairantes cessent d'être des mathématiques (ce
ne sont pas des énoncés mathématiques).
J'espère être clair ?

Ca aide peut-être à comprendre,


Moi je trouve. Mais je crois que c'est une question d'état d'esprit.

Par exemple, suivant les plate-formes un "signed char" (qui prend par
définition du C la place d'un byte) peut contenir 8 bits ou 16 bits etc.
Pour 8 bits, ça veut dire que ton "signed char" doit être compris entre
-128 et 127 (si on veut éviter les problèmes). C'est bien beau, mais si
on m'explique le codage par le complément à 2, ces chiffres là ne
tombent plus du ciel et moi je ne sens plus serein ;-).

Par ailleurs, je peux bien comprendre que sur une machine ou 1 byte = 16
bits et bien ce sera différent. Je peux comprendre aussi, si l'auteur le
précise, que le complément à 2 n'est pas forcément le codage utilisé
partout et que là aussi les choses seraient alors différentes. Mais
malgré tout, les choses auront plus de sens pour moi.

Bon, ça (complément à 2 etc.) encore, on le trouve dans les livres (pas
le K&R il me semble ?). Mais par exemple, j'ai constaté qu'avec :

signed char var = 255 ;

le compilateur ne gueule pas (pas le mien en tout cas). Ah ! J'aimerais
qu'on me dise que le compilateur va le coder bravement, puis que
l'ordinateur pendant l'exécution (ou le compilateur pendant la
compilation j'en sais rien) va interpréter "var" en tant que "signed
char" et que donc je vais avoir des surprises lorsque je vais utiliser
cette variable.

J'aimerais bien comprendre en revanche pourquoi avec :

signed char var = -129 ;

là par contre, le compilateur gueule. Pourtant, il pourrait très bien
faire son code sans rien me dire comme précédemment. Mais non, chez moi,
là, il gueule. Doucement remarque, car quand je recompile juste après,
le message ne s'affiche plus. On peut dire que c'est une sorte de warning.

Autre exemple.
J'ai toujours pensé que le type d'une variable était lui aussi codé à
l'intérieur du contenu de cette variable pour que l'ordinateur puisse la
traiter correctement lorsqu'il en a besoin. Jusqu'à ce qu'on m'explique
que non, que c'est le compilateur (au moment de la compilation) qui sait
comment traiter la variable car lui, il connaît le type (on lui a dit),
mais que dans le contenu de la variable, aucune trace du type.

Ce genre de truc, je trouve aide vraiment à comprendre les choses.
Enfin, je trouve.

Je n'en connais pas et je doute que ça existe. Tu m'as l'air de chercher
un livre qui introduit à la fois à la programmation, au langage C (ce qui
est déjà deux choses différentes), à la compilation et à l'architecture des
ordinateurs. Il y a des cursus complets qui font cela, mais alors plus en
profondeur que ce que tu veux...


Je crois que vous avez raison. Merci pour la réponse.




François

Avatar
candide
Je viens d'avoir quelques problèmes d'envoi non désiré avec usenet sur
Google, je réinstalle un lecteur de news, j'espère que ça va aller
mieux. Désolé pour le bruit.


Je viens d'aller voir... je ne suis pas impressionné. Il échoue à mes
trois tests:


Moi aussi ,j'ai une batterie de test mais alors on n'a pas DU TOUT les
mêmes critères.

- int ça permet de stocker des nombres de -2^31-1 à 2^31


Bon, j'ai dit que ce n'était pas rédhibitoire, c'est un manque de
précaution oratoire. Il suffit juste de préciser que ce n'est valable
que sur certaines architectures et que sur des PC sous Windows ou Linux
avec gcc c'est assez courant. Ce n'est pas le genre de détails sur
lequel il faut insister au départ, il ne faut pas l'ignorer, c'est tout.
D'ailleurs, je ne vois pas en quoi le tuto a besoin de savoir que les
entiers sont sur 32 bits.

- double ça permet de stocker des nombres décimaux


Et alors ? quel est véritablement le problème, le terme "décimaux" n'est
pas approprié, rien de plus. Dans la pratique c'est souvent comme ça et
tout le monde comprend de quoi il s'agit.

K&R définit un float ainsi :

----------------------
by contrast with float, which means floating point, i.e., numbers that
may have a fractional part.
----------------------

voilà qui est parlant, pas même un petit exemple. Et puis, je sais pas,
le nombre 4589 a une partie fractionnaire, elle est nulle. Où est sa
définition précise de partie fractionnaire ? Donc la définition de K&R
est très vague et elle laissera sur sa faim celui qui ne connait pas.

Concernant double,

----------------------
(...) even bigger numbers by using a double (double precision float).
----------------------

bref, des définitions tautologiques (float -> flottant, double -> double
precision) et sans illustration, lamentable.


- confusion tableau/pointeur


Oui en effet, là le texte est très léger et imprudent, il devrait y
avoir des exemples de mises en garde.


A vrai dire, et je me suis montré peut-être trop enthousiaste, je n'ai
pas lu le tuto de matéo21 dans son intégralité, j'ai juste lu la partie
concernant la programmation graphique avec la bibliothèque SDL et je
suis sûr que je ne m'y serais pas lancé sans lui. A côté de cela, je
sais bien que son tuto sur la SDL contient des erreurs mais ça m'a
permis de me lancer et c'est ce que je retiens. Pour moi, il est
inconcevable de faire un enseignement du C sans donner un exemple
d'utilisation d'une bibliothèque qui ne soit pas la bibliothèque
standard, ça peut être une bibliothèque graphique (Allegro, SDL, cairo,
etc), une bibliothèque pour GUI genre GTK, une bibliothèque console
genre Ncurses ou encore une bibliothèque de gestion de la multiprecision
genre MIRACL ou GMP, l'essentiel étant de savoir qu'en C, on a besoin de
bibliothèque pour écrire du code utile et que l'apprentissage d'une
bibliothèque (au sens large : compilation, installation, lecture de
documentation, etc) est indispensable.


Il est super bien fait, je ne connais rien de mieux, il contient très peu
d'inexactitudes,



J'ai été un peu imprudent peut-être.


Je préfère ne pas voir quelque chose qui en a beaucoup pour toi parce qu'en
cherchant simplement pour mes trois petits tests, j'en ai vu d'autres .

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




Mais pour moi, ça ne compromet pas l'approche que propose ce tuto. Je
continuerais à le recommander quitte à moduler un peu mon jugement.


Avatar
domi
candide wrote:

Et en plus tu ne sais pas quoter, quel niveau sur usenet maintenant !


Sans blague ?
http://www.usenet-fr.net/fur/usenet/repondre-sur-usenet.html

Avatar
Michel
candide wrote:


J'approuve totalement. François, il faut donner l'URL d'accès au cours
de C de éo21 :


Et il a combien d'années (ou décennies) d'expérience cet enfant pour
pouvoir proposer un tutorial ?!

1 2 3 4 5