Является ли правдоподобным (и / или практическим) создание большого программного обеспечения, например Altera Quartus II, с использованием нескольких языков программирования? Это означает, что меню для программного обеспечения написаны на c ++, и, возможно, основной функциональный интерфейс, с которым пользователь взаимодействует больше всего, построен с использованием Java. Это вообще возможно? Если это так, каковы недостатки / преимущества этого с большими кусками программного обеспечения?
Это возможно и практикуется, однако желательно, чтобы ядро вашего приложения было построено на языке программирования среднего уровня, таком как C ++ для производительности, в то время как интерфейсная часть и любые утилиты и интерфейсы к ядру могут быть построены с использованием другого языка, такого как Javascript.
Взгляните на браузер Mozilla, который является примером C ++ ядро с Javascript UI.
Ваш вопрос о том, возможно ли это: ответ таков. Однако я постараюсь немного расширить, сказав, что ваша задача при создании приложения с C ++ а также Джава будет связь между двумя частями вашего приложения. Вам понадобится какой-то промежуточный, как XML для того, чтобы сделать это.
Можно создавать приложения из нескольких языков, например, вы могли бы написать свой код на C ++, а сервер на Java и использовать JNI для связи.
Хотя такое приложение позволяет вам использовать возможности каждого языка, оно требует от разработчиков опыта в нескольких областях или нескольких разработчиков, каждый из которых может увеличить стоимость поставляемого решения.
Кроме того, в настоящее время большинство компиляторов стремятся оптимизировать код во время компиляции, поэтому разработчики не пытаются найти микрооптимизации, которые позволяют им настраивать каждый аспект своего кода, если они не пишут что-то вроде AutoCad или Photoshop, каждый из которых требует относительно большое количество системных ресурсов.
Другая проблема, связанная с решениями с несколькими языками, заключается в том, как заставить их взаимодействовать друг с другом (сокеты, сегменты разделяемой памяти, каналы и т. Д.), Чтобы это стало еще одним уровнем сложности.