Почему столько веб-языков интерпретируется, а не компилируется?

34
задан rene 25 June 2014 в 18:38
поделиться

14 ответов

Другое серьезное основание состоит в том, который на большой скорости выполнения сервера не так проблема как скорость соединения так или иначе. Большая часть времени проведена, отправляя и получая данные, не перемалывание чисел. И на самом деле в определенных веб-сервисах, которые делают много вычислений, трудное уплотнение , вероятно, выполнено как скомпилированная программа.

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

25
ответ дан Mike B 27 November 2019 в 16:04
поделиться

Большинство веб-приложений говорит с базой данных. Подавляющее большинство этих приложений проводит почти все их время, связываясь с базой данных. Так, для любого данного запроса к приложению существует крошечный объем обработки в сервере приложений и затем длинной паузе при ожидании базы данных. Так как такой небольшой процент времени любого запроса потрачен в серверном коде реального приложения, оптимизировав тот код путем записи, что это в C/C++ получит только крошечное, вероятно, не примечательное, улучшение в ответ время.

Так, вместо того, чтобы фокусироваться на C/C++ и сохранить каждый последний цикл ЦП, имеет больше смысла волноваться о производительности разработчика. Разработчики являются очень дорогими. И, они обычно намного более продуктивны в языке сценариев или даже в Java, чем они находятся в C/C++.

, Конечно, существуют исключения к этому. И если некоторые запросы к Вашему приложению являются ЦП или интенсивно использующий память, они должны быть записаны в C/C++. Но для остальной части Вашего приложения Вы - более обеспеченная фокусировка на оптимизации Ваших алгоритмов, структур данных, связи с базой данных и производительности разработчика, чем в оптимизации Вашего языка.

23
ответ дан Clint Miller 27 November 2019 в 16:04
поделиться

Языки сценариев имеют следующие преимущества перед C:

  1. Намного более быстрая разработка
  2. Сегодня, все относящиеся к этому вопросу компилируются во времени выполнения. В некоторых случаях это может сделать их быстрее, чем эквивалентная программа C, таким образом, производительность просто не является проблемой больше.
  3. Затраты на обслуживание намного меньше
  4. можно разработать использующие Гибкие методы (как модульные тесты), который приводит к намного лучшему коду. Да, можно сделать это в C также, но это - намного больше усилия.
  5. при выполнении веб-разработки у Вас есть огромные платформы, которые делают большую часть работы для Вас.
  6. Они намного более открыты для изменения. Новая возможность может занять целых несколько минут для реализации.
  7. , Если что-то повреждается, можно войти в систему к серверу, запустить текстовый редактор в консоли и решить проблему, иногда не имея необходимость перезапускать.
14
ответ дан Aaron Digulla 27 November 2019 в 16:04
поделиться

C использовался для веб-приложений вначале - я записал различные сценарии CGI в нем.

Со временем, однако, более продуктивные языки (C# и Java, например - но не исключительно те, конечно), оказалось, были "достаточно эффективны" для веб-приложений. Обратите внимание, что и C# и Java скомпилированы в промежуточный код и затем скомпилированы в JIT, достигнув "примерно" производительности собственного кода. Почему мы хотели бы использовать C вместо этого?

Даже традиционно "действительно интерпретируемые" языки, такие как PHP часто компилируются во время выполнения в эти дни, насколько я знаю. (Мое знание PHP в особенности является всей секундной стрелкой. Возможно, это всегда компилировалось... И аналогично я уверен, что существуют веб-платформы, которые все еще всегда интерпретируются.)

11
ответ дан Jon Skeet 27 November 2019 в 16:04
поделиться

По крайней мере, первоначально большая работа, сделанная кодом бэкенда (то, которое я принимаю, - то, что Вы говорите о), была ориентирована на текст. Они или созданные страницы непосредственно с нуля, или, например, объединяющиеся данные из базы данных с шаблоном.

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

9
ответ дан unwind 27 November 2019 в 16:04
поделиться

Большой вопрос. Причина происходит в основном из-за эволюции сети. Думайте об этом на шагах:

1) Основной текст в 'сети'-> 2) Некоторая 'разметка', добавленная к тексту-> 3), "центральный" тег и "пунктирная рамка" формируются!!! какой прогресс!!!-> 4) пишущий сценарий на клиенте!!! 5)-> хм... пишущий сценарий на сервере!!!

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

кроме того, посмотрите на инструменты. Я сделал свой PHP в блокноте (и некоторые другие простые приложения). Когда я сначала делал веб-разработку, мой компьютер не имел достаточного пространства на жестком диске для поддержки Visual Studio 2008:)

Точка Стороны Однако: были ".exe" приложения там (я думаю" , SunBiz" отправляет на 'exe'), и некоторые скомпилировали cgi приложения некоторое время, но они были намного меньше.

9
ответ дан Timothy Khouri 27 November 2019 в 16:04
поделиться

Стоит указать, что большинство языков сценариев (Python, Ruby, и т.д.) образует мост легко - почти тривиально - к C. (Я просто записал некоторые расширения C для программы Python, и я был впечатлен тем, насколько легкий это было.), Если веб-сайт/веб-приложение действительно имеет некоторые узкие места из-за использования "медленного" языка сценариев, можно обычно писать критические по отношению к производительности разделы на более быстром языке как C. На самом деле это - то, какие крупные приложения как поиск Google, Facebook, и т.д., делает - они пишут интерфейс в языке сценариев и делают тяжелый подъем с другими языками как C.

9
ответ дан mipadi 27 November 2019 в 16:04
поделиться

Это главным образом, потому что это быстро и просто изменить их на лету. Скомпилированные языки требуют среды разработки, которая должна соответствовать серверу. Со сценарием можно использовать инструмент ftp и отредактировать текст непосредственно и затем сохранить его. Эта способность сделать это от любого компьютера любой ОС или типа имеет, спасают мою жизнь (или правильно мою жизнь веб-сайтов) много раз.

7
ответ дан David Allan Finch 27 November 2019 в 16:04
поделиться

Попытайтесь сделать некоторый строковый парсинг/управление в C в Perl/PHP, и Вы будете знать.

BTW: Почему делают столько людей заявляет, что производительность больше не является проблемой? Я не мог бы быть проблемой для маленьких домашних страниц/блогов, но крупномасштабные веб-приложения все еще должны быть настроены для производительности (CPU/сеть/память), неважно, если они записаны в Java, php или рубине.

7
ответ дан EricSchaefer 27 November 2019 в 16:04
поделиться

Вот мои мысли о проблеме:

  • Исходные приложения CGI потребовали собственного процесса ОС, который является, конечно, пожирателем ресурсов ресурсов. Попытка связать все в единственный процесс также не легка с собственным кодом, с тех пор если что-то идет не так, как надо в приложении, мог бы легко снизить целый сервер. Эти вещи намного более легче обработанный с Интерпретатором или Виртуальной машиной. Можно, конечно, сделать то же с собственным кодом, но я предполагаю, что это была бы намного более трудная реализация платформы. В конце Вы закончите тем, что реализовали что-то подобное интерпретатору или VM.
  • интерпретируемые языки являются портативными через операционные системы.
  • , Конечно, большое преимущество является продуктивным повышением, которое Вы получаете при помощи современного языка.
  • Производительность, конечно, важна. Однако интерпретируемые или языки VM являются улучшением и лучше в этом отношении (с технологиями как JIT-компиляция) и приближаются к производительности собственного кода. Также не справедливо сравнить только время, проведенное во время процесса выполнения. Необходимо измерить целую последовательность: прием запроса с сервера, делегации надлежащего приложения, выполнения, возврата результатов к серверу. Исходное приложение было бы быстрее во всех них?
1
ответ дан kgiannakakis 27 November 2019 в 16:04
поделиться

Так, вместо того, чтобы фокусироваться на C/C++ и сохранить каждый последний цикл ЦП, имеет больше смысла волноваться о производительности разработчика. Разработчики являются очень дорогими. И, они обычно намного более продуктивны в языке сценариев или даже в Java, чем они находятся в C/C++.

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

Для большей части мира (т.е. не Google/Amazon/eBay/и т.д.), один дополнительный сервер больше, чем компенсирует любую потерю необработанной производительности, которая может следовать из выбора языка.

1
ответ дан Dave Sherohman 27 November 2019 в 16:04
поделиться

Много чрезвычайно полезных функций динамических языков, таких как самоанализ и функции как оценка () является действительно трудным/невозможным? реализовать на языках ту компиляцию к собственному коду.

Однако большинство языков "сценариев" действительно компилирует (на лету) в своего рода промежуточный код, который тогда интерпретируется (Python, Ruby, Perl) или возможно даже JIT, скомпилированный в собственный код (JSP.NET)

1
ответ дан Ferruccio 27 November 2019 в 16:04
поделиться

Моя компания использует C++ (расширение ISAPI) для нашего веб-приложения. Почти все сделано в скомпилированных двоичных файлах. Мы также используем механизм JavaScript для частей системы, которые требуют сценариев (да, серверная сторона JavaScript). Причиной, процитированной за этот дизайн, является скорость, но возраст является также фактором..., это - старая кодовая база. Кроме того, мы распределяем наш продукт некоторым нашим клиентам для хостинга себя, таким образом компилировать его защищает наш исходный код (много интерпретируемых языков тривиально decompilable, или в случае PHP и Perl, никогда не компилируемого вообще).

0
ответ дан rmeador 27 November 2019 в 16:04
поделиться

Языки сценариев, где единственная опция для веб-разработки давным-давно. Теперь у нас есть другие альтернативы (Java.NET..), таким образом, ситуация не так плоха.

C как платформа не был очень успешен для веб-разработки, так как трудно создать модуль, который мог быть загружен и выполнен от сети/сервера приложений, но одна из первой платформы для создания динамического веб-приложения была модулями ISAPI для IIS Microsoft что, где главным образом разработано в C++ и, где скомпилировано.

-9
ответ дан Aleksandar 27 November 2019 в 16:04
поделиться
Другие вопросы по тегам:

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