> Arrête toi là si tu veux n'empèche que si tu reprend la terminologie pointeur / référence de C++ c'est bien des référence en Java.
Pas trop non.
> D'ailleurs explique moi comment récupérer la valeur (aka adresse) d'un "pointeur" en Java ?
Le rapport? Que le langage ne te donne pas l'addresse ne veut pas dire que ca n'est pas un pointeur....
Ce que je trouve genial c'est que dans une discussion ou tu critique que == s'applique aussi bien aux valeur qu'aux pointeurs, tu vienne dire que la notion de pointeur n'existe pas en java...
If you can find a host for me that has a friendly parrot, I will be very very glad. If you can find someone who has a friendly parrot I can visit with, that will be nice too.
pointeurs un concept qui n'existe tout simplement pas en Java au passage
?!?!?!
Ca doit etre pour ca que Sun a cree la NullPointerException...
Je vais arreter la.
If you can find a host for me that has a friendly parrot, I will be very very glad. If you can find someone who has a friendly parrot I can visit with, that will be nice too.
Pour ==, non, je ne veux pas de confusion entre les deux. J'ai précisé tout à l'heure que je ne veux pas un == (ou autre opérateur) qui soit par défaut de pointeur et que je peux surcharger. Je veux un opérateur qui soit par défaut de valeur et que je peux surcharger. Et hop, pas de choses opposée.
Ok, donc au final, la critique est purement subjective et esthetique?
Parce que =*= ou .equals, ca change pas grand chose au final.
Non parce que si ton ide est capable de te trouver tout tes type1.equals(typeX), il est aussi capable de te trouver tout tes (type1 == typeX)
Concretement, quel ide permet de retrouver les references a == pour un certain type donne?
Des ides qui trouvent les references a Machin.equals, t;en as une palanquee par contre.
If you can find a host for me that has a friendly parrot, I will be very very glad. If you can find someone who has a friendly parrot I can visit with, that will be nice too.
Ce genre d'operateur est commutatif (je pense que c'est ce que tu voulais dire ;-) )
Oui :) desole :)
juste parce qu'il est commutatif dans ton langage.
Ben oui, dans mon langage. Je me fout qu'il le soit pas en pakistanais oriental du sud.
Il y a d'autre opérateurs qui ne le sont pas. Si tu préviens le développeur quand tu lui apprends le langage, ça ne pose pas de problèmes (sauf si c'est un lapin nain de deux jours)
Deux choses.
La premiere, c'est la coherence de l'ensemble. T'es libre d'ajouter des exceptions un peu partout, mais ca aide pas a tout comprendre.
La deuxieme, c'est ton "si tu previens le dev".
Oui, donc en clair, si tu brieffes le mec pendant 3 jours avant qu'il ait le droit de lire du code (oui, parce que ya ca, et pis un autre truc, et pis ci, et pis ca, ca s'additione ces machins), ca marche. Et encore, ca c'est si t'as quelqu'un pour brieffer le gars.
C'est tres precisement ce que Java cherche a eviter. Le langage est dead simple. Tout est tres coherent, tres costaud, tres tres peu d'exceptions aux regles voire aucunes.
Parce que les mecs qui l'utilisent le font pas pour economiser 4 caracteres ou parce que c'est cool, mais parce qu'ils sont la pour ecrire une application qui resoud un probleme metier, pas technique. Que cette application va etre la pour longtemps, qu'elle implique probablement quelques equipes de beaucoup de personnes, potentiellement reparties au 4 coins du globes et que si t'ouvres la portes aux ambiguites, elles vont rentrer, s'installer, taper dans le frigo et squatter tes chaussons.
Si les gains ne commencent pas le vol des mes chaussons "tete d'homer simpson", ca vaut pas le coup et c'est s'emmerder pour rien.
La plupart des devs java, la grosse difficulte, n'est pas technique en soit (bon, un peu quand meme), c'est surtout d'assembler des pieces ensembles proprement, pas avec 2 bouts de ficelles et une vis en travers. Eviter que quand tu corriges un truc d'un cote, ca pete autre de l'autre cote.
Ce qui est tres important, c'est l'architecture. Les devs peuvent pisser du code, tant qu'ils restent dans les clous que l'architecte a definit, ca s'assemblera bien.
If you can find a host for me that has a friendly parrot, I will be very very glad. If you can find someone who has a friendly parrot I can visit with, that will be nice too.
Sauf si le relecteur externe c'est le gars qui a mis au point les lois de contrôle et que lui, justement, il sait mieux lire a x b que a.produitVectoriel(b). Mais bon, le mieux pour coder les parties mathématiques d'un algo, c'est quelqu'un qui est capable de comprendre ce que le concepteur dit, dans sa langue, qui est les maths.
Et si c'est un autre dev, pas forcement rompu a cette partie du code, qui tente de corriger une anomalie ou qui recupere la maintenance d'un projet?
La surcharge et ce genre de conneries, ca marche tres bien si t'es tout seul dans ton coin sur ton petit projet, mais c'est clairement pas la cible de java.
Sans compter qu'il me semble que le symbole pour les produit vectoriel, un X rigolo, pas une etoile?
Reste toujours que le * ne donne aucune information sur ce qu'a voulu faire le mec qui a ecrit le code.
Ton * est totalement indefinit pour les objets, ca dit juste que c'est une multiplication, charge a l'implementeur de definir la multiplication.
Appelle ca zorglub, ca fait un bofossou, charge a l'implementeur de definir le bofossou, c'est pas tellement different.
Bon ok, je pousse un peu, ca va souvent etre comprehensible, mais t'es jamais vraiment sur. Et dans certains cas, ca va etre clairement super ambigue. Genre le cas de la list, le + peut etre parfaitement raisonnablement interprete de 2 facons completement opposees.
Quand je lit list.add(list) ou list.addAll(list), je sais tres exactement ce que le mec qui a ecrit le code a voulu faire.
Quand je lit list + list, j'en sais trop rien. Je suis pas dans sa tete, donc je ne sais meme pas si le probleme se trouve dans + ou dans l'expression, parce que je ne sais meme pas ce que le mec a voulu ecrire en premier lieu.
Il aurait pu ecrire list zorglub list je serais pas plus avance.
En general, ca passe, mais quand ca passe pas, on fait quoi? On s'encule? Si c'est un bug cho cho cho en prod, avec des mecs en cravate derriere toi qui te fouttent et te promettent un monde de douleur si c'est pas regle d'ici une heure, tu vas probablement te dire que cet abruti qui a ecrit ce bug, il aurait mieux fait d'ecrire 5 caracteres de plus. Ou de se casser une jambe.
Tout ca pour quoi?
Pour ne pas avoir a ecrire equals?
Perso je prend les 5 characteres en plus, les coups de fouet, c'est quand ca s'arrete que ca fait du bien, et si je peux eviter d'ajouter des petits problemes aux grands, je le fait tres volontiers.
Ben en même temps, un produit vectoriel, ce sont des maths, une comparaison de valeurs, ce sont des maths.
Ouch! Ca fait mal au coeur de lire ca.
Je ne m'aventurerais pas sur la partie produit vectoriel. Un peu quand meme. C'est une operation faite par un objet sur un autre objet. Pas une operation mathematique. En tout cas, pas dans le paradigme objet. Ca va dependre fortement de ton modele.
Tu peux vouloir une exception quand c'est pas defini, passer ca sous silence, bref, c'est tout sauf clairement definit. Et par clairement, j'entends 0 doutes, nada, pas "bah, il doit vouloir dire ca".
La comparaison de valeur, dans une logique objet, c'est tout sauf des maths. L'identite des objets change du tout au tout en fonction du domaine et du modele implemente. Ca n'a rien d'une operation mathematique, les valeurs peuvent etre identiques et pourtant ne pas etre egale.
Mon gateau, c'est mon gateau, ton gateau c'est ton gateau, ils sont differents, et pourtant ya strictement la meme chose dedans (des pepite de chocolat :) ). Pour le fabriquant, il s'en tamponne, c'est tous les memes, fout moi ca dans une boite et envoie tout ca au supermarche.
J'appelle pas ca des maths perso.
Ta méthode + sur ton objet, elle a une spécification. Elle parle aussi de l'addition. Le dev qui est capable de faire une méthode add, equals cohérente, il est capable de faire une surcharge cohérente. Le type qui appelle sa méthode zorglub, il fera pas mieux avec la surcharge, c'est sûr.
Evidemment que + est specifie, sa specification etant indefinie. C'est un gros fourre tout qui sert a mettre un peu tout et n'importe quoi.
Add transporte une semantique bien plus forte. Tu dis ce que tu veux faire en ecrivant ca. Si apres coup on se rend compte que le nom est mal choisi, ben on peut le changer, mais c'est pas trop le sujet ici.
+ c'est grosso modo un alias pour dire "va voir dans la doc, pardon le code, comment + est defini et ce qu'il veut dire". J'ai voulu utiliser un zorglub et si tu veux etre sur a 100% de ce que j'ai voulu faire, ben va falloir venir me demander.
Je trouve A*(B*c) au moins 42 fois plus lisible que la version avec une variable temporaire.
J'avoue que le temp est pas joli joli. C'est un moindre mal on va dire.
If you can find a host for me that has a friendly parrot, I will be very very glad. If you can find someone who has a friendly parrot I can visit with, that will be nice too.
Ca leve pas les soupcons si l'operande de gauche est nulle.
Et ca casse la convention que ce genre d'operateur est associatif.
Si a != b alors b != a.
Si !a.equals(b) alors !b.equals(a) peut te peter a la gueule.
Pour les surcharges d'operateurs, idem.
a * b est egal a b * a (note l'absence de == :P)
Pour du calcul matriciel c'est pas le cas.
If you can find a host for me that has a friendly parrot, I will be very very glad. If you can find someone who has a friendly parrot I can visit with, that will be nice too.
ben si, equals tu sais ce qu'il est cense faire. S'il ne le fait pas, c'est un autre probleme, mais au moins tu sais que ta semantique est valide et tu sais ou se trouve le probleme.
== ca peut etre une egalite de pointeur ou de valeur, t'en sais rien.
Le probleme c'est pas le nombre de caracter ou quoi, c'est que le meme symbole represente deux chose pourtant opposees.
Quand a supprimer equals de ta classe, au moins t'es capable de retrouver simplement ou elle est appeller.
Pour == au mieux, tu peux faire une recherche texte sur ==, et ensuite fouiner dans les 2500 resultats.
If you can find a host for me that has a friendly parrot, I will be very very glad. If you can find someone who has a friendly parrot I can visit with, that will be nice too.
Effectivement, si un type surcharge "+" par une multiplication, c'est pas maintenable. Mais en même temps, si un dev java invente une méthode add() qui multiplie, ça sera pas plus maintenable que dans n'importe quel autre langage.
Non, c'est sur.
Apres, la difference se fait sur la relecture du code.
Le code est lu par des humains, et les humains ont un fonctionnement un peu particulier.
Quelqu'un qui lit + va automatiquement comprendre ca comme l'operateur mathematique, a savoir 1 + 1.
Meme si l'humain est capable de comprendre que vecteur1 x vecteur2 est le produit vectoriel de 2 vecteur, ca fait une gymnastique mentale supplementaire et parfaitement comprendre le context, ce qui n'est pas desirable pour un relecteur externe.
Appelle ca vecteur1.produitVectoriel(vecteur2), ca devient tout de suite beaucoup plus clair pour tout le monde.
Et on sait exactement ce qu'il se passe si le premier membre est null (pas dans l'autre cas).
Le dev peut affreusement nommer ses methodes (et il le fait souvent), certes, mais le langage n'y peut rien. La ou le langage peut, c'est limite la casse et t'empecher d'introduire une ambiguite dans ton code en disant "les operateurs, c'est pour les maths, point".
Quand à dire que la surcharge c'est pas joli en objet, je dirais que dès le moment où tu peux faire a+b quand ce sont des int, je ne vois pas ce qui gênerait à l'autoriser pour d'autres objets.
Le probleme est que tu assumes que + se mappe forcement semantiquement a add.
Prend une liste par exemple, elle definit add.
mais liste1 + liste2 est semantiquement TRES different de list1.add(list2). Ce que tu veux dans ce cas, c'est un addAll.
C'est juste une mauvaise idee.
L'autoboxing marche pour Number parce que d'une part sun^W oracle controle le langage et le framework, d'autre part, ya effectivement une correspondance one to one entre Integer et int, et donc une correspondance one to one entre + pour Integer et l'operateur + mathematique. Dans ce cas ca marches tres bien.
Pour tous les autres objets, la correspondance n'est clairement pas la, sa presence va dependre de tellement de parametre qu'utiliser + revient sensiblement a la meme chose que d'appeler une methode zorglub: ca t'avances pas des masses sur ce que fait la methode.
Quitte à restreindre l'utilisation à un sous-ensemble d'objets bien identifiés (genre Object->Mathematic ou un truc du genre) avec un ensemble de méthodes identifiées (Type1+ Type2 serait automatiquement un appel Type1.add(Type2) s'il existe, une erreur si ça n'existe pas)
C'est ce que fait java avec l'autoboxing, et le resultat est pas joli joli. Ca marche dans les cas simples, le reste du temps, c'est chiant a utiliser: on pense avoir un truc simple, mais en fait il est complique.
Ton exemple avec les matrices est parfait.
Ta surcharge d'operateur * sur les matrices casse la lecture naturelle du code et rends ton code plus fragile. La validite du code tient a une paire de parentheses.
Force a ecrire temp = b.multiply(v); v = a.multiply(temp), ton code y gagne en clarete (plus besoin d'evaluer la priorite des operateurs patati patata) et c'est beaucoup plus explicite.
Tu sais que t'appelles telle implementation de la multiplication et dans quel ordre.
If you can find a host for me that has a friendly parrot, I will be very very glad. If you can find someone who has a friendly parrot I can visit with, that will be nice too.
Je ne vois pas ce qui a poussé les ingénieurs qui ont créé java à ne pas utiliser la collection des méthodes «operatorBidule» comme en C++.
Probablement la lisibilite du code.
Ton a == b, en le lisant t'as aucune idee de ce qu'il va appeler . Un exemple?
D'une part, tu ne sais pas ici ce que fait ==, a moins d'aller farfouiller les definitions. Ca c'est le probleme de la surcharge d'operateur, t'as un truc qui s'appelle ==, qui est en fait une methode, mais t'as pas la moindre idee de ce que la methode fait parce qu'elle a pas de nom.
Remplace == par a.egaliteDePointeurOuPasCaDepend(b) c'est strictement la meme chose.
D'autre part, supprimes la surcharge de == et paf, t'as pete tout ton code silencieusement. Bon courage pour corriger tout ca.
If you can find a host for me that has a friendly parrot, I will be very very glad. If you can find someone who has a friendly parrot I can visit with, that will be nice too.
Ca changerais quoi a la situation actuelle?
A part rendre les choses moins explicite et plus dure a lire?
If you can find a host for me that has a friendly parrot, I will be very very glad. If you can find someone who has a friendly parrot I can visit with, that will be nice too.
pourquoi ne pourrait-il pas traduire
Parce que c'est pas la meme chose.
On va quand meme pas peter la semantique du langage juste parce que vous etes pas capable de comprendre la difference pointeur/valeur ou parce que vous etes trop flemmard pour taper .equals en lieu et place de ==?
Tant qu'on y est, addAll sur List c'est chiant, pourquoi ne pas compiler List.add(List) en List.addAll(List)?
C'est du meme niveau que ce que tu proposes...
C'est nettement plus simple. Quite à devoir implémenter une interface Comparable tout comme on implémente Iterable pour profiter du "foreach".
Oui, c'est sur que si tu supprimes l'egalite de pointeur, tout devient plus simple...
C'est pas complique quand meme.
Il y a l'egalite de valeur. Ca c'est une notion semantique, purement business logic. Tout le monde veut ca.
Il y a l'egalite de pointeur. Celle la, elle est la pour des raisons techniques. Tout le monde veut ca aussi.
Les deux sont fondamentalement different et ignorer la difference entre les deux resultera immanquablement dans d'enormes bugs, quel que soit le langage.
Conclusion:
Il faut donc un moyen de differencier les deux.
Java a choisi de ne s'occuper que de la partie technique, parce que c'est pas au langage de s'occuper de la semantique du code.
Parce qu'ils sont pas trop rat non plus, et que ca ferait chier tout le monde sinon, ils ont introduit hashCode et equals, mais libre au dev' d'implementer l'egalite comme il veut.
If you can find a host for me that has a friendly parrot, I will be very very glad. If you can find someone who has a friendly parrot I can visit with, that will be nice too.
Et comment tu fais quand tu veux une comparaison de pointeurs? On rajoute un deuxieme operateur? Ben ca revient a ce qu'on a maintenant, la difference entre comparaison de pointeurs et de valeurs est fondamentale et doit etre comprise par le developpeur sous peine de gros bugs.
La au moins, c'est tres explcite et coherent avec la philosophie objet. == ca sert pour la tambouille technique interne, si tu veux utiliser la semantique objet, tu passes par des methodes.
Derniere chose:
package com.maboite.monprojet;
public class Integer{
// plein de truc super baleze parce qu'on a du faire une classe integer a nous
}
plus loin:
// collapse par tout ide decent
import com.maboite.monprojet;
// un 20aine d'autres import
// 400 lignes de code
public void maSuperMethod(Integer a, Integer b){
if(a == b){
// a ben merde, c'est quoi la? egalite de pointeur ou de valeur?
}
}
If you can find a host for me that has a friendly parrot, I will be very very glad. If you can find someone who has a friendly parrot I can visit with, that will be nice too.
Le premier truc qu'apprend un debutant, c'est la difference entre int et Integer.
Le deuxieme, c'est de ne jamais utiliser == sur des objets.
Java a des problemes d'architecture, mais la c'est du pinaillage.
If you can find a host for me that has a friendly parrot, I will be very very glad. If you can find someone who has a friendly parrot I can visit with, that will be nice too.
L'autoboxing est un pur sucre syntaxique. La raison pour laquelle ils ont introduit ce sucre, c'est parce que un truc de ce genre est particulierement chiant a lire et a comprendre:
Integer a = new Integer(0);
Integer b = new Integer(42);
Integer c = new Integer(a.intValue() + b.intValue());
On pourrait se demander pourquoi ils n'ont pas ajouter des add/substract etc
Auquel cas on aurait Integer c = a.add(c);
Mon petit doigt me dit que c'est pour des raisons de clarte d'api.
Bref, ca ne change strictement rien a la facon dont les Number etaient manipules avant java5.
Comme les for(Object value : iterable) d'ailleurs.
Fait un
Integer a = null
int b = a + 1;
Ou un
List strings = null;
for(String string : strings){
System.out.println("brezilien");
}
Les deux vont te jeter un beau NPE.
Quand a la surcharge d'operateur, c'est un truc qui est a l'oppose de la philosophie Java (et de n'importe quel langage objet un tant soit peu coherent d'ailleurs).
Java est un langage entreprise.
Ca sert a faire des systemes couillu, crees par des equipes independantes qui ne communiquent pas forcement beaucoup, qui sont la colonne vertebrale d'une boite, qui vont generalement etre ecrit, deploye en prod et rester la pendant 10, 20, 30 ans.
On a un systeme au taff en prod depuis plus de 10 ans. Et il pourrait bien faire 10 ans de plus si le management avait pas decide de l'outsourcer.
Une des raisons de son adoption massive, c'est que le langage est tres simple, et tres explicite.
Tu files une methode Java a n'importe quel mec qui a deja tape du code, il comprendra instantanement ce que le code fait, et sans aucune ambiguite.
Tu peux pas clairement pas dire la meme chose de n'importe quel autre langage complexe, genre c++ ou pire, perl.
Je considere ca comme un prerequis fondamental pour faire du code de qualite. Un code de qualite se lit comme un livre, si faut passer son temps a sauter partout dans le code pour savoir si + n'a pas ete surcharge pour tel objet, mais pas pour tel autre, c'est pas vivable.
Dans une boite ou le systeme est critique et ou les devs peuvent etre parti depuis tres longtemps, ou une ssii ou le mec qui a commence le projet se retrouver parachute expert python 15 jours apres et part ailleurs, c'est tres important, ca permet de passer la patate chaude plus facilement.
Si un petit malin s'amuse a surcharger les operateurs, bon courage pour facilement comprendre ce que fait le code. Et t'ouvres la porte a de potentiels gros problemes de perf ou autres pour les gens qui utilisent tes classes.
Note que de toutes facons, surcharge des operateurs ou pas, ca changera pas grand chose, vu que tous les types de bases sont immutable en Java.
Et meme s'ils ne l'etaient pas, ce sont des objets, et les objets ne s'ajoutent pas entre eux.
Et si tu regardes les implems, les objets ne s'ajoutent pas entre eux, ca n'a aucun sens.
Tu vas me dire qu'on peut ajouter des strings en java, je te repondrais que non, c'est du pur sucre syntaxique la encore.
"toto" + "titi" sera compile en
new StringBuilder("toto").append("titi").toString().
Et c'est pour ca que concatener des chaines dans une boucle, c'est mal, m'voyeeez? Surtout avant java 5 ou il n'y avait que StringBuffer qui est synchronizee, c'est moins grave maintenant.
Et c'est aussi pour ca que passer par des StringBuilder pour concatener 3 chaines, c'est mal, m'voyeez?: ca rend le code moins lisible pour 0 gains.
If you can find a host for me that has a friendly parrot, I will be very very glad. If you can find someone who has a friendly parrot I can visit with, that will be nice too.
Dans la deuxieme aussi on les voit, cela dit. Ca tourne clairement mieux, mais ca reste quand meme tres mauvais.
Question qui fache: j'ai jamais observe ca sous windows pu mac, comment ils font eux?
If you can find a host for me that has a friendly parrot, I will be very very glad. If you can find someone who has a friendly parrot I can visit with, that will be nice too.
Et encore, si tu compile ton kernel dans un ide, ca change rien, vu que toutes tes applis seront dans le meme groupe.
Ca fleure bon le benchmark biaise (invonlontairement, certes).
If you can find a host for me that has a friendly parrot, I will be very very glad. If you can find someone who has a friendly parrot I can visit with, that will be nice too.
Ben justement, c'est la ou netflix a ete malin, ils ont integre leur service a beaucoup de devices pas chers et adaptes a la tele.
Ya une palanquee de "machin box" sur le marche netflix ready, en plus des traditionnels ps3, xbox, apple tv, iphone/ipad etc.
Ensuite, ta personne est prete a se payer un pc ou un mac pour acceder a megavideo et en chier pour trouver un film en qualite pourrie, mais n'est pas prete a se payer un pc ou un mac pour avoir un service de qualitay?
If you can find a host for me that has a friendly parrot, I will be very very glad. If you can find someone who has a friendly parrot I can visit with, that will be nice too.
Ouais, mais le parpaing, ca soulage vachement plus.
If you can find a host for me that has a friendly parrot, I will be very very glad. If you can find someone who has a friendly parrot I can visit with, that will be nice too.
Cool! Ca avance vite.
La prochaine etape, c'est virer le fil a la patte et trouver un futal avec des poches suffisament grosses pour faire rentrer la bobox.
If you can find a host for me that has a friendly parrot, I will be very very glad. If you can find someone who has a friendly parrot I can visit with, that will be nice too.
Interessant ca, tu vas me montrer ou j'ai dit que ca marchait pas sur android.
En pratique, ca marche mal, dixit les mecs de netflix eux meme, la plupart des devices etant non supportes (et ca les fait chier).
If you can find a host for me that has a friendly parrot, I will be very very glad. If you can find someone who has a friendly parrot I can visit with, that will be nice too.
Pirouette quoi?
J'ai dit qu'android etait a chier ou que sais je?
Je suis juste surpris d'une part d'apprendre qu'il ya des services de streaming haute qualite, tout du moins au niveau du service de netflix, et le tout sans drm, et fait remarquer d'autre part que android/ios/wp7 ne sont pas reserves aux telephones mais entrent aussi dans le salon en force.
[digression]
Croit moi, si netflix pouvait lacher les drms, ils le feraient, ils sont strictement dans la meme situation qu'apple l'etait avec la musique ya 5 ans.
Ca les arrange *pas du tout* ces drm, ca les emmerde eux autant que leurs clients. Le probleme vient des studios.
Ma prediection de madame irma pour le future: les studios vont etre plus dur a faire plier que les maisons de disques.
Netflix les emmerde copieux depuis 2 ans environ (avant, ils faisaient juste mumuse avec les dvds, ca allait). Apple commence a les enerver aussi.
Je suis pas convaincu qu'apple puisse refaire le coup qu'ils ont fait avec le store et faire plier les maisons de disques. Ils manquent de force de frappe: le flop de l'apple tv premiere generation les a relegue au rang d'acteur secondaire de la VOD, netflix s'est engoufre dans la breche et tient maintenant le haut du pave. Apple revient avec l'apple tv2, mais son modele paiement a la demande les fera rester derriere netflix. Surtout que les films sont ridiculement chers.
Pour 3 films apple tv, tu te payes 1 mois de netflix full patate, avec 20 fois plus de contenu.
Netflix a ce pouvoir par contre. Couple a apple qui vends des apple tv2 comment des petits pains, ce sont eux qui vont faire plier l'industrie du cinema.
Les europeens ne connaissent pas du tout, vu que c'est pas disponible, mais ils ont un succes dingue de l'autre cote de la grande piscine. Ils en sont rendu a un point ou les gens partent du principe que tout le monde a un compte netflix, et quand on parle d'un film machin qu'on a vu, on entend quasiment systematiquement "put it in your netflix queue" tres vite.
Et c'est en train de changer ces derniers temps, ca se transforme en "do they have it on instant streaming?"
Et dans le monde technique, "Netflix does it, it can't be bad" vient maintenant de pair avec "Facebook/Google does it".
[/digression]
Maintenant, si tu veux mon avis sur android: c'est une tres bonne chose. Une enorme avancee par rapport a ce que les smartphones autre que l'iphone proposaient jusqu'a son arrive.
Ca va forcer apple a continuer a faire du bon boulot sur l'iphone.
Ca a aussi force MS a se mettre a niveau.
En clair, android ramene la concurrence au niveau d'ios. C'est un peu le firefox des telephones.
Ca va fragmenter le marche des smartphones (ie ne plus avoir apple en maitre supreme du marche), ce qui par effet de bord va forcer les editeurs de contenu a faire de vraies version mobiles de leur sites plutot que de chier une appli iphone pas forcement bien branlee. En ce sens, c'est un peu le webkit des telephones.
Ca permet au gens qui ne veulent pas d'iphone pour x raisons (att, haissent profondement itunes ou apple ou tout simplement n'aiment pas le telephone) d'avoir un smartphone de qualite, et pas forcement au prix de l'iphone.
Google se fout de la gueule du monde en jouant la carte de l'ouverture vu qu'ils ont donne les cles des verrous aux operateurs qui ne vont pas se priver pour s'en servir, mais ca c'est un autre probleme - et surtout, ca n'affecte pas la qualite des telephones android. Disons qu'ils sont tres hypocrite.
Ils fournissent android avec un enorme cadenas, ouvert certes, donnent la cle aux operateurs et disent "si tu met la cle dans le cadenas et la tourne, ben je regarderais de l'autre cote de toutes facons".
If you can find a host for me that has a friendly parrot, I will be very very glad. If you can find someone who has a friendly parrot I can visit with, that will be nice too.
Ok, la google tv est supportee (ca rejoint ce que disait le mec de netflix initialement, que certains devices peuvent etre supportes, mais la plupart non).
Reste a voir pour les autres constructeurs qui feront une tv box avec android.
Mon point etait surtout de faire remarquer que le 1080p 5.1 est un cas d'utilisation tres pertinent de ce genre d'os. Sur un telephone, c'est sur que c'est pas primordial, mais on commence a trouver ces os embarques dans la chaine multimedia, et la par contre c'est un must have.
If you can find a host for me that has a friendly parrot, I will be very very glad. If you can find someone who has a friendly parrot I can visit with, that will be nice too.
Tes reseaux de contrefacons a la qualite pourrie (xvid+mp3 pour le contenu SD) et a la recherche extremement difficile, avec moulte pubs de pr0n, scams et autres...
On passera sur l'integration ps3/apple tv/autre.
Quand a la legalite... Hum... comment dire?
If you can find a host for me that has a friendly parrot, I will be very very glad. If you can find someone who has a friendly parrot I can visit with, that will be nice too.
Venant de quelqu'un qui s'est fait fermer son comptear les admins, c'est amusant.
If you can find a host for me that has a friendly parrot, I will be very very glad. If you can find someone who has a friendly parrot I can visit with, that will be nice too.
Cool, il te reste plus qu'a faire rentrer ta carte sim dans ta freebox.
If you can find a host for me that has a friendly parrot, I will be very very glad. If you can find someone who has a friendly parrot I can visit with, that will be nice too.
[^] # Re: Utiliser les tty
Posté par pasScott pasForstall . En réponse à la dépêche Patch pour le noyau Linux améliorant l'interactivité entre les applications console et Xorg. Évalué à 1.
Pas trop non.
> D'ailleurs explique moi comment récupérer la valeur (aka adresse) d'un "pointeur" en Java ?
Le rapport? Que le langage ne te donne pas l'addresse ne veut pas dire que ca n'est pas un pointeur....
Ce que je trouve genial c'est que dans une discussion ou tu critique que == s'applique aussi bien aux valeur qu'aux pointeurs, tu vienne dire que la notion de pointeur n'existe pas en java...
If you can find a host for me that has a friendly parrot, I will be very very glad. If you can find someone who has a friendly parrot I can visit with, that will be nice too.
[^] # Re: Utiliser les tty
Posté par pasScott pasForstall . En réponse à la dépêche Patch pour le noyau Linux améliorant l'interactivité entre les applications console et Xorg. Évalué à 0.
?!?!?!
Ca doit etre pour ca que Sun a cree la NullPointerException...
Je vais arreter la.
If you can find a host for me that has a friendly parrot, I will be very very glad. If you can find someone who has a friendly parrot I can visit with, that will be nice too.
[^] # Re: Utiliser les tty
Posté par pasScott pasForstall . En réponse à la dépêche Patch pour le noyau Linux améliorant l'interactivité entre les applications console et Xorg. Évalué à 2.
Ok, donc au final, la critique est purement subjective et esthetique?
Parce que =*= ou .equals, ca change pas grand chose au final.
Non parce que si ton ide est capable de te trouver tout tes type1.equals(typeX), il est aussi capable de te trouver tout tes (type1 == typeX)
Concretement, quel ide permet de retrouver les references a == pour un certain type donne?
Des ides qui trouvent les references a Machin.equals, t;en as une palanquee par contre.
If you can find a host for me that has a friendly parrot, I will be very very glad. If you can find someone who has a friendly parrot I can visit with, that will be nice too.
[^] # Re: Utiliser les tty
Posté par pasScott pasForstall . En réponse à la dépêche Patch pour le noyau Linux améliorant l'interactivité entre les applications console et Xorg. Évalué à 0.
Oui :) desole :)
juste parce qu'il est commutatif dans ton langage.
Ben oui, dans mon langage. Je me fout qu'il le soit pas en pakistanais oriental du sud.
Il y a d'autre opérateurs qui ne le sont pas. Si tu préviens le développeur quand tu lui apprends le langage, ça ne pose pas de problèmes (sauf si c'est un lapin nain de deux jours)
Deux choses.
La premiere, c'est la coherence de l'ensemble. T'es libre d'ajouter des exceptions un peu partout, mais ca aide pas a tout comprendre.
La deuxieme, c'est ton "si tu previens le dev".
Oui, donc en clair, si tu brieffes le mec pendant 3 jours avant qu'il ait le droit de lire du code (oui, parce que ya ca, et pis un autre truc, et pis ci, et pis ca, ca s'additione ces machins), ca marche. Et encore, ca c'est si t'as quelqu'un pour brieffer le gars.
C'est tres precisement ce que Java cherche a eviter. Le langage est dead simple. Tout est tres coherent, tres costaud, tres tres peu d'exceptions aux regles voire aucunes.
Parce que les mecs qui l'utilisent le font pas pour economiser 4 caracteres ou parce que c'est cool, mais parce qu'ils sont la pour ecrire une application qui resoud un probleme metier, pas technique. Que cette application va etre la pour longtemps, qu'elle implique probablement quelques equipes de beaucoup de personnes, potentiellement reparties au 4 coins du globes et que si t'ouvres la portes aux ambiguites, elles vont rentrer, s'installer, taper dans le frigo et squatter tes chaussons.
Si les gains ne commencent pas le vol des mes chaussons "tete d'homer simpson", ca vaut pas le coup et c'est s'emmerder pour rien.
La plupart des devs java, la grosse difficulte, n'est pas technique en soit (bon, un peu quand meme), c'est surtout d'assembler des pieces ensembles proprement, pas avec 2 bouts de ficelles et une vis en travers. Eviter que quand tu corriges un truc d'un cote, ca pete autre de l'autre cote.
Ce qui est tres important, c'est l'architecture. Les devs peuvent pisser du code, tant qu'ils restent dans les clous que l'architecte a definit, ca s'assemblera bien.
If you can find a host for me that has a friendly parrot, I will be very very glad. If you can find someone who has a friendly parrot I can visit with, that will be nice too.
[^] # Re: Utiliser les tty
Posté par pasScott pasForstall . En réponse à la dépêche Patch pour le noyau Linux améliorant l'interactivité entre les applications console et Xorg. Évalué à -1.
Et si c'est un autre dev, pas forcement rompu a cette partie du code, qui tente de corriger une anomalie ou qui recupere la maintenance d'un projet?
La surcharge et ce genre de conneries, ca marche tres bien si t'es tout seul dans ton coin sur ton petit projet, mais c'est clairement pas la cible de java.
Sans compter qu'il me semble que le symbole pour les produit vectoriel, un X rigolo, pas une etoile?
Reste toujours que le * ne donne aucune information sur ce qu'a voulu faire le mec qui a ecrit le code.
Ton * est totalement indefinit pour les objets, ca dit juste que c'est une multiplication, charge a l'implementeur de definir la multiplication.
Appelle ca zorglub, ca fait un bofossou, charge a l'implementeur de definir le bofossou, c'est pas tellement different.
Bon ok, je pousse un peu, ca va souvent etre comprehensible, mais t'es jamais vraiment sur. Et dans certains cas, ca va etre clairement super ambigue. Genre le cas de la list, le + peut etre parfaitement raisonnablement interprete de 2 facons completement opposees.
Quand je lit list.add(list) ou list.addAll(list), je sais tres exactement ce que le mec qui a ecrit le code a voulu faire.
Quand je lit list + list, j'en sais trop rien. Je suis pas dans sa tete, donc je ne sais meme pas si le probleme se trouve dans + ou dans l'expression, parce que je ne sais meme pas ce que le mec a voulu ecrire en premier lieu.
Il aurait pu ecrire list zorglub list je serais pas plus avance.
En general, ca passe, mais quand ca passe pas, on fait quoi? On s'encule? Si c'est un bug cho cho cho en prod, avec des mecs en cravate derriere toi qui te fouttent et te promettent un monde de douleur si c'est pas regle d'ici une heure, tu vas probablement te dire que cet abruti qui a ecrit ce bug, il aurait mieux fait d'ecrire 5 caracteres de plus. Ou de se casser une jambe.
Tout ca pour quoi?
Pour ne pas avoir a ecrire equals?
Perso je prend les 5 characteres en plus, les coups de fouet, c'est quand ca s'arrete que ca fait du bien, et si je peux eviter d'ajouter des petits problemes aux grands, je le fait tres volontiers.
Ben en même temps, un produit vectoriel, ce sont des maths, une comparaison de valeurs, ce sont des maths.
Ouch! Ca fait mal au coeur de lire ca.
Je ne m'aventurerais pas sur la partie produit vectoriel. Un peu quand meme. C'est une operation faite par un objet sur un autre objet. Pas une operation mathematique. En tout cas, pas dans le paradigme objet. Ca va dependre fortement de ton modele.
Tu peux vouloir une exception quand c'est pas defini, passer ca sous silence, bref, c'est tout sauf clairement definit. Et par clairement, j'entends 0 doutes, nada, pas "bah, il doit vouloir dire ca".
La comparaison de valeur, dans une logique objet, c'est tout sauf des maths. L'identite des objets change du tout au tout en fonction du domaine et du modele implemente. Ca n'a rien d'une operation mathematique, les valeurs peuvent etre identiques et pourtant ne pas etre egale.
Mon gateau, c'est mon gateau, ton gateau c'est ton gateau, ils sont differents, et pourtant ya strictement la meme chose dedans (des pepite de chocolat :) ). Pour le fabriquant, il s'en tamponne, c'est tous les memes, fout moi ca dans une boite et envoie tout ca au supermarche.
J'appelle pas ca des maths perso.
Ta méthode + sur ton objet, elle a une spécification. Elle parle aussi de l'addition. Le dev qui est capable de faire une méthode add, equals cohérente, il est capable de faire une surcharge cohérente. Le type qui appelle sa méthode zorglub, il fera pas mieux avec la surcharge, c'est sûr.
Evidemment que + est specifie, sa specification etant indefinie. C'est un gros fourre tout qui sert a mettre un peu tout et n'importe quoi.
Add transporte une semantique bien plus forte. Tu dis ce que tu veux faire en ecrivant ca. Si apres coup on se rend compte que le nom est mal choisi, ben on peut le changer, mais c'est pas trop le sujet ici.
+ c'est grosso modo un alias pour dire "va voir dans la doc, pardon le code, comment + est defini et ce qu'il veut dire". J'ai voulu utiliser un zorglub et si tu veux etre sur a 100% de ce que j'ai voulu faire, ben va falloir venir me demander.
Je trouve A*(B*c) au moins 42 fois plus lisible que la version avec une variable temporaire.
J'avoue que le temp est pas joli joli. C'est un moindre mal on va dire.
If you can find a host for me that has a friendly parrot, I will be very very glad. If you can find someone who has a friendly parrot I can visit with, that will be nice too.
[^] # Re: Utiliser les tty
Posté par pasScott pasForstall . En réponse à la dépêche Patch pour le noyau Linux améliorant l'interactivité entre les applications console et Xorg. Évalué à 0.
Et ca casse la convention que ce genre d'operateur est associatif.
Si a != b alors b != a.
Si !a.equals(b) alors !b.equals(a) peut te peter a la gueule.
Pour les surcharges d'operateurs, idem.
a * b est egal a b * a (note l'absence de == :P)
Pour du calcul matriciel c'est pas le cas.
If you can find a host for me that has a friendly parrot, I will be very very glad. If you can find someone who has a friendly parrot I can visit with, that will be nice too.
[^] # Re: Utiliser les tty
Posté par pasScott pasForstall . En réponse à la dépêche Patch pour le noyau Linux améliorant l'interactivité entre les applications console et Xorg. Évalué à 1.
== ca peut etre une egalite de pointeur ou de valeur, t'en sais rien.
Le probleme c'est pas le nombre de caracter ou quoi, c'est que le meme symbole represente deux chose pourtant opposees.
Quand a supprimer equals de ta classe, au moins t'es capable de retrouver simplement ou elle est appeller.
Pour == au mieux, tu peux faire une recherche texte sur ==, et ensuite fouiner dans les 2500 resultats.
If you can find a host for me that has a friendly parrot, I will be very very glad. If you can find someone who has a friendly parrot I can visit with, that will be nice too.
[^] # Re: Utiliser les tty
Posté par pasScott pasForstall . En réponse à la dépêche Patch pour le noyau Linux améliorant l'interactivité entre les applications console et Xorg. Évalué à 1.
Non, c'est sur.
Apres, la difference se fait sur la relecture du code.
Le code est lu par des humains, et les humains ont un fonctionnement un peu particulier.
Quelqu'un qui lit + va automatiquement comprendre ca comme l'operateur mathematique, a savoir 1 + 1.
Meme si l'humain est capable de comprendre que vecteur1 x vecteur2 est le produit vectoriel de 2 vecteur, ca fait une gymnastique mentale supplementaire et parfaitement comprendre le context, ce qui n'est pas desirable pour un relecteur externe.
Appelle ca vecteur1.produitVectoriel(vecteur2), ca devient tout de suite beaucoup plus clair pour tout le monde.
Et on sait exactement ce qu'il se passe si le premier membre est null (pas dans l'autre cas).
Le dev peut affreusement nommer ses methodes (et il le fait souvent), certes, mais le langage n'y peut rien. La ou le langage peut, c'est limite la casse et t'empecher d'introduire une ambiguite dans ton code en disant "les operateurs, c'est pour les maths, point".
Quand à dire que la surcharge c'est pas joli en objet, je dirais que dès le moment où tu peux faire a+b quand ce sont des int, je ne vois pas ce qui gênerait à l'autoriser pour d'autres objets.
Le probleme est que tu assumes que + se mappe forcement semantiquement a add.
Prend une liste par exemple, elle definit add.
mais liste1 + liste2 est semantiquement TRES different de list1.add(list2). Ce que tu veux dans ce cas, c'est un addAll.
C'est juste une mauvaise idee.
L'autoboxing marche pour Number parce que d'une part sun^W oracle controle le langage et le framework, d'autre part, ya effectivement une correspondance one to one entre Integer et int, et donc une correspondance one to one entre + pour Integer et l'operateur + mathematique. Dans ce cas ca marches tres bien.
Pour tous les autres objets, la correspondance n'est clairement pas la, sa presence va dependre de tellement de parametre qu'utiliser + revient sensiblement a la meme chose que d'appeler une methode zorglub: ca t'avances pas des masses sur ce que fait la methode.
Quitte à restreindre l'utilisation à un sous-ensemble d'objets bien identifiés (genre Object->Mathematic ou un truc du genre) avec un ensemble de méthodes identifiées (Type1+ Type2 serait automatiquement un appel Type1.add(Type2) s'il existe, une erreur si ça n'existe pas)
C'est ce que fait java avec l'autoboxing, et le resultat est pas joli joli. Ca marche dans les cas simples, le reste du temps, c'est chiant a utiliser: on pense avoir un truc simple, mais en fait il est complique.
Ton exemple avec les matrices est parfait.
Ta surcharge d'operateur * sur les matrices casse la lecture naturelle du code et rends ton code plus fragile. La validite du code tient a une paire de parentheses.
Force a ecrire temp = b.multiply(v); v = a.multiply(temp), ton code y gagne en clarete (plus besoin d'evaluer la priorite des operateurs patati patata) et c'est beaucoup plus explicite.
Tu sais que t'appelles telle implementation de la multiplication et dans quel ordre.
If you can find a host for me that has a friendly parrot, I will be very very glad. If you can find someone who has a friendly parrot I can visit with, that will be nice too.
[^] # Re: Utiliser les tty
Posté par pasScott pasForstall . En réponse à la dépêche Patch pour le noyau Linux améliorant l'interactivité entre les applications console et Xorg. Évalué à 2.
Probablement la lisibilite du code.
Ton a == b, en le lisant t'as aucune idee de ce qu'il va appeler . Un exemple?
public class Foo{
private Bar* bar;
private Bar* bar2;
// 500 lignes de code
private void FooBar(){
if(bar == bar2){
}
}
D'une part, tu ne sais pas ici ce que fait ==, a moins d'aller farfouiller les definitions. Ca c'est le probleme de la surcharge d'operateur, t'as un truc qui s'appelle ==, qui est en fait une methode, mais t'as pas la moindre idee de ce que la methode fait parce qu'elle a pas de nom.
Remplace == par a.egaliteDePointeurOuPasCaDepend(b) c'est strictement la meme chose.
D'autre part, supprimes la surcharge de == et paf, t'as pete tout ton code silencieusement. Bon courage pour corriger tout ca.
If you can find a host for me that has a friendly parrot, I will be very very glad. If you can find someone who has a friendly parrot I can visit with, that will be nice too.
[^] # Re: Utiliser les tty
Posté par pasScott pasForstall . En réponse à la dépêche Patch pour le noyau Linux améliorant l'interactivité entre les applications console et Xorg. Évalué à 1.
A part rendre les choses moins explicite et plus dure a lire?
If you can find a host for me that has a friendly parrot, I will be very very glad. If you can find someone who has a friendly parrot I can visit with, that will be nice too.
[^] # Re: Utiliser les tty
Posté par pasScott pasForstall . En réponse à la dépêche Patch pour le noyau Linux améliorant l'interactivité entre les applications console et Xorg. Évalué à -1.
Parce que c'est pas la meme chose.
On va quand meme pas peter la semantique du langage juste parce que vous etes pas capable de comprendre la difference pointeur/valeur ou parce que vous etes trop flemmard pour taper .equals en lieu et place de ==?
Tant qu'on y est, addAll sur List c'est chiant, pourquoi ne pas compiler List.add(List) en List.addAll(List)?
C'est du meme niveau que ce que tu proposes...
C'est nettement plus simple. Quite à devoir implémenter une interface Comparable tout comme on implémente Iterable pour profiter du "foreach".
Oui, c'est sur que si tu supprimes l'egalite de pointeur, tout devient plus simple...
C'est pas complique quand meme.
Il y a l'egalite de valeur. Ca c'est une notion semantique, purement business logic. Tout le monde veut ca.
Il y a l'egalite de pointeur. Celle la, elle est la pour des raisons techniques. Tout le monde veut ca aussi.
Les deux sont fondamentalement different et ignorer la difference entre les deux resultera immanquablement dans d'enormes bugs, quel que soit le langage.
Conclusion:
Il faut donc un moyen de differencier les deux.
Java a choisi de ne s'occuper que de la partie technique, parce que c'est pas au langage de s'occuper de la semantique du code.
Parce qu'ils sont pas trop rat non plus, et que ca ferait chier tout le monde sinon, ils ont introduit hashCode et equals, mais libre au dev' d'implementer l'egalite comme il veut.
If you can find a host for me that has a friendly parrot, I will be very very glad. If you can find someone who has a friendly parrot I can visit with, that will be nice too.
[^] # Re: Utiliser les tty
Posté par pasScott pasForstall . En réponse à la dépêche Patch pour le noyau Linux améliorant l'interactivité entre les applications console et Xorg. Évalué à 3.
La au moins, c'est tres explcite et coherent avec la philosophie objet. == ca sert pour la tambouille technique interne, si tu veux utiliser la semantique objet, tu passes par des methodes.
Derniere chose:
package com.maboite.monprojet;
public class Integer{
// plein de truc super baleze parce qu'on a du faire une classe integer a nous
}
plus loin:
// collapse par tout ide decent
import com.maboite.monprojet;
// un 20aine d'autres import
// 400 lignes de code
public void maSuperMethod(Integer a, Integer b){
if(a == b){
// a ben merde, c'est quoi la? egalite de pointeur ou de valeur?
}
}
If you can find a host for me that has a friendly parrot, I will be very very glad. If you can find someone who has a friendly parrot I can visit with, that will be nice too.
[^] # Re: Utiliser les tty
Posté par pasScott pasForstall . En réponse à la dépêche Patch pour le noyau Linux améliorant l'interactivité entre les applications console et Xorg. Évalué à 2.
Le premier truc qu'apprend un debutant, c'est la difference entre int et Integer.
Le deuxieme, c'est de ne jamais utiliser == sur des objets.
Java a des problemes d'architecture, mais la c'est du pinaillage.
If you can find a host for me that has a friendly parrot, I will be very very glad. If you can find someone who has a friendly parrot I can visit with, that will be nice too.
[^] # Re: Utiliser les tty
Posté par pasScott pasForstall . En réponse à la dépêche Patch pour le noyau Linux améliorant l'interactivité entre les applications console et Xorg. Évalué à 2.
Integer a = new Integer(0);
Integer b = new Integer(42);
Integer c = new Integer(a.intValue() + b.intValue());
On pourrait se demander pourquoi ils n'ont pas ajouter des add/substract etc
Auquel cas on aurait Integer c = a.add(c);
Mon petit doigt me dit que c'est pour des raisons de clarte d'api.
Bref, ca ne change strictement rien a la facon dont les Number etaient manipules avant java5.
Comme les for(Object value : iterable) d'ailleurs.
Fait un
Integer a = null
int b = a + 1;
Ou un
List strings = null;
for(String string : strings){
System.out.println("brezilien");
}
Les deux vont te jeter un beau NPE.
Quand a la surcharge d'operateur, c'est un truc qui est a l'oppose de la philosophie Java (et de n'importe quel langage objet un tant soit peu coherent d'ailleurs).
Java est un langage entreprise.
Ca sert a faire des systemes couillu, crees par des equipes independantes qui ne communiquent pas forcement beaucoup, qui sont la colonne vertebrale d'une boite, qui vont generalement etre ecrit, deploye en prod et rester la pendant 10, 20, 30 ans.
On a un systeme au taff en prod depuis plus de 10 ans. Et il pourrait bien faire 10 ans de plus si le management avait pas decide de l'outsourcer.
Une des raisons de son adoption massive, c'est que le langage est tres simple, et tres explicite.
Tu files une methode Java a n'importe quel mec qui a deja tape du code, il comprendra instantanement ce que le code fait, et sans aucune ambiguite.
Tu peux pas clairement pas dire la meme chose de n'importe quel autre langage complexe, genre c++ ou pire, perl.
Je considere ca comme un prerequis fondamental pour faire du code de qualite. Un code de qualite se lit comme un livre, si faut passer son temps a sauter partout dans le code pour savoir si + n'a pas ete surcharge pour tel objet, mais pas pour tel autre, c'est pas vivable.
Dans une boite ou le systeme est critique et ou les devs peuvent etre parti depuis tres longtemps, ou une ssii ou le mec qui a commence le projet se retrouver parachute expert python 15 jours apres et part ailleurs, c'est tres important, ca permet de passer la patate chaude plus facilement.
Si un petit malin s'amuse a surcharger les operateurs, bon courage pour facilement comprendre ce que fait le code. Et t'ouvres la porte a de potentiels gros problemes de perf ou autres pour les gens qui utilisent tes classes.
Note que de toutes facons, surcharge des operateurs ou pas, ca changera pas grand chose, vu que tous les types de bases sont immutable en Java.
Et meme s'ils ne l'etaient pas, ce sont des objets, et les objets ne s'ajoutent pas entre eux.
Et si tu regardes les implems, les objets ne s'ajoutent pas entre eux, ca n'a aucun sens.
Tu vas me dire qu'on peut ajouter des strings en java, je te repondrais que non, c'est du pur sucre syntaxique la encore.
"toto" + "titi" sera compile en
new StringBuilder("toto").append("titi").toString().
Et c'est pour ca que concatener des chaines dans une boucle, c'est mal, m'voyeeez? Surtout avant java 5 ou il n'y avait que StringBuffer qui est synchronizee, c'est moins grave maintenant.
Et c'est aussi pour ca que passer par des StringBuilder pour concatener 3 chaines, c'est mal, m'voyeez?: ca rend le code moins lisible pour 0 gains.
If you can find a host for me that has a friendly parrot, I will be very very glad. If you can find someone who has a friendly parrot I can visit with, that will be nice too.
[^] # Re: Utiliser les tty
Posté par pasScott pasForstall . En réponse à la dépêche Patch pour le noyau Linux améliorant l'interactivité entre les applications console et Xorg. Évalué à 0.
Question qui fache: j'ai jamais observe ca sous windows pu mac, comment ils font eux?
If you can find a host for me that has a friendly parrot, I will be very very glad. If you can find someone who has a friendly parrot I can visit with, that will be nice too.
[^] # Re: Gain sur un environnement de bureau n'utilisant pas de terminaux ?
Posté par pasScott pasForstall . En réponse à la dépêche Patch pour le noyau Linux améliorant l'interactivité entre les applications console et Xorg. Évalué à -1.
Ca fleure bon le benchmark biaise (invonlontairement, certes).
If you can find a host for me that has a friendly parrot, I will be very very glad. If you can find someone who has a friendly parrot I can visit with, that will be nice too.
[^] # Re: Faites tourner
Posté par pasScott pasForstall . En réponse au journal Windows Phone 7. Évalué à 1.
Ya une palanquee de "machin box" sur le marche netflix ready, en plus des traditionnels ps3, xbox, apple tv, iphone/ipad etc.
Ensuite, ta personne est prete a se payer un pc ou un mac pour acceder a megavideo et en chier pour trouver un film en qualite pourrie, mais n'est pas prete a se payer un pc ou un mac pour avoir un service de qualitay?
If you can find a host for me that has a friendly parrot, I will be very very glad. If you can find someone who has a friendly parrot I can visit with, that will be nice too.
[^] # Re: Perenoel.fr
Posté par pasScott pasForstall . En réponse au journal Payement via un tiers de confiance. Évalué à 0.
If you can find a host for me that has a friendly parrot, I will be very very glad. If you can find someone who has a friendly parrot I can visit with, that will be nice too.
[^] # Re: Faites tourner
Posté par pasScott pasForstall . En réponse au journal Windows Phone 7. Évalué à 1.
La prochaine etape, c'est virer le fil a la patte et trouver un futal avec des poches suffisament grosses pour faire rentrer la bobox.
If you can find a host for me that has a friendly parrot, I will be very very glad. If you can find someone who has a friendly parrot I can visit with, that will be nice too.
[^] # Re: Faites tourner
Posté par pasScott pasForstall . En réponse au journal Windows Phone 7. Évalué à 0.
En pratique, ca marche mal, dixit les mecs de netflix eux meme, la plupart des devices etant non supportes (et ca les fait chier).
If you can find a host for me that has a friendly parrot, I will be very very glad. If you can find someone who has a friendly parrot I can visit with, that will be nice too.
[^] # Re: Faites tourner
Posté par pasScott pasForstall . En réponse au journal Windows Phone 7. Évalué à 1.
J'ai dit qu'android etait a chier ou que sais je?
Je suis juste surpris d'une part d'apprendre qu'il ya des services de streaming haute qualite, tout du moins au niveau du service de netflix, et le tout sans drm, et fait remarquer d'autre part que android/ios/wp7 ne sont pas reserves aux telephones mais entrent aussi dans le salon en force.
[digression]
Croit moi, si netflix pouvait lacher les drms, ils le feraient, ils sont strictement dans la meme situation qu'apple l'etait avec la musique ya 5 ans.
Ca les arrange *pas du tout* ces drm, ca les emmerde eux autant que leurs clients. Le probleme vient des studios.
Ma prediection de madame irma pour le future: les studios vont etre plus dur a faire plier que les maisons de disques.
Netflix les emmerde copieux depuis 2 ans environ (avant, ils faisaient juste mumuse avec les dvds, ca allait). Apple commence a les enerver aussi.
Je suis pas convaincu qu'apple puisse refaire le coup qu'ils ont fait avec le store et faire plier les maisons de disques. Ils manquent de force de frappe: le flop de l'apple tv premiere generation les a relegue au rang d'acteur secondaire de la VOD, netflix s'est engoufre dans la breche et tient maintenant le haut du pave. Apple revient avec l'apple tv2, mais son modele paiement a la demande les fera rester derriere netflix. Surtout que les films sont ridiculement chers.
Pour 3 films apple tv, tu te payes 1 mois de netflix full patate, avec 20 fois plus de contenu.
Netflix a ce pouvoir par contre. Couple a apple qui vends des apple tv2 comment des petits pains, ce sont eux qui vont faire plier l'industrie du cinema.
Les europeens ne connaissent pas du tout, vu que c'est pas disponible, mais ils ont un succes dingue de l'autre cote de la grande piscine. Ils en sont rendu a un point ou les gens partent du principe que tout le monde a un compte netflix, et quand on parle d'un film machin qu'on a vu, on entend quasiment systematiquement "put it in your netflix queue" tres vite.
Et c'est en train de changer ces derniers temps, ca se transforme en "do they have it on instant streaming?"
Et dans le monde technique, "Netflix does it, it can't be bad" vient maintenant de pair avec "Facebook/Google does it".
[/digression]
Maintenant, si tu veux mon avis sur android: c'est une tres bonne chose. Une enorme avancee par rapport a ce que les smartphones autre que l'iphone proposaient jusqu'a son arrive.
Ca va forcer apple a continuer a faire du bon boulot sur l'iphone.
Ca a aussi force MS a se mettre a niveau.
En clair, android ramene la concurrence au niveau d'ios. C'est un peu le firefox des telephones.
Ca va fragmenter le marche des smartphones (ie ne plus avoir apple en maitre supreme du marche), ce qui par effet de bord va forcer les editeurs de contenu a faire de vraies version mobiles de leur sites plutot que de chier une appli iphone pas forcement bien branlee. En ce sens, c'est un peu le webkit des telephones.
Ca permet au gens qui ne veulent pas d'iphone pour x raisons (att, haissent profondement itunes ou apple ou tout simplement n'aiment pas le telephone) d'avoir un smartphone de qualite, et pas forcement au prix de l'iphone.
Google se fout de la gueule du monde en jouant la carte de l'ouverture vu qu'ils ont donne les cles des verrous aux operateurs qui ne vont pas se priver pour s'en servir, mais ca c'est un autre probleme - et surtout, ca n'affecte pas la qualite des telephones android. Disons qu'ils sont tres hypocrite.
Ils fournissent android avec un enorme cadenas, ouvert certes, donnent la cle aux operateurs et disent "si tu met la cle dans le cadenas et la tourne, ben je regarderais de l'autre cote de toutes facons".
If you can find a host for me that has a friendly parrot, I will be very very glad. If you can find someone who has a friendly parrot I can visit with, that will be nice too.
[^] # Re: Faites tourner
Posté par pasScott pasForstall . En réponse au journal Windows Phone 7. Évalué à 1.
Reste a voir pour les autres constructeurs qui feront une tv box avec android.
Mon point etait surtout de faire remarquer que le 1080p 5.1 est un cas d'utilisation tres pertinent de ce genre d'os. Sur un telephone, c'est sur que c'est pas primordial, mais on commence a trouver ces os embarques dans la chaine multimedia, et la par contre c'est un must have.
If you can find a host for me that has a friendly parrot, I will be very very glad. If you can find someone who has a friendly parrot I can visit with, that will be nice too.
[^] # Re: Faites tourner
Posté par pasScott pasForstall . En réponse au journal Windows Phone 7. Évalué à 2.
Tes reseaux de contrefacons a la qualite pourrie (xvid+mp3 pour le contenu SD) et a la recherche extremement difficile, avec moulte pubs de pr0n, scams et autres...
On passera sur l'integration ps3/apple tv/autre.
Quand a la legalite... Hum... comment dire?
If you can find a host for me that has a friendly parrot, I will be very very glad. If you can find someone who has a friendly parrot I can visit with, that will be nice too.
[^] # Re: Faites tourner
Posté par pasScott pasForstall . En réponse au journal Windows Phone 7. Évalué à 2.
If you can find a host for me that has a friendly parrot, I will be very very glad. If you can find someone who has a friendly parrot I can visit with, that will be nice too.
[^] # Re: Faites tourner
Posté par pasScott pasForstall . En réponse au journal Windows Phone 7. Évalué à 1.
If you can find a host for me that has a friendly parrot, I will be very very glad. If you can find someone who has a friendly parrot I can visit with, that will be nice too.