Есть ли такая вещь, как компилятор JavaScript? - PullRequest
0 голосов
/ 04 августа 2011

Мне интересно, можно ли написать программу на javascript, скомпилировать и связать ее в исполняемый файл?

Если это так, можно ли создать libjs, эквивалентный libc для мира c / c ++? Не создаст ли что-то подобное, что сделает javascript полноценным языком, который затем можно будет скомпилировать и запустить непосредственно на целевом оборудовании?

Если у вас был компилятор для javascript, не могли бы вы написать новый компилятор на javascript?

Ответы [ 3 ]

3 голосов
/ 04 августа 2011

Да, вы можете написать JS компилятор.Не уверен, насколько популярным он будет:

  1. js движки очень быстры в наши дни, поэтому вы не набираете большую скорость.

  2. Itбудет зависеть от платформы, или вам придется поддерживать несколько платформ.Не приятно.

  3. Для чего это будет полезно?Отличительной особенностью интерпретируемого языка является тот факт, что его не нужно компилировать.Он сокращает циклы разработки и время сборки (когда-либо располагался перед программой на C и должен был изменить файл, на который опирается весь проект, и ему пришлось запускать и перезапускать make s, что занимает минуты для компиляции всего?).

Что касается вашего последнего пункта, вы правы.Если бы у вас был один из этих компиляторов, вы действительно могли бы написать еще один в javascript.

1 голос
/ 04 августа 2011

Прочитайте это ... и не пропустите комментарии.

Здесь также есть несколько вариантов.

0 голосов
/ 04 августа 2011

Да, у вас есть то, что называется Google Closure Compiler, но это не компилятор в обычном смысле, он не конвертирует javascript в машинный код, но конвертирует javascript в javascript, но с высокой степенью оптимизации javascript. Это на самом деле оптимизирующий компилятор. Также компилятор запускает несколько тестов для обнаружения ошибок, таких как опечатки, очень похоже на инструмент JSLint. Но Google рекомендует использовать этот компилятор на JavaScript, написанном в Closure Library. см. this для получения дополнительной информации о компиляторе Closure.

Но я не думаю, что компиляция javascript на стороне клиента в машинный код - это хорошая идея, потому что машинный код зависит от машины, поэтому перед тем, как отправлять javascript клиенту, необходимо определить его ОС и архитектуру процессора. Так что это будет похоже на javascipt для firefox на Linux, javascipt для firefox на windows, javascipt для firefox на x86 и т. Д.

...