Go Down

Topic: boucle for et struct ... (Read 1 time) previous topic - next topic

dbrion06

Bon, il est subjectif de
a) s'interroger sur la valeur intellectuelle du "cherry-picking" (copier coller des mots, les faire passer pour une citation, et écrire que c'est "subjectif"
b) trouver ironique le fait de trouver des gens qui prétendent, derrière une objectivité de masse, que l'adressage à partir de zero est utile,
ce
 dans un post qui illustre admirablement les défauts de l'indexage à partir de zero (utilisé par les créateurs de C pour éviter les calculs sur les pointeurs, et donner un mode d'adressage plus facile: comme pas mal de bidouillis après coup, c'est d'autant plus désastreux que, faute d'imagination, ce rapiéçage a été repris par d'autres langages),
c) se questionner sur la valeur objective de choix de masse (plus personne n'utilise Fortran -ce qui et faux, soit dit en passant-, donc il est mauvais: le contre exemple de l'Anschluss, en 1938, retire toute valeur à ces choix de masse)

Quote
Pour moi qui développe en PYTHON, JavaScript, PHP, C et C++, tant mieux s'il y a des ressemblances.
Venant de quelqu'un qui critique la subjectivité, c'est savoureux (et ont peut se demander si ces eressemblances sont une bonne idée)
En passant, l'adressage à partir de zero a dû semer une telle confusion qu'a été obligé d'introduire récemment  dans C++ des iterateurs sur les vecteurs (sous une forme lourde: bourne again shell a cette notion et l'implémente de façon agréable depuis le siècle dernier, que dis je, le millénaire)

biggil

je suis obligé, à chaque fois que je lis du C, de me rememorer que le premier élément est à l'indice zero...
C'est un problème qui t'est propre. Il n'est pas universel.

Les entiers naturels commencent à 0. Il est tout beau tout propre ce 0, pourquoi faire du racisme anti-zéro ?
Donc on commence à numéroter avec 0.
Et ainsi, l'index d'un tableau de 256 valeurs tient sur 8 bits (et pas 9). Ca c'est logique.

dbrion06

Donc on commence à numéroter avec 0.
Commentr etrouver le second element d'un vecteur?
Allez voir dans wikipedia comment ils indicent les matrices https://fr.wikipedia.org/wiki/Produit_matriciel#Produit_matriciel_ordinaire
N'hésitez pas à signaler une faute de logique.
Quote
Ca, c'est logique...

fdufnews

#18
May 13, 2019, 05:13 pm Last Edit: May 13, 2019, 05:13 pm by fdufnews
En fait on s'en fout complètement.
Le C est comme ça, on va pas le changer maintenant, faut faire avec.
Je ne vois vraiment pas l'intérêt de relancer la polémique à chaque fois qu'un sujet aborde les tableaux. Ça fini par devenir lassant.

dbrion06

A chaque fois qu'un sujet aborde les tableaux,
(ou presque), il y a un problème parce que l'indiçage à partir de zero (les indices de tableaux étaient une surcouche, les gens ayant peur des pointeurs) est une source de confusion terrible. Le fait que ça existe (tout comme la peste, le cholera) n'ôte rien à sa nocivité (C++ a mis .... une vingtaine d'années à mettre des iterateurs, bien complexes, mais qui permettent de remédier partiellement, sur PC, à cette confusion).

kamill

Bonjour,

Je ne comprends rien à cette discussion. Comme le dit fdufnews, les tableaux commencent à zéro et il faut faire avec.
Je ne comprends pas non plus cet histoire d'iterateurs. Les iterateurs ne font pas à strictement parler parti de C++. Il ont été 'formalisés' dans la stdlib, mais depuis longtemps, il était possible de définir une classe itérateur.

Enfin si le fait que les index de tableaux commence à zéro dérange, il n'y a pas de problème pour définir un classe tableau qui commencerait à 1 (voire n) en surchargeant l'opérateur [].

dbrion06

Les iterateurs ont été introduits dans C++ pour PC (pas pour avr AFAIK) pour tenter de pallier à une confusion entre pointeurs (que C gérait proprement) et tableaux (que fortran, pascal et depuis R gèrent proprement).
Cette confusion a éré reprise sans le moindre recul par divers langages.

Quote
les tableaux commencent à zéro
[\quote]

Faux pour R : les tableaux commencent à 1 (ou il fonctionne par iterateur à la manière de bash, suivant les choix de l'utilisateur) : le troisième élément de tab est ... tab[3]
Logique, non?

Faux pour les indices de vecteurs et de matrices en maths (sans ces maths,  l'informe attic serait un infâme bidouillis): ils commencent à 1.
Faux pour Fortran 66 et 77 : ils commencent à 1
Faux pour Fortran 90 - après consultation d'utilisateurs- et Pascal : ils commencent .... où on veut (ex: tabuler la resistance entre -20 et 40 C, par pas de 1 C, d'un thermistor: désolé, mais ça peut servir)

Quote
Je ne comprends rien à cette discussion.
Ceci vous qualifie pour définir une norme surle début des tableaux?

J-M-L

#22
May 13, 2019, 07:27 pm Last Edit: May 13, 2019, 07:55 pm by J-M-L
(En france) dans les ascenseurs pour aller au rez de chaussée on appuie sur 0, 1 c'est le premier étage..  pour les tableaux c'est pareil 0 c'est c'est « en bas »...

Moi ça me plaît bien comme cela

Quote
Les iterateurs ont été introduits dans C++ pour PC (pas pour avr AFAIK)
Mais On peut faire ça dans GCC si on ne veut pas d'indices
Code: [Select]
for (auto &v : myArray) { /* faire qque chose avec v */}marche très bien
Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

kamill

Ceci vous qualifie pour définir une norme surle début des tableaux?
Non, pas plus que toi.

dbrion06

Mais si je veux connaître une resistance à -4 degrés, pouvoir indexer un tableau à partir de l gamme de températures utilisables est bien pratique... même si on habite au rez de chaussée.

Et si je veux reprendre une formule mathématique ,  c'est bien commode, les indices par défaut de R, Fortran et Pascal...

Et, si l'analogie avec les ascenceurs est valide; mon immeuble a trois sous sols,  indexés correctement jusqu'à -3 ... validant les choix de Fortran >= 90 et Pascal.

dbrion06

"Non, pas plus que toi."
Saluons la richesse de l'argumentation (et, si vous compreniez de quoi on parle -oh, votre aveu touchant!- elle serait plus riche, me semble-t-il.

J-M-L

#26
May 13, 2019, 07:48 pm Last Edit: May 13, 2019, 07:49 pm by J-M-L
;)

Oui c'est une chose de dire que ce serait bien de pouvoir définir l'index Min et Max d'un tableau (ça a été laissé au programmeur) et c'en est une autre de dire que c'est « illogique » de commencer à 0.
Faut bien commencer quelque part et 0 et tout aussi pertinent que 1. (En france le Rez de chaussée c'est le 0 mais aux US c'est le 1)

Moi le 0 me va bien, je sais que l'index c'est le nombre de « cases » (groupe d'octets dont la taille dépend du type) dont je dois me déplacer depuis le pointeur pour trouver mon élément. C'est donc l'offset depuis le début du tableau
Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

dbrion06

Comment pouvez vous connaître la hauteur (algébrique) avec un ascenseur -enfaisant l'hypothèse que les hauteurs de chaque étage sont égales?). C'est trivial avec les acenseurs français et les indices R, Fortran et Pascal (par défaut)
Le problème, ce n'est pas que le mode d'indiçage à 0 ***vous** convienne: c'est qu'il a été inventé pour pklaquer à la truelle du sugar syntaxing (à partir d'une arithmétique sur les pointeurs satisfaisante), alors que d'autres langages avaient mieux (laissaient le choix ou se conformaient par defaut aux notations mathématiques)
Ce problème a été accru par la copie d'un bidouillis pour d'autres langages....

Le résultat de cette horreur, c'est que les débutants sont embêtés avec une idée contre intuitive (et yakafokon redéfinir []!)

J-M-L

#28
May 13, 2019, 11:31 pm Last Edit: May 13, 2019, 11:44 pm by J-M-L
Les débutants sont perturbés parce qu'ils pensent mathématiques (et je suis un matheux) alors qu'ils faut penser informatique de base. Le C est près du matériel c'est ce qui fait sa force (et sa faiblesse)

Ça reste donc pour moi une question de point de vue

Je suis d'accord avec vous pour dire que c'était très influencé par le besoin d'efficacité et simplifier la génération en assembleur  - mais il n'y a rien de mal à vouloir être efficace...

Si on utilise le C ou le C++ il faut se mettre dans le bon état d'esprit. Python R etc sont des aberrations en termes d'usage des resources informatiques mais comme ces resources (memoire et CPU) sont devenues de commodités, on cherche plutôt à optimiser le temps du programmeur qui est la resource rare et chère plutôt que l'usage des ressources techniques (puisque c'est là qu'est le coût principal).

Mais quand on programme sur un UNO on est en situation de resources contraintes - un peu par choix car on pourrait prendre un esp32 - il faut savoir apprécier la « pureté » du langage pour ce qu'elle est...

Juste affaire de convention et de spécifications

Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

hbachetti


@dbrion. Tout ceci n'est qu'une suite d'affirmations personnelles.

Les gens qui ont imaginé les langages modernes tels que Python, Java, PHP, JavaScript, Ruby et bien d'autres ont je pense fortement réfléchi à la question et le moins capable d'entre eux a certainement plus de jugeote que nous tous réunis.

Personnellement je jette l'



Linux is like a wigwam: no Windows, no Gates, and an Apache inside ...

Go Up