J'ai trouvé ce post assez confus, avec un gros mélange entre le C et le C++. Mais il montre quand même que la gestion de la mémoire est souvent compliquée, et qu'il semble impossible de trouver une solution universelle…
Il n'y a en effet pas de solution universelle et bien d'accord que l'article est un peu confus. Tout comme le titre ici, car pour moi ce ne sont pas vraiment des API.
“It is seldom that liberty of any kind is lost all at once.” ― David Hume
C'est pas parce qu'un mot est polysémique ou a un sens dépendant du contexte qu'il est devenu un mot valise et/ou qu'il est vidé de son sens. Surtout qu'ici il parle toujours d'un contrat d'un ensemble de méthode utilisé par un programme qu'il s'agisse d'une API C, dans le langage du dis programme, via dbus, corba, soap, rest, rpc, graphql,…
Tu trouve aussi que sauvegarder est un mot valise parce que ça peut être en mémoire, sur disque, dans une base de données, dans le cloud ou autre ?
Un mot-valise est un mot composé de deux mots comme par exemple ordiphone ! API est probablement un mot à tout faire,sur-utilisé, voire, galvaudé, mais pas un mot-valise.
« Tak ne veut pas quʼon pense à lui, il veut quʼon pense », Terry Pratchett, Déraillé.
Une API c’est pas uniquement les signatures de fonction mais aussi un contrat sur ce que les fonctions vont faire, une spécification minimale. C’est bien beau d’avoir les signatures mais sans aucune forme de sémantique ça sert à rien.
[à propos de calloc]
It also does an overflow check for you, because why not.
Faux, c'est spécifique aux implémentations. Rien dans la norme ne le garantit et c'est une mauvaise idée d'utiliser calloc en pensant éviter un integer-overflow.
[à propos de realloc]
For starters, it can’t be used with C++ objects that might want to invoke a move constructor. It also doesn’t work with C objects that have self-referential pointers such as a buffer containing a circular linked list.
Et en même temps, en C++ tu fais pas de realloc. À part dans de rares cas où tu as besoin de faire du placement-new, tu n'es pas censé jouer avec la mémoire de manière aussi basse.
Si tu as peur d'avoir des pointeurs invalides à cause d'un déplacement de mémoire, tu fais pas de realloc ou tu fais des pointeurs de pointeurs. Blamer realloc pour ça n'est pas pertinent. La meilleure utilisation de realloc est probablement de manipuler une donnée unique ou un tableau de types primitifs. Celui qui utilise realloc pour reallouer des structures imbriquées se tire une balle dans le pied.
Pour moi cet article n'a pas d'intérêt et répond à des problèmes inexistants.
git is great because linus did it, mercurial is better because he didn't
# Mmmm...
Posté par Tonton Th (Mastodon) . Évalué à 4.
ndmm: je connais très peu le c++
J'ai trouvé ce post assez confus, avec un gros mélange entre le C et le C++. Mais il montre quand même que la gestion de la mémoire est souvent compliquée, et qu'il semble impossible de trouver une solution universelle…
[^] # Re: Mmmm...
Posté par Gil Cot ✔ (site web personnel, Mastodon) . Évalué à 2.
Il n'y a en effet pas de solution universelle et bien d'accord que l'article est un peu confus. Tout comme le titre ici, car pour moi ce ne sont pas vraiment des API.
“It is seldom that liberty of any kind is lost all at once.” ― David Hume
[^] # Re: Mmmm...
Posté par claudex . Évalué à 4.
Pourquoi ce ne sont pas vraiment des API ?
« Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche
[^] # Re: Mmmm...
Posté par jseb . Évalué à 4.
Je dirais que l'api c'est malloc.h et que malloc/free sont des fonctions.
Mais je n'aime pas le terme d'API qui peut-être compris de trop de façons différentes, mis à toutes les sauces, et ne plus rien signifier de précis.
Discussions en français sur la création de jeux videos : IRC libera / #gamedev-fr
[^] # Re: Mmmm...
Posté par Gil Cot ✔ (site web personnel, Mastodon) . Évalué à 1.
Voilà, des fonctions basiques… API a trop de connotations auxquelles on colle difficilement.
“It is seldom that liberty of any kind is lost all at once.” ― David Hume
[^] # Re: Mmmm...
Posté par David Delassus (site web personnel) . Évalué à 7.
Pourquoi faire simple quand on peut faire compliquer ?
Je dirais même que vu que malloc et free font éventuellement des appels systèmes, on devrait appeler :
Kernel Programming Interface ==> KPI
De quoi rendre confus les managers :)
https://link-society.com - https://kubirds.com - https://github.com/link-society/flowg
[^] # Re: Mmmm...
Posté par Graveen . Évalué à 4.
Je suis d'accord. On voit partout API, c'est devenu un mot valise.
[^] # Re: Mmmm...
Posté par barmic 🦦 . Évalué à 4.
C'est pas parce qu'un mot est polysémique ou a un sens dépendant du contexte qu'il est devenu un mot valise et/ou qu'il est vidé de son sens. Surtout qu'ici il parle toujours d'un contrat d'un ensemble de méthode utilisé par un programme qu'il s'agisse d'une API C, dans le langage du dis programme, via dbus, corba, soap, rest, rpc, graphql,…
Tu trouve aussi que sauvegarder est un mot valise parce que ça peut être en mémoire, sur disque, dans une base de données, dans le cloud ou autre ?
https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll
[^] # Re: Mmmm...
Posté par Ysabeau 🧶 (site web personnel, Mastodon) . Évalué à 6.
Un mot-valise est un mot composé de deux mots comme par exemple ordiphone ! API est probablement un mot à tout faire,sur-utilisé, voire, galvaudé, mais pas un mot-valise.
« Tak ne veut pas quʼon pense à lui, il veut quʼon pense », Terry Pratchett, Déraillé.
[^] # Re: Mmmm...
Posté par barmic 🦦 . Évalué à 3.
Du coup c'est le mot valise qui est galvaudé ? :D
https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll
[^] # Re: Mmmm...
Posté par freem . Évalué à 2.
API est un sigle il me semble, donc j'imagine qu'on ne peut même pas dire qu'il s'agit d'un mot, tout court?
[^] # Re: Mmmm...
Posté par Thomas Douillard . Évalué à 5.
Une API c’est pas uniquement les signatures de fonction mais aussi un contrat sur ce que les fonctions vont faire, une spécification minimale. C’est bien beau d’avoir les signatures mais sans aucune forme de sémantique ça sert à rien.
# Si tu n'aimes pas ...
Posté par AncalagonTotof . Évalué à 1.
… code en Java et laisse faire ceux qui savent ;-)
Quoi ? J'aurais du attendre vendredi ?…
Ooops, désolé …
[^] # Re: Si tu n'aimes pas ...
Posté par Gil Cot ✔ (site web personnel, Mastodon) . Évalué à 4.
ceux et celles qui savent faire vont te répondre, vendredi, qu'il faut rust'er
oupss je suis à la porte
“It is seldom that liberty of any kind is lost all at once.” ― David Hume
# erreur de drapeau
Posté par freem . Évalué à 2.
Le lien est en anglais, le drapeau est celui de la France.
[^] # Re: erreur de drapeau
Posté par Ysabeau 🧶 (site web personnel, Mastodon) . Évalué à 3.
Modifié merci.
« Tak ne veut pas quʼon pense à lui, il veut quʼon pense », Terry Pratchett, Déraillé.
# Peu pertinent
Posté par David Demelier (site web personnel) . Évalué à 10. Dernière modification le 01 septembre 2022 à 17:07.
Faux, c'est spécifique aux implémentations. Rien dans la norme ne le garantit et c'est une mauvaise idée d'utiliser
calloc
en pensant éviter un integer-overflow.Et en même temps, en C++ tu fais pas de
realloc
. À part dans de rares cas où tu as besoin de faire du placement-new, tu n'es pas censé jouer avec la mémoire de manière aussi basse.Si tu as peur d'avoir des pointeurs invalides à cause d'un déplacement de mémoire, tu fais pas de
realloc
ou tu fais des pointeurs de pointeurs. Blamerrealloc
pour ça n'est pas pertinent. La meilleure utilisation derealloc
est probablement de manipuler une donnée unique ou un tableau de types primitifs. Celui qui utiliserealloc
pour reallouer des structures imbriquées se tire une balle dans le pied.Pour moi cet article n'a pas d'intérêt et répond à des problèmes inexistants.
git is great because linus did it, mercurial is better because he didn't
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.