Хоп (программное обеспечение)
![]() | Эту статью необходимо обновить . Причина такова: примерно в 2016 году он был переименован в Hop.js, его также можно программировать в HopScript (супернабор JavaScript) [1] . ( ноябрь 2019 г. ) |
![]() | |
Парадигма | мультипарадигмальность |
---|---|
Разработано | Мануэль Серрано |
Впервые появился | 2006 |
Стабильная версия | 2.4.2
/ 23 сентября 2013 г |
Дисциплина набора текста | сильный, динамичный |
Лицензия | Лицензионная лицензия 2+ |
Веб-сайт | прыгать |
Под влиянием | |
Схема [1] |
Формирование | 1967 |
---|---|
Цель | Исследовать |
Обслуживаемый регион | Франция |
Hop — это Lisp -подобный язык программирования, созданный Мануэлем Серрано для Web 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
"Server time")) ; 8
Приведенный выше фрагмент кода иллюстрирует несколько концепций.
- 8 строк кода определяют полную программу. Строки 1 и 2 приводят к определению службы на сервере. Строки с 4 по 8 приводят к созданию HTML-страницы с функциями JavaScript. Он предписывает клиенту (браузеру) отображать кнопку с меткой «Время сервера» и отправлять запрос на сервер, когда пользователь нажимает на кнопку. Hop автоматически генерирует все инструкции, необходимые для связи между клиентом и сервером.
- Hop основан на Scheme. Таким образом, программа Hop по сути представляет собой список слов и/или списков, которые начинаются и заканчиваются круглыми скобками. Например, «(HTML-содержимое)». «HTML» — это имя функции, а «содержимое» — параметр функции.
- Имена функций в 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 (...) (...))» — это специальная функция, которая делегирует работу серверу и принимает два параметра. Первый параметр содержит запрос, который клиент должен отправить на сервер асинхронно. Второй параметр содержит функцию обратного вызова, которую клиент должен вызвать при получении ответа от сервера. «(лямбда (h) (alert h))» — это анонимная функция, принимающая один входной параметр «(h)», который содержит ответ сервера при вызове функции. «(alert h)» — это тело функции.
Проблемы
[ редактировать ]Учитывая недавнее появление, Hop в настоящее время обладает рядом недостатков.
- Безопасность слабая. Это область активных исследований. [2]
- Сетевые сбои в настоящее время обрабатываются с помощью вручную запрограммированных процедур тайм-аута и исключений. Этот подход является трудоемким и относительно ненадежным. [2]