Долгосрочный программист C ++ (это я) изучает другие языки и задается вопросом, стоит ли много изучать о D 2.0 . (Это переписать с чистого листа D.) Пока мне нравится то, что я вижу - много прагматичного, мудрого выбора. Теперь я хочу узнать немного больше и узнать, возможно ли когда-либо сделать следующее:
- Напишите некоторый код в D 2.0. (Может быть, это четко определенное подмножество D 2.0.)
- Скомпилируйте код из 1.
- Получите исходный код Javascript от компилятора.
Итак, я хотел бы иметь компилятор D 2.0 с бэкэндом, способным генерировать Javascript.
Итак, мой вопрос состоит из двух частей:
- Такой компилятор уже существует?
- Если такой компилятор существует , а не , и , если Я выбрал его реализацию, с чего лучше начинать?
Для контекста, причина, по которой я хотел бы вышеизложенного, заключается в том, чтобы я мог реализовать связку бизнес-логики в D 2.0, а затем использовать эту бизнес-логику в чистом веб-интерфейсе Javascript (который не является Flash / Silverlight / Java). Применение.
Обновление
У меня было три ответа, два из которых относятся к теме, а другой нет и поэтому игнорируется.
@ FeepingCreature считает, что этого никогда не произойдет, потому что «оно слишком несовместимо с целевой средой D». Мне интересно узнать, что это значит, и спросить.
@ Nekuromento, напротив, указывает, что теоретически это возможно с использованием LDC, за которым следует бэкэнд Javascript LLVM. Я проверил обе ссылки. Поддержка LDC для D 2.0 выглядит как работа в процессе. Но я бы предположил, что в какой-то момент он туда доберется. Яваскрипт LLVM также не оптимизирован и не минимизирован, но из демонстраций видно, что они работают. Поэтому я думаю, что этого достаточно, чтобы быть полезным как минимум.
Обновление 2
ОК - похоже, это лучшее решение на сегодняшний день.
- Вызвать НРС. (@Nekuromento) LDC объединяет внешний интерфейс Digital Mars с внутренним LLVM.
- Передать вывод из 1. через бэкэнд JLsM LLVM. (@Nekuromento)
- Передать вывод из 2. хотя Закрытие (@BCS)
Довольно скоро я выберу лучший ответ, но мне бы очень хотелось получить более информированное мнение.
Обновление 3
Еще немного информации о том, почему я хочу это сделать.
Вот конкретный пример одного проекта, который я хочу реализовать. Это будет библиотека геометрического моделирования, вероятно, написанная только мной, на ее создание уйдет несколько лет, и в итоге она будет содержать около 100 000 строк кода. Я хотел бы, чтобы он содержал как можно более близкие к нулю ошибки, и, следовательно, я не хочу реализовывать это в Javascript. Я хотел бы, чтобы он работал на сервере, на рабочем столе и в браузере тоже. (Под «в браузере» я имею в виду без помощи какого-либо плагина, такого как Flash, Silverlight или Java.) Правда в том, что код в браузере, работающем на Javascript, останется здесь на некоторое время. Проекты будут все больше нуждаться в стратегии, чтобы справиться с этим.
Обновление 4
Я надеялся получить еще несколько ответов, но не получил их. Ах, хорошо, неважно. Спасибо за все отзывы, включая стимулирующие комментарии @dsimicha. (Я надеюсь, что это нормально, что иногда технически не согласен, и в то же время сохраняю гражданские отношения.) Я принял ответ @Nekuromento.
Обновление 5 2018-07-18
Семь лет спустя LDC v1.11 поддерживает компиляцию и соединение с WebAssembly. 3