Это обычная практика? Почему это действительно сделано? Для исполнения?
Да. Люди, которые это делают, как правило, пытаются повторно использовать существующее программное обеспечение (которое вы заметили, написанное на нескольких языках) или пытаетесь использовать несколько разных языков, каждый из которых подходит.
Производительность иногда может быть связана; я, например, могу понадобиться использовать Lua для его быстрого прототипирования способностей, но подключить его к высокопроизводительному электронной почте парсеру написано на C.
Я думаю, что вы будете иметь проблемы с различными переводчиками/составителями и легко подключением разные языки. Это правда?
Иногда. Состояние практики на многоязычном языке примерно таково, что если язык будет говорить ни о чем другом, кроме самого себя, он будет разговаривать с C. Таким образом, часто можно заставить вещи работать вместе через какой-то C-подобный интерфейс.
В противном случае первые проблемы обычно возникают либо в управлении памятью, либо в уровне VM, что мы могли бы рассмотреть примеры «управляемого кода». Например, очень сложно получить программу Haskell для обмена выделенными кучами объектами с помощью JVM. Обычно обходным решением является обработка таких вызовов, как удаленные вызовы процедур, как если бы программы выполнялись в разных процессах или даже на разных компьютерах. Такие вызовы могут потребовать существенных накладных расходов, что часто делает невозможным дорогостоящее использование двух разных языков, например, для обмена изменяемыми объектами. Однако, если вам не нужно мутировать вещи, накладные расходы не так уж плохи.
Резюме: есть веские причины, чтобы использовать различные языки для решения различных проблем, и было бы удивительно, если большая система программного обеспечения сделала не использование нескольких языков (за исключением, может быть, в одноязычных бункерах, как Squeak Smalltalk, которые просто не разговаривают с остальным миром). Конечно, есть проблемы с совместимостью, но проблема старая, и обходные решения известны.
+1 очень интересный вопрос, хорошо спрошенный. –
Множество дубликатов, в том числе http://stackoverflow.com/questions/2172219/is-polyglot-programming-important – 2010-05-17 15:41:31