Я думаю, что перечисленные вами условия не очень ограничительны, вы найдете большой список пар языков сценариев хост / нить, которые соответствуют вашим шести требованиям.
Так что мой самый важныйРекомендуется выбрать языки, которые намеченным пользователям понравятся больше всего .
Есть несколько способов приблизиться к этому.Если вы решите начать выбирать язык хоста, то я думаю, что у вас есть следующие варианты:
C / C ++ : если вы хотите иметь больше свободы выбора языка потоков,тогда наличие хоста C или C ++ предоставит вам большинство возможностей, поскольку большинство интерпретируемых языков сценариев написаны на C / C ++ и имеют простые механизмы для встраивания в приложения C / C ++.Можно выбрать языки потоков: Lua, Javascript, Python, Ruby, PHP, Basic, Scheme, Pascal, Lisp и многие другие.
Java : с Java в качестве основного языка выимейте небольшое количество языков сценариев, которые являются дружественными для встраивания. Вот список .
.NET : я бы пошел на это только в том случае, если вы намереваетесь работать под Windows и больше ничего, если нет, я бы этого не делал.Как и в случае с Java, вы найдете список интерпретаторов, которые могут быть встроены в приложение .NET.
Что-то еще : если вам не нравится C / C ++ или Java в качестве хостаязыком, тогда вам нужно будет решить, какой язык вы предпочитаете, но независимо от выбора, у вас будет очень ограниченный набор опций для встроенного языка.Вы предложили Python в качестве возможного основного языка, который я считаю достойным выбором.Я бы посоветовал не использовать Lua поверх Python, но это может стать кошмаром для отладки, если вам когда-нибудь понадобится отладка на уровне языковой виртуальной машины.Вместо этого я могу предложить два предложения: (1) также использовать Python для языка потоков, тогда у вас будет хороший унифицированный язык по всей системе;(2) найти язык сценариев, у которого есть собственный интерпретатор, написанный на Python (я знаю не так много).Вместо Python вы можете использовать Ruby, PHP или любой другой основной язык сценариев для хоста, но во всех случаях у вас будет не так много вариантов для встроенного языка.
Теперь вместо поискаВ качестве основного языка вы можете сначала выбрать встроенный язык, а затем найти основной язык, который может встраивать этот язык.Вы предложили Lua в качестве встроенного языка, что также является очень хорошим вариантом.Если вы используете Lua, то я думаю, что C или C ++ должен быть вашим языком хоста, так как это даст вам лучший опыт встраивания.
Подводя итог, я рекомендую один из двух следующих подходов к выбору вашей пары.языков:
(a) выберите пару языков, в которых встроенный интерпретатор языка реализован на языке хоста.Примеры: Lua и C ++, Javascript и C ++, Python и C ++, Scheme и C ++, Jython и Java, JRuby и Java, Rhino и Java и т. Д.
или
(b) выберитетот же язык сценариев высокого уровня для хоста и потоков, и работа на единой платформе без встроенных сценариев.Примеры: Python и Python, Lua и Lua, Ruby и Ruby и т. Д.
Удачи в поиске!