|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Nouveau Membre du Club
![]() Inscription : juin 2006 Messages : 45 ![]() |
Quelqu'un à t-il déjà utilisé le langage F# ?
http://research.microsoft.com/fsharp/fsharp.aspx Qu'en pensez vous ? |
|
|
00
|
|
|
#2 | |
![]() ![]() Nicolas ValléeIngénieur Système Inscription : décembre 2005 Messages : 9 774 ![]() |
Citation:
jamais utilisé... langage crimosoft complètement fermé sans doute, comme d'habitude |
|
|
|
01
|
|
|
#3 |
|
Membre Expert
![]() Inscription : mars 2002 Messages : 945 ![]() |
De ce que j'ai lu, ils ont essayé de copier Caml. Ca a l'air moins abouti (normal), et y'a des fonctionnalités manquantes (c'est dommage). En revanche, ils ont introduit la surcharge de quelques opérateurs en built-in (+, -, *, /). Ca peut être agréable donc.
Si c'était compatible, ça pourrait être intéressant de bénéficier de .net (OCaml a assez peu de bibliothèques). Seulement, j'y crois pas trop à cette compatibilité... Pour le moment, je reste sans hésiter sur OCaml. |
|
|
00
|
|
|
#4 | |
![]() ![]() Nicolas ValléeIngénieur Système Inscription : décembre 2005 Messages : 9 774 ![]() |
Citation:
pour infos, il parait qu'une version .net d'ocaml serait à l'étude... |
|
|
|
00
|
|
|
#5 |
|
Membre Expert
![]() Inscription : mars 2002 Messages : 945 ![]() |
Ca fait plusieurs mois que je n'utilise plus que ce langage et il me plaît beaucoup. Il manque encore de maturité, il n'est pas encore parfait, mais il me semble très prometteur.
En vrac, quelques fonctionnalités nouvelles, que j'apprécie beaucoup : - syntaxe allégée, basée sur l'indentation (c'est en option) - listes en compréhension (comme dans Haskell) - augmentations de types (pour définir par exemple une fonction membre aux types sommes, ou autres types) - surcharge d'opérateur, et ça, ça embellit la vie - introspection, grâce à .Net - affichage générique (print_any peut afficher n'importe quel type de variable) - la bibliothèque StructuredFormat, pour redéfinir l'affichage du print_any (avec tout plein de fonctions, pour l'indentation, etc.) - le type Seq (comme une liste, mais paresseuse, donc potentiellement infinie) - et bien sûr, toute la bibliothèque .Net. |
|
|
00
|
|
|
#6 |
|
Futur Membre du Club
![]() Inscription : septembre 2006 Messages : 66 ![]() |
Salut
Pour ceux qui utilisent ou ont essayé F# qu'en pensez vous? En France, on est assez mauvais... On a de bonnes idées mais elles ne sont pas exploitées a fond et mise en valeur. Je trouve que OCaml fait partie de ces projets qui gagnent à être connu. Microsoft a repris l'idée en créant F# : un OCaml à la sauce Microsoft... J'ai un peu hésité à essayer car Microsoft à la facheuse tendance à ne pas respecter les standards. C'est le cas ici, puisque du code ocaml un temps soit peu important, ne compilera pas avec F# et l'inverse (F# vers ocaml) c'est pire (ajout de mots clés etc) ... MAIS... je débute en ocaml, et l'environnement F# est séduisant : complétion, type, coloration syntaxique, analyse de la syntaxe pendant la saisie, compilation facile, debug graphique etc... Ca facilite pas de choses. Une bonne chose pour l'apprentissage! Et puis vu F#, c'est du dotnet, c'est ouvert sur le framework .NET donc d'accéder à pas mal de choses. Il se pourrait qu'avec F#, de nombreuses personnes découvrent ocaml à travers F#. Quel est votre avis? ++ |
|
|
00
|
|
|
#7 |
![]() ![]() Nicolas ValléeIngénieur Système Inscription : décembre 2005 Messages : 9 774 ![]() |
petite confrontation OCaml vs F# à partir de ce post http://www.developpez.net/forums/sho...2&postcount=24
|
|
|
00
|
|
|
#8 | |||||
|
Membre Expert
![]() Inscription : mars 2002 Messages : 945 ![]() |
Déjà, je te conseille de lire cette discussion (si ce n'est pas déjà fait) :
http://www.developpez.net/forums/sho...=237267&page=2 Citation:
Mais c'est vrai qu'ils ont essayé d'être en partie compatibles. Ce qui est une bonne chose. Il est facile d'écrire du code qui fonctionne dans les deux langages. D'ailleurs, je crois que c'est le cas du compilateur F# : ce qui prouve que l'on peut écrire de grosses applications en restant compatible. Bien sûr, si tu prends un projet OCaml, il ne compilera pas directement en F#. Mais la conversion est plutôt simple (j'ai entendu des témoignages de gens qui ont converti d'assez gros projets). La transition F# vers OCaml est plus dur... c'est normal. Tu aurais préféré qu'ils copient bêtement OCaml ? Non, l'intérêt est d'avoir un nouveau langage. Il est donc normal qu'ils aient ajouté des choses ! C'est même bien. Citation:
Citation:
Citation:
Citation:
Personnellement, j'ai utilisé OCaml pendant des années, et j'utilise F# depuis 2 mois pour mon boulot. Il a un certain nombre de qualités et de défauts (notamment un manque de maturité) par rapport à OCaml. Je pense que OCaml reste plus intéressant pour le domaine de la recherche ; en revanche, la compatibilité .Net me semble un énorme atout pour F#, dans le domaine industriel. |
|||||
|
|
00
|
|
|
#9 | |
|
Futur Membre du Club
![]() Inscription : septembre 2006 Messages : 66 ![]() |
J'ai suivi le lien que vous m'avez donné. C'est marrant puisque c'est de mon post initial que le thread s'est poursuivi sur F#. A l'époque je me posais la question de savoir quel langage choisir : ocaml ou scheme... Donc pour moi F# etait hors sujet.
Et puis j'ai fini par decouvir F#. Citation:
|
|
|
|
00
|
|
|
#10 |
|
Membre Expert
![]() Inscription : mars 2002 Messages : 945 ![]() |
Les problèmes viennent d'une part du manque de maturité du langage (OCaml est vraiment abouti, F# est très récent) et d'autre part de la difficulté à concilier .Net et OCaml.
Caml est un langage fonctionnel (je ne parle pas de l'extension objet, vu que l'objet est n'est pas géré de la même façon en F#) ; alors que .Net est objet. Et les deux philosophies sont assez éloignées. Au niveau du langage, on retrouve des différences entre les méthodes issues de .Net et les fonctions du langage et de ses bibliothèques propres. Je cite en vrac : - les méthodes .Net sont très souvent surchargées, alors que les fonctions écrites en F# ne peuvent pas l'être (à l'exception des opérateurs, qui sont un peu particuliers) - les fonctions du langage supportent l'évaluation partielle, mais pas les méthodes .Net (ce qui est normal : ce n'est pas possible, dans le cas général, de marier surcharge et évaluation partielle) - les méthodes .Net ne sont pas des objets de premier ordre, contrairement aux fonctions du langage (par exemple, elles ne peuvent pas être directement passées en argument - il faut passer par une fonction anonyme). MAIS, cela est corrigé dans la prochaine version de F# (qui devrait être publiée d'ici une semaine). Par ailleurs, OCaml est très abouti. Il existe un certain nombre de limitations arbitraires, dans le but de rendre le langage rigoureux. F#, de son côté, a cherché à repousser ces contraintes, au prix parfois de la cohérence. Par exemple, OCaml pose des contraintes sur la casse (pour la première lettre), interdit de réutiliser les mêmes noms de champs pour deux structures différentes, ne supporte pas la surcharge d'opérateurs. F# n'a pas toutes ces limitations, mais cela se paie. On doit parfois ajouter des annotations de type pour que ça se passe bien. Pour la surcharge d'opérateurs, la résolution de type se fait localement. S'il ne peut pas se décider localement, il utilise un type par défaut (généralement int) ou alors, il faut inliner la fonction (ce qui n'est pas toujours possible). On se rend bien compte que le langage est du coup moins "pur" et qu'on touche directement les faiblesses du compilateur (pour ne pas montrer ses faiblesses, OCaml se cache derrière les contraintes arbitraires). MAIS, F# est encore très récent, il évolue très rapidement. Et certains des problèmes que je cite devraient disparaître avec le temps. |
|
|
00
|
|
|
#11 |
|
Membre Expert
![]() ![]() Inscription : septembre 2006 Messages : 1 036 ![]() |
LLB a bien résumé, je crois, l'état des lieux.
Depuis quelque temps, je m'intéresse de très près à Haskell, et en particulier à GHC, le meilleur compilateur pour ce langage. Ma conclusion actuellement est sans appel : Objective Caml est bel et bien un langage non pas abouti, mais extrêmement abouti. Pourtant GHC est un sérieux rival, mais certaines choses font d'Objective Caml un langage de pointe, à commencer par sa capacité à se bootstrapper, ce qui le rend très portable, son garbage collector (une vraie merveille), ou encore sa librairie Unix, particulièrement complète et portable dans sa quasi entièreté y compris sur des systèmes non Unix. La faiblesse d'Objective Caml aujourd'hui concerne son manque de moyens pour programmer des interfaces graphiques... et celà risque de faire, malheureusement, la différence avec F#. |
|
|
00
|
|
|
#12 | |
|
Invité(e)
Messages : n/a ![]() |
Citation:
|
|
00
|
|
|
#13 |
|
Membre Expert
![]() ![]() Inscription : septembre 2006 Messages : 1 036 ![]() |
Un compilateur bootstrappé est portable, étant donné que pour le construire tu n'as besoin que de très peu d'outils. Actuellement, pour construire ocamlopt tu n'as besoin que d'un compilateur C (pour construire la machine virtuelle et ocamlyacc, nécessaire), un shell compatible sh et make : ce n'est pas le cas de GHC par exemple, ce qui pose de gros problèmes de portabilité de ce compilateur, même si ça s'améliore à grands pas. Le fait d'avoir une machine virtuelle est un atout également, puisque ocamlc est déjà fourni en tant que byte-code dans la distribution, mais le bootstrapping joue plus qu'on ne pourrait le croire.
|
|
|
00
|
|
|
#14 | |
|
Invité(e)
Messages : n/a ![]() |
Citation:
|
|
00
|
|
|
#15 |
|
Membre Expert
![]() ![]() Inscription : septembre 2006 Messages : 1 036 ![]() |
Si le compilateur est écrit en C, alors oui, il y a des chances que ce soit portable si les mecs n'ont pas fait de l'implementation-dependent ; le problème, c'est que dans le domaine des langages fonctionnels, on écrit le plus souvent son compilateur dans le langage implanté. Ce n'est pas suffisant pour se bootstrapper, comme le montre GHC, mais la capacité d'un langage à se compiler lui-même est déjà un gage de portabilité, que l'on crache du code-octet ou non.
|
|
|
00
|
|
|
#16 | |
![]() ![]() Nicolas ValléeIngénieur Système Inscription : décembre 2005 Messages : 9 774 ![]() |
Citation:
cela sera quand même assez difficile de ne pas avoir de morceaux implementation-dependent dans un compilateur ou un machine virtuelle en C... mais le fait qu'un compilateur existe déjà sur la plate-forme implique que les morceaux dépendants sont certainement dejà disponibles, et donc que quelques macros à la compilation régleront le problème du code portable |
|
|
|
00
|
|
|
#17 | |||||
|
Membre Expert
![]() Inscription : mars 2002 Messages : 945 ![]() |
Je récupère un message tiré d'un autre thread, parce qu'il a plus sa place ici :
Citation:
Code :
Code :
Pour info, si des gens sont intéressés, une nouvelle version de F# est sortie aujourd'hui (slicing, arguments optionnels, arguments nommés, syntaxe light encore améliorée, etc.) : http://blogs.msdn.com/dsyme/archive/...-released.aspx On peut maintenant définir une classe, avec un constructeur, une variable locale et une méthode, en une seule ligne |
|||||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com