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

Аннотации имеют свое использование, но они не одна серебряная пуля для уничтожения конфигурации XML. Я рекомендую смешать два!

, Например, при использовании Spring, это совершенно интуитивно для использования XML для части внедрения зависимости приложения. Это получает зависимости кода далеко от кода, который будет использовать его, в отличие от этого, с помощью своего рода аннотации в коде, для которого нужны зависимости, делает код, знающий об этой автоматической конфигурации.

Однако вместо того, чтобы использовать XML для транзакционного управления, отмечая метод как транзакционный с аннотацией имеет смысл, так как это - информация, которую программист, вероятно, хотел бы знать. Но что интерфейс будет введенным, поскольку SubtypeY вместо SubtypeX не должен быть включен в класс, потому что, если теперь Вы хотите ввести SubtypeX, необходимо изменить код, тогда как у Вас был интерфейсный контракт прежде так или иначе, таким образом, с XML, необходимо будет просто изменить отображения XML, и это является довольно быстрым и безболезненным, чтобы сделать так.

я не использовал аннотации JPA, таким образом, я не знаю, насколько хороший они, но я утверждал бы, что отъезд отображения бобов к базе данных в XML также хорош, поскольку объект не должен заботиться, куда его информация прибыла из, это должно просто заботиться о том, что это может сделать с его информацией. Но если Вам нравится JPA (у меня нет опыта с ним), любой ценой, пойдите для него.

В целом: Если аннотация обеспечивает функциональность и действует как комментарий в и себя и не привязывает код к некоторому определенному процессу для функционирования обычно без этой аннотации, то пойдите для аннотаций. Например, транзакционный метод, отмеченный как являющийся транзакционным, не уничтожает свою операционную логику и служит хорошим комментарием уровня кода также. Иначе эта информация, вероятно, лучше всего выражается как XML, потому что, хотя это будет в конечном счете влиять, как код работает, он не изменит основную функциональность кода и следовательно не принадлежит исходных файлов.

75
задан Wilfred Hughes 22 September 2017 в 12:49
поделиться

10 ответов

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

ОБНОВЛЕНИЕ: Racket теперь поддерживает БД, работает с несколькими БД включая mysql.

68
ответ дан 24 November 2019 в 11:34
поделиться

Попробуйте Weblocks, веб-фреймворк Common Lisp:

http://weblocks.viridian-project.de/

15
ответ дан 24 November 2019 в 11:34
поделиться
8
ответ дан 24 November 2019 в 11:34
поделиться

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

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

5
ответ дан 24 November 2019 в 11:34
поделиться

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

2
ответ дан 24 November 2019 в 11:34
поделиться

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

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

Clojure является диалектом Lisp и разделяет с Lisp код как -data философия и мощная макросистема.

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

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

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

Исходный код Clojure доступен на github под EPL . Запустить его в Linux очень просто; Я просто клонирую репозиторий git и запускаю ant .

19
ответ дан 24 November 2019 в 11:34
поделиться

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

0
ответ дан 24 November 2019 в 11:34
поделиться

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

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

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

6
ответ дан 24 November 2019 в 11:34
поделиться

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

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

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

  • Portable Allegroserve (веб-сервер, генератор HTML)

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

  • A разнообразие библиотек CL, таких как cl-json, cl-smtp, md5
3
ответ дан 24 November 2019 в 11:34
поделиться

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

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

Обратите внимание, что все вышеперечисленное находится под GPL или аналогичной лицензией (которая больше подходит для программ lisp)

8
ответ дан 24 November 2019 в 11:34
поделиться