Sujet: Scala, closures, scoping etc.
07/12/2010 @ 12:25:13: philfr: Scala, closures, scoping etc.
Prochaine séance: SCALA


Encore un langage qu'il faut que j'essaie...
Allez hop, sur ma TODO de 2011 :oh:
07/12/2010 @ 13:11:18: rfr: Brussels Java User Group


Encore un langage qu'il faut que j'essaie...
Allez hop, sur ma TODO de 2011 :oh:



Je 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.
07/12/2010 @ 17:15:56: philfr: Brussels Java User Group
Sans 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...
07/12/2010 @ 17:20:56: didix: Brussels Java User Group
Dans Scala c'eût pû être drôle un topic troll :oh:
:neowen:
07/12/2010 @ 20:02:48: rfr: Brussels Java User Group
Sans 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...


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).
07/12/2010 @ 21:43:25: philfr: Brussels Java User Group
rfr> 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 ? :grin:
08/12/2010 @ 08:04:29: gizmo: Brussels Java User Group


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).


Les classes annonymes sont très loind d'être des closures vu qu'elles demandent que toute variable hors de leur scope soit final.
08/12/2010 @ 08:10:17: rfr: Brussels Java User Group


Les 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.
08/12/2010 @ 09:13:56: gizmo: Brussels Java User Group
Oui, 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:

  1. def to = "world"
  2. def closure = {println "hello " + to}; 
  3. closure(); // affiche "hello world" 
  4. to = "univers"
  5. 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.
08/12/2010 @ 12:16:11: philfr: Brussels Java User Group
gizmo> 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:
  1. def closure(to): 
  2.     def f(greeting): 
  3.         print greeting + " " + to 
  4.     return f 
  5. c1=closure("world"
  6. c2=closure("universe"
  7. c1("Hello"# affiche "Hello world" 
  8. c2("Hello"# affiche "Hello universe""
08/12/2010 @ 13:29:22: rfr: Brussels Java User Group
Ce 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 ...
08/12/2010 @ 13:35:40: Dr_Dan: Brussels Java User Group
Quel beau pourrissage de topic :ddr555:

Ca va se terminer en pugilat d'ingénieurs et Mango va se faire bannir du forum pour incitation à la haine :666:
:neowen:
08/12/2010 @ 14:37:31: philfr: Brussels Java User Group
On 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
08/12/2010 @ 15:00:26: rfr: Scala, closures, scoping etc.
Dr_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 :ddr555: )

Mais dans le message de philfr, je note de nouveaux éléments intéressants donc je réponds :oh:

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 :ddr555:

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 :tongue:
08/12/2010 @ 16:12:40: gizmo: Scala, closures, scoping etc.
gizmo> 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 :oh:

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.
08/12/2010 @ 18:44:35: philfr: Scala, closures, scoping etc.
tout le monde est libre d'être un bon programmeur ou pas :tongue:

Sinon, je sais ce qu'est le lexical scoping, merci :oh:


Bon, ben je sens que je vais vous laisser :salutation: ...
08/12/2010 @ 18:52:58: zion: Scala, closures, scoping etc.

Bon, ben je sens que je vais vous laisser :salutation: ...


Oh benh non, continue, vous étiez drôle à lire :ddr555:
08/12/2010 @ 22:00:17: Mango: Scala, closures, scoping etc.
*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 :smile:
08/12/2010 @ 22:13:11: rfr: Scala, closures, scoping etc.


Si on peut plus s'amuser :oh:

Plus sérieusement, merci pour les invitations, ça doit être très intéressant mais un peu loin pour moi :wink:
09/12/2010 @ 09:20:30: blietaer: Scala, closures, scoping etc.
Mais, bon, je ne veux pas rentrer dans un topic troll...

What else? :zoubi:
Retour