Почему HTML/JavaScript/CSS не является скомпилированными языками, и они когда-либо будут?

Компилятор должен сделать их все равно в конечном счете. Выберите стандарт так, чтобы Ваш код было легко считать и придерживаться его.

40
задан 3 revs, 2 users 98% 17 July 2009 в 02:56
поделиться

9 ответов

А, но Javascript ЯВЛЯЕТСЯ компилируемым языком. Попробуйте Firefox 3.5 с TraceMonkey . Это безумно быстро по сравнению с браузером, которого вы знаете. Это правда, что JS никогда не будет C, но это гораздо более динамичный язык, чем C, и во многих отношениях он делает его более выразительным и мощным.

Что касается HTML, я не думаю, что отсутствие валидность HTML - огромный ущерб скорости. Я думаю, что движки, которые собирают визуальное представление и манипулируют DOM, должны стать намного лучше (ммм, IE, я смотрю в вашем общем направлении ...). Соответствие CSS необходимо улучшить, а сам CSS должен стать более мощным. (Садитесь в автобус с CSS 3 людьми! )

Но я действительно думаю, что скорость в Firefox и Chrome вырастет до такой степени, что люди действительно собираются начать использовать его для разработки основных приложений. Это забавно. Adobe, похоже, продает Flash как платформу для динамического веб-контента, MSFT продает Silverlight для динамического веб-контента, а Google просто хочет действительно улучшить HTML и Javascript для отображения динамического веб-контента. И я должен сказать, что Google пока неплохо справляется с этим ...

19
ответ дан 27 November 2019 в 01:57
поделиться

Ваши идеи имеют силу, когда они применяются к JavaScript. Как отмечали другие, в той или иной степени несколько поставщиков пытаются применить эти принципы к JS даже сейчас. Еще одним большим шагом в этой области, вероятно, станет анонсированная Google Chrome OS. Однако, когда дело доходит до (X) HTML и CSS, я думаю, что ваши идеи могут упускать из виду суть.

Всемирная паутина - это не платформа приложений с ошибками и непоследовательность, а огромная и беспрецедентная коллекция взаимосвязанных документов. Сила Интернета заключается в абстрагировании данных от часто жестких (и ломаемых) визуальных макетов и все более сложных функциональных возможностях на странице, которые в основном предоставляются с помощью JavaScript. Кодирование этих страниц в (X) HTML идеально подходит для того, чтобы сделать их доступными для максимально широкой аудитории как с точки зрения браузеров, так и с точки зрения технических знаний, необходимых для создания страницы.

Все больше и больше Интернет используется как приложение платформу, которая представляет собой мощное и захватывающее использование этой технологии, но мы не можем упускать из виду тот факт, что эти управляемые Ajax приложения «web 2.0» представляют собой просто документы с расширенной функциональностью. Компиляция не имеет смысла для документа, а сжатие уже происходит (через gzip и тому подобное).

С практической точки зрения, W3C движется ледяными темпами, а поставщики браузеров по очереди переходят между быстрой поддержкой. экспериментальные функции в незавершенных спецификациях и время, потраченное на поддержку других спецификаций, которые уже много лет лежат на столе и широко используются. Все процессы похожи на выпас кошек. Я бы не стал задерживать дыхание, чтобы они в ближайшее время произвели те радикальные изменения, которые вы предлагаете.

4
ответ дан 27 November 2019 в 01:57
поделиться

Механизм javascript V8 (также встроенный в Google Chrome, но он имеет открытый исходный код и имеет широкую лицензию, поэтому вы можете использовать его в следующем браузере, который вы напишете !) компилирует Javascript в собственный машинный код - конечно, он делает это «точно в срок» (как большинство современных компиляторов - Java, C # и т.д.!), а не «раньше времени» (как это сделал Фортран в 1954 году, когда компьютеры были слишком слабы, чтобы обрабатывать компиляцию в процессе выполнения). Я был бы удивлен, если бы другие хорошие JS-движки, вроде тех, что были в последних версиях Firefox и Safari, не сделали бы то же самое.

Похоже, вы не пропагандируете «javascript как скомпилированный язык» (поскольку он, очевидно, уже скомпилирован, если вы используете хороший движок JS), а скорее «опережающую» компиляцию для него (просто когда большинство современных языков по сути отказываются от предварительной компиляции). Распространение машинного кода, а не компилируемого кода по проводам звучит как в основном ужасная идея - гораздо больший размер, трудности в поддержке одного процессора по сравнению с другим, кошмары безопасности при его правильной песочнице и т. Д.

Тем не менее, если вы действительно заинтересованы в передаче машинного кода клиенту, попробуйте nativeclient (пока клиент - машина x86 - забудьте о каждом смартфоне на планете, многих нетбуках , старые добрые маки, и т.д.) - по крайней мере, это обещает исправить кошмары безопасности. Если и когда вы довольны собственным клиентом, преобразование своевременного компилятора в опережающий - гораздо более простая техническая задача (если вы, конечно, хотите продолжать использовать Javascript для источников, а не для других языков) ).

2
ответ дан 27 November 2019 в 01:57
поделиться

См. здесь для предыдущего обсуждения этого вопроса

Не все приведенные причины обязательно действительны, но одна важная состоит в том, что, если вы не Google , циклы ЦП на стороне сервера намного ценнее, чем циклы на стороне клиента: поэтому проще заставить клиента компилировать / оптимизировать то, что довольно часто является динамически генерируемым HTML / JavaScript, а не сервером.

Ken

1
ответ дан 27 November 2019 в 01:57
поделиться

Поскольку HTML и CSS не являются кодом, их нельзя скомпилировать. Движок Google Chrome V8 действительно преобразует JS в байтовый код, ожидайте, что другие движки рендеринга последуют его примеру!

http://code.google.com/apis/v8/design.html

Недавно мы переработали систему шаблонов php, которую я помог создать, чтобы использовать minify для сжатия нескольких JS и CSS в один файл каждый, увидев наши размеры файлов уменьшаются примерно до 20% от исходных комбинированных размеров. Minify также выполняет gzip и кэширование, так что это действительно потрясающе для ускорения веб-сайтов.

http://code.google.com/p/minify/

Короче говоря, вы не можете скомпилировать код, отличный от HTML и CSS. являются. JS можно скомпилировать, и он начинает компилироваться, но все зависит от того, что браузеры хотят делать.

Браузеры просто должны быть готовы к поддержке веб-стандартов. Чем больше браузеров это делают, тем меньше головной боли у нас, веб-разработчиков. Я был вполне доволен публичным отказом YouTube от поддержки IE6. Нам нужно больше подобных действий, чтобы Интернет двигался вперед.

4
ответ дан 27 November 2019 в 01:57
поделиться

Скорость.

Вы предполагаете, что для синтаксического анализа HTML требуется значительное время. Однако может случиться так, что это время несущественно по сравнению со временем, необходимым для чего-то еще, например, времени, необходимого для размещения текста в окне конечного пользователя.

Больше никаких «рыхлых» и «наполовину правильных» HTML. Он либо правильный, либо не компилируется.

Вы уже понимаете это, используя [X] HTML.

Выглядит одинаково во всех (поддерживаемых) браузерах.

Похоже, вы говорите, что должен быть только один браузер или что все браузеры будут поддерживать его в равной степени.

Интернет-стандарты не возникают, когда один орган (w3c) реализует что-то и объявляет это стандартом . Вместо этого Интернет-стандарты создаются несколькими независимыми органами, создающими несколько реализаций. Следствием этого является:

  • Некоторые люди разработали что-то, что еще не является стандартным (т.е. они опережают стандарт)
  • Некоторые люди еще не разработали что-то, что является стандартным (т.е. они отстают от стандарта)
1
ответ дан 27 November 2019 в 01:57
поделиться

Я думаю, что ваша идея верна, однако пока нет способа обеспечить соблюдение стандарта. Таким образом, если была неподдерживаемая функция, велика вероятность, что вся страница просто ничего не отобразит. В текущих настройках все еще может передаваться важная информация.

0
ответ дан 27 November 2019 в 01:57
поделиться

Google V8 , который является одним из многих движков JavaScript нового поколения, "компилирует" JavaScript в псевдокод, подобно тому, как .NET "компилирует" C # на лету. Здесь нет ничего волшебного. Ожидайте большего, особенно. поскольку веб-приложения становятся тяжелее и требовательнее

0
ответ дан 27 November 2019 в 01:57
поделиться

HTML

HTML - это в значительной степени XML. DTD существует для различных версий, и разработчики могут проверить это в любое время.

CSS

CSS не является языком программирования, однако я согласен с тем, что «скомпилированный» CSS может работать, поскольку компиляция сжимает его. Однако с поддержкой, которую имеет CSS, и с большим количеством важных хаков, которые должен иметь любой CSS, вам никогда не удастся скомпилировать его без ошибок.

JS

Как уже упоминалось другими, JS становится компилируемым языком, за исключением браузер компилирует его для вас, а не для вас.

0
ответ дан 27 November 2019 в 01:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: