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

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


Je crois que le problème vient du fait que nous ne nous basons par sur les
mêmes critères. Candide et moi invoquions des critères de pédagogie, alors
que vous évoquez des critères de précisions (bien que les deux notions ne
soient pas indépendantes loin de là c'est vrai).


Vous préférez les choses fausses présentées de façon convainquante aux
choses exactes?

Serait-ce trop demander d'avoir des précisions sur vos tests (je demande
cela par intérêt et sans aucune arrière pensée) ?

Pour le premier je pense que Candide a déjà répondu.

Mais pour les tests 2 et 3, j'aimerais bien savoir ce que vous attendez
pour que les tests soient réussis. J'avoue ne pas voir exactement.


Ne pas laissez croire des choses fausses, que ce soit en les disants ou par
omission. Le tutoriel en question dit des choses fausses sur ces deux
points.

--
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
Pour moi, l'apprentissage se fait en deux phases :
- la première on apprend à programmer et à écrire du code propre
- la seconde on regarde son architecture, son comportement, on
s'intéresse aux autres archi etc. Mais avant de faire cela, il faut
apprendre à écrire du code assez propre.


De toute façon, ce que je cherche n'existant pas, c'est ainsi que je
vais faire. Mais je ne démords du fait qu'un savant mélange des deux
domaines, tout en délimitant *précisément* à chaque fois dans lequel des
deux le discours s'applique, eu été pour moi une bénédiction. ;-)

Lorsque l'on enseigne le C, même lorsque l'on enseigne les pointeurs, on
arrive à faire passer le message aux élèves même sans leur cacher de
chose, sans faire entrer un brin d'architecture.


Bien sûr, je suis sûr que l'apprentissage du C peut se faire
parfaitement sans faire d'architecture. Je dis juste que faire un brin
d'architecture pour montrer comment ça se passe dans un cas particulier,
m'apporterai une plus value. Mais c'est personnel.

Mieux vaut deux livres bien construits qu'un unique livre qui mélange
les genres et va embrouiller le lecteur à la première difficulté.


Ah ... de toute façon ce livre ne semble pas exister. S'il en existe un
à votre connaissance, n'hésitez surtout pas (même si je sais que ce sera
à contre coeur :-)) )

Cependant, ce n'est qu'un simple avis.


Et un avis très éclairé. Merci beaucoup.

Avatar
Francois
Pour moi, l'apprentissage se fait en deux phases :
- la première on apprend à programmer et à écrire du code propre
- la seconde on regarde son architecture, son comportement, on
s'intéresse aux autres archi etc. Mais avant de faire cela, il faut
apprendre à écrire du code assez propre.


De toute façon, ce que je cherche n'existant pas, c'est ainsi que je
vais faire. Mais je ne démords du fait qu'un savant mélange des deux
domaines, tout en délimitant *précisément* à chaque fois dans lequel des
deux le discours s'applique, eu été pour moi une bénédiction. ;-)

Lorsque l'on enseigne le C, même lorsque l'on enseigne les pointeurs, on
arrive à faire passer le message aux élèves même sans leur cacher de
chose, sans faire entrer un brin d'architecture.


Bien sûr, je suis sûr que l'apprentissage du C peut se faire
parfaitement sans faire d'architecture. Je dis juste que faire un brin
d'architecture pour montrer comment ça se passe dans un cas particulier,
m'apporterai une plus value. Mais c'est personnel.

Mieux vaut deux livres bien construits qu'un unique livre qui mélange
les genres et va embrouiller le lecteur à la première difficulté.


Ah ... de toute façon ce livre ne semble pas exister. S'il en existe un
à votre connaissance, n'hésitez surtout pas (même si je sais que ce sera
à contre coeur :-)) )

Cependant, ce n'est qu'un simple avis.


Et un avis très éclairé. Merci beaucoup. ;-)

Avatar
Francois
Vous préférez les choses fausses présentées de façon convainquante aux
choses exactes?


Bien sûr que non :-) , vous vous en doutez bien ! C'est une histoire de
dosage, de rapport on va dire. On va dire que le tutoriel dont nous
parlons admet un rapport :-)

clarté, pédagogie ...
--------------------------
imprécisions

assez élevé.

Ne pas laissez croire des choses fausses, que ce soit en les disants ou par
omission. Le tutoriel en question dit des choses fausses sur ces deux
points.


D'accord, mais j'aurais bien voulu avoir vos rectifications, notamment
pour le test 2, qui m'intrigue.

Avatar
candide
On 9 mar, 17:12, Francois wrote:

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


Je crois que le problème vient du fait que nous ne nous basons par sur
les mêmes critères. Candide et moi invoquions des critères de péda gogie,
alors que vous évoquez des critères de précisions (bien que les deux
notions ne soient pas indépendantes loin de là c'est vrai).


Bien plus, pour moi il s'agit d'apprendre vite, avec profondeur,
généralité, précision et justesse.


Serait-ce trop demander d'avoir des précisions sur vos tests (je demande
cela par intérêt et sans aucune arrière pensée) ?

Mais pour les tests 2 et 3, j'aimerais bien savoir ce que vous attendez
pour que les tests soient réussis.


Pour le test 3, c'est vrai que matéo est très imprudent puisqu'il dit
textuellement


---------------------------------
En fait, si vous écrivez juste "tableau", vous avez un pointeur. C'est
un pointeur sur la première case du tableau.
---------------------------------

ce qui est très approximatif et source d'énormes confusions, au point
qu'effectivement je comprends parfois les erreurs que font certains
zéros sur le forum. Formellement, il n'aurait pas du écrire

---------------------------------
C'est un pointeur sur la première case du tableau.
---------------------------------

Un tableau et un pointeur ont des TYPES différents. Il y a des
similitudes entre les deux mais aussi pas mal de différences en sorte
que 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 premier
élément (dixit K&R) et dans de nombreuses circonstances (à l'exception
de deux), un tableau est seulement CONVERTI en pointeur vers son
premier éléments.

Il faut reconnaître que la leçon de matéo sur les tableaux est plutô t
insuffisante et mériterait d'être rectifiée et approfondie.

La manipulation de pointeurs et tableaux est une chose que j'ai
trouvée très peu claire lors de mon apprentissage et j'ai mis du temps
à finir par bien faire la distinction.


Avatar
Jean-Marc Bourguet
Francois writes:

Vous préférez les choses fausses présentées de façon convainquante aux
choses exactes?


Bien sûr que non :-) , vous vous en doutez bien ! C'est une histoire de
dosage, de rapport on va dire. On va dire que le tutoriel dont nous parlons
admet un rapport :-)

clarté, pédagogie ...
--------------------------
imprécisions

assez élevé.


J'ai du mal à juger la clarté et la pédagogie, mais les imprécisions sont
quand même importantes. Et c'est plus que des "imprécisions", ce sont
parfois des erreurs.

Ne pas laissez croire des choses fausses, que ce soit en les disants ou par
omission. Le tutoriel en question dit des choses fausses sur ces deux
points.


D'accord, mais j'aurais bien voulu avoir vos rectifications, notamment pour
le test 2, qui m'intrigue.


Les formats habituels de flottants ne permettent pas de représenter
exactement un nombre comme 0.1 même s'ils ont une résolution nettement
supérieure.

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, 17:12, Francois wrote:
Mais pour les tests 2 et 3, j'aimerais bien savoir ce que vous attendez
pour que les tests soient réussis.


Pour le test 3, c'est vrai que matéo est très imprudent puisqu'il dit
textuellement


---------------------------------
En fait, si vous écrivez juste "tableau", vous avez un pointeur. C'est
un pointeur sur la première case du tableau.
---------------------------------

ce qui est très approximatif et source d'énormes confusions, au point
qu'effectivement je comprends parfois les erreurs que font certains
zéros sur le forum. Formellement, il n'aurait pas du écrire

---------------------------------
C'est un pointeur sur la première case du tableau.
---------------------------------

Un tableau et un pointeur ont des TYPES différents. Il y a des
similitudes entre les deux mais aussi pas mal de différences en sorte que
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 premier
élément


NON. La valeur d'une variable de type tableau est le tableau. Ce tableau,
comme tous les autres qu'ils soient des variables ou pas, est converti dans
la plupart des contextes en un pointeur vers son premier élément.

(dixit K&R) et dans de nombreuses circonstances (à l'exception de
deux), un tableau est seulement CONVERTI en pointeur vers son premier
éléments.

Il faut reconnaître que la leçon de matéo sur les tableaux est plutôt
insuffisante et mériterait d'être rectifiée et approfondie.

La manipulation de pointeurs et tableaux est une chose que j'ai trouvée
très peu claire lors de mon apprentissage et j'ai mis du temps à finir
par bien faire la distinction.


Les rapports entre pointeurs et tableaux sont sources de confusion. C'est
pourquoi c'est important de les expliquer correctement.

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
Un tableau et un pointeur ont des TYPES différents. Il y a des
similitudes entre les deux mais aussi pas mal de différences en sorte que
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 premier
élément


NON. La valeur d'une variable de type tableau est le tableau. Ce tableau,
comme tous les autres qu'ils soient des variables ou pas, est converti dans
la plupart des contextes en un pointeur vers son premier élément.


En fait, si j'en crois le K&R :

1) "Un nom de tableau n'est pas une variable ; donc des instructions
telles que a = pa et a++ [où a est un tableau] sont incorrectes.]"


2) "le *nom* d'un tableau est synonyme de l'adresse de son élément initial".

Jusque là, ça va pour moi. Mais il y a aussi :

3) "Par définition, la valeur d'une variable ou d'une expression de type
tableau est l'adresse de l'élément 0 du tableau"

Pour moi 3) semble dire qu'on puisse parle de variable tableau ce que
contredit clairement 1). Est-il possible d'avoir une explication ?
(peut-être que c'est la traduction, ça m'est déjà arrivé).

Merci.


François


Avatar
Francois
...
Pour moi 3) semble dire qu'on puisse parle de variable tableau ce que
contredit clairement 1). Est-il possible d'avoir une explication ?
(peut-être que c'est la traduction, ça m'est déjà arrivé).


Arg, il faut que je me relise :


Pour moi 3) semble dire qu'on puisse parler de "variable tableau" ce que
contredit clairement 1). Est-il possible d'avoir une explication ?
(peut-être que c'est la traduction, ça m'est déjà arrivé).

Avatar
espie
In article ,
candide wrote:
Mais après tout c'est une petite niche dans le marché de
l'enseignement du C et on suppose que les gens qui en ont besoin ont
suffisamment d'autonomie pour y arriver par eux-mêmes.


Justement, c'est une grosse erreur. Pour avoir vu suffisamment de
code pourri de facon gratuite, il y a effectivement un trou cote
bouquins... mais bon, c'est pas un bouquin bien qui compensera la
tonne de bouquins incorrects ou de tutoriaux.