Oui. Il y en a qui bossent en C++. Etonnant, non?Envoyé par Jiraiya_sama
Oui. Il y en a qui bossent en C++. Etonnant, non?Envoyé par Jiraiya_sama
Envoyé par Jean-Marc.Bourguet
euh c++ est un langage fonctionnel ?
S'il parlait des langages fonctionnels, se demander si quelqu'un les utilisait n'aurait pas eu de sens. Comme il a ete question de C et C++, c'est de ces langages qu'il devait parler.Envoyé par gorgonite
Envoyé par Jean-Marc.Bourguet
tu crois qu'il a lu autre chose que le titre du thread ???
Je crois que c'est la combinaison langage fonctionnel et polymorphisme paramétrique. Peut être le posteur n'en voit il pas l'utilité...Envoyé par Jean-Marc.Bourguet
Hello ,
je cherche aussi a debuter en programmation fonctionnel ...
je fait deja du ruby et du java
j'hésite entre le Scheme et l'ocaml , je prefere la syntax du scheme personellement
je cherche un langage qui ne soit pas mort , encore utilisable pour faire des choses, je developpe sur Windows et MacOsX(Intel)
je cherche un langage simple , mais complet et puissant
que me conseillez vous ?
merci
M'est avis que ocaml est un peu plus pratique (« practical ») cependant si tu préfères la syntaxe du Scheme, choisi naturellement le Scheme.Envoyé par kedare
Je pense que si j'avais un choisir un seul des deux c'est lui que je prendrais.
Maintenant c'est aisé de passer de l'un à l'autre quand tu en maîtrises réellement un.
Je ne suis pas expert en Scheme, mais je me pose une question : Scheme -> OCaml facile ?Envoyé par Garulfo
À mon avis, oui.Envoyé par InOCamlWeTrust
Autant que dans l'autre sens.
Dans les deux cas, le typage fait mal !
De Ocaml vers Scheme, il faut s'habituer à ne plus typer et à prévoir les erreurs. De Scheme vers Ocaml, il faut apprendre à typer dans un système réellement type safe.
Pour le reste, on s'habitue... c'est-à-dire la manipulation des listes, le passage de fonctions en paramètre, la programmation par flots, la programmation par passage de continuïté, la programmation récursive etc. Fondamentalement, il n'y a pas de différences.
perso, j'ai fait le passage OCaml -> Scheme (même si je n'ai fait que jouer un peu avec... dès que ça devient sérieux, je repasse sous Caml )
faut faire gaffe avec les parenthèses... surtout à ne pas trop en mettre, pour ce qui est du typage dynamique, vu qu'on a l'habitude de concevoir des fonctions caml... elles sont souvent statiquement correctes, alors dynamiquement
j'hésite ... scheme a l'air plus simple oui , mais niveau possibilité ca vaut quoi ? et en vitesse ?
Aucun n'est « plus simple » certains concepts sont difficiles dans les deux cas et (d'après moi) la puissance de développement est bien plus grande sur ces deux langages que n'importe quel autre langage non fonctionnel. Tu pourrais choisir Haskell... Ça serait idem. L'expertise te sera probablement aussi pénible dans l'un que dans l'autre même si le premier contact est, je le crois, plus simple en Scheme. En fait l'expertise est ardue dans n'importe quel langage et souvent indépendamment du premier contact.Envoyé par kedare
Pour la possibilité, tu peux à peu près tout faire. Au pire, Scheme comme Caml acceptent l'adjonction de fonction en C... cependant caml à un pas d'avance sur cette fonctionnalité. Mais avant de te préoccuper de vitesse préoccupes toi de design. La plupart des problèmes de performances viennent de problèmes architecturaux.
Ocaml comme Scheme se compile avec chacun de très bonne performance.
Je pense que ocaml à des meilleurs bibliothèques probablement... mais encore une fois, cela reste discutable.
C'est pour ça que je recommence avec l'avis : choisi celui avec lequel tu te sens le plus à l'aise... si vraiment un jour tu te sens limité, tu passeras à l'autre.
Tout le monde a donné son avis sur "débuter en fonctionnelle sur Windows" alors pourquoi pas moi?
Pourquoi ne pas choisir Lisp/Scheme pour débuter: parce que le seul type structuré qui soit standard est la paire avec laquelle on peut faire des listes. Si on veut faire plus que des fonctions sur des listes alors on n'est plus un débutant.
Pourquoi ne pas choisir Haskell pour débuter: parce que sur Windows je n'ai pas trouvé un seul interpréteur Haskell qui soit interactif, ça augmente considérablement le temps de réponse pour un débutant (qui par définition fait beaucoup d'erreurs).
Pourquoi ne pas choisir Caml pour débuter: parce qu'on ne sait jamais où mettre les parenthèses.
Le gros avantages de Caml c'est quand-même le typage statique + l'interpréteur interactif, au début on fait probablement autant d'erreurs qu'avec un autre langage mais au moins on est corrigé beaucoup plus vite.
Voilà pourquoi je recommande Caml-Light:
* Camlwin est plus confortable et plus stable que OCamlWinPlus
* Si on évite le where et qu'on préfère le match a,b with... au match a b with... alors la syntaxe est compatible avec OCaml (il suffira essentiellement de remplacer les "list_" par des "List.")
* parce que si on recommande OCaml au lieu de Caml-Light le débutant fait le parcours suivant:
1. puisque je connais Java et la POO je vais d'abord essayer la POO avec OCaml
2. quand je maîtriserai la POO avec OCaml j'ajouterai la puissance du fonctionnel (le débutant croit que le fonctionnel s'ajoute à la POO comme la POO s'ajoute à la programmation structurée)
3. comme le débutant ne peut pas maîtriser la POO en OCaml il en déduit qu'il ne pourra jamais maîtriser la programmation fonctionnelle
?? Et WinHugs alors ? De toute façon GHC fonctionne très bien sous Windows, il y a des exécutables pour l'installer sans problème et GHC contient GHCi, qui est parfaitement interactif (bien qu'en console, encore que ce ne soit pas un tel désavantage, surtout par comparaison à OCamlWin qui est un gros tas de bouse franchement... ).Envoyé par SpiceGuid
On peut utiliser emacs et l'haskell-mode comme IDE, ce mode est franchement super et permet d'avoir une GUI pour GHCi. (Le dernier emacs est facile à configurer pour retrouver des raccourcis clavier "standard Windows", c'est une option dans les menus (!), même si je trouve préférable sur le long terme d'apprendre à se servir d'emacs avec ses propres raccourcis).
--
Jedaï
WinHugs n'est pas interactif: tu peux évaluer des expressions interactivement mais les fonctions elles-même doivent être définies dans un fichier, tu ne peux pas simplement "coller" ta définition de fonction dans WinHugs avec Ctrl+V.
Moralité: ça revient à un compilateur puisque tu ne peux pas valider interactivement tes fonctions.
Et la console sous Windows: non merci, Camlwin est bien plus confortable et OCamlWin est une bouse certes, mais quand même pas autant que la console Windows.
Tu ne peux pas définir de nouveaux type de donnée, d'accord, mais tu peux tout à fait définir de nouvelles fonctions :
En pratique j'utilise emacs et haskell-mode, tu tapes Ctrl+c Ctrl+l et emacs lance automatiquement une session GHCi et charge ton fichier (et ses dépendances éventuelles si elles ont subies une modification), c'est instantané et ensuite tu peux tester individuellement toutes les fonctions que tu veux, et utiliser les nouveaux types de données que tu as défini.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 > let hellobye a b = putStrLn ("hello " ++ a) >> putStrLn ("bye " ++ b) > :t hellobye hellobye :: [Char] -> [Char] -> IO () > hellobye "world" "everyone" hello world bye everyone
--
Jedaï
Bon, puisque ce topic n'est pas mort, j'en profite pour faire un petit feedback
Passé l'aspect déroutant de la syntaxe, je suis content d'avoir choisi Scheme comme premier langage fonctionnel. C'est un langage vraiment très simple, ce qui permet de bien se concentrer sur les spécificités de la programmation fonctionnelle. Ca semble bête, mais on est bien content de ne pas se poser de question sur la syntaxe quand on cherche désespérément à trouver le maximum d'une liste de 5 nombres sans boucle for ni affectation
Donc c'est vraiment le langage que je conseillerais pour apprendre. De plus, il dispose d'un bon cours + des TDs en ligne et en français, cours qui a tout de même le défaut d'être écrit en police 50 + gras
Dès le début, les principes de bases sont posés : les variables avec define et let, les fonctions qui sont équivalentes aux fonctions mathématiques (pour un n-uplet d'entrée, toujours la même sortie). Puis on introduit progressivement le reste : les listes, les récursions, la récursion terminale... Et le tout avec des TDs à l'appui, histoire d'avoir des applications
Maintenant, même si la syntaxe de Scheme ne me pose plus de problème, je ne l'apprécie pas particulièrement. Donc je vais me mettre à OCaml, qui de ce que j'en connais est vraiment sympathique.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager