Poster une réponse à un sujet: Scala, closures, scoping etc.
Attention, ce sujet est un sujet ancien (4993 jours sans réponse)
sb
Ce code me rappelle quelque chose du genre:
</snip>
Verbeux, certes ... mais clean et sans obligation d'évaluation 'at runtime'.
Vive l'orienté objet ...
</snip>
Verbeux, certes ... mais clean et sans obligation d'évaluation 'at runtime'.
Vive l'orienté objet ...
Oui et l'OO est encore meilleur quand il embrasse des techniques de programmation fonctionnelle comme le GC (LISP) et le polymorphisme paramétrique (ML). L'étape suivante est de passer à une syntaxe sympa pour les closures (reportées au JDK 8 d'après les dernières nouvelles) et l'inférence de type (ML) en Java. Sans ça le mieux qu'on puisse faire ressemblerait à http://functionaljava.org/ en passant par des classes anonymes pour les closures mais tu atteins vite les limites de lisibilité quand les types deviennent plus sophistiqués.
Scala est une plateforme idéale pour les curieux qui désirent apprendre comment s'appuyer sur ces techniques pour faire de la programmation déclarative p. ex. en partant de bases propres. Voici un petit exemple de session avec l'interpréteur Scala.
scala> List(1, 2) map (_ + 1)
res0: List[Int] = List(2, 3)
scala> List("World", "Universe") map ("Hello " + _)
res1: List[java.lang.String] = List(Hello World, Hello Universe)
scala> def hello(s:Any) = "Hello " + s.toString
hello: (s: String)java.lang.String
scala> List("World", "Universe") map hello
res2: List[java.lang.String] = List(Hello World, Hello Universe)
scala> List(1, 2, 3, 4) filter (_ % 2 == 0) map hello
res3: List[java.lang.String] = List(Hello 2, Hello 4)
Pour ceux que ça intéresse, il y a une présentation sur Scala demain soir à l'ULB.
http://www.brussels-jug.be/wiki/doku.php?id=events:2010_12_session2.
Sebastien
blietaer
rfr
*Phiew*
Si on peut plus s'amuser
![:oh: :oh:](images/smileys/oh.gif)
Plus sérieusement, merci pour les invitations, ça doit être très intéressant mais un peu loin pour moi
![:wink: :wink:](images/smileys/wink.gif)
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
![:smile: :smile:](images/smileys/smile.gif)
zion
Oh benh non, continue, vous étiez drôle à lire
![:ddr555: :ddr555:](images/smileys/ddr555.gif)
philfr
tout le monde est libre d'être un bon programmeur ou pas
![:tongue: :tongue:](images/smileys/tongue.gif)
Sinon, je sais ce qu'est le lexical scoping, merci
![:oh: :oh:](images/smileys/oh.gif)
Bon, ben je sens que je vais vous laisser
![:salutation: :salutation:](images/smileys/salutation.gif)
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: :oh:](images/smileys/oh.gif)
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.
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
)
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
![:ddr555: :ddr555:](images/smileys/ddr555.gif)
Mais dans le message de philfr, je note de nouveaux éléments intéressants donc je réponds
![:oh: :oh:](images/smileys/oh.gif)
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: :ddr555:](images/smileys/ddr555.gif)
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: :tongue:](images/smileys/tongue.gif)
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
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
Dr_Dan
Quel 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
![:ddr555: :ddr555:](images/smileys/ddr555.gif)
Ca va se terminer en pugilat d'ingénieurs et Mango va se faire bannir du forum pour incitation à la haine
![:666: :666:](images/smileys/666.gif)
![:neowen: :neowen:](images/smileys/neowen.gif)