ocaml -> java 1.5 - Java - Programmation
Marsh Posté le 06-04-2005 à 22:35:01
heureusement quil y a un de l'objet en ocaml , deja que ca va etre cho, j'imagine meme pas si ct que récursif.
enfin spa trés encourageant ta réponse
Marsh Posté le 06-04-2005 à 23:03:21
Pourquoi ne pas generer du java directement à partir de OCAML avec un truc du style :
Caml/C interface JNI (Java Native Interface)
Caml <------------------> C <-----------------------------> Java
http://pauillac.inria.fr/~xleroy/software.html
Marsh Posté le 07-04-2005 à 00:35:09
c'est pas un peu gros comme projet ? surtout de traduire from scratch sans aucune connaissance du code original, ni des langages source et destination ? Ni des différents protocoles. T'en as pour des mois.
Marsh Posté le 07-04-2005 à 00:36:41
Citation : Unison may be unique among large OCaml projects in having been translated from Java to OCaml midway through its development. Moving to OCaml was like a breath of fresh air. |
Marsh Posté le 07-04-2005 à 00:46:55
Avec tous les trucs dispo sur google le copier/coller devrait etre efficace.
Marsh Posté le 07-04-2005 à 08:58:27
j'ai quand meme quelques connaissances en java
Taz, j'avais remarqué que unison a été développé à la base en java, il fait que je cherche s'il y a moyen de récupérer des sources
Marsh Posté le 18-04-2005 à 14:38:43
Bon, j'ai commencé a porté le code en java, et bien evidement je suis devant pas mal de problème car je ne connait que moyennement le java.
Il y a plein de types dans les sources en ocaml, et je sais pas trop comment les créé en java, et faire une classe pour chaque type :s
donc voici 3 definition de types différentes en ocaml
Code :
|
avez-vous une idée de la manière qu'il faut utilisée en java pour les déclarée ?
Marsh Posté le 19-04-2005 à 09:22:02
Pour le premier 'host' je pense que le mieux serait de créer en Java une classe avec deux constructeurs :
Un truc du style :
Code :
|
Sinon, s'il a des fonctions spécifiques a Local et d'autres à Remote... Tu peux faire une classe mère Host et deux classes héritées Local et Remote
Le type Root est assez simple a faire, juste une classe avec deux attributs
Quand au troisième cela dépasse mes compétences en Ocaml
En espérant que ca te serve... Je ne dis pas que c'est la seule solution...
Je connais pas le sujet a fond, donc je peux me tromper...
Bon courage
Marsh Posté le 19-04-2005 à 14:34:56
Ok merci
Sinon peut on faire des switch sur plusieurs variables ??
Marsh Posté le 19-04-2005 à 16:00:44
Un switch sur plusieurs variables???
En java sur plusieurs variables je pense pas j'ai jamais vu...
Sinon en Java les switch sont limités aux types char et int, si mes souvenirs sont exacts, on peut pas en faire sur des string...
>EDIT : Je pense que la seule solution est les switchs imbriqués en Java..
>FIN EDIT
en O'caml c'est des match :
Code :
|
Et tu les faire porter sur ce que tu veux...
Voilà... Comme je savais pas dans quel language tu le voulais... j'ai mis les deux...
Marsh Posté le 19-04-2005 à 18:12:30
ben je doi traduire du ocaml :s, spour que ca que je voulai des switch a plusieurs variable en java.
les switch ne sont limité au char et int, on peu utisé des types déclarés avec enum
Marsh Posté le 19-04-2005 à 18:15:58
oki je savais pas...
Si t'as d'autres questions hésites-pas... Je suis pas une pro mais je peux peut-être t'aider , je connais juste un peu les deux languages pour avoir fait des projets dessus...
Marsh Posté le 22-04-2005 à 15:51:43
(suite des aventures d'un noobie de la programmation :s )
En ocaml, il existe une fonction fold_left qui s'applique sur une liste
Code :
|
Je cherche une fonction java équivalente mais pour le moment j'ai rien
Marsh Posté le 24-04-2005 à 18:10:22
...
Tu cherches une fonction équivalente toute faite ??? Je pense pas que ca existe... Le mieux est de la réécrire...
Enfin si j'ai bien compris ta question...
Marsh Posté le 24-04-2005 à 23:47:10
Razor a écrit : (suite des aventures d'un noobie de la programmation :s )
|
Sachant que f est une fonction quelquonque ... avec des pointeurs sur fonctions ca serais faisable, en Java c'est dead ! Mais ca doit etre faisable autrement ... bon courage
EDIT : Quoique si tu crée ta propre lambda (une fonction universelle) à l'aide d'une structure de controle (je sais meme pas si ca exite en java) ca pourrais être envisageable.
Marsh Posté le 25-04-2005 à 09:00:43
ben la fonction fold_left fait partie du module List pour ocaml, un module qui contient toutes les fonctions courantes qu'on peut faire sur le liste + d'autres comme fold_left.
Je me demande donc si cette fonction n'existepas dans un package java dédié au traitement des listes
Marsh Posté le 25-04-2005 à 09:43:15
Pas à ma connaissance... Je pense que ce serait plus rapide de la réimplémenter... :$
Marsh Posté le 25-04-2005 à 10:21:50
puisqu'il est diffile voir impossible de faire une fonction fold_left prenant en parametre une fonction et des types quelconque j'ai essayé de faire lequivalent :s
Ocaml
Code :
|
Java
Code :
|
Marsh Posté le 25-04-2005 à 10:52:02
MMMMMmmmm Je pense que ca devrait marcher... J'aurais vu quelque chose de récursif mais bon... Déformation O'camlienne...
Marsh Posté le 25-04-2005 à 14:01:04
bon, le truc que j'ai a transcrire utilise pas mal de commandes systemes comme opendir, readdir...
On m'a dit que j'allais devoir utiliser une API java unix, mais je n'en sait pas plus
Marsh Posté le 25-04-2005 à 17:04:50
Pour le fold_left en Java c'est faisable, mon proff ma dit que que l'on pouvait simuler une fonction en parametre à l'aide du package RMI.
Marsh Posté le 25-04-2005 à 19:07:08
Chronoklazm a écrit : Pour le fold_left en Java c'est faisable, mon proff ma dit que que l'on pouvait simuler une fonction en parametre à l'aide du package RMI. |
Marsh Posté le 25-04-2005 à 19:08:12
sinon, ce que vous voulez faire est ptet faisable avec les Closure de commons-collections ?
Marsh Posté le 26-04-2005 à 08:41:20
nan mais vous occuper plus de fold_left, je ne l'ai vue qu'un fois pour le moment dans le code, et c pas pour les 3 lignes que ca rajoute
Sinon pour les API java unix j'en ai repéré 3 : Jtux, Posix et Java Unix, apres faut que je fasse un choix
Marsh Posté le 27-04-2005 à 11:41:40
Et bien pourquoi pas plus simplement utilisé la partie fonctionnel de java avec la sur couche nice http://mindprod.com/jgloss/nice.html au lieu de se casser les couilles aprés tu peux faire un tour sur pizza
http://pizzacompiler.sourceforge.net/
nice pizza
Marsh Posté le 27-04-2005 à 16:46:23
si j'ai d'autre probleme pour les fonctions en parametre je regarderai ca robert
sinon dans un if ocaml je ne voi pas tres bien ce que "<>" veut dire
Code :
|
Marsh Posté le 27-04-2005 à 16:59:22
N'aurait-elle pas la même signification de "!="??
Dans certains langages, on utilise <> car != ne marche pas, ou plutot renvoie n'importe quoi...
Normalement ca devrait être ca... J'y mettrais presque ma main à couper... ;o)
Marsh Posté le 27-04-2005 à 18:54:05
ben oué c'est ce que je pensait avant de voir <> et != juste apres.
Marsh Posté le 28-04-2005 à 08:51:05
J'aurais plutôt pensé qu'ils avaient la même signifiaction orale (différent de), mais pas la même utilisation. Je m'explique, je pencherais pour le fait que != s'applique sur un type de données scalaires et <> pour les types evolués, genre unit.
Enfin l'ocaml n'a jamais été m'a passion, n'est-ce pas Arwenalia
Bon courage Razor en tout cas...
Marsh Posté le 28-04-2005 à 08:53:11
http://www.pps.jussieu.fr/Livres/o [...] ra015.html
descend juste un peu à la figure 2.4... tu verras que :
Citation : |
@++
Marsh Posté le 28-04-2005 à 10:33:26
merci babar
en ocaml on peut déclarer des types quelqueconques en mettant ' devant la variable
J'ai pas mal de déclaration de types quelconques a traduire, et en java je vois pas trop comment m'i prendre
ex ocaml
Code :
|
Marsh Posté le 28-04-2005 à 11:58:51
L'Objet quelconque de Java est la Classe Object. Toutes les autres classes en héritent... Je pense que c'est la solution la plus simple à mettre en place... Sinon ya bien une classe Any... mais je crois qu'elle est trop spécifique et puis tordue à utiliser ( j'en ai fait les frais )...
Voili Voilou, en espérant que ca t'aide...
Marsh Posté le 29-04-2005 à 15:51:24
Oué j'avai essayé avec Object mais il me semble que ca me posai quelques problemes.
Je rencontre pas mal de type de plus en plus complexe :
ocaml
Code :
|
Un developpeur d'unison me donner en gros la hierarchie correspondante en java:
Code :
|
Dois je faire un enum pour lister chaque cas ?
Faut il faire une classe pour NoUpdates et Error ?
Marsh Posté le 29-04-2005 à 16:33:34
Je pense que des Classes heritées sont mieux venues que des enum...
Dans le cas de UpdateItem... NoUpdates est un constructeur particulier qui ce rapproche très fortement d'une classe héritée... Il en va de même pour les autres...
Peut-etre que la meilleure solution est de reprendre la hierarchie que l'on t'a donnée et de l'exprimé sous forme de classe mère et classe héritées...
Ps : Les types notés abstract peuvent très bien correspondrent a une classe asbraite en Java...
Marsh Posté le 03-05-2005 à 16:49:15
Bon maintenant faut que je m'occupe des exceptions :s
Voici la première fonction avec le block try...with que je rencontre (equivalent a try...catch java)
Code :
|
Ce sont bien evidement les 2 parties suivantes qui je me demande comment traduire en java :
- raise (Util.Transient("path " ^(Fspath.concatToString fspath path) ^ "has unknown file type" ))
- Unix.Unix_error((Unix.ENOENT | Unix.ENOTDIR),_,_)
Marsh Posté le 03-05-2005 à 17:08:08
Tordu comme truc...
Pour le Premier je verrais bien un truc sytle
throws New Exception("path " + (Fspath.concatToString fspath path) + "has unknown file type" );
Si je me souviens bien... Pour l'autre, seulement une vague idée,
Si j'ai bien traduit ce truc pas tres beau Unix.Unix_error((Unix.ENOENT | Unix.ENOTDIR),_,_) permet de savoir si une exception du type 'Fichier inexistant' ou 'Repertoire inexistant'... Je pense qu'en Java, il faudrait essayer de catch-er une IOException... Mais bon...
Voila tout ce que je peux dire... En espérant que ca te soit utile...
Marsh Posté le 06-04-2005 à 13:50:46
je viens de débuter mon stage de DUT informatique.
Mon projet est de traduire un logiciel (unison) de ocaml en java 1.5 :s
Je connait moyennement le java, mais par contre je ne connait pas du tout le ocaml, nous n'avons eu aucuns cours la dessus.
Depuis hier j'essaye de comprendre à l'aide de différents sites et pdf mais j'ai l'impression de patauger
Si vous avez de bons cours en caml/ocaml et pourquoi des methodes pour passer de ocaml en java n'hesiter pas à m'aider