Фон: Я хочу разработать компонент, создающий библиотеку классов.Как разработать многоязычную/многоплатформенную библиотеку?
Этот компонент должен быть использоваться со многими языками высокого порядка, таких как C, C#, C++, VB, Java, Haskell, Ruby, Erlang, ... Я не хочу, чтобы исключить любые пользователи, которые не используя мой язык разработки. Есть ли принципы или инструменты, которые поддерживают мой проект? Я искал немного и нашел Haxle для компиляции на разные языки, но он поддерживает очень немногие из них. Я бы даже разработал параллель на всех n языках, которые будут поддерживаться, но если я хочу что-то изменить или исправить, я должен поддерживать все остальные n-1, и код, возможно, распространяется ... Это не то, что я знаю о чистом дизайн кода и ремонтопригодность. Итак, как управлять редактированием кода для разных языков? Каков правильный способ решить эту проблему? Я, конечно, не первый, кто хочет создать библиотеку для нескольких языков.
Я хочу развить эту библиотеку (в данном случае для уменьшения сложности) на одном целевом языке, но на этот раз для нескольких платформ (Unix, Win, Mac ...). Как справиться с этим? На самом деле будет оценено около 90% кода, который не зависит от платформы и 10%, который отличается для каждой ОС. Каков наилучший способ контроля изменений в зависимом от платформы коде? (Независимо легко ...) Что делать, если я изменяю такие вещи в части, которая использует код, зависящий от Unix, тогда мне нужно отслеживать все остальные платформы и, возможно, распространять код. Я думаю
#IFDEF
не вариант ...
Есть ли опыт или советы?
Я был бы рад, если бы существовали решения этих проблем, которые очень похожи.
так что ждите ... что ваш конкретный вопрос? В чем проблема, с которой вы сталкиваетесь? Открытые вопросы не приветствуются в Stack Overlfow. – Doorknob
Как это обычно делается, так это то, что вы разрабатываете фактическую библиотеку на одном языке, а затем используете * foreign-function-interface * других языков для разработки привязок к другим языкам. Тем не менее, этот подход в значительной степени ограничивает вас C или, возможно, C++ для основного языка, и не все языки одинаково хорошо взаимодействуют с C. (Java JNI - это мучительный.) Однако вы все равно должны ожидать много работы для поддержания привязок, просто надеюсь, что меньше, чем повторное выполнение библиотечной функции N раз. – millimoose