Hop — это язык программирования типа Lisp , разработанный Мануэлем Серрано для веб 2.0 , а также название веб-брокера ( сервера и прокси ), реализующего этот язык. Он написан на Bigloo Scheme . Это проект, финансируемый INRIA .
Языковой дизайн
Hop — это стратифицированный язык, что означает, что один программный файл содержит инструкции как для сервера, так и для клиента. Сервер выполняет вычисления, требующие ресурсов ЦП, и операции, требующие системных привилегий для доступа к файлам или другим ресурсам. Клиенты (которых может быть много, например браузеры, мобильные телефоны и т. д.) предназначены для выполнения действий, связанных с программированием графических пользовательских интерфейсов.
( define-service ( server-date ) ; 1 ( current-date )) ; 2 ( <HTML> ; 4 ( <BUTTON> ; 5 :onclick ~ ( with-hop ( $server-date ) ; 6 ( lambda ( h ) ( alert h ))) ; 7 "Время сервера" )) ; 8
Приведенный выше фрагмент кода иллюстрирует несколько концепций.
- 8 строк кода определяют полную программу. Строки 1 и 2 приводят к определению службы на сервере. Строки 4–8 приводят к HTML-странице, полной функций javascript. Она инструктирует клиент (браузер) отобразить кнопку с надписью «Время сервера» и отправить запрос на сервер, когда пользователь нажимает на кнопку. Hop автоматически генерирует все инструкции, необходимые для связи между клиентом и сервером.
- Hop основан на Scheme. Поэтому программа Hop по сути является списком слов и/или списков, которые начинаются и заканчиваются скобками. Например, "(HTML content)". "HTML" — это имя функции, а "content" — это параметр функции.
- Имена функций в Hop могут содержать символы, отличные от букв и цифр. Например, "<HTML>" является допустимым именем. Поэтому синтаксис Hop выглядит очень похожим на HTML (по замыслу). Выражение Hop "(<HTML> content)" похоже на выражение HTML "<HTML>content</HTML>".
- Параметры HTML начинаются с двоеточия, например «:onclick».
- Символ $ в "$server-date" указывает, что сервер должен заменить имя переменной "server-date" на значение переменной перед отправкой HTML клиенту. Это очень похоже на то, как работают ASP и JSP.
- Символ ~ в «:onclick ~(...)» указывает на то, что клиент должен обработать то, что находится в скобках.
- Функция "with-hop" в "(with-hop (...) (...))" — это специальная функция, которая делегирует работу серверу и принимает два параметра. Первый параметр содержит запрос, который клиент должен отправить серверу асинхронно. Второй параметр содержит функцию обратного вызова, которую клиент должен вызвать при получении ответа от сервера. "(lambda (h) (alert h))" — это анонимная функция, которая принимает один входной параметр "(h)", который содержит ответ сервера при вызове функции. "(alert h)" — это тело функции.
Проблемы
Учитывая недавнее появление хмеля, в настоящее время у него есть ряд недостатков.
- Безопасность слабая. Это область активных исследований. [2]
- Сбои в сети в настоящее время обрабатываются с помощью вручную закодированных процедур тайм-аута и исключений. Такой подход трудоемок и относительно ненадежен. [2]
Ссылки
- ^ http://hop.inria.fr/usr/local/lib/hop/2.2.0/weblets/home/articles/hop-lang/article.html [ мертвая ссылка ]
- ^ ab Youtube: HOP: Язык программирования Web 2.0, начало в 33:50.
Внешние ссылки