Я столкнулся с задачей создания нового компонента для интеграции в большую существующую кодовую базу C. Компонент, по сути, является своего рода компилятором и будет достаточно сложным, и я хотел бы написать его в OCaml (по причинам, указанным ниже здесь). Я знаю, что взаимодействие OCaml-C возможно (согласно manual, и это учебник), но выглядит несколько болезненно.
То, что я хотел бы знать, - это то, что другие здесь пытались широкомасштабную интеграцию OCaml и кода C, какие были неожиданные ошибки, которые они обнаружили, и пришли ли они к концу дня, что они будут иметь было лучше просто написать новый код в C.
Замечу, что я не пытаюсь начать дискуссию о преимуществах функционального и императивного программирования: позвольте сказать, что OCaml, оказывается, является правильным инструментом для работы, которую я имею в виду, и потенциальной трудностью интеграции это единственная проблема. У меня также нет возможности переписывать остальную часть кода.
Чтобы дать более подробную информацию о задаче: компонент, который мне нужно реализовать, - это определенный оптимизатор запросов, который включает в себя некоторые исследовательские идеи, которые моя группа в UC Davis работает и будет интегрирована в PostgreSQL, чтобы мы могли экспериментов. (Оптимизатор запросов, по сути, является компилятором.) Компонент будет вызываться из C-кода, будет функционировать в основном независимо, но сделает определенное количество вызовов другим компонентам PostgreSQL для получения таких вещей, как информация о системном каталоге, и построит сложный C (представляющая физический план запроса) в качестве вывода.
Извините за несколько открытые вопросы, но я надеюсь, что сообщество сможет сэкономить мне немного неприятностей:)
Спасибо,
т