le langage ocaml

(Cliquez-ici pour accéder à la version originale de cette discussion avec couleurs et images)







Posted by: sétifiano_19

bonsoir tout le mande
svp
eseque quelqu'un peut me donner un lien pour telecharger le le logiciel ocaml
merci bien et bonne journée.



Posted by: VPE

Salut,
Aprés 2 minutes de recherche sur google :
L'exe =>
http://birdy.icare.chez-alice.fr/bi...ml-2_04-win.zip
Et la doc =>
http://birdy.icare.chez-alice.fr/bi...2_04-refman.zip
PS : le langage s'appelle le caml, ocaml est le nom de l'IDE Objetive Calm



Posted by: sétifiano_19

salut
merci mon ami VPE c'est trés gentil a toi. bonne journée.



Posted by: cauchy54

fin nul caml



Posted by: Patastronch

Citation:
Posté par cauchy54
fin nul caml


Je comprends pas trop ta phrase, mais si tu insinues que caml est un langage de merde je te conseille de te mettre a l'informatique pour améliorer la pertinence de tes jugements. Sinon (et meme le cas échéant) met toi a la grammaire.



Posted by: fahr451

caml / turbo pascal

voila ce qui ressort d'une causerie que j'ai eue avec un spécialiste (il avait pratiqué turbo pascal 3 ans et caml 6 mois un spécialiste donc ) (moi avant je pensais que caml c'était le nouveau sponsor des prépas):

"imagine turbo pascal comme une voiture avec les 4 roues le volant la direction assistée ; ben caml y a pas de volant pas de roues mais en revanche tu peux en fabriquer un énorme avec de la moumoute , des carrées avec des jantes alu"



Posted by: Patastronch

Citation:
Posté par fahr451
caml / turbo pascal

voila ce qui ressort d'une causerie que j'ai eue avec un spécialiste (il avait pratiqué turbo pascal 3 ans et caml 6 mois un spécialiste donc ) (moi avant je pensais que caml c'était le nouveau sponsor des prépas):

"imagine turbo pascal comme une voiture avec les 4 roues le volant la direction assistée ; ben caml y a pas de volant pas de roues mais en revanche tu peux en fabriquer un énorme avec de la moumoute , des carrées avec des jantes alu"


Le caml est enseigné en prépa comme un cours de maths et non un cours de programmation (l'informatique en prépa est de toute facon une vaste plaisanterie). J'étais dégouté par ce langage quand j'étais en prépa. Depuis j'ai commencé a vraiment faire du caml et la puissance de ce langage n'est plus a démontrer.

Niveau performance c'est bien plus rapide que du C et ca rivalise pas trop mal avec du C++ si on code proprement.
C'est un des rares langages ou tu peux faire du fonctionnel et de l'objet, ce qui donne un code claire et facilement réutilisable (contrairement au C ou on comprends rien).

Un langage clair et puissant c'est deja un bon langage. De plus son coté fortement typé le font rivaliser avec le Ada en terme de sécurité du langage.

Enfin pour résumer le sml (ou le caml si vous préférez) on peut ne pas aimer mais c'est loin d'etre un langage de merde. Personnellement je code essentiellement en C++ et java (choix du au fait qu'on est générallement plusieurs sur un code et qu'il faut que tout le monde trouve un langage commun qu'il maitrise) et non en Caml, mais nombre de mes codes seraient plus vite réalisé en caml.

Le gros défaut du caml est surement son manque de popularité qui apour conséquence un manque de librairies variés contrairement au java/C++.



Posted by: Dominique Lefebvre

Citation:
Posté par Patastronch

Niveau performance c'est bien plus rapide que du C et ca rivalise pas trop mal avec du C++ si on code proprement.



Bonsoir,

Mes connaissances en informatique se limitent au FORTAN, au C, C++ et pascal, avec encore de beaux restes en ASM et ADA. Etant numéricien, ces langages sont mes outils quotidiens (avec Scilab et matlab/octave).

Cette introduction pour dire ma surprise en lisant qu'un langage comme caml (que je ne connais pas) serait plus performant que du C!

De quelle performance parles-tu? La concision de sa grammaire et de sa syntaxe? La capacité de son compilateur à produire du code exécutable le plus concis possible?

A ma connaissance et d'après les spécialistes, les compilateurs C produisent le code exécutable le plus performant du marché, tant et si bien que la majeur partie (99,5%) des OS sont aujourd'hui écrits en C.

Le caml aurait donc échappé aux concepteurs d'OS et à nous, pauvres pondeurs d'algo de calcul, comme moyen de produire du code performant?

Je le répète, je ne connais pas caml. De mon temps, on ne faisait pas d'info en taupe (pas une grosse perte) et à l'Ecole on se tapait du FORTRAN. Je n'ai jamais vu citer caml dans les études sur les codes performants. Mais je ne demande qu'à apprendre...



Posted by: Patastronch

Citation:
Posté par Dominique Lefebvre
Bonsoir,

Mes connaissances en informatique se limitent au FORTAN, au C, C++ et pascal, avec encore de beaux restes en ASM et ADA. Etant numéricien, ces langages sont mes outils quotidiens (avec Scilab et matlab/octave).

Cette introduction pour dire ma surprise en lisant qu'un langage comme caml (que je ne connais pas) serait plus performant que du C!

De quelle performance parles-tu? La concision de sa grammaire et de sa syntaxe? La capacité de son compilateur à produire du code exécutable le plus concis possible?

A ma connaissance et d'après les spécialistes, les compilateurs C produisent le code exécutable le plus performant du marché, tant et si bien que la majeur partie (99,5%) des OS sont aujourd'hui écrits en C.

Le caml aurait donc échappé aux concepteurs d'OS et à nous, pauvres pondeurs d'algo de calcul, comme moyen de produire du code performant?

Je le répète, je ne connais pas caml. De mon temps, on ne faisait pas d'info en taupe (pas une grosse perte) et à l'Ecole on se tapait du FORTRAN. Je n'ai jamais vu citer caml dans les études sur les codes performants. Mais je ne demande qu'à apprendre...


Oups la grosse gaffe, je voualis dire totalement l'inverse, le C est plus performant que le caml, en fait je voulais dire que dans la serie de test c est le seul langage qui batte réellement le caml en perf.

source :
http://shootout.alioth.debian.org/gp4/index.php



Posted by: abcd22

Citation:
Posté par Patastronch

Moi ce que je vois sur le lien c'est une sorte de jeu pour se moquer justement des classements de langages de programmation :
« Create your own Ranking

What fun! Can you manipulate the multipliers and weights to make your favourite language the best programming language in the Benchmarks Game? »
Et sur la page d'accueil :
« Benchmarking programming languages?

How can we benchmark a programming language?
We can't - we benchmark programming language implementations.

How can we benchmark language implementations?
We can't - we measure particular programs. »
C'est marrant, ça fait un moment que je m'etais dit en voyant des lycéens/taupins passer des heures à comparer les mérites de telle ou telle prépa/école que ça serait sympa de faire un truc de ce genre mais pour créer des classements de prépas/grandes écoles, je découvre qu'il y a des gens qui ont eu la même idée.



Posted by: Dominique Lefebvre

Citation:
Posté par Patastronch
Oups la grosse gaffe, je voualis dire totalement l'inverse, le C est plus performant que le caml, en fait je voulais dire que dans la serie de test c est le seul langage qui batte réellement le caml en perf.

source :
http://shootout.alioth.debian.org/gp4/index.php


dommage, j'ai raté une occasion de me passer du C! Vraiment dommage...

Plus sérieusement, ça ressemble à quoi le caml? Un chameau évadé du zoo des langages objets?



Posted by: Patastronch

Citation:
Posté par Dominique Lefebvre
dommage, j'ai raté une occasion de me passer du C! Vraiment dommage...

Plus sérieusement, ça ressemble à quoi le caml? Un chameau évadé du zoo des langages objets?



T es pas si loin que ca :p leur logo c est le dromadaire et y a meme un caml sans objet appelé caml light :p

Sinon si tu te passes de la syntaxe fonctionnelle ca ressemble a n'importe quel langage, si tu adoptes cette syntaxe ML tu fais tes fonctions comme tu déclarerais une fonction en maths en gros.

Enfin bon la j ai pas trop le temps de m'etendre sur le sujet mais je viendrait te montrer des exemples de codes si tu veux plus tard dans la soirée.



Posted by: VPE

Citation:
Posté par Dominique Lefebvre
Plus sérieusement, ça ressemble à quoi le caml? Un chameau évadé du zoo des langages objets?


print_endline "Hello world!";;

# let d = d (sqrt epsilon_float);;
val d : (float -> float) -> float -> float = <fun>

#open "graphics";;
open_graph "";;
begin
set_color red;
fill_circle 320 200 50;
wait_next_event [Button_down]
end;;


La syntaxe a l'air encore plus barbante que celle du C++ .
J'oublie un point virgule sur deux,alors deux points virgules par fin d'instruction c'est terminé lol.
J'espert que le compilateur d'OCALM est plus précit que celui de Visual C++.

En revanche il semble y avoir des instructions trés interessantes comme :
wait_next_event [Button_down]



Posted by: Dominique Lefebvre

Citation:
Posté par VPE
print_endline "Hello world!";;

# let d = d (sqrt epsilon_float);;
val d : (float -> float) -> float -> float = <fun>

#open "graphics";;
open_graph "";;
begin
set_color red;
fill_circle 320 200 50;
wait_next_event [Button_down]
end;;


La syntaxe a l'air encore plus barbante que celle du C++ .
J'oublie un point virgule sur deux,alors deux points virgules par fin d'instruction c'est terminé lol.
J'espert que le compilateur d'OCALM est plus précit que celui de Visual C++.

En revanche il semble y avoir des instructions trés interessantes comme :
wait_next_event [Button_down]


Oui bof! Vu comme ça, ce n'est pas vraiment très époustouflant.... J'imagine que ce langage a d'autres richesses! Les camarades de l'INRIA ne se seraient cassé la tête pour si peu...

A propos de la gestion des évènements, l'API de Windows ou les fonctions des librairies système de Linux (ou autres Unix) offrent des fonctions très puissantes...



Posted by: Patastronch

Bon une légère petite démonstration de sa syntaxe.

La grande puissance du ocaml pour moi c est le filtrage (pattern matching). Ca allège le code de maniere impressionnante !

exemple :

Supposons que je veuille calculer de maniere récursive la factorielle

#let rec factorielle = function
| n when n<2 -> 1
| n when n > 1 -> factorielle(n - 1) *n ;;

Rien d'extraordinaire pour l'instant mais déjà un code plus claire pour un truc si simple.

En fait le ML permet d'associer a la "gueulle d'une élément" un retour ou une action.
On peut toujours faire pareille avec un switchou un paquet de if mais on s'appercoit vite que c'est bien pratique cette facone de présenter les choses.

En Objective Caml, le compilateur permet de renvoyer un contre exemple a notre fonction si on oublie certains cas de filtrage.

Voyons rapidement une fonction un peu plus compliquée permettant d'applatir une liste (ce que j'appelle applatir une liste c'est de décomposer tous les éléments de la liste en singleton (cad que si un élément de la liste est lui meme une liste il sera décomposer en tous ses éléments).

#let rec aplatir = function
[] -> []
| []::q -> aplatir(q)
| ((a::q)::r) -> a::aplatir(q::r);;

A savoir que :

[] représente la liste vide
t::q correspond a une liste dont t est le premier élément (la tete) et q le reste de la liste (la queue). Un élément e serait donc équivalent a la liste : e::[]

La on voit deja plus l'interet du filtrage. Et dans un tel exemple on est certain de ne pas avoir oublié de cas (ce qui est loin d'etre évident au premier coup d'oeil) car sinon Ocaml nous presenterait aussitot un contre exemple.

Bon je vais pas trop m'éterniser, il y a trop de chose a dire sur le Ocaml, mais c'était surtout pour montrer a Dominique une idée de ce qu'était le pattern matching qui n'a été que survolé dans mes exemples.



Sinon en effet poru la gestion des evenements unix n'a rien a envier a ocaml. C'estp as pour des fonctions comme wait_next_event que l'on programme en ocaml en tous cas.



Posted by: Dominique Lefebvre

Ah oui, sympathique ton truc de filtrage! Je me disais bien aussi....

Je ne sais pas si tu te rappelles d'un langage,aujourd'hui un peu oublié: l'APL. Un langage pour mathématicien. On faisait des concours à celui qui écrivait le code le plus court, du style inverser une matrice en 1 ligne, sans appel de fonction évidement...
Et bien ton caml me rappelle un peu l'APL, dans sa forme et ses principes.



Posted by: alelo

ca sert a quoi ce programme?



Posted by: VPE

Citation:
Posté par alelo
ca sert a quoi ce programme?

Ocaml ?C'est un IDE pour la programation en caml.
Et si tu fait référence au caml,sache que ce n'est pas un programme mais un langage de programmation.



Posted by: Patastronch

Citation:
Posté par VPE
Ocaml ?C'est un IDE pour la programation en caml.
Et si tu fait référence au caml,sache que ce n'est pas un programme mais un langage de programmation.


OCaml est un langage meme s'il est implémtenté en caml (qui lui meme basé sur le ML). D'ailleur l'objet n'existe pas en Caml mais existe en O'Caml (d'ou son nom : Objective Caml). Il permet également la programmation modulaire chose que le caml ne sait pas faire.



Posted by: VPE

Citation:
Posté par Patastronch
OCaml est un langage meme s'il est implémtenté en caml (qui lui meme basé sur le ML). D'ailleur l'objet n'existe pas en Caml mais existe en O'Caml (d'ou son nom : Objective Caml). Il permet également la programmation modulaire chose que le caml ne sait pas faire.

Oui c'est vrai,
Visual Basic et Visual C++ désignent a la fois des IDE,et des languages.
Il en va de meme pour Ocaml.Cependant alelo demandait quel était ce "programme" j'ai donc pensé qu'il parlait de l'IDE objective caml.
Juste par curiosité,en quels langages programme tu ?



Posted by: Dominique Lefebvre

Tiens, dans ma grande naïveté, je croyais que VB était l'IDE version microsoft qui permettait de programmer en basic , de même que VC++ était celui du même éditeur qui permettait de programmer en C++. J'ai du me tromper...



Posted by: VPE

...non je crois qu'il y a un petit qui-pro-quo.
Si VC++ est dédié a la programmation en C++ Visaul basic lui est didié au Visual basic,non au basic.
Visual C++ est uniquement le nom d'un IDE alors que Visaul basic est un autre language.
alelo demande ce qu'est ocaml,je lui répond un IDE et Patastronch lui dit que c'est un langage,je lui ai donc précisé que c'était les deux et ai pris comme exemple VB et VC++.

Bon sur ce bonne nuit



Posted by: abcd22

Moi j'ai compris qu'il demandait à quoi servait le programme donné par Patastronch.



Posted by: Dominique Lefebvre

Citation:
Posté par abcd22
Moi j'ai compris qu'il demandait à quoi servait le programme donné par Patastronch.


Tu crois? Le premier programme exemple, celui-ci concerné par la question, comme tous les prog exemple de ce genre, ne sert à rien, sinon à donner un exemple....



Posted by: Dominique Lefebvre

Citation:
Posté par VPE
...non je crois qu'il y a un petit qui-pro-quo.
Si VC++ est dédié a la programmation en C++ Visaul basic lui est didié au Visual basic,non au basic.


Pourquoi, on ne peut pas écrire un programme en Basic standard sous VB? Tu m'étonnes...



Posted by: Patastronch

Citation:
Posté par VPE
Juste par curiosité,en quels langages programme tu ?

Ca dépend enormément de ce que j'ai a faire. Si je me fous de la rapidité et que je veux juste faire certaines taches redondantes ca sera un langage de script tel le python ou bash.
Si je code un truc un peu plus serieu mais sans besoin de performance spécialement, j'opterais surement pour le java.
Si la complexité de ce que je veux coder n'est pas polynomiale ou que mes instances de départ sont de grande tailles alors en O'Caml si je code seul, en C++ si on est plusieurs a coder.
Et si je veux juste faire un site banal : php/struts-hibernate ou ruby on rails elon ce que propose le serveur, et si le site doit etre un peu plus poussé ca sera à coup de cgi.

Je ne fais pas de C pour la simple et bonne raison que faire un code propre en C c'est toute une aventure !



Posted by: Patastronch

Citation:
Posté par Dominique Lefebvre
Tu crois? Le premier programme exemple, celui-ci concerné par la question, comme tous les prog exemple de ce genre, ne sert à rien, sinon à donner un exemple....


Et encore, si j'avais pu placer un "hello world" je me serais pas géné



Posted by: Patastronch

Citation:
Posté par VPE
Oui c'est vrai,
Il en va de meme pour Ocaml.Cependant alelo demandait quel était ce "programme" j'ai donc pensé qu'il parlait de l'IDE objective caml.


Oui c'est bel et bien les 2, si j'ai fait cette remarque c'était surtout parceque j'ai cru que tu ne considerais pas le O'Caml comme un langage.



Posted by: bruce.ml

Le premier gros avantage d'O'caml c'est que c'est un langage typé statiquement, plus précisément à typage polymorphique par inférence de types.
En gros ça veut dire que quand vous éssayez de compiler votre programme, si jamais vous éssayez d'ajouter un entier et une chaine de caractères ils vous dit : "hey coco qu'est ce que tu fabriques là, t'as pas le droit de faire ça". Alors qu'un langage comme C vous dit que tout va bien, et quand vous lancez votre programme qui est dans la fusée Ariane, C vous dit : oops en fait ça fonctionne pas, et la fusée explose ;)
Sinon le deuxième gros avantage c'est que c'est un langage fonctionnel, c'est à dire qu'on peut utiliser des fonctions, ce qui permet, quand on en a l'habitude, de programmer très rapidement, en ayant un code très concis et très clair.



Posted by: Dominique Lefebvre

Citation:
Posté par bruce.ml
Le premier gros avantage d'O'caml c'est que c'est un langage typé statiquement, plus précisément à typage polymorphique par inférence de types.
En gros ça veut dire que quand vous éssayez de compiler votre programme, si jamais vous éssayez d'ajouter un entier et une chaine de caractères ils vous dit : "hey coco qu'est ce que tu fabriques là, t'as pas le droit de faire ça". Alors qu'un langage comme C vous dit que tout va bien, et quand vous lancez votre programme qui est dans la fusée Ariane, C vous dit : oops en fait ça fonctionne pas, et la fusée explose ;)


Heuuu, c'est pas vraiment pour ça que Ariane 5 c'est planté! C'est pour un problème de cumul d'erreurs d'arrondi. En fait, le bout de code en question provenait du code Ariane 4 (moteur Viking sur A4 et Vulcain sur A5) et a été réutilisé sans vraiment être testé à nouveau. C'est donc plutôt l'ingénierie du logiciel qui est en cause. Je ne suis pas certain que l'usage de la technologie objet empêche les erreurs dues au cumul des erreurs d'arrondi....



Posted by: Patastronch

Citation:
Posté par Dominique Lefebvre
Heuuu, c'est pas vraiment pour ça que Ariane 5 c'est planté! C'est pour un problème de cumul d'erreurs d'arrondi. En fait, le bout de code en question provenait du code Ariane 4 (moteur Viking sur A4 et Vulcain sur A5) et a été réutilisé sans vraiment être testé à nouveau. C'est donc plutôt l'ingénierie du logiciel qui est en cause. Je ne suis pas certain que l'usage de la technologie objet empêche les erreurs dues au cumul des erreurs d'arrondi....


En effet, l'objet ou le coté fortement typé d 'un langage n'est qu'une sécurité de plus mais renvoie des reusltat stoujours aussi faux dans les calculs.

A savoir que faire du calcul exact avec un ordinateur est un véritable casse tete et il y a pas de solution miracle qui marche pour tout, les techniques sont spécifique a chaque probleme et sont souvent tres gourmande en temps/place.



Posted by: VPE

Citation:
Posté par bruce.ml
En gros ça veut dire que quand vous éssayez de compiler votre programme, si jamais vous éssayez d'ajouter un entier et une chaine de caractères ils vous dit : "hey coco qu'est ce que tu fabriques là, t'as pas le droit de faire ça". Alors qu'un langage comme C vous dit que tout va bien

Absolument pas,le compilateur de VC++ est meme (trop) pointilleux.
heuresement qu'il ne laisse pas passer ce genre d'erreurs car le programme planterait en cours d'execution,il corrige meme les erreurs de "logiques" comme une variable AzertY pour AzerTy ou ligne ligne qui ne ne sera jammais exécutée ou qui n'a aucun effet ou encore la perte de préscision lors de la conversion de types de données,ect...



Posted by: bruce.ml

Citation:
Posté par Dominique Lefebvre
Heuuu, c'est pas vraiment pour ça que Ariane 5 c'est planté! C'est pour un problème de cumul d'erreurs d'arrondi.


Oui je donnais juste un exemple imagé qui voulait dire que le programme plantait sans crier gare :P



Posted by: bruce.ml

Citation:
Posté par VPE
Absolument pas,le compilateur de VC++ est meme (trop) pointilleux.
heuresement qu'il ne laisse pas passer ce genre d'erreurs car le programme planterait en cours d'execution,il corrige meme les erreurs de "logiques" comme une variable AzertY pour AzerTy ou ligne ligne qui ne ne sera jammais exécutée ou qui n'a aucun effet ou encore la perte de préscision lors de la conversion de types de données,ect...


La force de C c'est justement qu'on peut bidouiller en faisant des trucs interdits. Si c'est pour faire du C gentil écolier, autant faire du o'caml :)



Posted by: abcd22

Citation:
Posté par bruce.ml
La force de C c'est justement qu'on peut bidouiller en faisant des trucs interdits.

Est-ce vraiment une force pour un langage de programmation ?



Posted by: Dominique Lefebvre

Citation:
Posté par Patastronch
En effet, l'objet ou le coté fortement typé d 'un langage n'est qu'une sécurité de plus mais renvoie des reusltat stoujours aussi faux dans les calculs.

A savoir que faire du calcul exact avec un ordinateur est un véritable casse tete et il y a pas de solution miracle qui marche pour tout, les techniques sont spécifique a chaque probleme et sont souvent tres gourmande en temps/place.


Ouaip, je peux même t'en causer un rayon..... Vu que je passe mes journées sur ce genre de problème!

Pour la petite histoire, je n'ai jamais vu aucun intérêt à utiliser une techno objet, à condition que les programmeurs maîtrisent correctement le génie logiciel, ce qui est assez rare!



Posted by: Dominique Lefebvre

Citation:
Posté par VPE
Absolument pas,le compilateur de VC++ est meme (trop) pointilleux.
heuresement qu'il ne laisse pas passer ce genre d'erreurs car le programme planterait en cours d'execution,il corrige meme les erreurs de "logiques" comme une variable AzertY pour AzerTy ou ligne ligne qui ne ne sera jammais exécutée ou qui n'a aucun effet ou encore la perte de préscision lors de la conversion de types de données,ect...


Absolument, tous les compils C++ savent faire une chose aussi bête...



Posted by: Dominique Lefebvre

Citation:
Posté par bruce.ml
Oui je donnais juste un exemple imagé qui voulait dire que le programme plantait sans crier gare :P


Pas s'il est bien fait! Le traitement des exceptions, ça te dit qq chose? ça n'existe pas que dans Python ou ocaml!



Posted by: Dominique Lefebvre

Citation:
Posté par abcd22
Est-ce vraiment une force pour un langage de programmation ?


Oui, il arrive qu'on soit obligé de bidouiller. Il faut pouvoir le faire, mais en connaissance de cause... Un peu comme des funambules sans filet!



Posted by: bruce.ml

Citation:
Posté par Dominique Lefebvre
Pas s'il est bien fait! Le traitement des exceptions, ça te dit qq chose? ça n'existe pas que dans Python ou ocaml!


Les exceptions sont détectées à l'exécution, par les erreurs de type !



Posted by: bruce.ml

Citation:
Posté par Dominique Lefebvre
Ouaip, je peux même t'en causer un rayon..... Vu que je passe mes journées sur ce genre de problème!

Pour la petite histoire, je n'ai jamais vu aucun intérêt à utiliser une techno objet, à condition que les programmeurs maîtrisent correctement le génie logiciel, ce qui est assez rare!


les objets servent effectivement aux programmeurs qui travaillent sur de gros projets et à plusieurs. Sinon ça ne sert en effet que très rarement.



Posted by: Dominique Lefebvre

Citation:
Posté par bruce.ml
Les exceptions sont détectées à l'exécution, par les erreurs de type !


De quelles erreurs parles-tu? Si ton code affecte un integer à un char, je ne suis pas certain que ton compil C/C++ ne râle pas Et d'ailleurs le cast fou est fait pour tourner ce léger inconvénient...



Posted by: Dominique Lefebvre

Citation:
Posté par bruce.ml
les objets servent effectivement aux programmeurs qui travaillent sur de gros projets et à plusieurs. Sinon ça ne sert en effet que très rarement.


Ben, un code de claul ça peut être une très gros projet! Les modèles de simu en climato ou en physique nucléaire font des centaines de milliers de lignes, voire plusieurs millions, avec de milliers de composants. Une équipe projet de modélisation/simulation comprend au moins une dizaine (22 dans ma dernière équipe) d'ingé. calcul qui programment.
Or, ils utilisent très peu pour ne pas dire pas les techno objets.

Je pense qu'il s'agit d'une limitation culturelle, de techniques de génie logiciel non orientées objets et aussi un besoin de réutilisabilité des codes pris en compte à travers des librairies de code qui existent depuis longtemps et ne sont donc OO.



Posted by: bruce.ml

Citation:
Posté par Dominique Lefebvre
De quelles erreurs parles-tu? Si ton code affecte un integer à un char, je ne suis pas certain que ton compil C/C++ ne râle pas Et d'ailleurs le cast fou est fait pour tourner ce léger inconvénient...


Si justement, gcc laisse passer ce genre de choses, car C permet de caster justement.



Posted by: Dominique Lefebvre

Citation:
Posté par bruce.ml
Si justement, gcc laisse passer ce genre de choses, car C permet de caster justement.


Tu l'as dit bouffi... le compilateur C permet de caster, il ne le fait pas tout seul sans prévenir...



Posted by: bruce.ml

Citation:
Posté par Dominique Lefebvre
Tu l'as dit bouffi... le compilateur C permet de caster, il ne le fait pas tout seul sans prévenir...


Je n'ai jamais dit le contraire :P sauf que certains casts laissés passer provoqueront une erreur à l'execution.



Posted by: Dominique Lefebvre

Citation:
Posté par bruce.ml
Je n'ai jamais dit le contraire :P sauf que certains casts laissés passer provoqueront une erreur à l'execution.


C'est clair, mais avoue qu'il faut être bien inattentif pour laisser passer un cast...
Par principe, et pour ma part, je hais les casts et je me garde bien d'utiliser cette méthode de bidouilleurs. Il ya bien que les ingé système pour caster comme des fous!



Posted by: bruce.ml

Citation:
Posté par Dominique Lefebvre
C'est clair, mais avoue qu'il faut être bien inattentif pour laisser passer un cast...
Par principe, et pour ma part, je hais les casts et je me garde bien d'utiliser cette méthode de bidouilleurs. Il ya bien que les ingé système pour caster comme des fous!


Parfois on est obligé de caster, pour quelque raison que ce soit. Mais si tu n'utilises pas les casts et que tu programmes proproment, il faut se mettre au caml ;)



Posted by: Dominique Lefebvre

Citation:
Posté par bruce.ml
Parfois on est obligé de caster, pour quelque raison que ce soit. Mais si tu n'utilises pas les casts et que tu programmes proproment, il faut se mettre au caml ;)


Pourquoi pas! Mais ce n'est pas très à la mode chez les physiciens... En ce moment, le langage In c'est Python! Le dernier numéro de l'IEEE computing in science and engineering nous vante sa parfaite adéquation à nos besoins, exemples à l'appui! J'ai regardé ça en diagonal et effectivement ça a l'air sympa...

Mais bon, entre le code de calcul multi-physiques qu'on connait depuis 10 ans, scilab dont on ne peut se passer pour maqueter et les langages fétiches de notre métier, FORTRAN et C, j'ai du mal à me convaincre de me remettre en cause. Je ne vois pas de raison suffisante à produire l'effort de réapprendre un langage...

Ah oui, j'avoue qu'il marrive très rarement de caster, seulement pour utiliser certaines API de windows lorsque c'est indispensable (et c'est rare!)



Posted by: Patastronch

Citation:
Posté par Dominique Lefebvre
Pourquoi pas! Mais ce n'est pas très à la mode chez les physiciens... En ce moment, le langage In c'est Python! Le dernier numéro de l'IEEE computing in science and engineering nous vante sa parfaite adéquation à nos besoins, exemples à l'appui! J'ai regardé ça en diagonal et effectivement ça a l'air sympa...

Mais bon, entre le code de calcul multi-physiques qu'on connait depuis 10 ans, scilab dont on ne peut se passer pour maqueter et les langages fétiches de notre métier, FORTRAN et C, j'ai du mal à me convaincre de me remettre en cause. Je ne vois pas de raison suffisante à produire l'effort de réapprendre un langage...

Ah oui, j'avoue qu'il marrive très rarement de caster, seulement pour utiliser certaines API de windows lorsque c'est indispensable (et c'est rare!)



Euh le python reste un langage interprété, pas terrible pour la rapidité d'éxecution, pour le coup autant utiliser le Caml qui utilise les memes paradigmes de programmation.

Pour moi le python est un bon langage car tres simple et tres riche, mais niveau sécurité (notemment a cause du typage dynamique qui en fait une force et a la fois une faiblesse du langage) et perf ca laisse à désirer.

Donc le python oui, mais si ton algo est en O(n²) (grand max O(n^3)) pour des instances de tailles raisonable, sinon t'en a pour la semaine pour faire ce que le C aurait fait en 1 heure !



Posted by: Dominique Lefebvre

Citation:
Posté par Patastronch
Euh le python reste un langage interprété, pas terrible pour la rapidité d'éxecution, pour le coup autant utiliser le Caml qui utilise les memes paradigmes de programmation.

Pour moi le python est un bon langage car tres simple et tres riche, mais niveau sécurité (notemment a cause du typage dynamique qui en fait une force et a la fois une faiblesse du langage) et perf ca laisse à désirer.

Donc le python oui, mais si ton algo est en O(n²) (grand max O(n^3)) pour des instances de tailles raisonable, sinon t'en a pour la semaine pour faire ce que le C aurait fait en 1 heure !


Certes, il s'agit d'un interpréteur! Ce fut d'ailleurs ma première et principale objection. Puis en analysant la situation je me suis dit que:
- je n'utiliserai pas Python pour écrire un code de calcul. Pour cela, rien ne vaut C ou FORTRAN.
-je pourrais utiliser Python comme scilab: pour faire des maquettes ou pour coder rapidement des algos. Un des avantages de Python est de posséder des librairies de calcul très riches (Numpy, scipy, CCpy, etc..) qui satisfont tous mes besoins. Après tout, on a souvent besoin d'écrire un code sur un coin de table pour expérimenter une idée ou pour faire un petit traitement.
- je peux interfacer du code python et du code C ou FORTRAN.
- l'interpréteur Python est assez rapide sur les plateformes que j'utilise, aussi performant que java, ce qui n'est pas difficile remarque...

Sais-tu qu'il existe un projet EC d'écriture d'un compilateur Python en Python (le projet PyPy)!

Enfin bref, c'est un outil à ne pas négliger. Mais comme je l'ai écris, je ne suis pas près à renoncer au C/FORTRAN...



Posted by: Sinus

Salut, j'ai lu en diagonale la discussion et plusieurs points n'ont pas été abordés me semble-t-il :

- L'Ocaml peut être compilé en code-objet (comme du .NET ou du Java), mais il peut également être interprêté, ou bien entendu compilé en natif.
C'est extrèmement commode pour développer/porter/débugger.

- Les performances de l'ocaml sont excellentes. Evidemment le C est meilleur, mais par rapport au Java, .NET, ou même la plupart des langages compilés en natif, il n'y a pas photo.

- Les fuites mémoires sont très courantes dans plein de programmes en C/C++ (la faute au programmeur, certes). OCaml est à la base un langage fonctionnel (pas de variables explicites) et dispose d'un garbage collector. Pas de fuites en RAM, donc.

P.S : J'avais fait un petit jeu en début de L2 en OCaml, l'executable et la source sont ici : http://sinusop.free.fr/pperso/pperso/serpent/











-