|
Posté par cauchy54
fin nul caml
|
|
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" |
|
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. |
|
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... |
|
Posté par Patastronch
|
|
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...|
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? |
|
Posté par Dominique Lefebvre
Plus sérieusement, ça ressemble à quoi le caml? Un chameau évadé du zoo des langages objets?
|
.|
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] |
|
Posté par alelo
ca sert a quoi ce programme?
|
|
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. |
|
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.
|
|
Posté par abcd22
Moi j'ai compris qu'il demandait à quoi servait le programme donné par Patastronch.
|
|
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. |
|
Posté par VPE
Juste par curiosité,en quels langages programme tu ?
|
|
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....
|
|
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. |
|
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 ;) |
|
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....
|
|
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
|
|
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.
|
|
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... |
|
Posté par bruce.ml
La force de C c'est justement qu'on peut bidouiller en faisant des trucs interdits.
|
|
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. |
|
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... |
|
Posté par bruce.ml
Oui je donnais juste un exemple imagé qui voulait dire que le programme plantait sans crier gare :P
|
|
Posté par abcd22
Est-ce vraiment une force pour un langage de programmation ?
|
|
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!
|
|
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! |
|
Posté par bruce.ml
Les exceptions sont détectées à l'exécution, par les erreurs de type !
|
Et d'ailleurs le cast fou est fait pour tourner ce léger inconvénient...
|
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.
|
|
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... |
|
Posté par bruce.ml
Si justement, gcc laisse passer ce genre de choses, car C permet de caster justement.
|
|
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...
|
|
Posté par bruce.ml
Je n'ai jamais dit le contraire :P sauf que certains casts laissés passer provoqueront une erreur à l'execution.
|
|
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! |
|
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 ;)
|
|
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!) |
|
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 ! |
-