?

Log in

No account? Create an account
 

parenscript fix? - swizard

About parenscript fix?

Previous Entry parenscript fix? 8 сент, 2009 @ 08:34 Next Entry
Все-таки следует признать, что один жирный минус в CL существует: практически нет библиотек приемлемого качества. Не, с количеством проблем никаких, но большинство пакаджей тупо уровня контрольной работы школоты, или вообще в формате "proof of concept".

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

Например, в cl-prevalence от меня уже ушло два патча и еще один надо не забыть засабмитить. Патчи блин уровня "без них вообще никак не работало".

Хорошо, теперь вот два часа тупил, что так все тормозит в weblocks на do-dialog. В итоге, дебаг паяльником вывел на parenscript::parenscript-print -- я в него втыкал расширенными от ужаса глазами минут десять, пытаясь сообразить, что имелось в виду. Чуть-чуть поправил, стало работать в девяносто тысяч раз быстрее:

(defmethod parenscript-print (form)
  (let ((*indent-level* 0)
        (*print-accumulator* ()))
    (if (and (listp form) (eql 'js-block (car form))) ; ignore top-level block
        (loop for (statement . remaining) on (third form) do
             (ps-print statement) (psw ";") (when remaining (psw #\Newline)))
        (ps-print form))
    
;;; wtf?!
;;     (reduce (lambda (acc next-token)
;;               (if (and (stringp next-token)
;;                        (stringp (car (last acc))))
;;                   (append (butlast acc) (list (concatenate 'string (car (last acc)) next-token)))
;;                   (append acc (list next-token))))
;;             (cons () (reverse *print-accumulator*)))))
    
    (list (with-output-to-string (out)
            (loop
               :for next-token :in (reverse *print-accumulator*)
               :do (write-string next-token out))))))


Не очень уверен, что код получился эквивалентный (надо еще поисследовать, прежде чем сабмитить патч), но на глаз ничего не сломалось.

Не, ну что за индусятина в серьезном коде, а? :)
(append (butlast acc) (list (concatenate 'string (car (last acc)) next-token)))

-- это ж блядь посимвольно для строк, неудивительно, что 20-ти килобайтный виджет компилируется 9 секунд.

Оно, конечно, понятно, что parenscript, в основном, на compile-time расчитан. Но все равно это не отмазка для таких катастрофических тормозов.
Оставить комментарий
[User Picture Icon]
From:lispnik
Date:Сентябрь, 8, 2009 05:59 (UTC)
(Link)
Пора делать lisp-wtf.com.
[User Picture Icon]
From:swizard
Date:Сентябрь, 8, 2009 11:05 (UTC)
(Link)
Ага, причем, как это принято, на похапе, потому что на виртуальном хостинге лиспа нет :)
[User Picture Icon]
From:13_49
Date:Сентябрь, 8, 2009 07:20 (UTC)
(Link)
Дык, та же самая х-ня и для всего остального, даже для крестов: как только начинаешь применять его там, где обычно в мейнстриме не применяют, так библиотек либо нет, либо лучше бы и не было.
[User Picture Icon]
From:gabaidulin
Date:Сентябрь, 8, 2009 08:41 (UTC)
(Link)
Да, но при этом, production-мейнстрим для lisp не существует, если не считать таковым какой-нибудь emacs :-)

Кроме яху стора никаких примеров и не вспоминается, да и тот был скорее написан, ради пЕара, нежели осмысленнго выбора технологии, о чем говорит тот факт, что сей продукт потом переписали чуть менее, чем полностью.
From:(Anonymous)
Date:Сентябрь, 8, 2009 19:43 (UTC)
(Link)
Мне думается, что это lisp-специфичная проблема, но корни её отчасти психологические. Написать какую либо либу или биндинг к либе на cl задача намного более простая, чем на том же, скажем, питоне. С другой стороны, доведение библиотеки до ума - задача кропотливая и рутинная, требующая достаточно времени и сил, т.е. не настолько интересная, чем собственно создание proof of concept. А работу рутинную мало кто любит. Вдобавок многие библиотеки на cl пишутся, обычно одним человеком или очень небольшим коллективом авторов. А для доведения proof of concept до юзабельного уровня требуется какое никакое, а комьюгнити. Большое комьюгнити GNU/Linux ядра => ядром GNU/Linux'а можно пользоваться, и сравните с тем же GNU/Hurd или, если уж речь зашла о cl комьюнити, биндингов к qt/gtk+ и их самих.

Или, если короче - написать свой биндинг к gtk+ на cl легко, а вот поддерживать его уже лениво. В результате имеем зоопарк бингигов к gtk+ разной степени юзабельность и запущенности. З.Ы. Надеюсь, что к cl-gtk2 это обноситься не будет.
[User Picture Icon]
From:swizard
Date:Сентябрь, 8, 2009 19:59 (UTC)
(Link)
Да, пожалуй, ты все правильно написал.

Но, все же, один момент мне все равно остается неясным: каким образом автору в общий доступ не стыдно выкладывать код, который он даже не пытался запускать ни разу? :) Казалось бы, это не хаскель, где компилируется ~= работает, да и мощный repl вроде бы должен способствовать итеративной разработке. Я уж не говорю про тестовое покрытие, но хотя бы один раз выполнить в репле функцию-то можно.
From:(Anonymous)
Date:Сентябрь, 8, 2009 22:46 (UTC)
(Link)
Прозреваю, что следущий пост будет на тему «почему я перешёл на clojure».
[User Picture Icon]
From:swizard
Date:Сентябрь, 9, 2009 08:55 (UTC)
(Link)
Зачем же, сразу на пхп :)

Меня пока все более чем устраивает, даже несмотря на необходимость подчищать косячки за другими.
From:(Anonymous)
Date:Сентябрь, 9, 2009 08:00 (UTC)
(Link)
А вообще как мнение относительно Weblocks вообще?
[User Picture Icon]
From:swizard
Date:Сентябрь, 9, 2009 08:58 (UTC)
(Link)
В щенячем восторге, че =) Недавно я об этом писал тут, кой че еще скоро напишу.
[User Picture Icon]
From:mkevac
Date:Сентябрь, 10, 2009 17:49 (UTC)
(Link)
Как ты сделал подсветку кода в ЖЖ?
[User Picture Icon]
From:swizard
Date:Сентябрь, 10, 2009 22:26 (UTC)
(Link)
htmlize.el
From:ext_207745
Date:Сентябрь, 21, 2009 13:38 (UTC)
(Link)
Это я поленился менять механизм принтинга и решил проблему вот-так. Патч не совсем то тк *print-accumulator* содержит не только strings, но кажется в последствии решение было похожее. Сейчас решил сделать очередной релиз, и переписал принтер на использование streams. Зря боялся раньше этот вариант тк все оказалось совсем просто и система принтинга вобще больше не фигурирует в время потраченное на компилацию.
[User Picture Icon]
From:swizard
Date:Сентябрь, 21, 2009 14:26 (UTC)
(Link)
Да, я сегодня видел в рассылке твой анонс, уже переехал на новый релиз :)

Ничего страшного в этой ситуации нет, главное, чтоб такие места (особенно, в востребованных библиотеках) в итоге исправлялись. Я, по-возможности, всегда стараюсь помогать :)
From:(Anonymous)
Date:Март, 28, 2011 15:39 (UTC)

порно молоденьких анал

(Link)
Бери здесь... " лара крофт порно рисунки " http://www.google.com/url?sa=t&source=web&cd=201&ved=0CBUQFjAAOMgB&url=http%3A%2F%2F140.uz%2Fa9311%2F&CBUQFjAAOMgBDimarhishiono
(Оставить комментарий)
Top of Page Разработано LiveJournal.com