Объединение кода Lisp и PHP в одном приложении
-
02-07-2019 - |
Вопрос
На данный момент я использую PHP почти для всего, что разрабатываю для Интернета, но его лингвистические ограничения начинают меня раздражать.Однако, поскольку я разработал некоторые методы и поддерживаю некоторые библиотеки PHP, которые мне очень помогают, я не чувствую, что был бы готов просто переключиться на LISP, выбросив весь мой вывод PHP.Это может быть даже невозможно на серверах, к которым у меня есть доступ только к обычной учетной записи хостинга LAMP.
Следовательно, мои вопросы:Можно ли просто объединить код LISP с кодом PHP?Существуют ли решения для параллельного использования LISP/PHP, интерфейса для их взаимодействия или, возможно, это просто реализация одного для другого?Или это взаимоисключающий выбор?
Решение
Это не взаимоисключающий выбор, вы можете запускать оба в одной системе, точно так же, как perl и php (например) запускаются параллельно во многих системах.
Есть хороший пост здесь по аналогичной теме, в которой предлагается использовать сокеты для связи между обоими языками -
Если вы хотите пойти по пути PHP<->Lisp, проще всего заставить PHP взаимодействовать с вашим Lisp-процессом с помощью сокетов.
Этот подход по-прежнему создает потенциальную дополнительную сложность и проблемы с обслуживанием, которые возникают из-за наличия двух языков в вашем проекте, но может подойти для вашего конкретного случая использования.
Другие советы
Скорее всего, вы не захотите писать код на PHP, если начнете разработку на Lisp.(Новая капитализация примерно с 80-х, кстати)
Hunchentoot — популярный сервер, который дает вам основы подключения диспетчеров к запросам.Есть серия скринкасты о написании клона Reddit на LispCast.com
Необычная паутина (звучит как игра слов в описании схемы в PAIP Питером Норвигом) - это, насколько я могу судить, более полная структура, основанная в значительной степени на идее продолжений, во многом похожая на Приморский для Смолтока.
Вебблоки — это еще один веб-фреймворк, основанный на продолжении, который выглядит красиво.Автор (в defmacro.org
) пишет хорошие статьи, и мне нравится то, что я увидел в примере приложения для Weblocks.
Я сейчас примерно в такой же ситуации.У меня за плечами много PHP, но этот язык меня действительно начинает раздражать.Я экспериментировал с разными языками, но в последнее время много возился со схемой и обдумываю постепенный переход.Может быть, нам стоит создать группу пользователей или что-то в этом роде?
Имея опыт работы с PHP, вы, вероятно, привыкли работать с тонким уровнем абстракции протокола HTTP.Я думаю, что это действительно облегчает переход на новый язык;Особенно тот, где нет одной доминирующей структуры.В этом смысле PHP и сообщество Lisp имеют некоторое сходство (но то же самое можно сказать и о других фрагментированных платформах с открытым исходным кодом, таких как Python и Perl).
Одна из проблем Lisp заключается в том, что существует очень большой выбор.Я решил, что предпочитаю Scheme Common Lisp, так что это немного сужает круг вопросов.После некоторых экспериментов я сейчас сосредоточился на plt-схема, которая, кажется, является той схемой, которая имеет наибольшую динамику.Помимо прочего, в комплект поставки входит веб-сервер.
К сожалению, я не могу придумать для этого никаких библиотек, однако я был в похожей ситуации, когда у меня был код PHP, но я устал «пытаться» закодировать логику (логику игры) на PHP, поэтому я использовал сокеты PHP для подключения на Lua, поэтому теперь я программирую всю серверную логику на Lua и использую PHP (настройка LAMP) в качестве внешнего сервера.
Надеюсь, это поможет.
Рекомендую вам попробовать Вебблоки.
Для обычной разработки веб-страниц на PHP я создал библиотеку под названием xilla_tags.
Обзор здесь
На сайте Джейкоба Ханссена также есть несколько хороших техник.
Посмотрите интересное решение для объединения Lisp и PHP.https://github.com/lisphp/lisphp