|
Publicité ' | ||||||||||||||||||||||||
|
|
#101 | |
![]() ![]() ![]() Nicolas ValléeIngénieur d'études Inscription : décembre 2005 Messages : 9 966 ![]() |
Citation:
perso, je suis d'accord... mais on arrête là sur cette parenthèse |
|
|
|
00
|
|
|
#102 | |
|
Invité(e)
![]() Messages : n/a ![]() |
Cher Dr Topos
Vous dites dans un de vos posts aimer être incisif, j'en déduis que vous ne m'en voudrez pas de l'être. Je tiens tout d'abord à préciser que je n'ai pas encore eu le temps de regarder votre langage, en revanche j'ai lu la quasi totalité de ce fil de discussion. Et disons le clairement, ça ne fait pas sérieux. Vous dites donc travailler au développement d'un langage fonctionnel depuis 7 ans maintenant, et il semble que vous ne vous soyez pas un seul instant penché sur ceux existant. En début de fils, vous attaquez violement Haskell en les accusant de ne pas dutout se servir de monade après avoir survollé le manuel. Vous découvrez quelque post plus loin que finalement, ces braves gens ne sont peut être pas si débile qu'ils en ont l'air. Vous affirmez fièrement ne vous inspirer de rien d'autre. Est cela la recherche ? Ne surtout pas regarder ce que font les autres, pour ne surtout pas être influencé ? Ca me semble assez contre-productif, et légèrement prétentieux. Vous attaquez Microsoft research en les accusant de ne rien faire de mieux que voler OCaml, de ne pas être capable d'inventer... Peut être que lorsque le sujet de recherche est la compilation d'un langage fonctionnel vers la plateforme .Net, est-il judicieux de choisir une syntaxe déjà éprouvée, et qui plus est connue, ce qui déconcertera beaucoup moins d'utilisateur potentiel. Pour rester dans le sujet "Microsoft", vous confondez completement Microsoft, la société qui produit Windows, et Microsoft Research (certe financé par le précédant), qui est un labo de recherche d'excellente réputation. Là encore, assez dommage pour quelqu'un se prétendant "à la pointe de la recherche". J'aimerai savoir comment vous faites sans lire un seul papier (parce qu'en matière de programmation fonctionnel, dès qu'on commence à en lire, le nom de Microsoft Research ne tarde pas trop à pointer son nez). Pour continuer dans le sujet papier, je n'en ai pas trouvé un seul concernant Anubis. Si c'est bien le cas, là encore, c'est plus que déconcertant ! Un langage à la pointe de la recherche, sans aucun papier ? Vous parlez dans un de vos post de "portage linux, windows et MIPS". Aïe... MIPS est un processeur, linux et windows des systèmes d'exploitation... D'ailleurs Linux tourne sur architecture MIPS. Il y a un petit soucis quelque part non ? Vous dites que les filtrages sont uniquement là pour éviter des emboitements de conditionnels. En tout cas en OCaml, le filtrage n'est pas dutout un emboitement de conditionnelles puisqu'il lie des variables, ce que ne fait pas la conditionnel (typiquement, quand vous avez un élément de type 'a option, ce n'est pas une conditionnelle qui vous extraira x de Some x) C'est bien d'être convaincu de ce que l'on fait, c'est même indispensable pour continuer. Mais vous est-il réellement indispensable de cracher avec mépris sur OCaml et Haskell, qui semblent pourtant à première vue être plutôt appréciés de la communauté de l'informatique théorique ? Surtout quand ces critiques sont entrecoupé d'autres commentaires montrant que justement, vous ne connaissez pas ces langages. Jetons un oeil au site : Bon, c'est bien d'essayer de vendre son produit. Mais quand le langage est utilisé par 3 boites(dont deux pour un site web), clamer à grand renfort de valeur quantitative : Citation:
Et ne serait-il pas plus pertinant de le comparer à d'autre langages du même genre ? J'entends par là que le C, c'est un langage vieux de pret de 35 ans, conçu pour programmer un système d'exploitation, bref, un gros assembleur. Tout le monde sait que même le langage fonctionnel le moins bien conçu du monde sera beaucoup plus facile à débugguer que du C. D'où vous vient cette vision comme quoi "l'execution d'un programme est toujours normale" qui vous a amené à bannir les exceptions ? Elles sont quand même un moyen extremement naturel de programmer. Prenons un exemple. Supposons que je programme un interpréteur pour un langage manipulant des chaines de caractères, à typage fort. Depuis la première fonction appelé à la racine, un paquet de fonction s'empilent avant d'arriver au moment où je teste que ma chaine à le bon type. Et si ce n'est pas le cas, et bien c'est un cas "anormal". Je n'ai vraiment, mais alors vraiment pas envie d'avoir à gérer ce cas à la main dans chacune des fonctions intermédiaires, avec un type somme "CaMarche | CaMarchePas". Non, je veux réellement lancer une exceptions qui sera ratrapé à la racine, affichera un message d'erreur, et interrompra l'execution du programme. Le monde réel n'est malheureusement pas celui, idéal, des mathématique où tout se passe toujours bien :-) Bref, pour conclure, je n'ai pas encore regardé le langage en lui même, mais, comme vous l'aurez constaté, l'enrobage me déplait fortement. Heureusement que maintenant le téléchargement est libre, sinon je me serai arreté là ! A dans quelques jours pour les commentaires sur le langage à proprement parler. Dernière modification par alex_pi ; 26/07/2007 à 07h42. |
|
00
|
|
|
#103 |
![]() ![]() Damien GuichardInscription : juin 2007 Messages : 1 513 ![]() |
Permettez-moi d'être en désaccord sur la gestion des erreurs, le principe même de la programmation fonctionnelle c'est que tout est une valeur, une erreur doit être une valeur comme une autre, "CaMarche | CaMarchePas" est le type (ou le codomaine de la fonction) qui capture la possibilité que CaNeMarchePas, cette possibilité doit avoir une valeur et un type sinon on s'éloigne de la programmation fonctionnelle.
Alors, bien sûr, on voudrait ne pas avoir à filtrer CaMarchePas dans chaque fonction pour progager l'erreur. Mais il s'agit là d'une critique de la syntaxe, on peut très bien imaginer un mécanisme de déclaration de point fixe (du filtrage), de telle sorte que dans un filtrage endomorphe on ait, par défaut: CaMarchePas -> CaMarchePas De fait il n'y aurait alors qu'à filtrer CaMarchePas à la racine, ce qui est bien la fonctionnalité que vous recherchez. Pour être honnête je pense qu'il serait abusif de dire qu'Anubis est incomparablement plus sûr du fait de l'absence d'exceptions, il n'empêche que l'expérience a montré qu'au bout du compte il y a toujours un avantage à inclure davantage de spécifications dans le type. Peut être la gestion des erreurs en Anubis est-elle un peu pesante, mais au moins on ne peut pas l'ignorer, espérons qu'elle se fera plus discrête dans une prochaine version. Les autres remarques me parraissent davantage centrées sur la démarche ou sur la personne, je n'y répondrai pas. |
|
00
|
|
|
#104 | |||
|
Invité(e)
![]() Messages : n/a ![]() |
Citation:
Code :
BTW, la majorité des unixien préfère faire un *minimum* de chose avec les droits roots. C'est pour ça que généralement, on met un script configure, qui permet de définir le chemin d'installation pour éventuellement le mettre dans son home, puis un make a executer en utilisateur normal, et un make install a exécuter avec les droits du répertoire destination de l'installation. Donc éventuellement avec les droits normaux pour les tests dans le home. De plus, pourquoi remettre des tar.gz dans un tar.gz ? Dernière modification par alex_pi ; 27/07/2007 à 06h35. |
|||
00
|
|
|
#105 | |
|
Invité(e)
![]() Messages : n/a ![]() |
AAAAARGGGHHHL !!
Mon Dieu, mais comment pouvez vous prétendre que votre langage est 40 fois plus rapide à débuguer qu'un autre avec une telle *horreur* Citation:
Et pour la cohérence, c'est joli. Quand on écrit dans un emplacement du tableau, et qu'on relit immédiatement le même emplacement, on n'est pas sûr de récupérer la valeur écrite. Nan, y a pas à dire, c'est secure et mathématiquement à la pointe. |
|
00
|
|
|
#106 | ||||
|
Invité(e)
![]() Messages : n/a ![]() |
J'ai enfin réussi à installer le machin, et j'ai commencé à jouer :
Code :
Nan parceque la version ocaml Code :
|
||||
00
|
|
|
#107 | |
|
Membre Expert
![]() ![]() Inscription : septembre 2006 Messages : 1 036 ![]() |
Citation:
|
|
|
|
00
|
|
|
#108 | |||
|
Membre Expert
![]() ![]() Inscription : septembre 2006 Messages : 1 036 ![]() |
Citation:
|
|||
|
|
00
|
|
|
#109 | |||||||
|
Membre Expert
![]() ![]() Inscription : septembre 2006 Messages : 1 036 ![]() |
Serait-il possible d'avoir accès aux sources du compilateur et de la machine virtuelle ? J'ai l'impression que la distribution Linux ne contient que les sources de la librairie standard.
Pour ce qui est du langage en lui-même, je ne le connaissais pas, je n'en avais même jamais entendu parler, mais il y a trop de choses dans la rubrique Philosophy que j'ai du mal à avaler : découvrir ce langage sera difficile. Citation:
Citation:
Citation:
Citation:
C'est si difficile, en C, de faire ainsi... Code C :
Citation:
En Anubis, Peux-tu détecter une panne de mémoire ? Si oui, peux-tu en connaître la cause exacte ? Peux-tu survivre à une panne mémoire ? Peux-tu gérer les signaux arrivant sur le processus en cours, les bloquer, ou effectuer des traitements spéciaux ? Peux-tu connaître les raisons fines et détaillées d'échec d'une fonction système ? Peux-tu survivre à un segfault ou une erreur de bus (en C, un segfault ou un buserror n'est pas nécessairement fatal, et même dans les langages sûrs, on en rencontre de temps à autre) ? Peux-tu avoir un contrôle fin des erreurs provoquées par les opérations arithmétiques ou flottantes ? J'en passe et des meilleures. Affirmer une telle chose en 2007 n'est que le signe d'une méconnaissance totale du C. Hier matin, j'ai pu parler avec un membre du projet Gallium sur les orientations futures du langage : on voit bien la différence entre ceux qui font la théorie, et ceux qui passent leur temps à la contempler. Dans tous les cas, si il doit y avoir un nouveau langage fonctionnel issu de chez Gallium, il ne ressemblera pas vraiment à ce que l'on connaît désormais. Tout ça pour dire qu'en matière de programmation il faut savoir redescendre sur terre de temps en temps. |
|||||||
|
|
00
|
|
|
#110 | ||||
|
Invité(e)
![]() Messages : n/a ![]() |
Je pense en avoir assez vu de ce langage pour pouvoir maintenant répondre à la question initial du thread "que pensez vous du langage Anubis ?".
Pour faire court, je pense qu'il est tout simplement mauvais et inutilisable. Et je crois que la raison profonde est très simple. Je la tire d'un forum du site anubis Citation:
Mais même sur un plan théorique, le concepteur, très légèrement imbu de lui même, fait parfois doucement sourire. Lorsqu'il dit Citation:
Son choix de vocabulaire dans la documentation de son langage est un peu déroutante. J'apprend ainsi qu'effectuer une écriture sur la sortie standard est une oppération non déterministe. C'est ammusant, la dernière fois que j'ai testé, quand je fais "print_string \"kikoo\"", ça imprime "kikoo", même si la varible x vaut 42. Il type ses expressions au petit bonheur la chance. Les addresses produisent toujours des Int8, mais leur type est quand même paramétré par Int8. C'est bien, le langage n'était pas assez verbeux comme ça. Lorsqu'il introduit la programmation fonctionnelle récursive, il montre qu'il n'y est pas dutout habitué. Il a une première fonction map sur les listes dont la définition caml (non tail récursive) est : Code :
Code :
let map_bis l v = map (fun f -> f v) l Pour montrer que la récursivité est plus simple que les boucles, il prend l'exemple du calcul de a ^ b, et écrit ça en C avec une boucle while. Il parraitrait que la boucle for soit là pour ça... Si la machine virtuelle est écrite comme ça, elle doit être simple à débugger ! Il prétend qu'il vaut mieux utiliser la pile du systeme qu'une pile faite à la main, et que c'est pour ça qu'il ne faut surtout pas se prendre la tête avec la récursivité finale. Un bon gros n'importe quoi Il dit que le compilateur Anubis *version 1* n'est pas capable de vérifier certaine chose, sous entendant que le 2 le sera ? C'est dommage que la propriété en question soit notoirement indécidable. L'idée de la surveillance des variables est ammusante. Mais là encore, c'est n'importe quoi. Déjà je ne peux rien faire du ticker retourné, à part le garder. Alors pourquoi adjoindre à son type celui de ma variable, et pas juste lui donner le type Ticket ? Mais surtout, ne pas m'autoriser à désinscrire ma variable, parce que "le GC le fera tout seul", c'est malin ça. Supposons que j'ai une raison valable de désinscrire ma variable à chaque fois que je passe dans une certaine fonction. Qu'en gros, je veux suspendre l'inscription, écrire dans ma variable, reprendre l'instruction. Bah je peux pas. Enfin, disons que si le GC est bien programmé (qui a dit "on a déjà vu que non" ?), il n'est pas sensé s'exécuter entre chaque instruction. Donc je ne peux pas juste me débarasser du ticket, faire mon écriture, en ouvrir un autre. Je suis juste bloqué. Le principe même d'un GC est d'être non déterministe (au sens courement admis...) Le programmeur n'a pas à savoir quand est ce qu'il va se lancer. Il ne se lancera d'ailleurs probablement jamais sur un cycle majeure (je parle là de GC générationnel). Donc le programmeur*doit* avoir la possibilité de fermer ses fichiers, ses connections réseau, etc, sinon il n'a aucune assurance que ce sera fait un jour. Bref, pour résumer, je pense que ce langage est ammusant pour 24h, mais qu'il n'apporte rien, qu'il propose des performances catastrophique, et qu'il est à oublier. Si vous voulez un langage fonctionnel efficace et qui a fait ses preuves, regardez OCaml. Si vous voulez un langage fonctionnel de grande qualité théorique (lui aussi basé sur la théorie des catégories, mais avec bien plus de sérieux), regardez Haskell. [EDIT]Ah, et j'oubliais, le script d'install, non compatible sh, a la bonne idée de rajouter ses librairies en tête du path. Heureusement que je n'ai pas installé ça en root... [/EDIT] Have fun |
||||
00
|
|
|
#111 | |
![]() ![]() Damien GuichardInscription : juin 2007 Messages : 1 513 ![]() |
Citation:
|
|
|
00
|
|
|
#112 | ||
|
Invité(e)
![]() Messages : n/a ![]() |
Citation:
Citation:
|
||
00
|
|
|
#113 | ||
![]() ![]() ![]() Nicolas ValléeIngénieur d'études Inscription : décembre 2005 Messages : 9 966 ![]() |
Citation:
rien ne te permet d'interpréter les "sous-entendus" à ta guise... perso, je verrais plutôt que la version 2 sera capable de vérifier plus de choses que la 1. par ailleurs, j'ai ouï dire qu'avec certaines logiques anti-axiomatiques, la décidabilité n'était pas forcemment un problème Citation:
c'est ton opinion, et je la respecte... perso, je n'ai pas encore commencé à tester anubis. toutefois, permets moi de te dire que je trouve "ridicule" des remarques du style : dans mon langage préféré, ils font comme cela, et pas ici... donc c'est nul :-p je pense que c'est assez mesquin de ta part d'essayer de surinterpréter les propos d'une personne, avant même qu'elle est eu le temps de se justifier... car créer un nouveau langage aux performances correctes est un travail pharaonique, et pour gagner du temps, on n'implémente parfois pas l'algorithme "optimal" dans les premières versions je te dirais juste que si anubis était si mauvais que cela, comment le site l'hébergeant pourrait-il tourner ? peut-être n'as-tu pas pris le recul nécessaire pour comprendre comment programmer efficacement avec ce langage peu commun |
||
|
|
00
|
|
|
#114 | ||||
|
Invité(e)
![]() Messages : n/a ![]() |
Citation:
Citation:
Citation:
Citation:
|
||||
00
|
|
|
#115 | |||
![]() ![]() ![]() Nicolas ValléeIngénieur d'études Inscription : décembre 2005 Messages : 9 966 ![]() |
Citation:
soit tu es un débutant (ce qui ne semble pas être le cas), soit tu fais semblant de ne pas savoir qu'il y a une différence entre logique et programmation... donc je ne pourrais pas écrire un programme dans une logique anti-axiomatique, puisque ce n'est pas un langage de programmation par ailleurs, ce qui est théoriquement possible n'est pas toujours réalisable dans la pratique... pour implanter quelque chose il faudrait un algorithme (ou une démonstration constructiviste) de l'existence d'un tel programme. Citation:
peut-être n'as-tu pas trouvé la bonne manière de l'implanter ? (je laisse le bénéfice du doute, a priori en une journée, tu ne maitrises pas le langage) qui te dis que je n'arriverais pas à rendre ton programme ocaml aussi gourmand en bidouillant un peu ta façon de coder... Citation:
peut-être, mais ils tournent... et même parfois sans faille de sécurité (même si c'est rare anubis est un langage très jeune (encore plus que php semble-t-il), et pourtant il semble pouvoir déjà mieux faire... donc il ne doit pas être si nul que cela |
|||
|
|
00
|
|
|
#116 | ||||
|
Invité(e)
![]() Messages : n/a ![]() |
Citation:
Citation:
Citation:
Citation:
|
||||
00
|
|
|
#117 | |
|
Inactif
Inscription : juillet 2005 Messages : 1 958 ![]() |
Citation:
|
|
|
|
00
|
|
|
#118 | ||||
![]() ![]() ![]() Nicolas ValléeIngénieur d'études Inscription : décembre 2005 Messages : 9 966 ![]() |
Citation:
Citation:
je n'ai fait que répondre par une notion tout aussi théorique, et certainement aussi difficile à obtenir en pratique Citation:
qui te dit qu'il n'y a pas un mécanisme particulier pour implanter ce genre de structure, qui justement ne ferait pas foirer le GC Citation:
du genre comment programmer un combinatoire de point fixe de manière simple et élégante en Caml ? perso, la manière la plus propre, selon moi, ne passe pas le typeur... alors que l'on peut prouver à la main que ça marche bien comme il faut
|
||||
|
|
00
|
|
|
#119 | |||||||
|
Invité(e)
![]() Messages : n/a ![]() |
Citation:
Citation:
tu dis que Citation:
Citation:
Code :
Citation:
|
|||||||
00
|
|
|
#120 | |
|
Inactif
Inscription : juillet 2005 Messages : 1 958 ![]() |
Citation:
Ceci mis à part, tu as de nombreux point qui sont très pertinent et Dr Topos devrait probablement répondre pour donner son avis. Car certains de tes jugements sont posés rapidement sans attendre une explication. |
|
|
|
00
|
Copyright © 2000-2013 - www.developpez.com