Tengo la tarea de construir un nuevo componente para integrarlo en una gran base de código C existente. El componente es esencialmente un tipo de compilador, y será lo suficientemente complicado como para escribirlo en OCaml (por razones similares a las dadas en here). Sé que la interacción OCaml-C es posible (según el manual y este tutorial), pero parece algo doloroso.Mezclar OCaml y C: ¿vale la pena?
Lo que me gustaría saber es si otros aquí han intentado la integración a gran escala de OCaml y el código C, cuáles fueron algunos de los errores inesperados que encontraron, y si al final del día llegaron a la conclusión de que lo harían han sido mejor simplemente escribir el nuevo código en C.
Nota, soy no tratando de iniciar un debate sobre los méritos de funcional en comparación con la programación imperativa: digamos que suponemos que OCaml pasa a ser la derecha herramienta para el trabajo que tengo en mente, y la dificultad potencial en la integración es el único problema. Tampoco tengo la opción de volver a escribir el resto de la base de código.
Para dar un poco más de detalle sobre la tarea: el componente que necesito implementar es un cierto tipo de optimizador de consultas que incorpora algunas ideas de investigación que mi grupo de UC Davis está trabajando y se integrará en PostgreSQL para que podamos puede ejecutar experimentos. (Un optimizador de consultas es, esencialmente, un compilador.) El componente se invocaría desde el código C, funcionaría en su mayoría de forma independiente pero haría una cierta cantidad de llamadas a otros componentes de PostgreSQL para recuperar cosas como la información del catálogo del sistema y construiría un complejo Estructura de datos C (que representa un plan de consulta física) como salida.
Disculpas por la pregunta un poco abierta, pero espero que la comunidad podría ser capaz de ahorrar un poco de problemas :)
Gracias,
TJ
Por curiosidad, ¿qué tipo de ocaml está esperando que C tenga que desempaquetar? – nlucaroni