Comments on: Le débat sur la programmation fonctionnelle en Python http://sametmax.com/le-debat-sur-la-programmation-fonctionnelle-en-python/ Du code, du cul Sat, 07 Nov 2015 11:08:18 +0000 hourly 1 http://wordpress.org/?v=4.1 By: Sam http://sametmax.com/le-debat-sur-la-programmation-fonctionnelle-en-python/#comment-160495 Sat, 09 May 2015 19:57:19 +0000 http://sametmax.com/?p=16141#comment-160495 Le débat a repris sur python-ideas, avec la suggestion d’utiliser @ pour faire de la composition de fonction : http://code.activestate.com/lists/python-ideas/33320/

Ca ne passera jamais sous cette forme, heureusement. Mais pour ceux qui veulent s’y essayer, c’est facile à implémenter:

class pipe:
    def __init__(self, data):
        self.data = data
    def __rshift__(self, other):
        return piped(self, other)
    def __iter__(self):
        return iter(self.data)
 
class piped(pipe):
    def __init__(self, data, process):
        self.data = data
        self.process = process
    def __iter__(self):
        for x in self.data:
            yield self.process(x)
 
res = pipe(["1", "2", "3"]) >> int >> (lambda x: x * 2) >> (lambda x: "#%s" % x)
for x in res:
    print(x)

Perso, quand je vois ce genre de code, je pleure. Tout devient plus dur à debugger : pdb, la stack trace, les prints, tu peux tout te mettre au cul.

]]>
By: Sam http://sametmax.com/le-debat-sur-la-programmation-fonctionnelle-en-python/#comment-160464 Fri, 08 May 2015 19:32:27 +0000 http://sametmax.com/?p=16141#comment-160464 Je pense que si on a un background de maths et qu’on fait de l’algo, Haskell doit effectivement être très parlant, son expressivité étant optimisé pour ça.

]]>
By: Noir http://sametmax.com/le-debat-sur-la-programmation-fonctionnelle-en-python/#comment-160455 Fri, 08 May 2015 11:31:19 +0000 http://sametmax.com/?p=16141#comment-160455 @Sam : hum alors… Je ne prononcerai pas sur la “charge cognitive” du japonais parce que je n’y connais rien (à la charge cognitive, pas au japonais), mais pour l’argument sur les stéréotypes… On m’a appris quand j’étais au lycée que la commedia dell’arte était bien connue pour ses personnages volontairement stéréotypés, idem en France avec le théâtre de Molière, ou même dans certaines pièces de la Grèce antique (arrêtez-moi si je dis de la merde, mes cours de français commencent un peu à dater). Pourtant l’italien et le grec (et le japonais si on enlève les caractères chinois), pour les rudiments que j’en ai c’est nettement plus facile à apprendre et à lire que le français. En bref, à mon sens, les onomatopées et les stéréotypes ce ne sont corrélées à la difficulté de la langue sous-jacente.

Après je ne me positionne pas sur les la prolongation aux langages de prog, comme le dit Eric je trouve ça très subjectif; le sens de codes en Haskell/Ocaml m’apparaissent beaucoup plus clairement que ceux en C ou même en Python (no joke), mais j’ai bien vu que masse de gens qui ont publié ici ne sont pas de mon avis.

]]>
By: Sam http://sametmax.com/le-debat-sur-la-programmation-fonctionnelle-en-python/#comment-160452 Fri, 08 May 2015 09:14:51 +0000 http://sametmax.com/?p=16141#comment-160452

@dineptus Bien sur qu’il faut une formation specifique, tout autant que pour lire du code python.

J’ai enseigné le PHP, le Java, le Python et le Javascript. J’ai vu enseigné le VM, le lisp, l’erlang et le C. Le temps et l’effort de la formation est toujours bien plus faible en Python.

Est ce que ca veut dire que le japonais a une charge cognitive plus forte? Je ne pense pas, les japonais lisent aussi vite et sans efforts particuliers. La charge est juste repartie differement.

Oui, la charge cognitive est plus importante en japonais.

Ce n’est pas un hasard si les japonais favorisent les personnages très stéréotypés, les expressions exagérées et les onomatopées dans les arts. Cela donne un contexte important pour la compréhension d’un message.

Apres, je comprends mal cette peur de la recursion,

Prend un sociologue, et apprends lui la programmation. Et tu comprendras.

Après, je ne retire en aucun cas les mérites des mécanismes des langages que tu cites. Je dis simplement qu’ils se font au prix d’autres qualités, et que souvent, je donne la priorité à ces dernières. Et Guido aussi.

]]>
By: Eric http://sametmax.com/le-debat-sur-la-programmation-fonctionnelle-en-python/#comment-160447 Fri, 08 May 2015 08:02:08 +0000 http://sametmax.com/?p=16141#comment-160447

Bravo, en un exemple tu viens de me faire passer l’envie de toucher à ce langage, c’est complètement illisible le deuxième exemple ! Il faut avoir une formation spécifique pour comprendre ce machin.

@dineptus Bien sur qu’il faut une formation specifique, tout autant que pour lire du code python.

Les langages fonctionnels encourages un style où les instructions sont compressées et chaînées, où il y a moins de mot clés, et plus de symbole. Cela augmente ce qu’on appelle “la charge cognitive”, c’est à dire le nombre de cycle cpu que le cerveau doit consacrer, non pas à la tache de comprendre le sens du code, mais à décortiquer la structure.

@Sam “La charge cognitive” est une notion tres relative.

Si l’on compare par exemple l’anglais et le japonais:

  • 26 lettres en anglais contre environ 2000 caracteres en japonais

  • des mots espaces en anglais, aucun espace en japonais

Est ce que ca veut dire que le japonais a une charge cognitive plus forte? Je ne pense pas, les japonais lisent aussi vite et sans efforts particuliers. La charge est juste repartie differement.

Pour les langages fonctionnels je pense que c’est un peu la meme idee, c’est juste une facon differente d’apprehender le code.

Apres, je comprends mal cette peur de la recursion, si la fonction est pure elle peut etre testee independament (et prouvee comme logiquement correcte avec un peu d’effort). Et la plupart du temps une solution basee sur fold ou map suffisent.

Pour apporter deux trois choses au debats tests / typage:

Elixir c’est pas mal et ca apporte de vrais choses en plus a erlang comme une bonne gestion de l’unicode et mix.

Dans un autre genre, il y a Elm qui est base sur haskell et qui permet de creer des applis web/js.

]]>
By: kontre http://sametmax.com/le-debat-sur-la-programmation-fonctionnelle-en-python/#comment-160242 Mon, 04 May 2015 18:43:15 +0000 http://sametmax.com/?p=16141#comment-160242 @PeuLeuBeu Appelle-le comme tu veux, t’auras au final pas le bon résultat et paf l’avion au final ! Que ce soit de la belle programmation ou non :)

]]>
By: N_Arno http://sametmax.com/le-debat-sur-la-programmation-fonctionnelle-en-python/#comment-160234 Mon, 04 May 2015 16:08:30 +0000 http://sametmax.com/?p=16141#comment-160234 Wow, je n’entrerais pas dans le débat, mais wow. Un super article, que je vais faire lire. A pleins de gens. Continuez comme ça vous êtes formidables.

Nb: Guido van Rossum. Sans V majuscule. Cf sa bio twitter.

]]>
By: PeuLeuBeu http://sametmax.com/le-debat-sur-la-programmation-fonctionnelle-en-python/#comment-160233 Mon, 04 May 2015 15:47:48 +0000 http://sametmax.com/?p=16141#comment-160233 Bien sûr que ça m’est déjà arrivé, et je suis d’accord que c’est le genre de truc qu’on repère avec les tests. Un moins à la place d’un plus, moralement je trouve que c’est comme un 4 à la place d’un 3 quelque part, c’est à dire vraiment de l’ajustement plutôt que de la structure de code.

]]>
By: kontre http://sametmax.com/le-debat-sur-la-programmation-fonctionnelle-en-python/#comment-160215 Mon, 04 May 2015 07:58:44 +0000 http://sametmax.com/?p=16141#comment-160215 Vous avez quand même un peu remarqué qu’on cherche la petite bête tout en étant tous d’accord ?

@Noir: Le fait que le typage était seul me paraissait assez évident…

@PeuLeuBeu T’as jamais eu de problème de signe dans tes programmes ? C’est le genre de truc difficile à voir et où le typage ne t’apporte rien (pour les petits malins, dans les calculs on utilise plus souvent des floats que des unsigned int), la seule vérification possible c’est le test (ou la preuve formelle).

J’ai regardé vite fait si ça se faisait le calcul numérique avec des langages fonctionnels (c’est mon domaine, j’y peux rien !). Il y a des librairies existantes en Haskell, OCaml et F#. J’ai vu aussi que certains algos numériques simples ne s’écrivent pas de manière optimale en FP. Par contre la lib FFTW (pour faire des FFTs ultra-rapides) utilise OCaml, tout n’est pas perdu ! ;)

]]>
By: PeuLeuBeu http://sametmax.com/le-debat-sur-la-programmation-fonctionnelle-en-python/#comment-160208 Mon, 04 May 2015 05:43:32 +0000 http://sametmax.com/?p=16141#comment-160208 Bon, j’ai légèrement l’impression de me répéter mais à mon avis les tests et le typage c’est pas pour les mêmes usages. Enfin pas pour vérifier les mêmes trucs quoi. Perso j’ai l’impression que les tests c’est pour savoir comment bidouiller les “valeurs” au sein d’un programme, genre comment régler les curseurs, alors que le typage permet de vérifier que la structure d’un programme a un sens.

Enfin dans mon expérience en OCaml, quand je code un truc qui ressemble à peu près à l’algo que j’ai en tête et que ça type, ben je suis à peu près sûr que le code est ok à réglages près.

Bon, je sais pas si je m’exprime bien, z’avez qu’à tous coder en Caml et vous verrez par vous-même bordel.

]]>