Язык для начинающих
еще раз: современный яваскрипт проходит дважды КОМПИЛЯЦИЮ: вебпаком (с дополнительной компиляцией бабелем в браузеро-понимаемый яваскрипт) и компиляция уже в браузере движком В8 в машкод.
На входе этого тулчейна поставляется некий новый ЯваСкрипт (смесь Vanilla JS/TypeScript/flow ), который вообше говоря не понимается браузером в старом смысле этого слова
вебпаком (с дополнительной компиляцией бабелем в браузеро-понимаемый яваскрипт)
https://ru.wikipedia.org/wiki/Комп�%...
Компиля́ция — сборка программы, включающая трансляцию.......в эквивалентные программные модули на низкоуровневом языке, близком машинному коду (......) или непосредственно на машинном языке
Нa выходе вебпака действительно получается машинный код?
На входе этого тулчейна поставляется некий новый ЯваСкрипт
Нет никакого нового яваскрипта. Есть просто яваскрипт.И eсть например постскрипт и это ни разу не яваскрипт. Вообще. Именно поэтому на нем можно программировать и программируют. И именно поэтому его не понимают браузеры. И есть тулы, транслирующие этот язык в яваскрипт. А на яваскрипте писать жопа.
webpack is used to compile JavaScript modules
Babel is a JavaScript compiler
Термины заимствованны непосредственно у производителя
А теперь читаем нормальную викидипедию:
A compiler is a computer program that translates computer code written in one programming language (the source language) into another language (the target language).
А на яваскрипте писать жопа.
По тебе видно, раз ты его до сих пор считаешь ИНТЕРПРЕТИРУЕМЫМ.
Babel is a JavaScript compiler
Babel is a free and open-source JavaScript compiler that is mainly used to convert ECMAScript 2015+ (ES6+) code into a backwards compatible version of JavaScript
webpack is used to compile JavaScript modules
Webpack is an open-source JavaScript module bundler
Нa выходе вебпака действительно получается машинный код?
Вы прочитали неверное определение компилятора. Он компилирует из одного языка в другой. Целевой язык не обязан быть машинным.
И да, v8 таки компилирует в машкод.
Кроме того, компиляция происходит и бабелем.
Нет никакого нового яваскрипта.
Есть. Это новые редакции ecmascript. Но они напрямую большинством браузеров не поддерживаются. И поэтому код должен компилироваться в тот js, который сможет исполнить браузер.
С точки зрения программиста ему будет казаться, что он пишет на новой версии javaScript.
По тебе видно, раз ты его до сих пор считаешь ИНТЕРПРЕТИРУЕМЫМ.
Ну по мне не видно. Хотя бы по тому, что мне наплевать, интерпретируемый язык или компилированный. Но тут вопрос. Вы пишите НЕ на ява-скрипте. А на другом языке, который вы транслируете (упс, сорры, компилируете) в яву-скрипт. Зачем такая жопа? Почему сразу не пишете на ява-скрипте?
Нет никакого нового яваскрипта.
Есть. Это новые редакции ecmascript. Но они
Ага. Есть такой ява-скрипт, который на самом деле не ява скрипт а ecmascript, который все таки не ява скрипт, потому что его приходится все таки переводить (сорры компилировать) в ява -скрипт.
А у вас не скучно
таки компилирует в машкод
-----
Поясни, плс, доставку машкода в браузер.
Специально и отдельно поясни совместимость с ХТТП(С)...
Чтобы было понятно - HTTP - Hypertext Transfer Protocol - протокол передачи ТЕКСТА с разметкой.
Целевой язык не обязан быть машинным.
-----
Нее, не обязан. Но он обязан быть другим языком.
Для случая когда язык остается тем же термин компилятор/компиляция заменяется на компрессор/компрессия/сжатие/обфускация...
В случае с жабьимскриптом - используется куча компрессоров - язык остается тем же, доставляется на клиента/браузер в виде текста и интерпретируется по местu...
А на какой графической библиотеке написана IntelliJ IDEA?
Ищите...
Вы знаете как работает современный веб?
По http передаётся минифицированный js bundle, который оптимизирован для передачи по сетям. И который движок v8 или аналогичные движки других браузеров смогут скомпилировать в маш код. На стороне браузера.
Без этого у вас Google Maps, Google Mail и прочие тяжелрвесные приложения вряд ли бы нормально работал бы. Скорее всего юзер бы ничего не увидел бы.
Зачем такая жопа? Почему сразу не пишете на ява-скрипте?
Затем, что EcmaScript учитывает потребности современных программистов современного веба.
Надоела ёлочка колбеков? На вам async await. И не нужно тащить сторонние либы.
Хочешь нормального ООП с Class? Пожалуйста.
Только вот браузеры не торопятся реализовать это. Поэтому и нам приходится компилировать ESXX в поддерживаемый браузером JS
Затем, что EcmaScript учитывает потребности современных программистов современного веба.JS это язык. С конкретным синтаксисом, с конкретными конструкциями. Библиотеки это не язык. Это сборник функций. То же самое и фрэймворк. Вы не пишете какой то функционалитет сами, а используете готовый. Но то, что вы пишите сами, вы пишете на каком то языке. Так вот нормальные классы с нормальным ООП вы на JS не пишете. Язык не поддерживает. Ну нет таких конструкций в этом языке. А броузеры поддерживают стандарты. А пишете вы на чем то, что потом будет транслировано в эти уродливые извращения JS.
Поэтому и нам приходится компилировать ESXX в поддерживаемый браузером JS
Причем транслировать не обязательно. Тот же Ангулер по умолчанию использует Постскрипт. Но тонкие извращенцы могут писать прямо на JS.
Я пишу на яве. Берем ваадин. Или EXT2. Компилируем. Гм. И получаем на выходе JS. Ups. Видимо Ява это всет таки яваскрипт