JeuWeb - Crée ton jeu par navigateur
Mon apprentissage de Erlang - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Mon apprentissage de Erlang (/showthread.php?tid=5664)

Pages : 1 2 3 4


RE: Mon apprentissage de Erlang - niahoo - 26-08-2011

Si vous voulez tester le langage en direct sans l'installer vous pouvez jetter un oeil à http://www.tryerlang.org/


RE: Mon apprentissage de Erlang - srm - 26-08-2011

Et en exclusivité mondiale, la version Scala en objet http://pastie.org/2434901 Big Grin

Sinon, j'ai vraiment du mal à accrocher au 100% fonctionnel, j'ai l'impression que c'est un type de programmation qui ne m'intéresse pas, je suis seul dans ce cas ?


RE: Mon apprentissage de Erlang - niahoo - 26-08-2011

non tu as donné une version de ce code erlang ! :
Code :
-module(geometry).
-export([ area/1 ]).

area(Shape) ->
    case Shape of
        { rectangle, Width, Height } -> Width * Height;
        { circle, Radius } -> Radius * Radius * 3.14
    end.

Sinon ben la programmation fonctionnelle je trouve que ça a que du bon. J'aime pas vraiment l'objet, je ne sais jamais dans quelle classe mettre telle ou telle fonctionnalité.

edit : ta version est en fait intermédiare, non ?


RE: Mon apprentissage de Erlang - Ter Rowan - 27-08-2011

(26-08-2011, 10:06 PM)oxman a écrit : Sinon, j'ai vraiment du mal à accrocher au 100% fonctionnel, j'ai l'impression que c'est un type de programmation qui ne m'intéresse pas, je suis seul dans ce cas ?
pareil, c'est un autre mode de pensée, je suis plus objet perso



RE: Mon apprentissage de Erlang - srm - 27-08-2011

C'est une version objet car je ne peux pas faire une version fonctionnelle de ce type, le Scala ne permet pas de faire des surcharges de ce type sur une fonction top niveau.

Bah l'objet tu peux toujours penser un peu comme tu veux la chose.
Par exemple dans le code que j'ai donné plus haut c'est vraiment, une approche différente de l'objet par rapport à ce que je fais habituellement.

D'habitude tu demandes à l'objet son périmètre.
Dans l'exemple ci-dessus tu as une classe qui sait comment calculer l'aire des objets donc tu lui donnes un objet et elle te donne l'aire.

C'est une approche différente que je trouve très intéressante Smile




RE: Mon apprentissage de Erlang - niahoo - 27-08-2011

Oui enfin là tu parles plus d'organisation du code que vraiment de logique objet. Comparer erlang sur l'aire d'un rectangle avec PHP ou scala ça permet juste de voir qu'on peut surcharger des fonctions dans un module, comme on peut le faire dans une classe en C++.

Mais ça ne permet pas encore de voir quels sont les avantages de la programmation fonctionnelle.

J'espère que Sephi vous donnera d'autres exemples.


RE: Mon apprentissage de Erlang - srm - 27-08-2011

Je lui ai fait remarquer justement que l'exemple n'était pas pertinent Smile
Et de toute façon, pour le type de programmation que l'on fait, site web, jeu etc, la programmation fonctionnelle a moins d'avantage que la programmation objet, enfin jusqu'à preuve du contraire.


RE: Mon apprentissage de Erlang - niahoo - 27-08-2011

ce serait interessant d'en parler sur un topic dédié mais avant d'essayer de te prouver le contraire, il faudrait que tu me prouves en quoi l'inverse est vrai.


RE: Mon apprentissage de Erlang - Sephi-Chan - 27-08-2011

(27-08-2011, 06:29 PM)oxman a écrit : Je lui ai fait remarquer justement que l'exemple n'était pas pertinent Smile

Je ne comprends pas tes remarques sur la pertinence : je montre simplement la déclaration d'une fonction qui comprend différents patterns.
C'est juste une découverte du langage et de ces mécanismes. Vraiment pas de quoi se taper le cul par terre.
Et ce serait pareil pour tous les langages : la façon d'y définir une fonction n'est pas révélatrice de toute sa puissance.

Et au vu de ton exemple — qui utilise l'abstraction et l'héritage — on voit que le pattern matching d'Erlang apporte une réponse plus simple à ce problème.


RE: Mon apprentissage de Erlang - srm - 27-08-2011

Tiens j'ai trouvé une façon plus proche de la version Erlang.


def area(g: Any) = g match {
case ("rectangle", w: Double, h: Double) => w * h
case ("circle", r: Double) => r * r * 3.14
}


scala> area("circle", 23.13)
res27: Double = 1679.890266

scala> area("rectangle", 23.12, 30.3)
res28: Double = 700.5360000000001