
Allez KK défoule-toi : dis-nous quelles sont les fuites du kernel ?
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.
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.
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.
Moumou
: PHP (<? $age = 18; echo "J'ai $age ans." ?>) pawa ^^
Transtypage auto pawa
pas besoin de concaténation pawa ^^
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="$
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 ?