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

Apprendre Ocaml

subway-
subway-
Niveau 10
07 novembre 2015 à 17:06:47

bonjour, en ce moment je code un peu ruby, je m'amuse avec qt ou gosu, mais je me suis dit que j'aimerai apprendre un nouveau langage car je connais que le ruby.
au debut je voulais partir sur elixir mais j'ai vu qu'il y a pratiquelment que des package concentre sur le web
il y avait aussi nim, ca avait l'air cool
puis j'ai vu ocaml, c'est de la programmation fonctionnel, je ne connais pas.
en plus il y a des bindings de tous (sfml, qt, ...), opium pour le web bref
mais j'ai peur que ce langage soit un peu depassé, (un peu comme perl)
donc es ce que c'est un bon choix d'apprendre a programmer en ocaml(ou caml je n'ai pas compris la difference) en 2015
et es ce que il est assez utilisé dans le monde des entreprises par exemple ?
Qu elles sont les specialitées de ocaml
Et es ce que il peut etre bien pour travailler sur de gros projet comme des gros logiciels, voir site, jeux
Merci

Caletlog
Caletlog
Niveau 10
07 novembre 2015 à 17:25:26

Salut,

OCaml est le successeur du Caml. Les deux sont relativement proches, mais le second est déprécié (sauf peut-être dans l'éducation, où tu pourras éventuellement trouver des cours en CamlLight).

L'OCaml c'est français (développé à l'INRIA) et toujours très activement maintenu, à la fois par une boîte dédié, et soutenu par une équipe de recherche. C'est un projet plus que solide qui a encore de belles années devant lui.

Pour les entreprises, pas des masses. C'est le cas de la plupart des langages fonctionnels, de toute façon. En France on est dans une petite bulle au niveau de l'OCaml, alors tu trouveras plus facilement un job dans une boîte l'utilisant ici qu'à l'étranger.
Aux USA tu as la célèbrissime Jane Street, énorme boîte de développement pour la finance, qui bosse majoritairement en OCaml (et fournit énormément de code publiquement). Facebook l'utilise aussi beaucoup (Pfff, Infer et Flow sont tous trois en OCaml, par exemple) sur ses projets annexes.

Dans l'ensemble j'ai envie de te dire que oui, ça vaut le coup de l'apprendre. C'est un langage avant-tout pratique. La syntaxe est pas forcément belle, on peut produire du code dégueu, mais ça marche. D'un point de vue "pureté", c'est presque vu comme un sous Haskell. Mais comme c'est souple et fonctionnellement non-strict, c'est beaucoup plus accessible que le Haskell et ça peut servir d'excellente introduction à la programmation fonctionnelle, sans s'arracher les cheveux sur des langages un peu moins familiers.
C'est moins important, mais OCaml a aussi l'avantage d'être extrêmement performant, surtout pour un langage principalement fonctionnel (de l'OCaml compilé peut rivaliser avec du Java). Comme son mode d'évaluation est stricte par défaut, contrairement à d'autres langages fonctionnels qui sont paresseux par défaut, l'OCaml autorise aussi un excellent contrôle sur les performances temps et mémoire par le développeur.

Au niveau spécialités, pas de surprises, c'est un langage dérivé des ML, donc tout ce qui touche aux compilateurs, interpréteurs et autres analyseurs syntaxiques sont particulièrement agréables à développer en OCaml.
Après ça reste un langage "boîte à outils" alors tu peux y faire plus ou moins n'importe quoi, comme dans pas mal d'autres langages. L'aspect fonctionnel permet de produire des solutions plutôt élégantes à des problèmes classiques, sans forcer le développeur à oublier tout ce qu'il sait du monde impératif non plus.

AlphaCygni
AlphaCygni
Niveau 10
07 novembre 2015 à 17:52:07

mais j'ai peur que ce langage soit un peu depassé

OCaml n'est pas du tout dépassé, il est au contraire un peu trop en avance sur son temps :o))
A l'heure actuelle, c'est surtout un langage de chercheurs, comme la plupart des langages dits "fonctionnels". Du coup, il est quasiment inexistant en entreprises, à quelques exceptions près (Jane Street). Ce n'est pas que ces langages ne soient pas adaptés pour les gros projets d'entreprise, le problème est surtout qu'ils sont méconnus (ils ne font presque pas de marketing pour inciter les gens à les utiliser), et que le paradigme fonctionnel est assez éloigné de ce que les gens ont l'habitude de faire, et les habitudes prennent du temps à changer. Et, vu qu'ils sont relativement peu utilisés, ils ont aussi tendance à manquer de bibliothèques spécialisées dans certains domaines.

Donc sur un CV, si tu marques que tu ne sais coder qu'en caml, tu risques d'avoir du mal à trouver un job.
Par contre, si les langages comme OCaml ou Haskell sont peu utilisés, le paradigme fonctionnel en lui-même commence à se démocratiser. Les langages comme Python ou Java se mettent à intégrer des features venant des langages fonctionnels (les lambdas, les fonctions d'ordre supérieur), et on voit émerger des langages comme Swift ou Rust qui dès le début essayent d'intégrer des idées issues du paradigme fonctionnel.

En résumé : OCaml en lui-même est un très bon langage, mais il est peu utilisé en entreprises, et je doute qu'il le soit dans un futur proche. Par contre, le paradigme fonctionnel, lui, risque d'être très important à connaitre. Et si tu souhaites t'initier à la programmation fonctionnelle, OCaml est une voie royale :ok:

D'ailleurs tu tombes bien, si tu veux te mettre à OCaml, il y a un cours en ligne (mooc) qui a lieu en ce moment, et qui est très bien fait. Ils en sont à la troisième semaine de cours, mais tu peux toujours t'inscrire et rattraper ton retard (par contre la plateforme du cours va être indisponible du 8 au 11 novembre).
https://www.france-universite-numerique-mooc.fr/courses/parisdiderot/56002/session01/about

Message édité le 07 novembre 2015 à 17:55:53 par AlphaCygni
GroinDePorc
GroinDePorc
Niveau 10
07 novembre 2015 à 20:38:45

"de l'OCaml compilé peut rivaliser avec du Java", Java n'est pas connu pour sa rapidité d’exécution, t'a voulu dire C plutôt non?

subway-
subway-
Niveau 10
07 novembre 2015 à 20:51:28

Merci de vos reponse, je vais donc commencer a apprendre ocaml et j'ai trouvé ce tuto : http://sdz.tdct.org/sdz/ocaml-pour-les-zeros.html#OCamlpourlesZros
des avis ?
et je me suis inscrit pour le mooc mais je suis plutot nul en anglais donc bon

Caletlog
Caletlog
Niveau 10
07 novembre 2015 à 21:48:44

Le 07 novembre 2015 à 20:38:45 GroinDePorc a écrit :
"de l'OCaml compilé peut rivaliser avec du Java", Java n'est pas connu pour sa rapidité d’exécution, t'a voulu dire C plutôt non?

Le Java sur une JVM moderne a d'excellentes performances, les ingénieurs Oracle ont fait des progrès absolument monstrueux depuis quelques années.
Aujourd'hui, un programme Java lambda peut rivaliser en terme d'exécution avec un équivalent C++ pas agressivement optimisé.

https://stackoverflow.com/questions/145110/c-performance-vs-java-c
https://benchmarksgame.alioth.debian.org/u64q/compare.php?lang=java&lang2=gpp

Et un article ( http://www.javaworld.com/article/2076593/performance-tests-show-java-as-fast-as-c--.html?page=2 ) allant dans ce sens, datant de... 1998 :o))

Après dans les faits l'OCaml a parfois des performances encore meilleures, mais d'une manière générale on est dans des magnitudes équivalentes à Java/C++.

Pseudo supprimé
Pseudo supprimé 07 novembre 2015 à 21:59:31

Le 07 novembre 2015 à 21:48:44 Caletlog a écrit :
https://benchmarksgame.alioth.debian.org/u64q/compare.php?lang=java&lang2=gpp

par contre la conso mémoire laisse a désirer.

Pseudo supprimé
Pseudo supprimé 07 novembre 2015 à 22:28:09

Le problème majeur d'ocaml actuellement n'est pas le langage en lui même mais son implémentation qui n'a pas de multi-threading: La seule facon de faire du multi-core avec ocaml c'est de faire du multi-processus.[1][2]. C'est un problème de longue date qui sera enfin corrigé avec la version a venir mais je crains qu'entre temps f# se soit imposé dans les esprits comme le nouveau ML moderne.

[1] https://en.wikipedia.org/g/wiki/Global_interpreter_lock
[2] https://www.reddit.com/r/ocaml/comments/36ninh/403_scheduled_for_the_end_of_the_year_if_all_goes/crgfo9o

Gaetano-GX
Gaetano-GX
Niveau 31
08 novembre 2015 à 08:02:34

Cette discution m’intéresse. Haskell et Ocaml sont des langages compilés ? J'ai cru comprendre que le paradigme fonctionnel était complètement différent du paradigme Orienté Objet, donc, si on vient du C/C++/C#, est-ce difficile d'apprendre la programmation fonctionelle ?

Caletlog
Caletlog
Niveau 10
08 novembre 2015 à 09:41:05

Tous les deux compilés. OCaml peut être semi-compilé/exécuté en une sorte de bytecode puis lancé par l'interpréteur, ou compilé en natif.

C'est effectivement très différent de la prog impérative traditionnelle, alors ça a tendance à dépayser. Si tu veux pas trop te prendre la tête, OCaml est un très bon compromis, parce qu'il t'autorise encore à utiliser des raisonnements impératifs. Haskell est beaucoup plus stricte : données immutables, aucun effet de bord non déclaré, ... en plus de faire intervenir beaucoup plus de concepts un peu effrayants.

Gaetano-GX
Gaetano-GX
Niveau 31
08 novembre 2015 à 16:53:01

Merci VDD pour tes explications ! :merci:

AlphaCygni
AlphaCygni
Niveau 10
08 novembre 2015 à 20:48:19

Le 07 novembre 2015 à 20:51:28 subway- a écrit :
Merci de vos reponse, je vais donc commencer a apprendre ocaml et j'ai trouvé ce tuto : http://sdz.tdct.org/sdz/ocaml-pour-les-zeros.html#OCamlpourlesZros
des avis ?
et je me suis inscrit pour le mooc mais je suis plutot nul en anglais donc bon

L'anglais il va bien falloir y passer si tu veux te lancer dans l'informatique, ça peut être une bonne occasion de pratiquer (et puis y'a des sous-titres fr sur leurs vidéos) :-)

Quant à ton lien en regardant vite fait le sommaire ça aborde la plupart des choses importantes du langage, mais j'ai peur que ça aille un peu vite, il faut faire des exercices en parallèle pour se familiariser avec toutes les notions. Tu peux te le garder sous la main mais je pense pas qu'il se suffise à lui-même

tbol
tbol
Niveau 20
09 novembre 2015 à 16:20:59

Il y la doc ocaml ici : http://caml.inria.fr/
Sinon ce tutoriel Ocaml en français est plutôt intéressant : http://damien-guichard.deeveloppez.com/tutoriels/ocaml/
Et en intro : http://gorgonite.developpez.com/tutoriels/fonctionnel/ocaml/introduction/

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