Programmation » Scala, closures, scoping etc.
Catégorie:  
   
Scala, closures, scoping etc.
Publié le 07/12/2010 @ 12:25:13,
Par philfr
Prochaine séance: SCALA


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

Dernière édition: 08/12/2010 @ 14:41:51
   
Brussels Java User Group
Publié le 07/12/2010 @ 13:11:18,
Par rfr


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.

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

Dernière édition: 08/12/2010 @ 14:40:56
   
Brussels Java User Group
Publié le 07/12/2010 @ 17:20:56,
Par didix
Dans Scala c'eût pû être drôle un topic troll :oh:
:neowen:

Dernière édition: 08/12/2010 @ 14:40:56
   
Brussels Java User Group
Publié le 07/12/2010 @ 20:02:48,
Par rfr
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).

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

Dernière édition: 08/12/2010 @ 14:40:56
   
Brussels Java User Group
Publié le 08/12/2010 @ 08:04:29,
Par gizmo


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.

Dernière édition: 08/12/2010 @ 14:40:56
Concept vivant.
   
Brussels Java User Group
Publié le 08/12/2010 @ 08:10:17,
Par rfr


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.

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

Dernière édition: 08/12/2010 @ 14:40:56
Concept vivant.
   
Brussels Java User Group
Publié le 08/12/2010 @ 12:16:11,
Par philfr
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""

Dernière édition: 08/12/2010 @ 14:40:56
   
Brussels Java User Group
Publié le 08/12/2010 @ 13:29:22,
Par rfr
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 ...

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

Dernière édition: 08/12/2010 @ 14:40:56
Se tromper est humain ; Vraiment foutre la merde necessite le mot de passe de root. :petrus:
   
Brussels Java User Group
Publié le 08/12/2010 @ 14:37:31,
Par philfr
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

Dernière édition: 08/12/2010 @ 14:40:56
   
Scala, closures, scoping etc.
Publié le 08/12/2010 @ 15:00:26,
Par rfr
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:
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 gizmo
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.
Concept vivant.
   
Scala, closures, scoping etc.
Publié le 08/12/2010 @ 18:44:35,
Par philfr
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: ...
   
Scala, closures, scoping etc.
Publié le 08/12/2010 @ 18:52:58,
Par zion

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


Oh benh non, continue, vous étiez drôle à lire :ddr555:
Je suis le Roy :ocube:
   
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 :smile:
   
Scala, closures, scoping etc.
Publié le 08/12/2010 @ 22:13:11,
Par rfr


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:
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 blietaer
Mais, bon, je ne veux pas rentrer dans un topic troll...

What else? :zoubi:
Et au besoin s'arrêter.
Répondre - Catégorie:  
Informaticien.be - © 2002-2024 AkretioSPRL  - Generated via Kelare
The Akretio Network: Akretio - Freedelity - KelCommerce - Votre publicité sur informaticien.be ?