Везде.
На С++ пишут вообще все (ну почти). Контроллеры например на Си (и ассемблерах) программируют, на С++ - вряд-ли.
Руби и джаваскрипт - интерпретируемые, поэтому всякие низкоуровневые штуки на них не пишут (Операционные системы, драйвера, не программируют контроллеры вообще никак).
Руби - относительно универсальный язык, на нем пишут почти все, под мобильники в т.ч.
На джаваскрипте обычно пишут скрипты, которые исполняет браузер, и всякие плагины. Ну, например, плагины для фотошопа можно писать на джаваскрипте.
Для языка С++ есть библиотека Qt, частью которой является QML. Вот в QML можно описывать поведение объектов на джаваспите.
Кроме того, в Qt есть скриптовый язык (Qt Script) и с ним тоже можно описывать поведение объектов в программе на С++, хотя скрипты там тоже на джаваскрипте.
Javascript используется достаточно часто, поэтому все мастера должны знать, как его использовать в своем коде. Для размещения скрипта (будь то Java или любой другой) используется код <script></script>. Если вы прописываете скрипт в коде, он будет располагаться между этими тегами. Если подключаете извне, между скрипт-тегами нужно прописать адрес, по которому браузер сможет найти ваш скрипт.
function y() {
for (var x=0, result=[]; x<=5; x+=0.5) {
result.push(x*1.5);
}
return result;
}
alert(y());
Язык программирования JavaScript разрабаватывали с прицелом на управление объектами документов. А именно управлять элементами страниц html.
При этом JavaScript позволяет писать программы для обработки числовых и текстовых данных также, как и любой другой язык программирования. В этом плане JavaScript похож на Python, Ruby, Bash и другие интерпретируемые языки.
Для интерпретации JavaScript вне браузера существует пакет Node.js. Он включает в себя полный набор инструметов, в том числе интерпретатор. С помощью Node.js можно создавать серверную часть приложения.
Вообще языку всё равно, где работать, была бы необходимая библиотека. В принципе ничего не мешает хоть научные расчёты делать с помощью JavaScript. Другой вопрос, зачем, когда есть более подходящие инструменты.
Что же касается исполняемого файла, то в него придётся запаковать и виртуальную машину. Если не смущает размер готового бинарника, то почему бы и нет. Вот, например, программистов Electron не смущает даже целый браузер в бинарник упаковать.
1) React делает код читабельным, т.е., (значительно)проще понять, как будет отрисован компонент.
2) JSX. Вставлять JS в DOM может показаться дикостью, но всё та же читабельность улучшается в разы, да и вообще это удобнее. Не нужно делать монолитный JS файл, ощутимая часть функционала сайта внедряется в разметку и собирается в автономные компоненты.
3) Самая объективная причина, это, наверное возможность рендера React'a на сервере, а не клиенте, что в разы ускоряет работу сервиса.
Ну а из минусов, как наверное у любого уровня представления это отсутствие системы событий и полное отсутствие слоёв данных.