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

Outils et libs OCaml

isukthar
isukthar
Niveau 10
02 septembre 2009 à 21:16:14

Bonjour à tous,
j'aimerais me remettre un peu à la programmation OCaml, et j'aimerais avoir quelques conseils.

-Quel IDE utiliser? J'ai toujours utilisé un éditeur de texte + console, mais je trouve pas ça très pratique, en particulier si on a un projet avec plusieurs fichiers. D'après mes recherches, il y a des plug-in Eclipse. Lequel me conseilleriez vous?

-Quelle lib utiliser pour faire du fenêtrage (Windows & linux) et du multimédia (jeux)?

Merci à vous.

chris_27
chris_27
Niveau 10
02 septembre 2009 à 21:21:37

Perso, j'utilise vim/gvim pour coder en Ocaml, accompagné d'un bon vieux Makefile (classique, pas un OcamlMakefile).

Pour les libs, tu as une liste (non exhaustive) sur :
http://caml.inria.fr/cgi-bin/hump.cgi

Le seul jeu que j'ai fais en ocaml reposait sur OcamlSdl, parce que la SDL c'est trop bien. :bave:
Pour des interfaces graphiques, tu as LablGTK2 par exemple.

dnob700
dnob700
Niveau 10
02 septembre 2009 à 23:59:56

J'utilise souvent des IDE pour coder dans divers langages, mais pour le Caml, je trouve que la structure du langage fait qu'on peut le plus souvent s'en passer et donc j'utilise soit vim soit gedit pour coder, avec un makefile gééraliste (codé maison, disponible là : http://svn.quare.fr/viewvc/projets/trunk/ocamlmk/OCaml.mk?view=co ).

Les plug-in eclipse n'était pas très au point (aucun des deux qui sont censé être avancés) lorsque je les ai testé pour la dernière fois il y a quelques mois, mais ils évoluent assez vite.

Pour les graphismes, lablgtk a très bonne réputation mais je ne m'en sers pas (mes interfaces en caml ne dépassent jamais le stade du module Graphics).

isukthar
isukthar
Niveau 10
03 septembre 2009 à 11:53:54

Merci pour vos réponses. Je vais essayer de me restreindre au module graphics, si ça ne suffit pas, je passerai à lablgtk.

Petite question, est que F# est semblable à OCaml niveau perf (car OCaml compilé a des perfs très respectables)?

chris_27
chris_27
Niveau 10
03 septembre 2009 à 12:33:21

J'ai un doute : le module Graphics fourninrait-il de quoi faire de "vraies" fenêtres avec un barre de titre et une barre de menu ?

Pour le F#, je n'en sais rien. Je n'ai jamais utilisé ce langage (et je n'ai aucune intention de le faire). Le compilateur ocamplopt atteint effectivement des performances très raisonnables.

isukthar
isukthar
Niveau 10
03 septembre 2009 à 13:32:26

Avec graphics, on fait:
Graphics.open_graph "foo:0";;
Ca ouvre une fenêtre de tracé. C'est une vrai fenêtre avec titre, mais pas de barre de menu.

Disons que niveau IDE et libs (.NET), F# est assez intéressant par rapport à OCaml.

dnob700
dnob700
Niveau 10
03 septembre 2009 à 22:49:10

F# est compilé aussi et est donc très rapide (plus que caml pour certaines construction et moins que caml pour d'autre).

Les archives de la liste de discussion ocaml (caml-list@yquem.inria.fr) regorgent de comparaisons entre les deux langages.

Pour graphics, il serait possible de "simuler" des menu, mais c'est probablement le moment où il faut passer à autre chose.

isukthar
isukthar
Niveau 10
04 septembre 2009 à 21:44:52

Bon, finalement je suis retourné sous linux avec gedit + script shell pour la compilation. Windows attendra.
Quelqu'un peut me dire la différence entre ocamlc et ocamlopt? Les 2 produisent du code natif non?

chris_27
chris_27
Niveau 10
04 septembre 2009 à 21:59:56

« + script shell pour la compilation. » :d) oh non ! pitié ! Non. :(
Utilise un Makefile pour ça, c'est nettement plus agréable. Si tu ne sais pas faire, redemande et je te filerai le mien.

Sinon, ocamlc produit du bytecode, et pas du code natif. Tu pourras voir que la première ligne du fichier produit est :

  1. !/usr/bin/ocamlrun

:d) ocamlrun est lancé à l'exécution pour interpréter le bytecode contenu dans la suite du fichier.

ocamlopt quant à lui produit du code natif, ce qui est nettement plus rapide (d'un facteur allant de 5 à beaucoup je dirais).

isukthar
isukthar
Niveau 10
04 septembre 2009 à 22:26:13

Pour ocamlopt, bizarrement j'ai une erreur quand je fais "ocamlopt -o monprog monprog.ml". Je sais pas pourquoi, il faut que j'ajoute .opt à la fin de ocamlopt.
Pour le script shell, pourquoi c'est pas bien? Je ne sais pas utiliser les makefile (je sais, c'est la honte pour un informaticien lol), jusqu'à présent j'utilisais des IDE ou bien le makefile qu'on me fournissait.

dnob700
dnob700
Niveau 10
05 septembre 2009 à 05:28:21

ocamlopt.opt est une version compilé avec ocamlopt de ocamlopt, tandis que ocamlopt (pas .opt) est compilé avec ocamlc. Tu n'a probablement pas la version compilé avec ocamlc d'installé.

L'avantage du Makefile est que c'est prévu pour faire ce genre de chose et pas un script shell. Pour un tout petit projet, ce n'est pas un problème, mais très vite, le Makefile est bien plus simple à utiliser et efficace (ça prend en compte les dépendances, les fichiers qui doivent être reconstruit ou non, etc).

chris_27
chris_27
Niveau 10
05 septembre 2009 à 11:30:28

Isukthar : lorsque tu ajoutes un fichier .ml dans ton projet, tout ce que tu as à faire avec un Make c'est ajouter le nom du fichier au début du Makefile (et encore, avec un Makefile sophistiqué utilisant ocamldep, c'est même pas la peine. :rire: ). Par contre, si tu compiles via un script, le changement est plus gros.

De plus, le Makefile tu peux le réutiliser plus facilement qu'un script. Là encore, les changements sont assez mineurs d'un projet à l'autre.

Les Makefile sont plus compacts qu'un script (sauf pour les tous petits projets à 1-2 fichiers .ml :-))) ).

C'est plus facile (= habituel/naturel) pour autrui de compiler en faisant "make" qu'en cherchant un éventuel script à exécuter.

Enfin, et c'est sans doute le plus important : pour les gros projets, lancer relancer make suite à une modif ne provoquera pas la recompilation de tout le projet, mais seulement de ce qui est impacté par la modification. ocamlc/ocamlopt est assez rapide à compiler, donc ça ne se sent pas trop, mais quand c'est un gros projet c++, tu bénis make. :content:

isukthar
isukthar
Niveau 10
05 septembre 2009 à 14:46:20

J'ai pris le fichier proposé par dnob700, mais après, je fais comment pour compiler?
J'ai mis le fichier dans mon projet, j'ai installé make, et donc je tape make et ça me dit que make n'est pas une commande.
Quelqu'un peut me guider? (je suis sous Windows là).

isukthar
isukthar
Niveau 10
05 septembre 2009 à 14:52:34

D'ailleurs, sous windows, j'ai une erreur quand je compile avec ocamlopt ou ocamlopt.opt. On me dit que le compilateur ne sait pas quoi faire de graphics.cma.

dnob700
dnob700
Niveau 10
06 septembre 2009 à 12:23:34

Sous windows, c'est le bordel (c'est rare que je dise ça, donc si possible, essayer de ne pas troller) pour compiler sans passer par un IDE car la notion de PATH est assez différente de sous linux.

Le mieux je crois c'est d'utiliser cygwin pour installer make et Cie (voir peut-être ocaml). Comme ça beaucoup de problème sont géré tout seul.

Sinon, pour utiliser mon Makefile avec un projet ocaml. Dans le cas le plus simple tu le copie juste sous le nom de "Makefile" dans ton projet avant de taper make et ça doit fonctionner (une fois que make est dans le PATH car tu passe par cygwin, si cette solution ne te vas pas, on pourra t'expliquer comment modifier ça sans utiliser cygwin, mais, à long terme, c'est plus fatiguant).

chris_27
chris_27
Niveau 10
06 septembre 2009 à 12:33:11

dnob700 : « car la notion de PATH est assez différente de sous linux. » :d) euh ? C'est pas juste des variables d'environnement qu'on modifie comme on veut dans les deux cas ? :doute: :question:

« Le mieux je crois c'est d'utiliser cygwin » :d) aie… je vais demander à mes co-promo sous windows si je les croises sur le net, parce que je suis sûr qu'on peut se passer de (cette abomination suprême qu'est) cygwin.

Isukthar : Pour ocamlopt, il faut remplacer les .cma (libs contenant du bytecode) par des .cmxa (libs contenant du code natif). :-)

chris_27
chris_27
Niveau 10
06 septembre 2009 à 13:29:45

Alors, on m'a répondu : "MinGW fait ça très bien."
J'ai donc rebooté sous Windows pour voir ça par moi-même. :-)

J'ai installé le MinGW :
http://sourceforge.net/projects/mingw/files/Automated%20MinGW%20Installer/MinGW%205.1.4/MinGW-5.1.4.exe/download

Je l'ai installé dans C:\Program Files\MinGW\ (C:\MinGW par défaut, c'est complètement naze !). à un moment, j'ai coché "... make" en bas d'une longue liste.

Une fois l'installation finie, j'ai crée dans un dossier un hello.c et un Makefile basic. J'ai lancé une console "cmd" via win+r (s'il existe un raccourci pour lancer direct la console, je suis prenneur. :bave: ). Et pan, ça a échoué.

J'ai donc ajouté "C:\Program Files\MinGW\bin" dans mon Path :
1) win+e pour lancer l'explorateur de fichier.
2) clic droit sur "My computer" :d) "Properties" :d) onglet "Advanced" :d) Bouton "Environment variables" en bas à gauche (sous XP)
3) En bas, j'ai choisi Path et cliquer sur le bouton "Edit".
4) j'ai rajouté ";C:\Program Files\MinGW\bin" (sans les ") à la fin de Path.
5) j'ai tout fermé et je me suis relogué.

Une fois relogué, je me suis rendu compte que le make.exe s'appelait "mingw32-make.exe". Pour éviter les soucis, j'ai copié le fichier, puis je l'ai collé dans le même repertoire et j'ai renommé la copie "make.exe".

Nouvel essai : it works ! :fete:

C'était pas si dur finalement. :o))

isukthar
isukthar
Niveau 10
06 septembre 2009 à 17:54:44

J'ai suivi les instructions de Chris_27, et lorsque je fais make, j'ai les erreurs suivantes:
'cat' n'est pas reconnu en tant que commande interne
ou externe, un programme exécutable ou un fichier de commandes.
'gt' n'est pas reconnu en tant que commande interne
ou externe, un programme exécutable ou un fichier de commandes.
ocamlc -i -I /usr/local/lib/ocaml/3.11.0 lt; | cat > main.mli
'cat' n'est pas reconnu en tant que commande interne
ou externe, un programme exécutable ou un fichier de commandes.
make: *** [main.mli] Error 255

Ces commandes présentes dans le makefile de dnob700 n'existent pas sous windows?

chris_27
chris_27
Niveau 10
06 septembre 2009 à 21:45:10

Tu as un lien vers le makefile de dnob ?

Je pense que certaines choses sont mal passées (genre les > ça devait être des > à l'origine).
Sinon, les '| cat' ça doit pouvoir se changer en '-o'.

isukthar
isukthar
Niveau 10
06 septembre 2009 à 22:45:03

J'ai pris le lien donné plus haut. J'ai remplacé les > par > et < par <. Il me reste ça comme erreur:
Le chemin d'accès spécifié est introuvable.
ocamlopt -o main.opt -inline 10 -unsafe -noassert -w Ae -I /usr/local/lib/ocaml/
3.11.0 -ccopt -L/usr/local/lib/ocaml/3.11.0 -cc cc main.cmx
File "_none_", line 1, characters 0-1:
Error: No implementations provided for the following modules:
Graphics referenced from main.cmx
make: *** [main.opt] Error 2

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