LINUX.ORG.RU

Вышел Qi II

 , ,


0

0

Qi - функциональный язык программирования, реализованный поверх Common Lisp. Имеет опциональную статическую систему типов, основанную на секвенциальном исчислении, и общее направление на логическое программирование. Qi II имеет полную обратную совместимость с Qi

Нововведения Qi II:

  • Новая реализация - Qi II был переписан с нуля
  • Новая лицензия - GPL заменена двойной лицензией, позволяющей как Open Source, так и закрытое коммерческое использование
  • Типобезопасное ленивое вычисление по требованию
  • Новый компилятор с 4 уровнями оптимизации
  • Улучшена интеграция с CL
  • Работает под LispWorks
  • Некоторые конструкции в Qi II сделаны полиадическими
  • Улучшена связь с Prolog
  • Замыкания по правилам (rule closures)
  • Улучшена обработка зависимых типов

Обсуждение есть на LtU: http://lambda-the-ultimate.org/node/3110

>>> Подробности

★★★★★

Проверено: Shaman007 ()

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

Замыкания правил

В отличие от Qi I, Qi II позволяет внедрить в функции последовательные правила, вычисляя их в замыканиях. Эти замыкания правил проверяются по типу и проницаемы, чтобы их переменные можно было лексически связать снаружи области видимости самого правила.  Эти инструменты позволяют ученику вычислительной логики без усилий закодировать сложные логические системы всех описаний.
 Таким образом, правило

let PTerm/X (replace-by X Term P)
PTerm/X, (all X P) >> Q;
____________________
(all X P) >> Q;


позволяет универсально измеримые новые предположения  излагать до самых чёртиков. Это правило можно встроить в новую Qi II функцию, называемую всё-по-*ю (all-left), которая делает точно эту работу. Это правило превращается в замыкание с помощью функции правила, которая затем применяется к задаче (списку последовательностей).

(define all-left
{term --> [sequent] --> [sequent]}
Term S -> ((rule let PTerm/X (replace-by X Term P)
PTerm/X, (all X P) >> Q;
____________________
(all X P) >> Q;) S))

FPQi посвящяет сотню страниц исследованию этой мощной конструкции.

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

>rule closures > Ну это простые смертные считают, что "замыкания правил". А Вы-таки новость прочитайте - цитаточка-то оттуда.

ну тогда "кложуры рулят" Ъ !!!111 :))

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

> Совмещать лисп и пролог - имхо извращение.

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

Попробуй написать, например, алгоритм Хинди-Милнера на чистом Лиспе, а потом - на Прологе (или любом из прологов-поверх-лиспа), и сравни, что проще.

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

> Оно умеет компилироваться в бинарный код?

Лопух? Это Лисп, стало быть, конечно же, умеет.

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

> Это очередной 100%-pure academic language, не предназначенный для практических задач. Как, собственно, и сами LISP и Prolog.

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

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

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

> Эхма, так и не понял прелестей Lisp... Похоже, плохо смотрел или не было подходящих задач.

Плохо смотришь и плохо думаешь. Напряги мозг и пойми, для чего нужно разрабатывать domain specific languages.

Прочитай вот это: http://www.defmacro.org/ramblings/lisp.html

> Вот скажите темному, для какого рода задач лучше всего подходит Lisp?

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

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

> Среди минусов - то, что необходимо реализовать и отладить собственно язык плюс опциональную обвязку из дебаггера, профайлера, системы юнит-тестов, системы кододокументирования и прочих компонентов development environment.

Ни фига ты не понял. Эти минусы присутствуют только в "традиционном" подходе к реализации проблемно-ориентированных языков (flex+bison в зубы, и пилить). А у Лиспа этих как раз проблем и нет - потому что при реализации языка поверх Лиспа ты используешь все существующие для Лиспа тулзы - и профайлеры, и дебаггеры, и эффективный компилятор, и элементы других, уже реализованных над Лиспом языков, и много всего прочего.

> то Лисп оправдан для тех задач, где будет выгоднее вложиться в разработку DSL, нежели решать их при помощи языков общего назначения. Это класс очень крупных, масштабных задач.

Разработка типичного DSL на Лиспе - от пяти до пятидесяти часов занимает. Не такие уж и сверхмасштабные задачи.

> Недавний прецедент с примитивным вычислительным бенчмаркингом LISP vs. C наглядно это продемонстрировал.

ПНХ, ничтожество.

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

> А зачем нужен этот полиадический язык программирования? Чем Qi II лучше Джавы?

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

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

Столько лет уж троллишь, а не поумнел ни на копейку. Дебилом был, невеждой сдохнешь.

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

>их адепты пишут "замыкания по правилам" вместо "замыкания правил"

во-первых, я не адепт, а культист. а во-вторых - все ошибаются, что поделаешь

jtootf ★★★★★
() автор топика
Ответ на: комментарий от Sun-ch

>>Единственное, для чего предназначен Лисп - написание DSL (Domain-Specific Languages).

>А что дядя скажет, про "адаптивное обучение роботов", или управление >беспилотными вертолетами в любых погодных условиях, или про >обработку сигналов с радиолокаторов в реальном времени?


Ну ладно с адаптивным обучением роботов...

Но применение для управления вертолётами как-то смущает. Инфа есть?
А про обработку сигналов с радаров в реальном времени... На лиспе? Оптимальные фильтры или корреляционные функции считать? Как-то сомненние берет. Хотелось бы про такое чудо почитать, если не совсекретно.

mst_72
()

Во флейме присутствует VSL, или мне показалось? :) "ничтожество", "убожество", "ламеришко" etc %)

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

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

anonymous
()

у кого длиннее язык, я его начал потиху осваивать. Чувствую - весчь нужная ;-)

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

Думаю, многие тут ещё с первым Qi поиграться успели (как минимум мало кто из лисперов мог его упустить).

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

Умеет ли компилироваться в нативный код? Естественно умеет. Попробуйте на Linux на SBCL. SBCL иногда спускает штаны с Java:

http://shootout.alioth.debian.org/u32/lisp.php

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

(ну Clojure правда тоже делает это на JVM).

Проблема с CL не скорость а скорее потоки. И мультикоры.

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