21Fermer23
PolluxLe 03/08/2004 à 22:00
Uther
:
Ca dépend sous quel angle tu le prends. Si tu te dis "je veux transporter des données de façon sûre d'un point A à un point B avec un ping minimal", TCP n'est probablement pas la meilleure abstraction à prendre, parce que c'est plutôt optimisé pour éviter de bouffer trop de bande passante (exemple typique : une recherche Google qui au bout de 10 secondes n'a tjs pas répondu, il vaut mieux alors arrêter *manuellement* le navigateur et refaire "OK" : c'est bien une fuite de l'abstraction)
Pour moi la il n'y a pas de fuite vu que tout cela correspond exactement au comportement tel qu'il est défini. Si c'est une question d'efficacité c'est sur que à chaque fois que l'on fait un niveau d'abstraction on fais généralement moins éfficace que si on fait directement mais ce n'est pas vraiment ce que j'on appelerai une "fuite" ou du moins une fuite mineure qui n'a rien de surprenant.

Bah si, ça reste une fuite, surtout si la connection TCP en question débouche sur un timeout, et dans ce cas-là les données qui auraient dû être envoyées n'arrive pas...

Et une fuite mineure, c'est une fuite... "All non-trivial abstractions, to some degree, are leaky." Ce qui ne veut évidemment pas dire qu'elles sont mauvaises, juste qu'elles sont parfois insuffisantes.
Oui, enfin c plus qu'il n'y a pas d'encapsulation du tout...
Certes techniquement ce n'est pas une encapsulation mais le but recherché en est proche: remplacer char* par String en offrant des méthodes et des opérations plus appropriées.

Oui, bien sûr... Mais le C++ ne prétend justement pas offrir ça, et qqun qui ferait cette abstraction-là aurait de grosses fuites...
tu vas avoir une fuite de l'abstraction si les approximations peuvent être observables.
C'est pour cela qu'il faut être conscient de ces facteurs et le documenté s et de préférence standardisés.

Oui, il faut être AWARE de ces facteurs cheeky, mais je crois que le but de l'article est de dire que ces abstractions qui, en principe, sont là pour simplifier la vie, ne la simplifient pas tjs, sauf si on est prêt à accepter un compromis plus ou moins gros (par exemple, pour les langages de prog, faire un prog un peu plus lent si on fait abstraction de la notion de cache) -- ou plutôt, permettent de faire les choses plus efficacement, sauf qu'elles ne dispensent pas de la connaissance de ce qui se passe en bas niveau.
C'est ce que le modèle OSI fait très bien et qui fait que les réseaux fonctionnent relatisement mieux que les OS comme Windows ou Linux.

C quoi le modèle OSI ?