CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[.NET] Apprendre Le F#

Aldebran
Aldebran
Niveau 10
15 novembre 2010 à 18:01:32

Oups, pas fini de dire ce que je voulais dire :

Avec les langages objets les étudiants peuvent se représenter très simplement la programmation sous une forme intuitive qui les ramène presque à des problèmes de la vie la quotidienne. Tandis que la plupart des étudiants sont plutôt mauvais en math et plutôt moyens en algorithmique, il en résulte que des étudiants qui brillent en codant en Java (car ils réalisent rapidement un travail imposant quitte à ce que le code soit crade) rament lorsqu'il doive utiliser des langages fonctionnels qui les amène à penser de manière plus abstraites et plus mathématique. Pour résumer un étudiant comprendra beaucoup plus vite la notion d'héritage avec la phrase "une voiture est un véhicule", qu'il ne comprendra le principe du lambda-calcul, et du coup développera plus vite dans le paradigme orienté-objet.

J'ai pas une énorme expérience de l'industrie, mais vu que ce sont ces mêmes étudiants qui finissent ingénieur-développeur dans des grandes entreprises, j'imagine que ce que j'ai observé à l'université se retrouve aussi dans le monde de l'industrie.

Aldebran
Aldebran
Niveau 10
15 novembre 2010 à 18:04:59

Désolé pour le triple post, mais je tenais à rajouter que F# étant aussi un langage impératif et très fortement orienté objet, il peut être un bon moyen d'introduire les langages fonctionnels dans l'industrie.

saleGauss
saleGauss
Niveau 9
15 novembre 2010 à 20:21:52

Juste pour te répondre concernant le fait que
<des étudiants ne cessaient d'avoir à la bouche "mais bon sang, pourquoi on peut pas mettre une boucle for ici, ca rait vachement plus simple"> :

Il faut bien avouer qu'il y a des problèmes qui se modélisent et se résolvent de manière algorithmique plus facilement avec un paradigme qu'avec un autre.

Bien souvent, dans des cours d'initiation à la programmation fonctionnelle, on impose à n'utiliser que les traits fonctionnels des langages choisis comme support, de manière à forcer la réflexion de cette manière là.
C'est juste à but "éducatif".

C'est après, à tout à chacun, d'apprendre à reconnaitre des problèmes et de choisir une voie pour les résoudre.

Si je dois faire des modifications de coordonnées de vertex pour des faces de polygones dans un espace 3D, je choisirais certainement plus la voie impérative et algorithmiquement itérative, plutôt que la voie fonctionnelle et la récursivité.

Bien souvent, les gens, à mon grand regret, ne gardent dans la bouche qu'un "holala, c'était la misère les cours d'ocaml, on ne pouvait jamais faire des choses simplement".

Alors que justement, la manière de penser fonctionnel est très simple.
A deux conditions :
-1/ Que le problème se prête à une démarche fonctionnelle (ce qui n'est pas systématique, mais bien plus fréquent que ce que les gens imaginent)
-2/ Que l'on ai une parfaite compréhension de ce que l'on code.
Et c'est sur ce deuxième point que je rejoins totalement Godrik : l'approche impérative/objet permet aux gens de "bricoler", là où c'est totalement impossible sur une langage fonctionnel.
En impératif, ils mettent des boucles là où il sentent qu'il faut parcourir quelque chose, avec des bornes de boucle douteuses, et puis ils testent, ça crash, ça segfault, ça trie leurs entiers dans le mauvais sens, ils change l'opérateur ">" en "<" et ça finit par marcher (partiellement, souvent) au bout d'un long moment.
Sur un langage fonctionnel, l'activité intellectuelle est bien plus soutenue, et chaque ligne est sensé être pleinement pensée.
il est juste impossible d'écrire soi même du code fonctionnel pour un problème que l'on ne comprend pas parfaitement.
Un exemple très simple : je ne peux pas coder en Haskell, ou Ocaml si il y a du bruit autour de moi.
Alors qu'en Java, ça ne pose quasimment aucun problème.

Pire : dans des langages impératifs/objets, de nombreux programmeurs que je connais, en plus de ne comprendre que partiellement leur problème, se lancent dans le codage d'un truc orible du genre "void trucmuche()" sans même savoir précisemment ce qu'ils attendent de leur fonction.

Ma conclusion : les gens n'aiment pas trop réflechir. Et c'est pour cette raison qu'ils n'aiment pas les langages fonctionnels.
Ils préfèrent tester et déboguer pendant des heures.
C'est triste mais notre pauvre domaine est ainsi fait...

Quand j'ai lu un post un peu plus haut de quelqu'un qui disait "quand je mentionnais sur mon CV que je connais bien Ocaml, les recruteurs souriaient souvent".
Personnellement, à ta place, je sourirais en les voyant sourire. Et si ils méprisent réellement ce langage, je n'accepterais pas de travailler pour eux.
Je ne crois pas un instant qu'ils n'aiment pas.
Je crois qu'ils n'ont soit jamais vraiment essayé, soit rien compris, et qu'ils sont ainsi retourner bricoler en Java.

PS : Désolé pour ce post trollesque mais sincèrement pensé.

chris_27
chris_27
Niveau 10
15 novembre 2010 à 21:01:01

« les gens n'aiment pas trop réflechir. Et c'est pour cette raison qu'ils n'aiment pas les langages fonctionnels. » :d) ces gens méritent de bouffer de la callback en C, encore, encore et encore.
Ça les fera peut-être refléchir sur l'avantage d'avoir un langage dans lequel on peut passer correctement une fonction entière en argument. :-)

tbol
tbol
Niveau 20
16 novembre 2010 à 17:53:31

Au delà du débat d'idée sur l'utilisation (ou plutôt de la non utilisation) des langages fonctionnels en entreprise, il faudrait pas oublier que généralement : les exemples données par Microsoft sont en C#, les librairies en C# (ou C++), les articles en C#, les formations portent sur le C#, les codes sources trouvés sur le net en C#, la majorité des développeurs dotnet utilisent le C#, Microsoft investit massivement en Marketing pour le C#, j'en oublie ?

Bref au delà du débat d'idée, quand une entreprise fait le choix d'un langage il peu y avoir de très nombreux facteurs à prendre en compte...

C'est pas que je veuille enterrer le F# loin de la, mais la probabilité pour que le F# reste en langage "exotique" avec moins de 1% de parts de marché est très élevée...

Ikki_2504
Ikki_2504
Niveau 11
17 novembre 2010 à 22:49:47

F# est utilisé pour le calcul scientifique non :question:

godrik
godrik
Niveau 30
17 novembre 2010 à 22:59:06

Les codes importants de calcul scientifique sont ecris en C ou en C++. On trouve encore un peu de fortran.

En general, ils sont encapsule dans un programme plus large ecrit souvent en C ou en C++ egalement, mais aussi en matlab. Bien que l'on commence a voir des wrappers en python, ruby et java.

dnob700
dnob700
Niveau 10
18 novembre 2010 à 00:05:35

Tbol :
"les exemples données par Microsoft sont en C#"
Dans la documentation les exemples sont toujours dans tout les langage supporté, ils le seront donc bientôt en F# aussi si ce n'est pas déjà e cas.

"les librairies en C# (ou C++)"
Aucune importante, c'est la puissance de .NET : les bibliothèque écrite dans un langage .NET sont compatible avec tout les autres langages .NET.

"les articles en C#"
Je ne sais pas. À la sortie de F# il y a eu beaucoup "d'article" de microsoft dessus. Mais il est difficile d'évaluer ce que ça représente par rapport aux "articles" sur C#.

"les formations portent sur le C#"
Sur le site de MSDN il y a quand même plusieurs dizaine de cours et de cours vidéo portant sur F#, même si c'est certainement beaucoup moins que pour C#, là aussi il faut se souvenir que le langage est très jeune.

Aldebran : dans la continuité de ce qu'a écrit saleGauss, il faut que tu sache que Prolog n'est pas un langage fonctionnel et que Scheme en est un mais un peu particulier au sens où il est extrèmiste. OCaml ou F# sont des langages bien plus polyvalent, avec lesquelles on peut faire de la programmation impérative, objet et fonctionnelle (sans que les uns soient exclusifs des autres). Donc ça n'empêche pas de penser comme on veut.

L'exemple que tu cite avec les étudiant en Java et Prolog/Scheme est significatif de l'enseignement plutôt que d'autre chose. Oui, quand on à l'habitude de la programmation impérative, il faut un peu de temps pour passer à la programmation fonctionnelle. Mais une fois que c'est fait, il est presque toujours (du moins c'est ce que j'observe pour les gens qui ont utilisé suffisamment les langages fonctionnels) aussi simple ou plus naturel de penser un programme en fonctionnel plutôt qu'en impératif/objet.

Bien entendu il peut y avoir le biais d'observation que les gens qui ont utilisé suffisamment ces langages soient ceux pour qui ce mode de pensée est plus naturel.

Sous forums
  • Aide à l'achat Mac
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment