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

Avatar
candide
On 9 mar, 21:14, Jean-Marc Bourguet wrote:

La norme non plus ne donne pas de définition. Mais elle n'utilise pas l e
nom "variable" très souvent. Si je ne me suis pas trompé, 2 fois seul ement
dans le texte normatif (donc hors exemples et notes) de C99 et toutes deux
dans la partie librairie.


Oui, j'avais déjà fait la vérification, il me semble d'ailleurs
incroyable que le mot soit utilisé dans les notes par exemple.

La définition classique de variable, c'est objet
nommé, donc:

Est-ce que pour eux une variable est un objet,


Par définition, mais tous les objets ne sont pas des variable.


Tu veux dire par exemple que dans

int toto;

&toto n'est pas une variable ? OK mais franchement, quel verbe est
naturellement associé au mot "variable" ? Réponse : "déclarer". Alors
c'est sûr, on ne déclare pas &toto. Ne peut-on pas dire qu'une
variable est un objet faisant l'objet (si je puis dire) d'une
déclaration ?

Bientôt je sens qu'on va discuter du sexe des bits et normalement
Pierre Maurette devrait apparaître :)


Avatar
candide
On 9 mar, 18:23, Jean-Marc Bourguet wrote:

les utilisations ne sont pas interchangeables. Ce qui se passe, c'est
que la valeur d'une variable de type tableau est l'adresse de son premie r
élément


NON.



J'ai bien pris mes précautions et j'ai la caution de K&R que j'ai
traduit mot à mot :


---------------------------------
By definition, the value of a variable or expression of type array is
the address of element zero of the array
---------------------------------


Avatar
Stephane Legras-Decussy
"Michel" <nospam> a écrit dans le message de news:
47d3e16e$0$21149$
C'est une plaisanterie ?
Plus personne ne sait justement programmer sans lib externe de nos jours.


c'est quoi cette phrase ? tu es sur que tu sais
de quoi tu parles ?

tu sais ce que ça coûte en temps
de réécrire un simple printf() fiable ?

Avatar
candide
J'aimerais bien avoir l'avis de spécialistes, si possible qui possède la
version anglaise.



Tu peux consulter la glose (un peu reverencieuse et sentencieuse avec
ses "Deep sentences") du K&R2:

http://www.eskimo.com/~scs/cclass/krnotes/top.html

Avatar
candide
"Michel" <nospam> a écrit dans le message de news:
47d3e16e$0$21149$
C'est une plaisanterie ?
Plus personne ne sait justement programmer sans lib externe de nos jours.


c'est quoi cette phrase ? tu es sur que tu sais
de quoi tu parles ?

tu sais ce que ça coûte en temps
de réécrire un simple printf() fiable ?




Ce qu'il veut peut-être dire à mon avis, c'est qu'il faut enseigner le C
comme c'est fait dans le K&R2, à la dure : en faisant réécrire des
fonctions de la bibliothèque standard (genre strlen(), strcmp() voire
d'autres plus chiantes comme malloc(), fopen(), getc(), cf. dernier
chapitre que je me suis courageusement épargné). Parfait pour le futur
implémenteur de bibliothèque bas-niveau ou de compilateur, pas terrible
pour le programmeur lambda. En fait j'exagère, d'ailleurs le tuto du sdz
fait réécrire aux zéros des fonctions de manipulation de chaines comme
ci-dessus et c'est assez instructif en effet.

J'avoue que lorsque j'ai découvert ça dans le K&R, j'ai été très étonné,
je me disais : faudrait peut-être comprendre qu'avant d'ÉCRIRE des
fonctions, il faudrait déjà savoir les UTILISER.


Avatar
Stephane Legras-Decussy
"domi" a écrit dans le message de news:
fr0o8d$t2j$
Si tu veux apprendre tout seul, ce livre est une calamité


Oser sortir cela du K&R, R. donc auteur du C, je crois que tout est dit.


pourtant c'est vrai.

ça me fait penser à la découverte des fonctions
en classe de 3eme :

si tu dis que l'ensemble de départ E et l'ensemble d'arrivée F, d'une
relation associant à chaque élément x de l'ensemble de départ
un et un seul élément de l'ensemble d'arrivée, que l'on appelle image
de x par f et que l'on note f(x)...

alors tu es une calamité pédagogique, un psychopathe...
l'équivalent du K&R....
ya juste 2 binoclars associaux au 1er rang qui prennent leur pied...

en faisant des dessins, en sortant la calculette graphique et en parlant un
français normal, y'aurait peut être un peu plus de vocations
scientifiques...


Avatar
Stephane Legras-Decussy
"candide" a écrit dans le message de news:


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


voila c'est exactement ça.

la précaution oratoire : l'horreur pédagogique.

j'ai connu un prof taré ne supportant pas
de dire le moindre truc 0.1% inexact et
censé introduire à la programmation avec
Scheme....

20 élèves le 1er jour, 2 éléves le 2eme jour...

Avatar
Stephane Legras-Decussy
"Jean-Marc Bourguet" a écrit dans le message de news:

Il n'est pas précisé qu'elle est décimale... et c'est bien! La plupart des
problèmes que rencontrent les débutants -- et des moins débutants aussi --
avec les flottants sont dus au fait que les flottants ne sont pas
décimaux.
Le plus navrant, c'est qu'ils en concluent qu'il s'agit de problème de
précision (ce qui est faux, c'est un probléme de quantification).


aie aie un matheux... ;-)
je ne comprends pas un mot de ce que tu viens
d'écrire...

heureusement c'est pas génant,
ça me rappelle mon Bac C avec 5 en math et
20 en physique... :-)

Avatar
candide

Pardon, mais alors quelle définition donner à "objet" ?


Faut que tu regardes dans la norme laquelle est bien plus claire qu'on
ne croit. Eux au moins ils définissent ce qu'est un objet, une
instruction, etc.

Object:
region of data storage in the execution environment, the contents of
which can represent values


Je te conseille de lire cette partie de la norme (le §3 ou la clause 3
comme on dit je crois), c'est facile, instructif, très court et
indispensable pour savoir de quoi on parle.


et un tableau n'est donc pas une lvalue, c'est ça ?



Si, cf. la norme encore. Mais c'est l'embrouille parce que ce n'est pas
une lvalue modifiable.



Autre chose, seriez vous d'accord avec cette façon de voir les choses ?

« un tableau

int tab[100] ;

est un pointeur sur son élément 0, mais un pointeur qui ne pointera
jamais ailleurs que sur son élément 0.



Non, je pense que ce n'est pas acceptable : tu dis qu'un tableau EST un
pointeur et là tu violes un tabou.



Je te répète, tu devrais ouvrir un nouveau topic, on est complètement
hors-sujet par rapport à ta question de départ.

Avatar
candide
..

20 élèves le 1er jour, 2 éléves le 2eme jour...


C'était à la fac je suis sûr. C'est vrai qu'il y a de ces délires.