Компилирование нескольких языков вместе
Можно ли собрать несколько языков вместе, чтобы получить лучшее из разных языков.
7 ответов
Определенно можно связать их вместе (если они запрограммированы соответствующим образом) после компиляции по отдельности, если все компиляторы и компоновщики совместимы. Например:
g77 -c one.f
gcc -c two.c
gcc -o together one.o two.o
это компилирует файл Fortran, затем файл C, а затем связывает их вместе в один исполняемый файл с именем together
(при условии, что они вызывают друг друга правильно;-), используя набор инструментов GCC.
Microsoft.NET - это популярный способ совместного использования нескольких языков - C#, F#, IronPython, IronRuby и так далее. Visual Studio будет обрабатывать компиляции в совместимые коды и объединять их в сборки, но вы также можете делать это "вручную", если хотите.
Если под "компиляцией" вы подразумеваете наличие нескольких разных языков в одном файле, это также возможно, но реже - например, некоторые компиляторы C имеют расширения, позволяющие вам выражать "встроенный" язык ассемблера в одном и том же файле.
Да, это возможно, но многое зависит от конкретных языков. Например, вызов функций C или классов C++ из Python выполняется регулярно.
Другим хорошим примером объединения языков является платформа Java. Вы можете смешивать Groovy, Jython, JRuby, Scala, Clojure и другие языки с Java. Для разных языков требуются разные компиляторы, но обычно вы можете звонить с одного языка на другой. Groovy и Scala особенно хорошо подходят для взаимодействия.
Да, и собственный интерфейс Java (JNI) позволяет вам вызывать C, C++, ассемблер и другие языки из Java.
(Платформа.NET разделяет эти же атрибуты, как отмечали другие авторы.)
Действительно трудно справиться с громадинами Алгол-68 в C. Выполнимо, но я не думаю, что хочу делать это каждый день,
Если вы используете.net, вы можете скомпилировать свои проекты на разных языках в сетевые модули, а затем связать их в один dll/exe. Visual Studio не поддерживает это, но msbuild поддерживает. Самый простой способ получить компиляцию - отредактировать КОПИЮ вашего файла.csproj, изменить тип вывода на "модуль" и просто запустить msbuild. Затем используйте команду "link", чтобы связать ваши модули с вашим последним exe/dll.
Платформа.Net является многоязычной. Parrot отлично подходит для смешивания Perl, Python, Ruby. Что ты пытаешься сделать?
Посмотрите на Swig. Это оборачивает C/C++
код, так что вы можете назвать его практически с любого другого языка.