Почему так много веб-языков интерпретируются, а не компилируются? - PullRequest
34 голосов
/ 04 декабря 2008

Почему такие языки, как C, не использовались для веб-разработки? Конечно, увеличение скорости после компиляции было бы полезно для сайтов с большой нагрузкой?

Ответы [ 15 ]

1 голос
/ 04 декабря 2008

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

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

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

1 голос
/ 04 декабря 2008

Вот мои мысли по этому вопросу:

  • Для оригинальных приложений CGI требовался собственный процесс ОС, что, конечно же, требует значительных ресурсов. Попытка объединить все в единый процесс также нелегка с нативным кодом, так как если что-то пойдет не так в приложении, это может легко повредить весь сервер. С этими вещами намного проще справиться с помощью интерпретатора или виртуальной машины. Конечно, вы можете сделать то же самое с нативным кодом, но я полагаю, что реализовать фреймворк будет гораздо сложнее. В конце вы получите нечто похожее на интерпретатор или виртуальную машину.
  • Интерпретируемые языки переносимы между операционными системами.
  • Конечно, большим преимуществом является продуктивный прирост, который вы получаете, используя современный язык.
  • Производительность, конечно, важна. Однако интерпретируемые языки или языки VM становятся все лучше и лучше в этом отношении (с такими технологиями, как JIT-компиляция) и приближаются к производительности нативного кода. Также несправедливо сравнивать только время, потраченное в процессе исполнения. Вам необходимо измерить всю последовательность: прием запроса с сервера, делегирование в правильное приложение, выполнение, возврат результатов на сервер. Будет ли нативное приложение быстрее во всех этих?
0 голосов
/ 06 ноября 2017

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

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

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

Это можно увидеть в недавнем распространении так называемых «микросервисных» архитектур.

0 голосов
/ 04 декабря 2008

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

0 голосов
/ 04 декабря 2008

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

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

...