Кажется, есть два основных способа настроить серверную часть веб-сервера. Вы можете использовать стек LAMP с серверным кодом в чем-то вроде PHP или Python (или Ruby или JavaScript, которые не начинаются с P.) Эти языки сценариев имеют тенденцию быть динамически типизированными со всеми недостатками в производительность, корректность и поддержание работоспособности, которые обеспечивают динамически типизированные языки, но сервер легко обновить, поскольку вся логика генерации страниц хранится во внешних скриптах.
Другим широко распространенным стилем архитектуры является ASP.NET, где логика генерации страниц написана в скомпилированном коде. Это имеет тенденцию использовать статически типизированные языки, так что вы получаете код, который имеет преимущество компилятора, но вся логика генерации страниц компилируется в сервер, что означает, что если вам нужно что-то изменить, вы должны отключить сервер и замените его новой сборкой.
Так что это заставляет меня задуматься. Существуют ли какие-либо серверные скриптовые языки, которые используют статическую типизацию для лучшего из обоих миров?
источник
Ответы:
ОБНОВЛЕНИЕ: более современные решения включают AtScript
Вы должны попробовать Google Dart .
Он имеет необязательную типизацию, что означает, что вы можете добавлять аннотации типов, которые будут проверяться в «проверенном», то есть в режиме разработчика, во время выполнения, но они не обязательны, и этот язык обеспечивает многие преимущества других динамических языков, таких как python. Тем не менее, редактор сделает вывод типа, чтобы попытаться помочь вам найти ошибки заблаговременно. Виртуальная машина dart работает быстро и может создавать моментальные снимки, которые могут ускорить запуск до 10 раз. Он также компилируется в javascript и работает быстро .
Основным недостатком здесь является то, что это несколько новая технология, поэтому для нее не так много библиотек, и, честно говоря, совместимость с javascript не так проста, как должна быть. Кроме того, язык все еще находится в разработке, поэтому время от времени происходят серьезные изменения.
источник
Ваш вопрос основан на нескольких неверных предположениях.
Python и Ruby скомпилированы в байт-код перед выполнением. Процесс автоматический, но изменения приложения требуют полного перезапуска. Node.JS ведет себя так же, но компилируется в машинный код.
Код ASP.NET может быть предварительно скомпилирован и скопирован на сервер или динамически скомпилирован по требованию из исходного кода на сервере. IIS обрабатывает обе формы обновлений без нулевого времени простоя (первые запросы после обновления будут медленными.) Обновления с нулевым временем простоя возможны с Python и Ruby, но с таким большим количеством вариантов развертывания не следует воспринимать как должное.
Исходя из этого, я думаю, что вы будете довольны любым языком .NET.
источник
Нет причин, по которым скомпилированный язык должен быть строго типизирован или трудно обновляться.
Возможно, вы захотите взглянуть на некоторые настройки Erlang, такие как Cowboy, Webmachine и азота. С Dialyzer вы можете получить очень хорошую проверку типов на корректность, и вы можете перезагружать модули на лету во время выполнения, так как erlang был разработан, чтобы иметь возможность обновлять программное обеспечение на месте без прерывания работы существующих пользователей.
Кроме того, веб-машина (та, которую я использовал чаще всего) может быть довольно быстрой. Я видел, что веб-машины имеют средние ответы по конечным точкам API менее 10 мс на узле Amazon EC2!
Если вы хотите статическую типизацию, попробуйте среду Yesod, которая предназначена для языка Haskell. Хаскель строго набран с очень богатой системой типов.
Я не использовал это лично, но люди, которых я знаю, кто использует это, любят это.
источник
ИМХО, лучше статически типизированный язык веб - сценариев D .
Как и интерпретированные скриптовые языки, он может компилировать скрипты на лету и с молниеносной скоростью.
Сам язык выглядит как строго типизированный сверхмощный JavaScript, гораздо более мощный, чем, например, Go.
Все элементы параллелизма скрыты, как в PHP, а шаблоны скомпилированы в нативный код.
Трудно найти лучшего, чем это ...
источник