Programmation » Scala, closures, scoping etc.
Scala, closures, scoping etc.
Publié le 07/12/2010 @ 12:25:13,
Par philfrProchaine séance: SCALA
Encore un langage qu'il faut que j'essaie...
Allez hop, sur ma TODO de 2011
Dernière édition: 08/12/2010 @ 14:41:51
Brussels Java User Group
Publié le 07/12/2010 @ 13:11:18,
Par rfrJe me demande d'où vient l'impulsion mais pourquoi les langages du 21ème siècles doivent-ils ressembler à du script pour avoir le droit de cité?
Ok, java est verbeux, mais avec un bon editeur et du code assist, on peut aller très vite. Et le programme est toujours agréable à lire et facile à comprendre pour quasi n'importe qui ...
Ici on ajoute encore des tas de concepts "raccourcis" mais oh combien inutile parce qu'ils ne facilitent la vie des des aficionados du langage?
Ils y ont même introduit la surcharge d'opérateur ... mon dieu, au secours!!!! On va encore voir des programmeurs additionner des poutres avec des briques.
Dernière édition: 08/12/2010 @ 14:40:56
To die is a time consuming activity, it often takes a lifetime (but some are faster than others ... though)
Brussels Java User Group
Publié le 07/12/2010 @ 17:15:56,
Par philfrSans closures, pas de bon framework asynchrone avec callbacks en Java...
Sauf peut-être avec les récentes extensions à Java que je n'ai pas vraiment suivies.
Mais la programmation fonctionnelle n'est ici ni un raccourci, ni inutile.
Mais, bon, je ne veux pas rentrer dans un topic troll...
Dernière édition: 08/12/2010 @ 14:40:56
Sauf peut-être avec les récentes extensions à Java que je n'ai pas vraiment suivies.
Mais la programmation fonctionnelle n'est ici ni un raccourci, ni inutile.
Mais, bon, je ne veux pas rentrer dans un topic troll...
Dernière édition: 08/12/2010 @ 14:40:56
Brussels Java User Group
Publié le 07/12/2010 @ 17:20:56,
Par didixDans Scala c'eût pû être drôle un topic troll
Dernière édition: 08/12/2010 @ 14:40:56
Dernière édition: 08/12/2010 @ 14:40:56
Brussels Java User Group
Publié le 07/12/2010 @ 20:02:48,
Par rfrSans closures, pas de bon framework asynchrone avec callbacks en Java...
Sauf peut-être avec les récentes extensions à Java que je n'ai pas vraiment suivies.
Mais la programmation fonctionnelle n'est ici ni un raccourci, ni inutile.
Mais, bon, je ne veux pas rentrer dans un topic troll...
Sauf peut-être avec les récentes extensions à Java que je n'ai pas vraiment suivies.
Mais la programmation fonctionnelle n'est ici ni un raccourci, ni inutile.
Mais, bon, je ne veux pas rentrer dans un topic troll...
http://en.wikipedia.org/wiki/Closure_(computer_science)#Java
Et ce n'est pas un des derniers "enhancement" du langage, les "anonymous classes" existent depuis des lustres (Swing en a toujours eu besoin).
Dernière édition: 08/12/2010 @ 14:40:56
To die is a time consuming activity, it often takes a lifetime (but some are faster than others ... though)
Brussels Java User Group
Publié le 07/12/2010 @ 21:43:25,
Par philfrrfr> oué, mais justement c'est horrible à utiliser, rien à voir avec des vraies closures, genre "bound methods" en Python, ou même un simple pointeur de fonction en C.
Mais j'ai dit que je voulais pas troller, tu me provoques ?
Dernière édition: 08/12/2010 @ 14:40:56
Mais j'ai dit que je voulais pas troller, tu me provoques ?
Dernière édition: 08/12/2010 @ 14:40:56
Brussels Java User Group
Publié le 08/12/2010 @ 08:04:29,
Par gizmohttp://en.wikipedia.org/wiki/Closure_(computer_science)#Java
Et ce n'est pas un des derniers "enhancement" du langage, les "anonymous classes" existent depuis des lustres (Swing en a toujours eu besoin).
Les classes annonymes sont très loind d'être des closures vu qu'elles demandent que toute variable hors de leur scope soit final.
Dernière édition: 08/12/2010 @ 14:40:56
Concept vivant.
Brussels Java User Group
Publié le 08/12/2010 @ 08:10:17,
Par rfrLes classes annonymes sont très loind d'être des closures vu qu'elles demandent que toute variable hors de leur scope soit final.
Absolument pas, le variables locales à la méthode oui, mais pas les membres de la classe qui définit la méthode.
Dernière édition: 08/12/2010 @ 14:40:56
To die is a time consuming activity, it often takes a lifetime (but some are faster than others ... though)
Brussels Java User Group
Publié le 08/12/2010 @ 09:13:56,
Par gizmoOui, mais les membres de la classe, on s'en fout. Ce qui est interessant, c'est que la closure puisse, au besoin, reagir en fonction de son environnement.
Comme ca, ca permet de faire de choses comme:
Et donc, on peut passer la closure a d'autres objects, tant qu'ils respectent le contrat (avoir une variable "to"), ca fonctionnera.
Dernière édition: 08/12/2010 @ 14:40:56
Comme ca, ca permet de faire de choses comme:
- def to = "world";
- def closure = {println "hello " + to};
- closure(); // affiche "hello world"
- to = "univers";
- closue(); // affiche "hello univers""
Et donc, on peut passer la closure a d'autres objects, tant qu'ils respectent le contrat (avoir une variable "to"), ca fonctionnera.
Dernière édition: 08/12/2010 @ 14:40:56
Concept vivant.
Brussels Java User Group
Publié le 08/12/2010 @ 12:16:11,
Par philfrgizmo> ce que tu décris est du dynamic scoping, c'est primitif et pas gérable dans du code digne de ce nom.
Une vraie closure avec lexical scoping ressemble plutôt à ceci:
Dernière édition: 08/12/2010 @ 14:40:56
Une vraie closure avec lexical scoping ressemble plutôt à ceci:
- def closure(to):
- def f(greeting):
- print greeting + " " + to
- return f
- c1=closure("world")
- c2=closure("universe")
- c1("Hello") # affiche "Hello world"
- c2("Hello") # affiche "Hello universe""
Dernière édition: 08/12/2010 @ 14:40:56
Brussels Java User Group
Publié le 08/12/2010 @ 13:29:22,
Par rfrCe code me rappelle quelque chose du genre:
public class Closure {
String to;
public Closure(String to) {
this.to = to;
}
public void do (String greeting) {
System.out.println(gretting+" "+to);
}
}
c1 = new Closure("World");
c2 = new Closure("Universe");
c1.do("Hello");
c2.do("Hello");
Verbeux, certes ... mais clean et sans obligation d'évaluation 'at runtime'.
Vive l'orienté objet ...
Dernière édition: 08/12/2010 @ 14:40:56
public class Closure {
String to;
public Closure(String to) {
this.to = to;
}
public void do (String greeting) {
System.out.println(gretting+" "+to);
}
}
c1 = new Closure("World");
c2 = new Closure("Universe");
c1.do("Hello");
c2.do("Hello");
Verbeux, certes ... mais clean et sans obligation d'évaluation 'at runtime'.
Vive l'orienté objet ...
Dernière édition: 08/12/2010 @ 14:40:56
To die is a time consuming activity, it often takes a lifetime (but some are faster than others ... though)
Brussels Java User Group
Publié le 08/12/2010 @ 13:35:40,
Par Dr_DanQuel beau pourrissage de topic
Ca va se terminer en pugilat d'ingénieurs et Mango va se faire bannir du forum pour incitation à la haine
Dernière édition: 08/12/2010 @ 14:40:56
Ca va se terminer en pugilat d'ingénieurs et Mango va se faire bannir du forum pour incitation à la haine
Dernière édition: 08/12/2010 @ 14:40:56
Se tromper est humain ; Vraiment foutre la merde necessite le mot de passe de root.
Brussels Java User Group
Publié le 08/12/2010 @ 14:37:31,
Par philfrOn peut aussi splitter le topic...
Mais plutôt que d'argumenter encore, je suggère à rfr de lire les 3 premières réponses au topic suivant:
Does Java need closures?
Et pour revenir à l'origine de la discussion, à mon avis, tout bon programmeur se doit d'apprendre régulièrement un nouveau langage. Car comme l'ont dit en chœur Lao-Tseu, Confucius, et Philippe Geluck (*), "Si tu n'as qu'un marteau pour seul outil, tout problème ressemblera à un clou".
(*)Mais je ne suis pas sûr de mes sources
Dernière édition: 08/12/2010 @ 14:40:56
Mais plutôt que d'argumenter encore, je suggère à rfr de lire les 3 premières réponses au topic suivant:
Does Java need closures?
Et pour revenir à l'origine de la discussion, à mon avis, tout bon programmeur se doit d'apprendre régulièrement un nouveau langage. Car comme l'ont dit en chœur Lao-Tseu, Confucius, et Philippe Geluck (*), "Si tu n'as qu'un marteau pour seul outil, tout problème ressemblera à un clou".
(*)Mais je ne suis pas sûr de mes sources
Dernière édition: 08/12/2010 @ 14:40:56
Scala, closures, scoping etc.
Publié le 08/12/2010 @ 15:00:26,
Par rfrDr_Dan> ma tecnhnique anti-trollage est la suivante: je ne réagis qu'une fois à un nouvel argument. Une fois que ce que j'avais envie de dire est dit, je ne répond plus. Donc je crois ne plus troller (enfin, j'essaie de m'y tenir )
Mais dans le message de philfr, je note de nouveaux éléments intéressants donc je réponds
1) Je ne suis pas un bon programmer, je suis une personne pragmatique avec un petit cursus en économie. Depuis, Pareto est mon Maître spirituel.
2) Un jour un homme m'a dit, alors qu'on dissertait sur le fait de croire en Dieu ou pas:
"Tu sais, Einstein croyait en Dieu".
Je dois avouer ... que je n'ai toujours pas compris où il voulait en venir. Mais je crois aussi que depuis mes problèmes d'autoritarisme avec mon papounet, j'ai du mal avec les arguments d'autorités supérieures
Parce que bon, faut l'admettre, j'ai juste donné mon avis. Moi j'aime le Keep It Simple & Stupid, tout le monde est libre d'être un bon programmeur ou pas
Mais dans le message de philfr, je note de nouveaux éléments intéressants donc je réponds
1) Je ne suis pas un bon programmer, je suis une personne pragmatique avec un petit cursus en économie. Depuis, Pareto est mon Maître spirituel.
2) Un jour un homme m'a dit, alors qu'on dissertait sur le fait de croire en Dieu ou pas:
"Tu sais, Einstein croyait en Dieu".
Je dois avouer ... que je n'ai toujours pas compris où il voulait en venir. Mais je crois aussi que depuis mes problèmes d'autoritarisme avec mon papounet, j'ai du mal avec les arguments d'autorités supérieures
Parce que bon, faut l'admettre, j'ai juste donné mon avis. Moi j'aime le Keep It Simple & Stupid, tout le monde est libre d'être un bon programmeur ou pas
To die is a time consuming activity, it often takes a lifetime (but some are faster than others ... though)
Scala, closures, scoping etc.
Publié le 08/12/2010 @ 16:12:40,
Par gizmogizmo> ce que tu décris est du dynamic scoping, c'est primitif et pas gérable dans du code digne de ce nom.
Oui, c'est du dynamic scoping, et ne je ne vois pas en quoi c'est primitif et pas gerable. Dans ce cas, les mixin serait aussi a bannir si on suit se raisonnement. Pourtant c'est utilise avec succes dans pas mal de gros projets.
Sinon, je sais ce qu'est le lexical scoping, merci
rfr > ton exemple marche mais chacune de tes "closures" ont leur etat propre. Pas possible de maintenir de faire passer de l'information d'un appel a l'autre.
Le point n'est pas de savoir si tu vas savoir ou non emuler tel ou tel concept dans un langage turing complete, la reponse sera toujours oui. Le fait est que cela peut devenir ultra verbeux et peu lisible. Le fait est que de disposer de plus de concepts, ou mieux, du plusieurs paradigmes au sein d'un meme langage permet de choisir pour chacun des problemes la formulation qui sied le mieux.
L'OO n'est qu'une modelisation tres contrainte du monde. Se limiter a cela c'est tres reducteur.
Concept vivant.
Scala, closures, scoping etc.
Publié le 08/12/2010 @ 18:44:35,
Par philfrtout le monde est libre d'être un bon programmeur ou pas
Sinon, je sais ce qu'est le lexical scoping, merci
Bon, ben je sens que je vais vous laisser ...
Scala, closures, scoping etc.
Publié le 08/12/2010 @ 18:52:58,
Par zionBon, ben je sens que je vais vous laisser ...
Oh benh non, continue, vous étiez drôle à lire
Je suis le Roy
Scala, closures, scoping etc.
Publié le 08/12/2010 @ 22:00:17,
Par Mango*Phiew*
Mais je vous invite à passer à la séance du Brussels JUG (et le 3ème mi-temps après) et de discuter de cela de vive voix
Mais je vous invite à passer à la séance du Brussels JUG (et le 3ème mi-temps après) et de discuter de cela de vive voix
Scala, closures, scoping etc.
Publié le 08/12/2010 @ 22:13:11,
Par rfr*Phiew*
Si on peut plus s'amuser
Plus sérieusement, merci pour les invitations, ça doit être très intéressant mais un peu loin pour moi
To die is a time consuming activity, it often takes a lifetime (but some are faster than others ... though)
Scala, closures, scoping etc.
Publié le 09/12/2010 @ 09:20:30,
Par blietaerMais, bon, je ne veux pas rentrer dans un topic troll...
What else?
Et au besoin s'arrêter.