LINUX.ORG.RU

ABCL 1.4.0

 , ,


2

4

ABCL — реализация языка программирования общего назначения Common Lisp, которая работает на JVM (включает интерпретатор и компилятор) и поддерживает JSR-223 (Java scripting API) и, таким образом, может быть встроена в приложения на Java.

Официальный сайт

>>> Информация о релизе

★★★

Проверено: Shaman007 ()
Последнее исправление: sudopacman (всего исправлений: 9)
Ответ на: комментарий от anonymous

Кому надо, есть #lisp на фриноде. На stackoverflow и правда треды про лисп не встречались.

Hertz ★★★★★
()
Ответ на: комментарий от Oxdeadbeef

Хоть раз бы написал откуда у юзеров CL столько понтов и почему кложа не имеет отношения к лиспам.

Hertz ★★★★★
()
Ответ на: комментарий от anonymous

Ну да, дебажить CL куда проще и приятнее, чем кложу, читая километровые жабьи стектрейсы. Да, кложа сырая и недоделаная. Но у неё зато батареек хоть объешься. И cider почти на уровне со slime.

Hertz ★★★★★
()
Последнее исправление: Hertz (всего исправлений: 1)
Ответ на: комментарий от nightuser

Интересно, этим hy кто нибудь пользуется?

RA
()

по-моему раньше ABCL грешил переиспользованием рефлексии. Сейчас как? На андроиде работать будет? Если да, то это было классно

dave ★★★★★
()
Ответ на: комментарий от dave

Dalvik не поддерживает invokeDynamic, так что вряд ли будет работать эффективно. На новых версиях может быть. Но я не пробовал.

Weres ★★★
()

Программист на Clojure

На Clojure действительно неудобные стектрейсы, а у какого LISP-подобного языка они удобные? Чем?

Интересует также инфраструктура вокруг языка. У Clojure она есть. А у ABCL?

anonymous
()
Ответ на: комментарий от Deleted

У меня еще Dalvik во всю фурычит на Samsung Galaxy s3 mini

dave ★★★★★
()
Ответ на: Программист на Clojure от anonymous

На Clojure действительно неудобные стектрейсы, а у какого LISP-подобного языка они удобные? Чем?

У Common Lisp удобные. Например, и в slime, и в среде LispWorks к ним прилагается тут же отладчик

dave ★★★★★
()
Ответ на: Программист на Clojure от anonymous

LISP-подобного
LISP

кложурщик, как он есть

На Clojure действительно неудобные стектрейсы, а у какого LISP-подобного языка они удобные? Чем?

Читай про кондишены и рестарты: file:///Users/kamil/Documents/Docs/Books/Lisp/PCL/beyond-exception-handling-conditions-and-restarts.html

Интересует также инфраструктура вокруг языка. У Clojure она есть. А у ABCL?

У сабжа маленькое комьюнити, но мощный язык. Есть Quicklisp, и удобный FFI. Для остального можно дергать жабовские либы.

anonymous
()

Встретились как-то три джентльмена: русский, англичанин и француз. Стали пить чай. :) Француз размешивает чай ложечкой. -Дзинь! -Извините! Англичанин: -Извините! -Дзинь! Русский: -Тысяча извинений! -Дзинь, дзинь, дзинь, дзинь... :)

anonymous
()

Не хочу Вас расстраивать, но у меня все хорошо.

Я вас уважаю, хотя уже забыл за что!

Шо, так плохо живёте — только в одной руке сумка? :-)

anonymous
()

А вот и илитарии с коммонлиспом подтянулись, ща быстро заткнут за пояс несчастных безграмотных обезьян-кложурщиков, лол.

Можно посмотреть на юзкейс для рестартов в какой-нибудь типичной веб-прикладухе ? А то что ни пример - то анализируем логи и типа вот вам рестарт - пропустить строку, заюзать новый файл - несерьёзно.

Есть кстати библиотеки для кложи с реализацией чего-то подобного, но видимо важна интеграция в язык и стандартную библиотеку, потому что никакого мало мальски широкого распространения эти библиотеки не получили.

Ну и напоследок - есть ли пример какого-то более менее актуального проекта с веб-стэком (http-сервер, фронтенд, БД, логи) на CL с открытыми исходниками ?

Для кложуры например есть https://github.com/someteam/acha хотелось бы что-то аналогичное, но с кластером метапарадигм на коммон лиспе, ну чтобы увидеть, проникнуться всей мощщщностью, забросить «нелисп» и начать писать на КЛ.

anonymous
()

которая работает на JVM

Ждем версию, которая будет работать на PHP. Ну, чтоб ещё больше рака.

Lavos ★★★★★
()
Ответ на: комментарий от PanZagloba

Ну питон мне не нравится по следующим причинам:
1. Он скриптовый.

Нет.

2. Магия отступов: в отличие от многих языков, в которых можно, но не обязательно индентить код, в питоне написать код лопатой невозможно в принципе — отступы прямо влияют на вложенность выражений.

Ужас.

3. Aнонимные функции могут состоять только из одного выражения. Многострочные лямбды могли бы с извращениями помочь выправить положение, но их тоже нет.

Это придирка а не недостаток языка.

4. Невозможно потоками параллелить программу по нескольким процессорам/ядрам: вместо потоков надо использовать модуль multiprocessing или другие интерпретаторы питона.

Это «проблема» для тех кто никогда с потоками не работал и не понимает в чём там сложность. Ограничение на исполнение одним потоком только для кода на python, интерпретатора. Тот кто работал с python знает что GIL в основном в помощь. Например сборка вывода разных подпроцессов используя threading не заботясь о синхронизации.

tp_for_my_bunghole
()
Последнее исправление: tp_for_my_bunghole (всего исправлений: 1)
Ответ на: комментарий от Oxdeadbeef

Есть всякое, например вот это: http://clacklisp.org

Это скорее набор примитивов, а хотелось бы наоборот увидеть уже готовое приложение - со средой сборки, с менеджером зависимостей, с готовой базой, которое можно запустить потыкать и посмотреть исходники.

anonymous
()
Ответ на: комментарий от PanZagloba

4. Невозможно потоками параллелить программу по нескольким процессорам/ядрам

Пан в курсе, что потоки в Питоне действуют в рамках одного процесса, который действительно не распараллелишь на ядра, ибо он неделим?

Virtuos86 ★★★★★
()
Ответ на: комментарий от Virtuos86

Так пан об этом же и пишет, не? Это список того, что его не устраивает и трудность параллелизации как раз здесь и указана.

Weres ★★★
()
Ответ на: комментарий от anonymous

Зачем тебе? Ты ведь не умеешь программировать. Если бы умел - не задавал бы таких дурацких вопросов.

ados ★★★★★
()
Ответ на: комментарий от Virtuos86

не распараллелишь на ядра

А просто сказать «потоков в питоне нет и не будет» религия не позволяет?

anonymous
()
Ответ на: комментарий от anonymous

Интерпретатор Питона, написанный на Питоне, занимает меньше 15 строк:

exec(whatever)

Это не реализация интерпретатора Питона, а вызов уже реализованного до тебя интерпретатора.

Gentooshnik ★★★★★
()
Ответ на: комментарий от PanZagloba

Вообще это оффтоп, но мне питон (после восьми месяцев программирования на нём за деньги) не нравится тем, что там и в языке и в стандартной библиотеке горы костылей на костылях. Даже CL с его обратной совместимостью до стандарта 30-летней давности такого количества костылей не снилось.

Gentooshnik ★★★★★
()
Ответ на: комментарий от tp_for_my_bunghole

Ну питон мне не нравится по следующим причинам:
1. Он скриптовый.

Нет.

Ну вот тут на первой странице тело утверждало, что все языки с динамической типизацией скриптовые: ABCL 1.4.0 (комментарий)

Gentooshnik ★★★★★
()
Ответ на: комментарий от ados

Зачем тебе? Ты ведь не умеешь программировать. Если бы умел - не задавал бы таких дурацких вопросов.

Хамство и наглость идёт в стандартной поставке CL чтоли ? Или это от общения с себе подобными ?

Я задал предельно корректный вопрос - есть ли пример готового веб-приложения, посмотрев на который можно понять как построена инфраструктура (а это очень важный вопрос при реальной разработке), какие сейчас актуальные библиотеки, посмотреть примеры кода на более менее реальных задач а не из quick start с заглавной страницы, где всё всегда отлично.

В ответ же некий ados (компетенция которого в вопросах программирования более чем туманна) начинает обвинять меня в безграмотности и неосиляторстве. Таким образом вы коммьюнити вокруг языка не разовьёте.

anonymous
()
Ответ на: комментарий от anonymous

Готового веб-приложения я вам не приведу, но есть вот такой японец, который пилит веб-фреймфорки м библиотеки для CL. Достаточно популярные. Как по мне, так сообщество кложы поактивнее и поинтереснее будет. И для веба есть готовые хорошие инструменты.

Weres ★★★
()
Последнее исправление: Weres (всего исправлений: 1)
Ответ на: комментарий от Weres
; The Lisp defined in McCarthy's 1960 paper, translated into CL.
; Assumes only quote, atom, eq, cons, car, cdr, cond.
; Bug reports to lispcode@paulgraham.com.

(defun null. (x)
  (eq x '()))

(defun and. (x y)
  (cond (x (cond (y 't) ('t '())))
        ('t '())))

(defun not. (x)
  (cond (x '())
        ('t 't)))

(defun append. (x y)
  (cond ((null. x) y)
        ('t (cons (car x) (append. (cdr x) y)))))

(defun list. (x y)
  (cons x (cons y '())))

(defun pair. (x y)
  (cond ((and. (null. x) (null. y)) '())
        ((and. (not. (atom x)) (not. (atom y)))
         (cons (list. (car x) (car y))
               (pair. (cdr x) (cdr y))))))

(defun assoc. (x y)
  (cond ((eq (caar y) x) (cadar y))
        ('t (assoc. x (cdr y)))))

(defun eval. (e a)
  (cond
    ((atom e) (assoc. e a))
    ((atom (car e))
     (cond
       ((eq (car e) 'quote) (cadr e))
       ((eq (car e) 'atom)  (atom   (eval. (cadr e) a)))
       ((eq (car e) 'eq)    (eq     (eval. (cadr e) a)
                                    (eval. (caddr e) a)))
       ((eq (car e) 'car)   (car    (eval. (cadr e) a)))
       ((eq (car e) 'cdr)   (cdr    (eval. (cadr e) a)))
       ((eq (car e) 'cons)  (cons   (eval. (cadr e) a)
                                    (eval. (caddr e) a)))
       ((eq (car e) 'cond)  (evcon. (cdr e) a))
       ('t (eval. (cons (assoc. (car e) a)
                        (cdr e))
                  a))))
    ((eq (caar e) 'label)
     (eval. (cons (caddar e) (cdr e))
            (cons (list. (cadar e) (car e)) a)))
    ((eq (caar e) 'lambda)
     (eval. (caddar e)
            (append. (pair. (cadar e) (evlis. (cdr e) a))
                     a)))))

(defun evcon. (c a)
  (cond ((eval. (caar c) a)
         (eval. (cadar c) a))
        ('t (evcon. (cdr c) a))))

(defun evlis. (m a)
  (cond ((null. m) '())
        ('t (cons (eval.  (car m) a)
                  (evlis. (cdr m) a)))))

Oxdeadbeef ★★★
() автор топика
Ответ на: комментарий от anonymous

Соглашусь с неадекватностью ответа ados. Вот https://github.com/archimag/rulisp/tree/master например. Из коммерческих знаю только этот, но там костыли на костылях: https://github.com/naryl/cl-restas-eshop Нет, проекту не три года без коммитов, просто он куда-то на битбакет переехал.

Алсо cast archimag

Gentooshnik ★★★★★
()
Ответ на: комментарий от Oxdeadbeef

Да, я понял по комментарию. Но заметьте, он крайне скуден, написан не сам на себе (нет cond, нет реализации car/cdr и подобных, нет cons, нет eq) и даже так я насчитал 54 строки. А не пятнадцать.

Weres ★★★
()
Ответ на: комментарий от Weres

Готового веб-приложения я вам не приведу, но есть вот такой японец, который пилит веб-фреймфорки м библиотеки для CL. Достаточно популярные. Как по мне, так сообщество кложы поактивнее и поинтереснее будет. И для веба есть готовые хорошие инструменты.

Ну это автор Clack и есть. Я почитал исходники Clack и на первый взгляд это аналог Ring (ну или ring это аналог clack, не суть) - т.е. абстракция над HTTP + набор стандартных middleware.

Ну и честно говоря не впечатлило. Из интересного увидел только cl-annot - надо попробовать сделать что-то подобное в clojure.

Впрочем если кто расскажет о преимуществах CLOS для представления объектов request/respone против обычных голых map в Clojure, то с интересом послушаю. Навскидку так ничего не придумал.

anonymous
()
Ответ на: комментарий от anonymous

Я бы тоже послушал. Но про преимущества cl над clojure обычно коротко говорят «clojure не лисп» и гордо уходят вдаль. Хотя сам cl прикольный. Не для прода, так, для себя.

Weres ★★★
()
Ответ на: комментарий от Gentooshnik

Ну вот тут на первой странице тело утверждало, что все языки с динамической типизацией скриптовые

Слово «скрипт» изначально из игровой индустрии(когда определяли что будет полностью заскриптованно, и где будет какой-то AI). К языкам программирования имеет опосредованное значение.

tp_for_my_bunghole
()
Ответ на: комментарий от Weres

Но про преимущества cl над clojure

1. Скорость работы кода 2. Независимость от JVM 3. Константность языка (есть стандарт, который не меняется) :-)

anonymous
()
Ответ на: комментарий от Weres

Пытались как-то написать на Clojure прикольную штуку фанат Common Lisp (я) и фанат Scala (друг). В итоге я стал учить Scala, друг - Common Lisp. Clojure оба в игнор. :DDDD

Gentooshnik ★★★★★
()
Ответ на: комментарий от Gentooshnik

Сверился с книгой, там реализация одного eval на 19 строк, а потом ещё всю главу доопределяют функции из него. Но выглядит красиво, да. Я думаю, что фраза про 15 строк это пережиток той эпохи, когда людей можно было удивить eval'ом. Ну да ладно.

Weres ★★★
()
Последнее исправление: Weres (всего исправлений: 1)
Ответ на: комментарий от Gentooshnik

Так вы уже были фанаты.) Фанаты на то и фанаты. А чем оттолкнула? Я вот пописываю на CL, а не кложе только потому, что мне на работе jvm хватает, дома любовницу хочется. И да, понять за что его так хвалят тоже будет не лишним.

Weres ★★★
()
Ответ на: комментарий от anonymous

Константность как по мне — минус. Времена меняются, возникают новые технологии. Кложа тоже не реактивно меняется, важные большие вещи стараются решать библиотеками (такими, как core/async). И то, что работа над языком ведётся это хорошо, потому что кто-то пытается решить вставшие перед ним (языком) проблемы. Про скорость я ничего не скажу, тут надо тестить, да и не всегда это решающий фактор, а вот JVM это как минус, так и плюс. Библиотек в quicklispe сильно меньше, чем в мавене, а их актуальность зачастую вызывает большие сомнения.

Weres ★★★
()
Последнее исправление: Weres (всего исправлений: 1)
Ответ на: комментарий от Weres

Ну, я ещё не был фанатом Scala, а друг ещё не был фанатом CL.

Gentooshnik ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.