LINUX.ORG.RU

Allegro CL 9.0 Free Express Edition стал доступен для загрузки

 ,


9

10

Для загрузки на попробовать стала доступна версия коммерческой реализации языка программирования Common Lisp — Allegro CL 9.0 Express Edition.

Доступны пакеты для:

  • Linux (glibc 2.11 или позже);
  • Mac OS X (10.6 или позже), включает поддержку Lion;
  • FreeBSD (8.2 или позже);
  • Windows (XP, Vista, 7, 8, Server).

Основные новшества и изменения в этой версии:

  • полная поддержка SMP;
  • 820 исправлений и улучшений с последнего релиза;
  • полностью обновлен AllegroServe — вебсервер Franz Inc., написанный на лиспе: автоматическая компрессия/декомпрессия файлов, поддержка chunking, новый выбор опций безопасности, включая TLS v1.0 (также известный как SSL v3.1) протокол для защищенных соединений;
  • улучшена интеграция с Java через модуль jLinker, улучшен протокол, стал проще API;
  • новая и значительно упрощенная инсталляция для графических утилит на Mac 64-бит.

>>> Загрузка

★★

Проверено: anonymous_incognito ()
Последнее исправление: tazhate (всего исправлений: 4)

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

Ну так да - я об этом и говорил, в общелиспе в обертку не заворачиваются, по-этому вместо нормального сообщения об ошибке выводится кривая простыня. В этом (корректном выводе сообщений об ошибках, удобстве отладки и т.п.) и состоит преимущество такого «заворачивания».

Ну это, удобно, конечно, но в (eval '(+ 1 «2») (scheme-report-environment 5)) весь eval подсвечивается.

Только степпер? А как же просто исполнение программы? Ну и ладно - покажите как это происходит в степпере лиспворкса. Пример я дал, пример простой, в чем проблема-то?

Показать что, картинку?

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

Показать что, картинку?

Да вы что угодно покажите, на чем будет видно, как там работает определение source location. Код я дал:

(defun yoba (err) err)
(yoba (+ 1 "2"))
Измените там его как надо, чтобы корректно отображалась source location (какие там у вас интроспекции надо и т.п.), а потом запустите на выполнение и покажите что получилось (можно без картинки, просто скажите какой соурс будет указан в ошибке, какое выражение выделено и т.п., я и так поверю).

Ну это, удобно, конечно, но в (eval '(+ 1 «2») (scheme-report-environment 5)) весь eval подсвечивается.

Так вы евалите список, у него source location пустой. Надо (eval #'(+ 1 2)).

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

Как ловко ушел от вопроса об отсутствии динамических областей видимости в схемке.

Во-первых, я не видел этого вопроса, во-вторых - если под динамическими областями видимости понимаются динамические переменные, то с ними в схемке все в порядке (параметры). Если понимается нечто другое - то что?

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

Вот мой вариант:

(defun symbolf (string &rest params)
  (intern (string-upcase (apply #'format nil string params))))


(defun gen-string (n bits)
  (with-output-to-string (s)
    (loop for i from (1- n) downto 0 collect
	 (if (logbitp i bits) 
	     (write-char #\d s)
	     (write-char #\a s)))))


(defun gen-code (n bits i code)
  (if (eq i n)
      code
      (gen-code n bits (1+ i)
		     (list (if (logbitp i bits) 'cdr 'car)
			   code))))

(defmacro gen-cxr (n)
  `(progn
     ,@(loop for bits from 0 to (1- (expt 2 n)) collect
	    `(defun ,(symbolf "c~ar" (gen-string n bits)) (value)
	       ,(gen-code n bits 0 'value)))))


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

Так что все, кто вякал про перл стайл, могут обломится.

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

Все эти оптимизации я писал своими руками. Там абсолютно ничего сложного нет. Тот же несчастный SSA transform - десять строк на Datalog-е. Loop analysis - еще 5 строк на нем же.

Очень интересно. Каким образом можно использовать Datalog при построении SSA? Нужно унифицировать какие-то уравнения, но я не могу сообразить. Расскажите или дайте ссылки на литературу; или на компилятор, в реализации которого используется пролог. В моём компиляторе это несчастное построение SSA занимает довольно много кода. Мне интересно, как такие вещи можно кратко и декларативно описывать.

Вот как у меня:

1) Вычисляю фронт доминирования для каждого блока, используя простой алгоритм из [1]. Это уже 10 строк.

(* Вычисление фронта доминирования для всех блоков - - - - - - - - - - - - -  *)
let calc_domf cfg =

  (* Для каждого блока с более чем одним предшественником *)
  for_each_block cfg (fun label block ->
    if List.length block.Block.pred > 1 then
      let idom = Block.get_idom block in

      (* Для каждого предшествующего блока проходим по графу наверх
         до IDOM и добавляем этот блок во фронт доминирования для
         всех встречных блоков *)
      let rec run_up runner =
        if runner != idom then
          (Block.add_domf runner block;
           run_up (Block.get_idom runner))

      in Block.for_each_pred block run_up)

2) Вставляю PHI в нужных местах. Эта куча низкоуровневого говнокода по объёму не превышает псевдокод из [2].

(* Вставка PHI функций в каждом блоке - - - - - - - - - - - - - - - - - - - - *)
let insert_phi ctx cfg =

  (* Для каждой переменной *)
  ctx |> Hashtbl.iter (fun var info ->

    (* Очередь блоков для предстоящей обработки *)
    let worklist = Queue.create () in

    (* Множество уже обработанных блоков *)
    let processed = ref Set.empty in

    (* Добавляем в очередь каждый блок, в котором переменная могла измениться *)
    let added = ref info.Ctx.def_blocks in
    !added |> Set.iter (fun def -> Queue.add def worklist);

    (* До тех пор, пока очередь не пуста *)
    while not (Queue.is_empty worklist) do
      let block = Function.find_block cfg (Queue.take worklist) in

      (* Для каждого необработанного блока в DOMF этого блока *)
      Block.for_each_domf block (fun b ->
        let label = b.Block.name in
        if not (Set.mem label !processed) then

          (* Добавляем f-функцию для переменной *)
          (Block.add_phi b (var, None);
           processed := Set.add label !processed;

           (* Добавляем блок в очередь, если он не был просмотрен ранее *)
           if not (Set.mem label !added) then
             (Queue.add label worklist;
              added := Set.add label !added)))
    done)

3) Добавляю индексы к переменным в блоках. Это ещё 50 строк.

Можете показать, как у вас SSA-transform на прологе выглядит?

[1] Keith D. Cooper, Timothy J. Harvey, and Ken Kennedy, “A Simple, Fast Dominance Algorithm”

[2] Cytron, Ferrante, Rosen, Wegman and Zadeck, “Efficiently Computing Static Single Assignment Form and the Control Dependence Graph”, ACM Transactions on Programming Languages and Systems 13 (4): 451–490, October 1991.

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

У меня тоже тупые функции и примитивная макра. Проще чем у тебя собственнг, так как декларативно и с патернами. А твое решение - тот же обфусцированный перл что и в sbcl, так что поздравляю с эпическим отсосом.

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

обфусцированный перл что и в sbcl

он был в схеме из-за гигиены. В CL все можно сделать в любои стиле

(defun gen (depth name)
  (labels
      ((add-levels (acc n)
                    (when (> n 1)
                      (let ((nlvl (mapcan (lambda (x) (copy-list `((car ,x) (cdr ,x)))) acc)))
                        (nconc (add-levels nlvl (1- n)) nlvl))))
       (gen-char-seq (str lst)
                     (if (consp lst)
                         (gen-char-seq
                          (concatenate 'string str (if (eql (car lst) 'car) "A" "D"))
                          (car (cdr lst)))
                       str)))
    (mapcar
     (lambda (lst) (list (intern (concatenate 'string "C" (gen-char-seq "" lst) "R")) lst))
     (add-levels (copy-list `((car ,name) (cdr ,name))) depth))))

(defmacro gen-cxr (depth)
  `(progn ,@(mapcar (lambda (x) `(defun ,(car x) (val) ,(car (cdr x)))) (gen depth 'val))))

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

Гигиена в схеме обходится применением одной функции, дятел, я уже устал это повторять. Там большая часть кода - генерация списка всех комбинаций car/cdr.

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

я уже устал это повторять

значит пора переходить к аргументации своих утверждений.

Там большая часть кода

define-syntax, define-marco и т.д.

генерация списка всех комбинаций car/cdr

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

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

Да вы что угодно покажите, на чем будет видно, как там работает определение source location. Код я дал:

https://picasaweb.google.com/lh/photo/snk65Gv5N6jeTM2Mfce4f_6i8a9ulCuTztlddz1...

Так вы евалите список, у него source location пустой. Надо (eval #'(+ 1 2)).

Не подсвечивает. Короче, злобный обман это всё...

mv ★★★★★
()

В этом вся суть лиспа.

На пятнадцати страницах обсасывать S-нотацию, M-нотацию, car/cdr, гигиену, define-syntax, define-marco, intern, bind, SSA-transform, CPS-transform,эквивалентность CPS и SSA, цитирование, квазицитирование, macroexpand, macrolet, анафорические макросы, пандорический захват, gensym, constant folding/propagation, cross-module-inlining, lambda-lifting, expression trees. Спорить, чья yoba лучше.

В то время как весь остальной мир просто занимается делом.

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

В то время как весь остальной мир просто занимается делом.

В то время как весь остальной мир просто как обычно быдлокодит.

== другой аноним, не тот грамотный схемщик, который объяснял зачем нужна гигиена ==

P.S. кстати, схемщики почему-то гораздо более вежливы, чем коммон-лисперы. не знаю с чем это связано. Наверное, кстати, с очевидной развязностью CL

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

В то время как весь остальной мир просто как обычно быдлокодит.

Разумеется. Высокое искусство — это только анафорические лямбды, пандорические захваты и зигохистоморфные препроморфизмы.

Куда нам до них с нашими операционными системами, сетевыми стеками, СУБД, веб-серверами, серверами приложений, корпоративными информационными системами, почтовыми инфраструктурами, серверами каталогов, графическими интерфейсами, офисными пакетами, играми, CAD'ами, CASE'fми, средами разработки, системами обработки аудио, системами обработки видео, системами 3D-моделирования и так далее. Ведь это всё — быдлокод и ненужно!

// c: Loreous Louis

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

зачем нужна гигиена

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

развязностью CL

объективно - там всё весьма сбалансировано. на фоне любого ЯП выглядит достойно.

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

объективно - там всё весьма сбалансировано

1- - это надо же ведь додуматься так назвать dec!!!

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

нашими операционными системами

linux, apple и M$ - пару штук.

СУБД

тоже несколько штук промышленного качества.

веб-серверами

почти на любом ЯП есть ( есть несколько на CL).

серверами приложений

базворд.

корпоративными информационными системами

базворд.

почтовыми инфраструктурами

берём почтовые сервера - тоже только несколько популярных используют.

серверами каталогов

базворд.

графическими интерфейсами

несколько качественных тулкитов, либо собственный для ос.

средами разработки

emacs

офисными пакетами, CAD, системами обработки аудио, системами обработки видео, системами 3D-моделирования

и этого тоже не так много.

Ведь это всё

С чего ты решил, что качественного ПО много?

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

1- - это надо же ведь додуматься так назвать dec

это не декремент, видишь правильно назвали.

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

1- - это надо же ведь додуматься так назвать dec

Напомнило известный еврейский анекдот - «Изя всё». :) (просьба не обижаться - не вкладываю никакой оскорбительный контекст)

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

linux, apple и M$ - пару штук.

Linux, Windows, Mac OS X, Solaris, HP/UX, QNX, FreeBSD, OpenBSD, NetBSD, ReactOS, EROS, OS/2, OS/360, OS/400, AIX, IRIX, VxWorks, Android, Symbian, Bada, eCos и десятки embedded. Ни одна на них не написана на лиспе — слив засчитан.

СУБД... тоже несколько штук промышленного качества.

Oracle, IBM DB2, Sybase, MS SQL Server, Informix, MySQL, PostgreSQL, SQLite — реляционные СУБД разных масштабов, промышленного качества. Ни одна из них не написана на лиспе — слив засчитан.
HBase, Cassandra, CouchDB, MongoDB, BerkeleyDB, BigTable, Redis — нереляционные СУБД разных масштабов, промышленного качества. Ни одна из них не написана на лиспе — слив засчитан.

веб-серверы... почти на любом ЯП есть ( есть несколько на CL).

Только все они являются proof-of-concept. И по производительности, надёжности и функциональности сливают Apache, nginx и lighttpd. Слив засчитан.

берём почтовые сервера - тоже только несколько популярных используют.

MS Exchange, IBM/Lotus Domino, Novell, Postfix, Exim, Sendmail, Dovecot, Courier, Cyrus — почтовые системы разных масштабов, промышленного качества. Ни одна из них не написана на лиспе — слив засчитан.

несколько качественных тулкитов, либо собственный для ос.

Windows, Carbon/Cocoa, KDE/LXDE/Qt, GNOME/XFCE/GTK, FLTK, wxWidgets — ничто из этого не написано на лиспе. Слив засчитан.

базворд.
базворд.
базворд.
базворд.

А теперь пойди в aerospace/логистику/банкинг/трейдинг и заяви им, что транзакции, компонентные архитектуры, message queueing, web services, LDAP, OLAP — это всё баззворды. Куда там до анафорических лямбд! Анафорические лямбды — это дооооо. Только вот почему-то не они обрабатывают триллионы транзакций в сутки, а те самые баззворды.

Может, надо просто признать, что к промышленной разработке ПО ты не имеешь никакого отношения, и поэтому всё вышеперечисленное для тебя — такие же непонятные слова, как для дикаря мумбо-юмбо?

офисными пакетами, CAD, системами обработки аудио, системами обработки видео, системами 3D-моделирования... и этого тоже не так много.

MS Office, OpenOffice/LibreOffice, AudoCAD, ArchiCAD, Eagle, Orcad (десятки их), Sony SoundForge, Steinberg Nuendo, Steinberg Cubase (плюс тысячи VST-плагинов), Adobe Premiere, Adobe Photoshop, Adobe InDesign, Adobe Illustrator, GIMP, Inkscape, 3D Max, Maya, Blender — ничего из этого не написано на лиспе. Впрочем, что это я? Ведь слив уже и так засчитан.

С чего ты решил, что качественного ПО много?

А я этого и не утверждал. Но то, что есть — юзабельно, отвечает требованиям и выполняет свои функции. Хочешь показать качественное ПО на лиспе? Так покажи!

Но ведь его нет.

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

Умничка какой! Зашел на лор, увидел новость про лисп, написал «не нужен», опроверг наивного, заносчивого лиспера-анонима и с чувством выполненного долга удалился. :)

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

слив засчитан
...
слив засчитан

Ну, теперь посчитай долю C/C++ из перечисленного. Будет тотальная доминация C/C++. Да, ты открыл всем глаза, найдена вершина совершенства.

промышленной разработке ПО

базворд

что транзакции, компонентные архитектуры, message queueing, web services, LDAP, OLAP — это всё баззворды

провалы в памяти? в предыдущем посте были другие базворды.

А теперь пойди в aerospace/логистику/банкинг/трейдинг и заяви им, что транзакции, компонентные архитектуры, message queueing, web services, LDAP, OLAP — это всё баззворды.

Уверен, там маркетинговые отделы знают под какими слоганами продвигать свои продукты.

Но то, что есть — юзабельно, отвечает требованиям и выполняет свои функции

640Kb хватит всем.

Но ведь его нет

Аудит всего и вся делал? Написано на языке N (юзает N) в основном продажи не сделает, так что все эти «на N ничего нет» - демагогия. Мог бы ради приличия новость прочитать, которую комментируешь. Покажи мне компилятор языка с динамической системой типов такого же уровня. Или не нужно? Тогда зачем facebook php транслятор в C написала или twitter пилит производительность руби, частично сваливая на джаву? Хотя куда им до настоящих промышленных компонентных апликэйшн серверов, верно?

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

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

А когда их афера раскроется, и банду четырёх отправят за решётку, индустрия снова вернется к Common Lisp.

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

Linux, Windows, Mac OS X, Solaris, HP/UX, QNX, FreeBSD, OpenBSD, NetBSD, ReactOS, EROS, OS/2, OS/360, OS/400, AIX, IRIX, VxWorks, Android, Symbian, Bada, eCos и десятки embedded.

Большинство из этого списка сдохло или присмерти или было мертворождённым.

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

Покажи мне компилятор языка с динамической системой типов такого же уровня.

Но ведь это не то, что делает язык пригодным для промышленной разработки. Ах, забыл, ведь это же базворд! Главное, чтобы анафорические лямбды были!

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

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

провалы в памяти? в предыдущем посте были другие базворды.

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

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

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

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

это реализация базвордов.

Но ведь ты абсолютно некомпетентен в этой сфере, поэтому ты считаешь, что это термины из разных областей.

область одна - маркетинг.

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

Но ведь это не то, что делает язык пригодным для промышленной разработки

так и запишем: качество реализации ЯП для промышленной разработки не важно.

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

Ну разумеется, всё это маркетинг и базворды. Потому что не на лишпе и без анафорических макросов, ага.

Только вот тогда непонятно, как ездят поезда и летают самолёты, как осуществляется торговля на бирже и банковская деятельность, каким образом миллиарды людей совершают триллионы телефонных звонков в сутки. Ведь логистики/телекомщики/банкиры полные идиоты, понаставили себе базвордов вместо Б-жественного Лишпа, и у них ничего не должно работать!

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

так и запишем: качество реализации ЯП для промышленной разработки не важно.

Но ведь это ложь. «Реализация динамической системы типов» ортогональна «качеству языка». Поясняю:

Язык может не обладать динамической системой и при этом быть хорошим, как, например, Scala.
Язык может не обладать динамической системой и при этом быть плохим, как, например, Haskell.
Язык может обладать динамической системой и при этом быть хорошим, как, например, Python.
Язык может обладать динамической системой и при этом быть говном, как, например, LISP.

anonymous
()

Опа, нихуя! Новость про SBCL 1.1.1 выпилили.

Ну чо, посоны, тогда продолжаем здесь.

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

как ездят поезда и летают самолёты, как осуществляется торговля на бирже

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

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

Таки расскажите мне о преимуществах питона над CL. Я весь в предкушении.

Инфраструктура, фреймворки и батарейки. А как язык CL конечно круче в тысячу раз.

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

Да, но мёртвые OS «не на Лиспе» вполне можно сравнивать с дохлыми лисп-машинами.

И в результате сравнения получить что именно? Какой там был оригинальный тезис - «на Лиспе не пишут ОС» или «на Лиспе не пишут ОС для машин общего назначения» или «на Лиспе не написано ни одной живой ОС»?

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

Инфраструктура, фреймворки

Для питона2, который устарел и или для питона три, на который всё это ещё очень не скоро портируют.

как язык CL конечно круче в тысячу раз.

Согласен.

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

И в результате сравнения получить что именно?

Некорректность исходного обобщения от анонимуса.

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

как язык CL конечно круче в тысячу раз.

Согласен.

Надо было соглашаться на миллион - тоже чушь, но хотя бы с намеком на самоиронию.

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

Если ты скажешь мне свой домашний адрес, я вышлю тебе словарь Даля и даже сделаю закладку на статье «Гипербола».

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

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

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