Можно начать с Elm - язык очень простой и с коротким циклом разработки для не слишком сложного фронтенда (но требуется хоть какое-то знание html). Как раз для СДВГ.
Монада - это общий интерфейс, который позволяет унифицировано работать с очень разными сущностями, такими как списки, парсеры, IO-операции (как синхронные, так и асинхронне).
Иммутабельность упрощяет композируемость - состыковать разные куски кода легче, если они свободны от побочных эффектов. Кроме того иммутабельный код при прочих равных проще читать и модифицировать.
D - причесанные плюсы со сборкой мусора. Без GC его использовать сложно, а там, где GC допустим все привыкли к более простым языкам.
Кроме того он не дает радикальных преимуществ, как Rust в области надежности.
Ну и библиотек нет.
В большинстве компиляторов размер hello world определяется размером стандартной библиотеки. НМаньчжурией а более сложных программах разница сокращается. Самые маленькие программы будут давать языки, компилируемые в байт-код, типа Erlang. Еще небольшой размер обеспечивает Forth.
Да, это мейнстримный подход. Можно декомпозировать задачу, например учить одну нейросеть расставлять теги, а потом включить ее в ту? которая выдает рекомендации.
Наиболее продвинутая система, которую я видел, была в основном на Erlang. Подозреваю, что контроллеры они все-таки на C программировали.
Сейчас хорошим выбором будет Rust, хоть не на все esp его легко настроить.
C++ с появлением Rust учить вообще особого смысла нет.
Crystal интересный язык, можно попробовать. Но я не уверен, что он достаточно простой для первого языка.
Да, такой подход используют, например, в ATS. Основные проблемы - медленно и не удается использовать информацию от фронтенда для оптимизации в бекенде.
У меня получается в среднем где-то по 3 года на одном месте.
Смена работа, как правило, сопровождается заметным ростом зарплаты, так что приходится менять.
Мне всегда было лень за ним ехать. Пока работодатели не очень были против. Чем дальше, тем проблем меньше - сейчас я уже все сроки призыва в армию прошел.