Подтвердить что ты не робот

Как я могу сделать веб-программирование с помощью Lisp или схемы?

Я обычно пишу веб-приложения на PHP, Ruby или Perl. Я начинаю изучение Схемы, и я хочу попробовать веб-проект на этом языке. Но я не могу найти наилучшую среду для этого.

Я ищу следующие функции:

  • Простой способ получить параметры запроса (например: get-get #key, get-post #key, get-cookie #key).
  • Доступ Mysql.
  • Генераторы HTML-форм, обработка, валидаторы и т.д.
  • Помощники для пользовательских входных данных фильтра (что-то вроде htmlentities, escape-переменных для ввода запросов и т.д.).
  • FLOSS.
  • И дружественный GNU/Linux.

Итак, спасибо заранее всем ответам.

4b9b3361

Ответ 1

Racket содержит все, что вам нужно. См. Веб-сервер Racket учебник, а затем документация. Веб-сервер существует некоторое время, и у него много функций. Вероятно, единственное, что не включено, это интерфейс mysql, но он существует как пакет на PLaneT (инструмент распространения пакетов Racket).

UPDATE: Racket теперь поставляется с поддержкой DB, работает с несколькими БД, включая mysql.

Ответ 2

Вы можете посмотреть Clojure:

Clojure - динамический язык программирования, предназначенный для виртуальной машины Java. [...] Clojure обеспечивает легкий доступ к фреймворкам Java, с необязательными типами подсказок и выводами типа, чтобы гарантировать, что вызовы на Java могут избежать отражения.

Clojure является диалектом Lisp и делится с Lisp философией кода как данных и мощной макросистемой.

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

clojure-contrib имеет SQL API, и есть ClojureQL, который должен охватывать ваши потребности в доступе к БД.

В разработке существует веб-инфраструктура для Clojure, называемая Compojure. Могут быть и другие.

Clojure source доступен в github под EPL. Легко запустить его в Linux; Я просто клонировал репозитории git и запускал ant.

Ответ 3

Вы можете сделать веб-разработку с помощью схемы guile. Его стандартная библиотека включает в себя простой (sxml простой) модуль, который очень полезен для генерации, манипулирования и синтаксического анализа html. В библиотеке guile-www добавлена ​​поддержка http, cgi и т.д. guile-dbi обеспечивает доступ к MySQL и другим базам данных. С помощью этих строительных блоков вы можете реализовать все: от простых скриптов cgi до веб-приложений со своим собственным HTTP-сервером.

Ответ 5

Я написал довольно обширный учебник/книгу по теме: http://lispwebtales.ppenev.com/

Краткое резюме:

  • Он использует Common Lisp
  • Он использует инфраструктуру Restas
  • В нем есть примеры почти для большинства основных веб-разработок, включая доступ к БД, аутентификацию, генерацию HTML и шаблонов.
  • Поскольку документация Restas в значительной степени устарела, мой учебник является самым близким к современным документам.
  • Показывает несколько более продвинутых функций, таких как политики, которые позволяют записывать подключаемые интерфейсы, например, вы можете написать слой хранилища данных и легко обращаться с образами для разных механизмов хранения, модульную систему, которая позволяет писать повторно используемые компоненты, такие как auth frameworks и тому подобное.
  • Он охватывает такие вещи, как установка lisp, настройка системы сборки ASDF и диспетчера пакетов быстрого доступа и т.д.
  • Он бесплатный онлайн, и как только я закончу его, он будет бесплатным и на постном пиве. Источник находится на https://github.com/pvlpenev/lispwebtales по лицензии CC, исходный код - MIT. Не все это опубликовано еще, и я сейчас пересматриваю.

Ответ 7

Если вы заинтересованы в Common Lisp, чтобы быть точным и не хотите идти по маршруту weblocks, я бы рекомендовал следующую настройку:

  • Используйте SBCL для Linux, но с поддержкой нескольких потоков.
  • Используйте Hunchentoot как веб-сервер, который предоставит вам всю необходимую обработку сервера, включая сеансы и файлы cookie.
  • Используйте ClSql для общения с MySql, у него достаточно документации и очень стабильная.
  • Для поколения HTMl вы можете использовать Dr Edi Weitz Cl-WHO (очень хорошо документировано).

Примечание. Все перечисленные выше относятся к GPL или аналогичной лицензии (которая больше работает для программ Lisp).

Ответ 8

Пол Грэм (и друзья) сделал диалоги lisp специально для написания базовых веб-приложений. Он называется Arc, и вы можете получить его в arclanguage.org.

Вероятно, он не подходит для действительно больших сложных веб-сайтов, и я не уверен, в каком состоянии он поддерживает базу данных, но Пол Грэм знает как писать веб-приложения в lisp, так что Arc сделает часть HTTP/HTML легкой для вас, пока вы проводите большую часть своих циклов мозга, изучая способ lisp.

Ответ 9

Gambit Scheme имеет собственное решение для веб-приложений. Он использует структуру Spork, основанную на Black Hole (как по Per Eckerdal).

Andrew Whaley имеет начальный учебник о том, как заставить Gambit, Black Hole и Spork запускать веб-приложение под Apache с помощью mod_proxy. Вы можете взглянуть на это.

В случае (возможно) связанной заметки Gambit также скомпилирует ваши материалы на C, а затем в исполняемый файл, если вы так наклонены.

Ответ 10

Weblocks - хороший инструмент для создания веб-приложений в Common Lisp, но для меня это слишком тяжело.

Мы используем следующий стек:

  • OpenMCL (с открытым исходным кодом Lisp, очень приятно)

  • Портативный Allegroserve (веб-сервер, генератор HTML)

  • Наши собственные инструменты, подобные Rails, для работы с файлами Ajaxy (обновление: теперь это открыто, поскольку WuWei)

  • Различные библиотеки CL, такие как cl-json, cl-smtp, md5

Ответ 11

Я использую свою собственную, настроенную версию Схемы, полученную из MzScheme. Он имеет новую, простую инфраструктуру веб-приложений, встроенный веб-сервер (а не тот, который поставляется с MzScheme) и библиотеки ODBC. (http://spark-scheme.wikispot.org/Web_applications). Документация не может быть исчерпывающей, поскольку это скорее личный инструмент. Но есть много примеров кода в репозиторий кода.

Ответ 12

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

  • Менеджер зависимостей leiningen, который делает, очень просто установить и управлять библиотеками, которые вы используете. Довольно хороший набор плагинов для него тоже. Там даже плагин для Clojurescript, который является языком на основе Clojure, который компилируется в Javascript.
  • Абстракция HTTP-сервера ring. Его используют в большинстве реальных веб-фреймворков. Его довольно хорошая идея, чтобы узнать, что сначала, прежде чем перейти в реальную структуру.
  • hiccup - это язык HTML dsl/templating, написанный в Clojure. Это очень выразительно! Напоминает мне немного Джейд, в некотором смысле.
  • composure должен быть самой популярной веб-картой для Clojure. По существу, это библиотека маршрутизации, например express.js.

Ответ 13

Clojure был бы идеальным для этого. С помощью очень короткого, чистого кода вы можете реализовать некоторые очень сложные приложения, такие как блоги или форумы.

Ответ 14

Посмотрим, что можно сделать с помощью Общий Lisp.

Состояние состояния общей экосистемы Lisp (2015) и Awesome Common Lisp показывает нам пару современных фреймворков (Caveman, Lucerne, все они построены на новом сервере Clack веб-приложений, интерфейс для Hunchentoot и других серверов). Позвольте обсудить наши собственные выводы.

Простой способ получить параметры запроса (например: get-get #key, get-post #key, get-cookie #key).

Мне было проще найти путь Люцерна, он прост, как макрос with-params (пример в реальном мире):

@route app (:post "/tweet")
(defview tweet ()
  (if (lucerne-auth:logged-in-p)
      (let ((user (current-user)))
        (with-params (tweet)
          (utweet.models:tweet user tweet))
        (redirect "/"))
      (render-template (+index+)
                       :error "You are not logged in.")))

Caveman way был менее понятным для меня.

Доступ Mysql

Crane - это ORM, который поддерживает MySQL, Postgre, SQLite и т.д. Он имеет автоматические миграции (что не работают с SQLite).

Caveman рекламирует интеграцию с базой данных.

Генераторы HTML-форм, обработка, валидаторы и т.д.

Я не знаю, есть ли генераторы форм. edit: есть cl-forms и formlets или снова 1forms, работая с Caveman2.

Caveman не имеет одного (вопрос поднят в 2011 году).

Помощники для пользовательских входных данных фильтра (что-то вроде htmlentities, escape-переменных для ввода запросов и т.д.).

Ratify - библиотека проверки ввода, но не интегрированная в фреймворк.

FLOSS и GNU/Linux дружественные ✓

Другие материалы в сети

Говоря о сети, есть другие приятные библиотеки в стране CL:

  • веб-серверы: Woo - это быстрый HTTP-сервер, быстрее, чем Nodejs (остерегайтесь диаграмм...), wookie - это асинхронный HTTP-сервер,
  • Dexador является HTTP-клиентом
  • Plump, lquery и CLSS позволяют легко анализировать html и запрашивать DOM.
  • cl-bootstrap предлагает ярлыки twitter-bootstrap для cl-who tempating engine (который заменяет Jade/Pug, хотя у нас также есть обычные шаблоны).

Ajax в Lisp

  • Wuwei - интересный эксперимент, который позволяет писать Ajax-представления в Common Lisp. На веб-сайте есть интересные демоверсии реального мира. Он может включать в себя другие библиотеки Javascript.
  • также SmackJack, поясненный в этом недавнем сообщении в блоге (2017).
  • Weblocks - это старая структура для создания веб-приложений на основе ajax. Он перерабатывается с новым быстрым стартом здесь. Я буду следить за этим.