Mam do czynienia z zadaniem zbudowania nowego komponentu, który ma zostać zintegrowany z dużą istniejącą bazą kodów C. Komponent jest zasadniczo rodzajem kompilatora i będzie na tyle skomplikowany, że chciałbym go napisać w OCaml (z powodów zgodnych z tymi podanymi here). Wiem, że interakcja OCaml-C jest możliwa (jak w przypadku manual i tej tutorial), ale wydaje się nieco bolesna.Mieszanie OCaml i C: czy to jest warte bólu?
Chciałbym wiedzieć, czy inni tutaj próbowali zintegrować na dużą skalę kod OCaml i kod C, jakie były niektóre z nieoczekiwanych błędów, które znaleźli, i czy pod koniec dnia doszli do wniosku, że lepiej napisać nowy kod w C.
Uwaga, jestem nie próbuje rozpocząć debatę na temat zalet programowania funkcjonalnego i imperatywnego: załóżmy, że zakładamy, że OCaml okazuje się być prawidłowym narzędzie do pracy, które mam na myśli, a potencjalna trudność w integracji jest jedynym problemem. Nie mam też możliwości przepisywania reszty kodu.
Aby podać nieco więcej szczegółów na temat zadania: elementem, który muszę wdrożyć, jest pewien rodzaj optymalizatora zapytań, który zawiera pewne pomysły badawcze, nad którymi pracuje moja grupa w UC Davis, i zostaną zintegrowane z PostgreSQL, aby może przeprowadzać eksperymenty. (Optymalizator zapytań jest w zasadzie kompilatorem.) Komponent byłby wywoływany z kodu C, działałby głównie niezależnie, ale wykonywałby pewną liczbę wywołań do innych komponentów PostgreSQL w celu pobrania takich informacji jak informacje o katalogu systemowym i tworzyłby kompleks Struktura danych C (reprezentująca fizyczny plan kwerend) jako wynik.
Przepraszamy za nieco otwartym pytanie, ale mam nadzieję, społeczność może być w stanie zapisać mi trochę problemów :)
Dzięki,
TJ
Z ciekawości, jakiego typu ocaml się spodziewasz, że C musi rozpakować? – nlucaroni