|
Publicité ' | ||||||||||||||||||||||||
|
|
#21 | |
|
Nouveau Membre du Club
![]() Inscription : juin 2009 Messages : 86 ![]() |
Bluestorm, Jedai : Pour éviter de continuer le HS, j'ai poursuivi la discussion
ici : http://www.developpez.net/forums/d78...l/#post4535205 Citation:
|
|
|
|
00
|
|
|
#22 | |||||
|
Expert Confirmé Sénior
![]() ![]() |
Citation:
Citation:
Citation:
Par contre GHCi a d'autres réelles faiblesses : le non support de la totalité des syntaxes d'import (en particulier qualified) et l'impossibilité d'y déclarer des types ou des instances. Citation:
Par contre je suis d'accord que c'est perturbant pour le débutant de découvrir une syntaxe différente du top level d'un .hs, surtout qu'il ne connaît généralement pas encore la syntaxe dans un do-block à ce stage. Il ne devrait pas être trop difficile de simuler une syntaxe de top-level par une surcouche cependant, surtout avec l'excellent haskell-src-exts, peut-être que j'essaierais de faire quelque chose dans ce sens d'ici la fin de l'été. Citation:
-- Jedaï |
|||||
|
|
00
|
|
|
#23 |
|
Nouveau Membre du Club
![]() Inscription : juin 2009 Messages : 86 ![]() |
Je viens de le dire, j'ai poursuivi la discussion ici : http://www.developpez.net/forums/d78...l/#post4535205
C'est pas ce qu'on pouvait faire de mieux, mais bon, tant pis... |
|
|
00
|
|
|
#24 | |
|
Membre confirmé
![]() Inscription : mars 2006 Messages : 319 ![]() |
Punaise ! Qu'est-ce qu'il ne faut pas lire ! Désolé d'intervenir mais j'ai le poil qui vient de se dresser d'un coup en lisant :
Citation:
Je suis tombé au hasard sur ce fil et je trouve la discussion plutôt intéressante. Je ne connais absolument pas Haskell et je n'ai pas envie de le qualifier pour cette unique raison. Par contre, il me semble bien que le but d'un langage de programmation, voire son essence, est quand même bien de rapprocher l'homme de la machine, non ? Réduire le nombre et la taille des instructions, et symboles, de façon malsaine va complètement à contre-courant ! Un langage de programmation est avant tout au service de l'Homme, pas l'inverse... Savoir comment fonctionne la chaîne de communication entre le cerveau de l'Homme et celui de sa machine, oui. Mais se mettre au service d'un agent de cette chaîne (compilateur par exemple), non. À partir de là, pour moi et certainement pour un certain nombre de programmeurs, il y a un pépin. En avant dans la lutte contre l'apparition des cheveux blancs ! |
|
|
|
00
|
|
|
#25 | |||
|
Expert Confirmé Sénior
![]() ![]() |
Citation:
![]() Ou alors je ne comprends pas ce que tu veux dire par là, pourrais-tu préciser ta pensée ? Citation:
Je ne vois pas ce que tu veux dire par réduire le nombre et la taille des instructions de façon malsaine, tu préfèrerais un langage inexpressif qui exige des centaines de lignes pour exprimer le quicksort ? La version Haskell du quicksort est l'une des plus claires du point de vue humain que j'ai jamais vu. Citation:
L'une des raisons de la mauvaise réputation des langages fonctionnels auprès des industriels est que pendant très longtemps les compilateurs obtenaient des résultats déplorables comparés à l'impératif, il y a eu beaucoup de boulot pour arriver à un GHC qui compile des programmes Haskell de haut niveau vers des exécutables comparable à du C à un ordre de magnitude près (et certains programmes avec des performances équivalentes à du C). -- Jedaï |
|||
|
|
00
|
|
|
#26 | ||||||
|
Nouveau Membre du Club
![]() Inscription : juin 2009 Messages : 86 ![]() |
Citation:
Code :
Code :
Et en français Citation:
Au passage, je me permets de vous signaler qu'on dérive encore et que gorgonite ne va pas aimer ça... |
||||||
|
|
00
|
|
|
#27 |
|
Membre confirmé
![]() Inscription : mars 2006 Messages : 319 ![]() |
J'imagine qu'avec l'habitude ça doit être plus évident mais avec un regard complètement neuf ça l'est déjà moins.
|
|
|
00
|
|
|
#28 |
|
Nouveau Membre du Club
![]() Inscription : juin 2009 Messages : 86 ![]() |
|
|
|
00
|
|
|
#29 | |
|
Expert Confirmé Sénior
![]() ![]() |
Citation:
-- Jedaï |
|
|
|
00
|
|
|
#30 | ||||
|
Membre confirmé
![]() Inscription : mars 2006 Messages : 319 ![]() |
Citation:
![]() Citation:
Citation:
Citation:
Pour le reste, en effet, ça doit être tout un défi d'écrire de tels compilateurs ! Chapeau à ceux qui les développent et les optimisent ! |
||||
|
|
00
|
|
|
#31 | |
|
Membre confirmé
![]() Inscription : mars 2006 Messages : 319 ![]() |
Citation:
Oui, en effet, elle colle bien avec la description mathématique du problème. |
|
|
|
00
|
|
|
#32 |
|
Membre Expert
![]() Inscription : avril 2007 Messages : 829 ![]() |
Oui enfin avec un raisonnement comme ça on coderait tous en COBOL. Objectivement les manipulations d'indices des implémentations impératives sont beaucoup moins lisibles (et d'ailleurs beaucoup plus efficaces aussi), la définition Haskell est beaucoup plus déclarative (conceptuellement, indépendamment de la syntaxe utilisée, si on remplaçait [x | ...] par (all x such that ...) ce serait ptet plus lisible mais exactement le même programme) donc donne moins de travail au programmeur et plus à l'ordinateur.
Après on peut discuter pendant des années de "quelle est la syntaxe que les gens devinent de manière innée alors qu'ils ont jamais touché à un ordinateur", à mon avis aucune plus qu'une autre, et d'ailleurs les recherches que j'aie vues sur l'apprentissage de la programmation aux débutants convergent vers le fait que l'important c'est pas de deviner ce que les trucs veulent dire (on ne peut pas), mais de comprendre qu'il y a une signification et qu'elle est cohérente tout au long du code. Pour les aspects pratiques, je pense qu'il y a beaucoup plus de problèmes avec les gens qui se demandent "pourquoi i = 0 ? Et si i n'est pas égale à 0 il se passe quoi ?" en C que sur la notation des compréhensions. Quand on parle de mauvaises notations, utiliser "=" pour l'assignation c'est quand même le summum. |
|
|
00
|
|
|
#33 | |||
|
Nouveau Membre du Club
![]() Inscription : juin 2009 Messages : 86 ![]() |
Post très éclairé, bluestorm
![]() Ca fait froid dans le dos... Citation:
Citation:
Citation:
+1. |
|||
|
|
00
|
|
|
#34 |
|
Membre confirmé
![]() Inscription : mars 2006 Messages : 319 ![]() |
Je ne sais pas trop pourquoi vous parlez de COBOL et j'ai l'impression que l'on s'égare beaucoup. Pour le reste il me manque les rudiments que vous avez en Haskell pour bien saisir de quoi vous parlez, mais tant qu'on en parle, oui, begin / end c'est plutôt immonde...
Pour l'assignation je suis bien d'accord, héhé - les plus "marrants" étant == et === ![]() Par curiosité, limestrael, en quoi Haskell protège le développeur de faire des accès "illégaux" dans des tableaux ? (P.S. : mon langage préféré ces temps-ci c'est l'ECMA) |
|
|
00
|
|
|
#35 |
|
Membre Expert
![]() Inscription : avril 2007 Messages : 829 ![]() |
Personellement je n'ai rien contre les begin/end. Les syntaxes purement symboliques ont aussi leur défauts (il est effectivement plus difficile de découvrir leur signification sans se documenter si elles sont trop utilisées, et elles réduisent beaucoup la liberté de choix syntaxique pour les constructions suivantes du langage). Ce que je voulais dire c'est que la syntaxe concrète d'un langage (le fait de savoir si on utilise [ ], { } ou begin end par exemple) reste un artifice assez secondaire, et que si on veut vraiment comparer deux codes différents, il faut se concentrer sur leur contenu, et non leur forme.
Si j'ai cité Cobol c'est parce que c'est un langage qui a fait le pari d'une syntaxe très très verbeuse, pour pouvoir être utilisée par les "non scientifiques" (par opposition aux autres langages de l'époque qui étaient quasi-exclusivement reservés aux applications scientifiques) et qu'il se révèle à l'usage que ce n'est pas tellement agréable à utiliser. Il faut trouver un compromis entre la clarté et la concision de la syntaxe, et optimiser l'une des variables sans considérer l'autre ne peut rien donner de bon. Pour répondre à ta question : ici on manipule directement des listes à la place des tableaux, donc il n'y a plus de problématique des accès. C'est pas une solution miracle mais effectivement les accès illégaux arrivent moins dans les langages qui encouragent l'utilisation d'autres structures de données. Après, pour ce qui est de la question spécifique des accès aux tableaux, on peut faire faire ce travail en grande partie par le compilateur, en déployant des techniques de typages très lourdes. Si ça t'intéresse vraiment, tu peux regarder ici, mais c'est assez technique et pas vraiment utilisable dans les langages "mainstream" (Haskell inclus) pour l'instant. |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com