Чи є якісь статичні типи мов веб-сценаріїв? [зачинено]


12

Здається, є два основні способи налаштування сервера заходу. Ви можете використовувати стек LAMP з кодом на стороні сервера у чомусь на зразок PHP або Python (або Ruby або JavaScript, які не починаються з P.) Ці мови сценаріїв, як правило, динамічно набираються, з усіма недоліками в продуктивність, правильність та ремонтопридатність, які приносять динамічно набрані мови, але оновити сервер легко, оскільки вся логіка створення сторінки зберігається у зовнішніх скриптах.

Іншим основним стилем архітектури, що широко використовується, є ASP.NET, де логіка генерації сторінки записується у компільований код. Це, як правило, використовує статично набрані мови, тому ви отримуєте код, який мав перевагу компілятора, але вся логіка генерації сторінки збирається на сервер, а це означає, що якщо вам потрібно щось змінити, вам доведеться зняти сервер і замініть її на нову збірку.

Тож це змушує мене замислитися. Чи існують які-небудь мови сценаріїв на стороні сервера, які використовують статичне введення тексту найкраще для обох світів?


2
Ви думали про використання Go ?
pswg


4
"всі недоліки у продуктивності, правильності та ремонтопридатності, які приносять динамічно набрані мови". Ці твердження в кращому випадку є дискусійними, а в гіршому - неправильними (найшвидші JIT на сьогодні є для динамічно набраних мов).
Хав'єр

2
"Логіка генерації сторінки компілюється на сервер. Це означає, що якщо вам потрібно щось змінити, вам доведеться зняти сервер і замінити його на нову збірку." Існує кілька середовищ сервера, які можуть передавати новий бінарний файл без перерви в роботі. тобто. uWSGI витончене перезавантаження
Хав'єр

1
Для JVM існує декілька фреймворків, які дозволяють перекомпілювати та гарячі заміни на льоту.
back2dos

Відповіді:


8

ОНОВЛЕННЯ: Більш поточні рішення включають AtScript

Спробуйте скористатися Google Dart .

Він має необов’язкове введення тексту, а це означає, що ви можете додавати примітки до типів, які будуть перевірені в режимі "перевіреного" ака-версії під час виконання, але вони не потрібні, і мова надає багато переваг інших динамічних мов, таких як python. Однак редактор зробить введення висновку, щоб спробувати допомогти вам знайти помилки достроково. DM Vart є швидким і може створювати знімки, що може прискорити час запуску до 10 разів. Він також збирається до javascript і це швидко .

Основний мінус у тому, що це дещо нова технологія, тому для неї не так багато бібліотек, і чесно кажучи, сумісність з javascript не така проста, як повинна бути. Також мова все ще розвивається, тому час від часу відбуваються різкі зміни.


Я б краще рекомендував TypeScript. Як і дротик, але він сумісний із JavaScript.
Кнерд

4

Ваше запитання ґрунтується на кількох неправильних припущеннях.

Python, Ruby обоє компілюються в байт-код перед виконанням. Процес проходить автоматично, але для зміни програм потрібен повний перезапуск. Node.JS поводиться так само, але компілює машинний код.

Код ASP.NET можна попередньо скомпілювати та скопіювати на сервер або динамічно компілювати на вимогу з вихідного коду на сервері. IIS обробляє обидві форми оновлень без нульового часу зупинки (перші запити після оновлення будуть повільними.) Оновлення з простором простою можливі за допомогою Python та Ruby, але з такою кількістю варіантів розгортання - це не те, що слід сприймати як належне.

Виходячи з цього, я думаю, що ви будете задоволені будь-якою мовою .NET.


3
Мова сценаріїв - це коли ви можете записати деякі фрагменти у файл та запустити його. Немає причин, щоб він не був статично введений.
Флоріан Маргайн

@FlorianMargaine Отже, C - це сценарна мова?

@delnan c ++ теж.
mikerobi

@mikerobi Насправді "мій" теж є C ++ (і AFAIK є наступником CINT), я просто розкрутив цей біт.

2
@mikerobi Якщо ви досліджуєте пікок, ви помітите, що в першу чергу це було написано - це мова сценаріїв. Це не просто інтерпретатор для c, це інтерпретатор, достатньо малий, щоб бути вбудованим у більші програми та пристрої та надати своїм користувачам можливість писати невеликі сценарії c. Деякі мови можуть бути кращими в сценаріях, ніж інші, але мова не є поганою в написанні сценарію лише тому, що вона ще не використовується для цього. Зрештою, мова - це лише синтаксис та семантика, реалізація може різко відрізнятися.
янніс

0

Немає причин, що компільована мова повинна бути сильно набрана або важко оновлена.

Можливо, ви захочете ознайомитися з деякими веб-налаштуваннями erlang, такими як Cowboy, Webmachine та азот. За допомогою Dialyzer ви можете отримати дуже хороший тип перевірки на правильність, і ви можете перезавантажувати модулі під час руху під час роботи, оскільки Erlang був розроблений, щоб мати можливість оновити програмне забезпечення на місці, не перебиваючи існуючих користувачів.

До того ж webmachine (той, який я найбільше використовував) може бути досить швидким. Я бачив, як веб-машина має середній відгук на кінцевих точках API менше 10 мс на маленькому вузлі Amazon EC2!

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

Я особисто не використовував це, але люди, яких я знаю, хто його використовують, люблять це.


3
Не плутайте сильне та статичне введення тексту. Haskell має сильні статичні типи, Python має сильні динамічні типи.
mikerobi

0

ІМХО, краще статично типізований мова веб - сценаріїв D .

Як і інтерпретовані мови сценаріїв, вона може складати сценарії на льоту та зі швидкістю блискавки.

Мова сама по собі виглядає як сильно набраний JavaScript з надпотужним керуванням, набагато потужнішим, ніж, наприклад, Go.

Усі паралельні параметри приховані, як у PHP, а шаблони зібрані у рідному коді.

Важко знайти краще за це ...

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.