Allez KK défoule-toi : dis-nous quelles sont les fuites du kernel ?
(quoiqu'un peu long par moments)
All non-trivial abstractions, to some degree, are leaky.

De manière amusante, l'histoire de l'évolution de C++ au fil du temps peut être décrite comme l'histoire des tentatives pour reboucher les fuites dans l'abstraction des chaînes de caractères. Pourquoi ne pouvaient-ils pas simplement ajouter une classe de chaîne de caractères native au langage lui-même? Cela m'échappe pour le moment.
(parce que sinon, tu seras bien content avec ton C++ qui a des chaînes de caractères, mais après faudra penser à avoir un C++++ avec des tableaux qui peuvent grandir, un C++++++ avec des tableaux associatifs, etc...) Notamment le fait qu'en Java, les entiers/chaînes/tableaux aient droit à un traitement de faveur que n'ont pas les autres structures de données (par exemple les tableaux associatifs), ça devient vite lourd...
Uther
: Pour moi l'article met bien en evidenece un fait : quand on veut faire une abstraction il faut le faire bien. L'exemple de TCP ne pose pas vraiment de problèmes en soit car il a été bien pensé.
C++ (du mois en ce les chaines de caractères) est un bon example de mauvaise encapsulation et il explique même quelle aurait été la solution.
L'article est pas mal mais je trouve dommage qu'il présente le problème comme une fatalité, ce n'est pas le cas.
Moumou
: PHP powa pour faire des accolades comme en C/C++ sans se faire chier avec les types ^^
Nheryvra :age de Moumou !
Sinon, pour pas se faire chier avec les types : Caml powaaaa![]()
Moumou :
D'ailleurs, PHP est une belle abstraction étant donné que ses fonctions sont codées en C (donc typé et tout). Non ?
Moumou :
./16 > Ben je trouve que les avantages du typage dynamique sont bien plus importants que ses inconvénients. Et si je me plante, je cherche, ça prend pas beaucoup plus longtemps non plus ...

Nheryvra :
C'était ... (euh comment on dit deja) ... ironique

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.
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.
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. 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.
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.
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.
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.
, 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.
De manière amusante, l'histoire de l'évolution de C++ au fil du temps peut être décrite comme l'histoire des tentatives pour reboucher les fuites dans l'abstraction des chaînes de caractères. Pourquoi ne pouvaient-ils pas simplement ajouter une classe de chaîne de caractères native au langage lui-même? Cela m'échappe pour le moment.Eh bien, les STL sont natives au langage, puiqu'un compilateur ne peut prétendre faire du c++ s'il ne les mets pas à disposition des programmes.
spectras
:Je vais lire l'article, mais avant je voulais juste commenter ça :De manière amusante, l'histoire de l'évolution de C++ au fil du temps peut être décrite comme l'histoire des tentatives pour reboucher les fuites dans l'abstraction des chaînes de caractères. Pourquoi ne pouvaient-ils pas simplement ajouter une classe de chaîne de caractères native au langage lui-même? Cela m'échappe pour le moment.Eh bien, les STL sont natives au langage, puiqu'un compilateur ne peut prétendre faire du c++ s'il ne les mets pas à disposition des programmes.

spectras
: Bah, string("Hello") c'est pas plus compliqué.
)
Et surtout c'est bien de garder le char*, qui est quand même un poil plus économe en temps et en place.
Et puis, un langage, selon moi, se juge aussi par sa cohérence. Et garder la syntaxe string("Hello") est cohérent avec l'action d'initialiser un objet de type string.
Sinon on se retrouve avec des galères du genre Java qui crée un objet pour les chaînes mais pas pour les nombres, ce qui est pas super intuitif quand tu débutes.
Déjà la notation "bonjour".equals("truc") est quand même pas top.
), je crois qu'on peut le dire ^^ Pareil, le C# n'a pas ce pb...
Moumou
: PHP (<? $age = 18; echo "J'ai $age ans." ?>) pawa ^^
Transtypage auto pawa
pas besoin de concaténation pawa ^^
(vive les \, les ${} et les -> en Perl
)
Mais le Perl rulez carrément en ligne de commande : < ppp_hdr.txt perl -ne 'die if!/39m(..:..).*?32m([^\e]+).*?(..-..-....)/;($old_aft,$old_day)=($aft,$day);($aft,$day)=($1>="05:00",$3); $new=$aft&&!$old_aft||($day ne $old_day && $aft);print"$last\n"if$new;$last="$
(je vois mal un autre langage faire ça aussi efficacement)D'ailleurs, PHP est une belle abstraction étant donné que ses fonctions sont codées en C (donc typé et tout). Non ?Tu connais beaucoup de langages qui ne dépendent pas du C ?