CoffeeScript компилируется в JavaScript по очень простой причине: JavaScript является де-факто клиентским языком, и было бы неразумно ожидать, что производители браузеров будут изначально поддерживать CoffeeScript, когда все, что он предлагает, - это альтернативный синтаксис.
Подобным образом, основной смысл высокоуровневого языка для C-переводчиков - это немедленная переносимость, так как есть компилятор C почти для каждой платформы и изобилие C-библиотек. Вала , например, была разработана для :
- быть компилятором для GObject ,
- создавать собственные исполняемые файлы (через компилятор C машины),
- автоматизировать подсчет ссылок и
- все еще быть доступным для программистов GNOME C
GNOME - это традиционно ориентированный на C проект, а GObject специально написан на C, и Vala вряд ли найдет большую любовь среди разработчиков GNOME, если он скомпилирован в машинный код, независимо от его дружественной природы (и синтаксиса). Не всем, казалось, нравился синтаксис до такой степени, что другой язык, Genie , был создан для его улучшения.
Для примера на C ++ Facebook разработал HipHop , переводчик PHP на C ++. Они пытались решить очень специфическую проблему, связанную с использованием процессора, без необходимости заменять весь свой PHP-код и переучивать своих инженеров (или, что еще хуже, заменять их). Это гораздо более конкретный пример, поскольку проблемы масштабируемости Facebook, ну, в общем-то, уникальны, и снова иметь доступ к промежуточному коду C ++ может быть полезно, так как расширения PHP написаны на C и C ++.
Так что переводчик с языка высокого уровня на другой - это хорошая идея, в основном, когда требуется доступ к промежуточному коду. Для CoffeeScript код JavaScript необходим из-за его широкого использования в браузерах, а для Vala, Genie и HipHop из-за существующей кодовой базы. Очевидно, что доступ к промежуточному коду означает, что вы можете дополнительно оптимизировать его при необходимости.
Но, вообще говоря, было бы не очень хорошей идеей создавать язык, переводящий на C, или любой другой язык, если бы вы не использовали полученный код. Есть так много языков, если вы не можете справиться с Си, просто выберите другой. По совпадению первый компилятор C ++, написанный Bjarne Stroustrup, CFront, был переводчиком C с Classes на C, но это было главным образом потому, что как новый язык было невозможно загрузить C с помощью Classes.