SMP нужен лишь в случае, когда большой кусок данных нужно одновременно месить в несколько тредов, при том, что этот кусок нетривиально на части побить. На практике обычно всё бьётся.
Вот тут сложно, иногда 'хорошие программисты' пишут не самые удачные dsl, так как слишком 'хорошие'. Ну и, если честно, dsl даже на asm можно нормальный сделать )
Там фишка в том, что сами макросистемы в таких языках проще, чем в статически типизованных (Template Haskell, Camlp4, Nemerle), и это компенсирует отсутствие статических типов.
Когда-то были распространены сигнальные процессоры, но потом обычные стали мощнее и дешевле и все привет, ниша сдулась. Специализация это попытка обойти какую-то проблему или недостаток каких-то ресурсов. Смотреть на ИС только как на код это немного странно и даже я бы сказал не очень профессионально.