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

где управляемость - один из ключевых факторов

linux kernel - чистый C, супер энтерпрайз, больше любого джава ПО на порядки. полное опровержение зависимости управляемости от ЯП.

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

ты сам сколько компиляторов написал,

Много

и для каких языков?

Prolog (WAM и расширения), Scheme (в C, в x86, в JVM), Pascal и разновидности (в x86, в JVM, в Forth), ну и мелочь всякую.

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

Ты точно говоришь об Алгол60? O_o

Скорее об Алгол 68

Алгол60 и Алгол68 - это _очень_ разные языки. AFAIK, полной реализации Алгол 68 не существует в природе. И в Burroughs использовался Алгол 60.

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

linux kernel - чистый C, супер энтерпрайз, больше любого джава ПО на порядки

больше любого джава ПО на порядки

Куясе.

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

Вот зачем sin делать статик методом объекта math

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

Сложно было сделать нормальный рантайм в сегменте «энтерпрайза».

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

linux kernel - чистый C, супер энтерпрайз, больше любого джава ПО на порядки. полное опровержение зависимости управляемости от ЯП.

В чем противоречие-то? Си - хороший язык, обладающий достаточными средствами для построения абстракций. Что не так?

А вот подобных LISP-проектов что-то не видно. Интересно знать, почему бы это!

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

Prolog (WAM и расширения), Scheme (в C, в x86, в JVM), Pascal и разновидности (в x86, в JVM, в Forth), ну и мелочь всякую.

ок, а теперь рекомендую попробовать написать компилятор Algol'68 или С++, и убедиться что там человеко-лет просто дохрена надо потратить, чтобы хоть чуть-чуть нормально сделать

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

Prolog (WAM и расширения), Scheme (в C, в x86, в JVM), Pascal и разновидности (в x86, в JVM, в Forth), ну и мелочь всякую.

Пруфлинки или п*здобол.

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

Scheme (в C, в x86, в JVM)

Окей, тогда скажи, почему Stalin (агрессивно оптимизирующий компилятор Scheme) занимает 33KLOC на той же Scheme? Раз там ничего сложного нет? Наверное, автор Сталина дурачёк, да?

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

Интересно знать, почему бы это

Сам же сказал из-за «неуправляемой лисп лапши», обтекай.

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

Где пример создания Hello World странички с формой? Видимо a) Тот кто использует лисп считает это сверхлегким b) Тоткто использует Лисп считает это не нужным

Вот кстати да. Оба варианта в точку.

А примеры ПриветМиров как ни странно есть в библиотеках соотвествующей html, gui и.т.п. напрвлености. И неспособность их найти и увидеть что-то говорит об уровне вопрошающего.

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

Я просто хотел показать, что высокоуровневая альтернатива лиспу существовала.

Алгол68, наверное, мог быть такой альтернативой, но компиляторов достаточно широкого его подмножества просто не существовало. Так что не было тогда альтернативы Лиспу...

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

полной реализации Алгол 68 не существует в природе.

Scala :)

Хм, Scala как Algol-68 сегодняшнего дня... что-то в этом определенно есть.

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

Кстати, там такой феерический быдлокод попадается

(define (sx-first s)
 ;; note: This can't be eta-converted because of bugs running under IRIX 5.3.
 (sx-car s))

(define (sx-second s) (sx-car (sx-cdr s)))

(define (sx-third s) (sx-car (sx-cdr (sx-cdr s))))

(define (sx-fourth s) (sx-car (sx-cdr (sx-cdr (sx-cdr s)))))

(define (sx-fifth s) (sx-car (sx-cdr (sx-cdr (sx-cdr (sx-cdr s))))))

(define (sx-sixth s) (sx-car (sx-cdr (sx-cdr (sx-cdr (sx-cdr (sx-cdr s)))))))

(define (sx-seventh s)
 (sx-car (sx-cdr (sx-cdr (sx-cdr (sx-cdr (sx-cdr (sx-cdr s))))))))

(define (sx-eighth s)
 (sx-car (sx-cdr (sx-cdr (sx-cdr (sx-cdr (sx-cdr (sx-cdr (sx-cdr s)))))))))

(define (sx-ninth s)
 (sx-car
  (sx-cdr (sx-cdr (sx-cdr (sx-cdr (sx-cdr (sx-cdr (sx-cdr (sx-cdr s))))))))))

(define (sx-tenth s)
 (sx-car
  (sx-cdr
   (sx-cdr (sx-cdr (sx-cdr (sx-cdr (sx-cdr (sx-cdr (sx-cdr (sx-cdr s)))))))))))

(define (sx-eleventh s)
 (sx-car
  (sx-cdr
   (sx-cdr
    (sx-cdr
     (sx-cdr (sx-cdr (sx-cdr (sx-cdr (sx-cdr (sx-cdr (sx-cdr s))))))))))))
 
(define (sx-twelfth s)
 (sx-car
  (sx-cdr
   (sx-cdr
    (sx-cdr
     (sx-cdr
      (sx-cdr (sx-cdr (sx-cdr (sx-cdr (sx-cdr (sx-cdr (sx-cdr s)))))))))))))
anonymous
()
Ответ на: комментарий от tailgunner

Хм, Scala как Algol-68 сегодняшнего дня... что-то в этом определенно есть.

да, только причёсанный чтобы соответствовать текущему времени, а по фичам очень похоже, не удивлюсь если вдохновение черпали именно в 68-м

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

ок, а теперь рекомендую попробовать написать компилятор Algol'68 или С++, и убедиться что там человеко-лет просто дохрена надо потратить, чтобы хоть чуть-чуть нормально сделать

Проблема тут не в том, что «компиляторы это сложно», а в том, что C++ - сам по себе большой язык, стандарт за тысячу страниц перевалил, и это просто до хрена унылого, скучного boilerplate. Алгоритмически проще, чем всякая там бухгалтерия, но так же занудно и скучно.

И от того же примитивного С, компилятор которого пишется за пару дней на коленке, C++ отличается только фронтэндом.

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

list comprehensions гораздо удобнее и есть в Питоне

При этом он недокументирован и «удобнее» фактически только для одного случая, как сахар над однократным фильтром, мапом и продуктом.

На практике, если есть map и list comprehensions, то map не используется :)

Ты забыл слово «мной». Ну или просто заблуждаешься, предлагаю тебе, например, сделать греп по сырцам джанги.

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

Stalin довольно косолапо написан. Да и 33kloc это не «сложно». 1Сный CRUD часто размерами намного больше бывает.

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

На пруфлинках мое имя написано, а тут я аноном. Так что гуляй, лапоть.

Или спрашивай конкретно про детали реализации, расскажу.

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

А что не так с C? Это ж не говнолисп, тут макросами злоупотреблять не принято.

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

Ну почему. В этом есть зравый смысл.

Абрам Моисеевич, вы либо трусы наденьте, либо крестик снимите.

Я хочу освоить лисп лет так 10.

Некоторые женщины так же хотят похудеть. Ну или спортом заняться, в мужском варианте. Сидят себе и хотят. Лет по десять. Вместо того чтобы поднять жопу и донести её до спортзала.

Предсказываю. Вы ещё лет двадцать будете хотеть освоить лисп и так и не осилите это сделать. Такие дела.

И везде примеры решения квадратных уравнений. Где пример создания Hello World странички с формой?

Враги ополчились на тебя и скрывают важнейшую информацию. Но, друг мой, не отчаивайтесь. Здесь, на лоре, вы найдёте психиатрическую^W помощь. Я открою вам ПРАВДУ. Дело в том, вы лучше сядте сейчас, есть такая штукак как гугль. Запустите браузер (это такая синенькая иконка с буковкой e, если не найдёте спросите у администратора), и там в адресной строке вбейте http://google.com. Появится строка, в которую можно вбивать поисковые запросы. Наслаждайтесь.

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

И от того же примитивного С, компилятор которого пишется за пару дней на коленке

Так почему же команды GCC и LLVM потратили на это годы? Наверное, там одни идиоты сидят?

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

И вообще, Схемка - это ж говнолисп, там вообще ничего сложного нет и быть не может. Вот тут рассказывают, как за 90 минут компилятор говносхемки налабать:

http://www.iro.umontreal.ca/~boucherd/mslug/meetings/20041020/90-min-scc/90-m...

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

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

Так почему же команды GCC и LLVM потратили на это годы?

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

Наверное, там одни идиоты сидят?

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

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

На пруфлинках мое имя написано, а тут я аноном. Так что гуляй, лапоть.

Так и запишем, п*здобол.

Или спрашивай конкретно про детали реализации, расскажу.

Расскажи, как твой конпелятор Scheme по сравнению с теми же Stalin и Racket.

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

Кстати, кто усомнится в высокой концентрации идиотизма в LLVM, читайте InstCombine pass. Такого быдлокода даже у говнолисперов и 1Сников не найти!

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

Си - хороший язык, обладающий достаточными средствами для построения абстракций.

Завязывай с ацетоном! В цэ вообще нет абстракции, это язык для бородатых системщиков и обезьянок. Попробуй там создать реализацию связного списка, не зависящую от типа хранимых данных. Единственный способ сделать это - каст в void*. Что такое void*? Это тупо адрес ячейки памяти, прямо как в ассемблере. Т.е. для абстракций цэ предоставляет ровно те же средства, что и ассемблер.

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

если действительно интересно,

Теперь анонимус будет ещё десять лет собираться посмотреть Кложуру.

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

Расскажи, как твой конпелятор Scheme по сравнению с теми же Stalin и Racket.

Что «как»? Какие метрики?

Если спрашиваешь, какие оптимизации он делает, то Racket оптимизаций не делает вообще. Мой компилятор использует tracing jit, аналогичный по сути тому, что в v8. После разогрева по скорости не хуже Stalin, и сильно уделывает Bigloo.

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

Кстати, там такой феерический быдлокод попадается

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

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

Проблема тут не в том, что «компиляторы это сложно», а в том, что C++ - сам по себе большой язык

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

Алгоритмически проще, чем всякая там бухгалтерия

не надо так толсто троллить

И от того же примитивного С, компилятор которого пишется за пару дней на коленке

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

C++ отличается только фронтэндом.

хехе, во-первых не только, во-вторых frontend С++ - это тот ещё гемор, стандарт очень пухлый и далеко не всегда однозначный

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

Просто идеально вписывается в то, что я говорил. Ты сам себя макнул в добро, молодец.

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

На практике, если есть map и list comprehensions, то map не используется :)

Ты забыл слово «мной».

Не забыл.

Ну или просто заблуждаешься, предлагаю тебе, например, сделать греп по сырцам джанги.

Вопрос в том, что именно грепать.

$ fgrep -r 'map(' * | wc -l
85
$ grep -r '\= \[[a-z].* for .*' * | wc -l
217

Если у тебя есть другие регэкспы, welcome.

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

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

А в джаве изначально как было? Те же void*, только называется Object, и тот же каст.

для абстракций цэ предоставляет ровно те же средства, что и ассемблер

и в каком же ассемблере реализован стек с форматом записей активации и соглашением о вызове функций?

anonymous
()

Хороший тред, как будто /c/ трехлетней давности почитал, бугурт лиспоблфанбоев как всегда доставляет.

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

Хотя бы до сотни дотянули.

До ста не удобно. Лучше до 99.

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

да, именно в этом проблема

Нет. В этом проблема переусложненных древних говноязыков. Они не нужны. C++ не нужен. Algol'68 не нужен. Common Lisp не нужен. Scala не нужна.

Нужны простые, компактные, красивые языки. Такие, как Java, Python, ECMAScript.

пока не вляпываешься во вложенные функции, в которые параметры передаются по имени, и которые вызываются рекурсивно

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

не надо так толсто троллить

Я серьезно. TRS намного проще чем любая бухгалтерия.

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

Оптимизации тоже не сильно сложно. SSA transform - тупо, DCE, code motion - тупо.

Loop unrolling, loop strength reduction, loop invariant motion, loop fusion и все такое - тоже тупо и примитивно.

Register allocation тоже примитивно, тупых, но эффективных эвристик полно известно, особенно после SSE там все элементарно. Instruction selection тоже, тупое динамическое программирование, в бухгалтерии все намного сложнее.

И что сильно способствует простоте - все это очень хорошо разграничивается. Все эти преобразования - сами по себе, и друг другу не мешают. Сложность между ними не распределяется. Каждое преобразование обособлено и примитивно. Любая CRUD-система сложнее, потому как там компоненты взаимодействуют нетривиально, а в компиляторе тупо последовательная цепочка элементарных преобразований.

хехе, во-первых не только,

Только, только. В clang все в один и тот же тупейший llvm ir сливается, которому, в свою очередь, до фени все проблемы C++.

во-вторых frontend С++ - это тот ещё гемор,

Исключительно за счет объема. Да и не так все страшно. В clang есть немного моего кода, как раз преимущественно в парсере и кодогенераторе C++, ничего особо сложного я там не находил.

и далеко не всегда однозначный

В таких случаях обычно делают «как в gcc, инеипет».

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

Кстати, там такой феерический быдлокод попадается

https://github.com/scala/scala/tree/master/src/library/scala, файлы Function*, Tuple* и Product*.

А как ты предлагаешь делать, чтобы было не быдлкод? В SBCL, например (https://github.com/sbcl/sbcl/blob/master/src/compiler/srctran.lisp):

;;;; list hackery

;;; Translate CxR into CAR/CDR combos.
(defun source-transform-cxr (form)
  (if (/= (length form) 2)
      (values nil t)
      (let* ((name (car form))
             (string (symbol-name
                      (etypecase name
                        (symbol name)
                        (leaf (leaf-source-name name))))))
        (do ((i (- (length string) 2) (1- i))
             (res (cadr form)
                  `(,(ecase (char string i)
                       (#\A 'car)
                       (#\D 'cdr))
                    ,res)))
            ((zerop i) res)))))

;;; Make source transforms to turn CxR forms into combinations of CAR
;;; and CDR. ANSI specifies that everything up to 4 A/D operations is
;;; defined.
(/show0 "about to set CxR source transforms")
(loop for i of-type index from 2 upto 4 do
      ;; Iterate over BUF = all names CxR where x = an I-element
      ;; string of #\A or #\D characters.
      (let ((buf (make-string (+ 2 i))))
        (setf (aref buf 0) #\C
              (aref buf (1+ i)) #\R)
        (dotimes (j (ash 2 i))
          (declare (type index j))
          (dotimes (k i)
            (declare (type index k))
            (setf (aref buf (1+ k))
                  (if (logbitp k j) #\A #\D)))
          (setf (info :function :source-transform (intern buf))
                #'source-transform-cxr))))
(/show0 "done setting CxR source transforms")

ещё не известно, что хуже ;)

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

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

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

Твои регэкспы меня устраивают, хотя они забрали по мапам немного лишнего типа def test_simple_sitemap(self), def test_simple_custom_sitemap(self) и не забрали довольно много ls'ов, не говоря уже о generator expression'ах и dict comprehension'ах.

Однако тезис был однозначный.

то map не используется :)

Не забыл.

У меня для тебя очень плохие новоти.

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

Даже так:

$ find -name \*.py | xargs grep -r '[^a-ZA-Z_\.]map(' | wc -l
35
$ find -name \*.py | xargs grep -r '\= \[[a-z].* for .*' | wc -l
215
tailgunner ★★★★★
()
Ответ на: комментарий от anonymous

В этом проблема переусложненных древних говноязыков. Они не нужны. C++ не нужен. Algol'68 не нужен. Common Lisp не нужен. Scala не нужна.

а ты, прости, кто такой что ты тут раскомандовался?

PS и особенно угарно что ты Scala приписал к древним языкам

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

Однако тезис был однозначный.

то map не используется :)

(пожимая плечами) «map и LC используются в соотношении 1:6» меня вполне устроит.

Не забыл.

У меня для тебя очень плохие новоти.

Очень плохие? А меня они особо не расстраивают.

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

Нужны простые, компактные, красивые языки. Такие, как Java, Python, ECMAScript.

one language to satisfy all needs? ну-ну

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