Ensuite, c'est bateau, mais quand je code en C, je vois assez précisément ce que ça va donner en asm. En Ocaml, avec des systèmes de types hachement compliqués tu as un peu de mal à savoir ce qui va se faire en asm.
Hmmhmm, j'ai envie de dire (enfin sur le type) que c'est même l'inverse. En C, justement on voit poper des casts implicites un peu partout et tu perds de l'intégrité de la donnée en assembleur. Le système de type d'OCaml permet justement à ce qu'en asm, on face bien une addition entre 2 entiers. L'assembleur de nos processeurs ne propose pas de type, de ce faite, il faut s'en abstraire pendant la compilation. Un des moyens (le C) est de caster implicitements vers le type qu'on veut pour qu'on puisse faire une addition entre un (char *) et un (int). En OCaml, on interdit cela.
Par contre, il est vrai qu'il n'est pas aisé de voir comment OCaml compile les fonctions vers l'assembleur (environnement initial, lambda-lifting …) mais en somme, les opérations de base (qu'on retrouve en C) sont facilement localisables.
[^] # Re: .
Posté par Dinosaure (site web personnel) . En réponse au journal Quelques projets intéressants en OCaml. Évalué à 1.
Hmmhmm, j'ai envie de dire (enfin sur le type) que c'est même l'inverse. En C, justement on voit poper des casts implicites un peu partout et tu perds de l'intégrité de la donnée en assembleur. Le système de type d'OCaml permet justement à ce qu'en asm, on face bien une addition entre 2 entiers. L'assembleur de nos processeurs ne propose pas de type, de ce faite, il faut s'en abstraire pendant la compilation. Un des moyens (le C) est de caster implicitements vers le type qu'on veut pour qu'on puisse faire une addition entre un (char *) et un (int). En OCaml, on interdit cela.
Par contre, il est vrai qu'il n'est pas aisé de voir comment OCaml compile les fonctions vers l'assembleur (environnement initial, lambda-lifting …) mais en somme, les opérations de base (qu'on retrouve en C) sont facilement localisables.