PDA

Просмотр полной версии : LISP на ZX.



falanger
15.05.2007, 22:15
Мне вот на древней 5.25 дискет попался файл под названием LISP с ещё двумя файлами. Это то о чём я думаю?
Ктонибуть с ним работали какиенибуть отзывы есть?
Хотябы ЭС ктонибуть на этом Лиспе не пытался соорудить демонстративную?
Вот такие вот вопросы. :)

alone
15.05.2007, 22:21
Хотябы ЭС ктонибуть на этом Лиспе не пытался соорудить демонстративную?
Лисп - язык экспериментальный и не годится для программирования даже простых программ, не то что ИИ.

falanger
15.05.2007, 22:36
Лисп - язык экспериментальный и не годится для программирования даже простых программ, не то что ИИ.

А как тогда ОС emacs на Лиспе написана.... Есть даже шутка: Емакс - хорошая ос, написанная на лиспе. Ей только текстового редактора не хватает.

andrews
15.05.2007, 22:39
Да ну не смешите людей! ЛИСП это классика ИИ! Американская причем.
Литературы и реализаций горы.
На русском в 1990 был издан двухтомник "Мир ЛИСПА" перевод с финского

goodboy
15.05.2007, 22:39
Лисп - язык экспериментальный и не годится для программирования даже простых программ, не то что ИИ.

а как же игрушка abuse ???

falanger
15.05.2007, 22:52
Ссылку на описание реализации LISP для ZX есть? А то хочется же понять чмо мне в руки попалои на что оно способно... :)

andrews
15.05.2007, 23:24
LISTING THROUGH
If you're feeling LISPless, not to worry - the word is that LISP, the list-processing language frowned upon by the Artificial Intelligence fraternity, has been implemented on the QL. And who should take on this great task? None other than the programmer who developed it for the BBC Micro.
http://www.users.globalnet.co.uk/~jg27paw4/yr09/yr09_04.htm#QL

falanger
15.05.2007, 23:42
LISTING THROUGH
If you're feeling LISPless, not to worry - the word is that LISP, the list-processing language frowned upon by the Artificial Intelligence fraternity, has been implemented on the QL. And who should take on this great task? None other than the programmer who developed it for the BBC Micro.
http://www.users.globalnet.co.uk/~jg27paw4/yr09/yr09_04.htm#QL

Не совсем в тему. там говорится про Лисп для QL-а. А я вот думаю что у меня Лисп дляобычного ZX48-128.

maximk
16.05.2007, 13:46
У меня давным давно был лисп на кассете и работал на 48к. Но так как язык я не знал вообще, а описания внятного не было, то дело ограничилось hello world'ом из какой-то статьи какого-то журнала.

Но факт, оно было и работало :)

alone
16.05.2007, 14:13
А как тогда ОС emacs на Лиспе написана.... Есть даже шутка: Емакс - хорошая ос, написанная на лиспе. Ей только текстового редактора не хватает.
Ты что-то путаешь. Emacs - это не ОС, а именно текстовый редактор. И написан он на Си. А Лисп там только в качестве скрипта.


а как же игрушка abuse ???
Там тоже на Лиспе только скрипты. Сама игра на Си.


Да ну не смешите людей! ЛИСП это классика ИИ! Американская причем.
Литературы и реализаций горы.
Пример ИИ на Лиспе в студию - с доказательством, что решение на Лиспе более простое, чем решение на Си.

BlackWolf
16.05.2007, 16:26
Пример ИИ на Лиспе в студию - с доказательством, что решение на Лиспе более простое, чем решение на Си.

Насколько я понимаю, то утверждается что ЛИСП неплохо себя ведет в процессе управления хранилищами данных.

andrews
16.05.2007, 20:19
Я с ним в 1999 году ковырялся в связи с тем, что Олдман прислал мне это самое нечто для Спектрума, о котором Вы спрашивали и в связи с тем, что писал методичку по курсу ИИ для питерского Кулька.
А по поводу происхождения - это самое вероятное, что тот кто портировал с BBC на Sinclair QL сделал то же самое и для ZX Spectrum.
К сожалению описания (электронной версии) этого релиза у меня нет. Пути решения проблемы три (как в сказках):
1) забейте на эту версию, хотя если раскопаете памятник Вам обеспечен;
2) найдите исходники ( только не лисп на лиспе ) и портируйте заново...что сделал один, почему бы не повторить другому;
3) чтоб наиграться возьмите доступные писишные лиспы с доками типа xlisp http://www.mv.com/ipusers/xlisper/
Вот еще классный ресурс
http://bookview.nm.ru/xlisp.html

Кое-что из книжки П.Уинстон "ИИ" , М. Мир 1980
Данные и программы в ЛИСПе состоят из s-выражений.
(PLUS 3.14 2.71)
5.85
Примеры того же рода ( и уровня сложности):
(MAX 2 4 3)
4
(MIN 2 4 3)
2
(TIMES 9 3)
27
(SQRT 4)
2
И SQRT, и 4 суть атомы, а (SQRT 4) - это список. И атомы, и списки суть s-выражения.
Нажатие на Enter после правой закрывающей скобки, заставляет интерпретатор лиспа вычислять s-выражение. Результат м.б. числом или T (true) или NIL. s-выражения м.б. вложенными и очень сложными. Как и в большинстве других языков есть встроенные функции и программист может определять через них свои собственные.
Функции у которых значение м.б. T или NIL называются предикатами.
Прерывать вычисление (оценивание s-выражения пользователь может с помощью ' )
CAR - возвращает первый элемент списка:
(CAR '(A B C))
A
CDR - возвращает то, что остается после удаления первого элемента списка:
(CDR '( A B C))
(B C)

falanger
17.05.2007, 01:02
При попытке запустиь этот Липс он что-то написал и вывалился в Бейсикчерез "черный квадрат малевича." Битая версия?

Adramelek
09.11.2007, 01:11
Ты что-то путаешь. Emacs - это не ОС, а именно текстовый редактор. И написан он на Си. А Лисп там только в качестве скрипта.


Там тоже на Лиспе только скрипты. Сама игра на Си.Если хочется игр на Лиспе, то я встречал одну:
http://common-lisp.net/project/lifp/sewers.htm
Там на том сайте ещё должны быть, наверное.

drbars
13.01.2008, 17:49
Может, кому будет интересно. Видел в сети сайт-портал написанный на лиспе :)
http://lidia.iis.nsk.su/cgi-bin/anime/forum/index.lsp?r=272&n=0

Sinus
14.01.2008, 13:37
тем кто до сих пор верит что лисп - несерьёзный язык:
http://en.wikipedia.org/wiki/Lisp_machine

Sherlock
06.10.2017, 13:18
О LISP

Легендарная компания Naugtydog (https://www.naughtydog.com/) Использовала LISP для создания серии игр Jack & Daxter (https://en.wikipedia.org/wiki/Jak_and_Daxter)

На сколько я помню, они использовали AllegroCL (https://franz.com/products/allegrocl/) на котором был написан GOAL (https://en.wikipedia.org/wiki/Game_Oriented_Assembly_Lisp) который тоже является диалектом LISP. В интернете очень много информации по этой теме.

Более того, последния серия игр этой же компании Uncharted (https://en.wikipedia.org/wiki/Uncharted) также написана с использованием скрипт языка с как минимум LISP образным синтаксисом.

LISP использовался в играх не только этой компанией, были и другие практические применения LISP, взять хотя бы Autocad.

Но если говорить о Naugtydog... Могли бы они сделать эти игры без LISP? Да, могли. Но я привожу их как блестящий пример успешного исользования этого языка в современных играх. Дабы опровергнуть миф о том, что LISP: старый, медленный, ни кем не используется, имеет ограниченные области применения.

Язык LISP, а также его младший брат Scheme, языки вериколепные и прекрасно подходят для любых задач, и даже написания операционных систем. Производительность прграмм написанных на компиляторе LISP не многим уступает (а в некоторых случаях и превосходит) программам написанным на C,C++.

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

Я люблю LSIP за:

- S-Expressions Великолепный простой синтаксис, в котором описание данных эквивалентно кодированияю программ, и то и другое представленно в виде s-expression. По сути исходный код он и есть структура данных. Что позволяет этому языку иметь практически безграничную систему макросов. Компилятор LISP, в момент компиляции кода, исполняет некоторые выражения. А именно делает макроопределения, и их вызов. Результатом вызова макроопределения является новое s-expression выражение, в котором возможно имеются другие макровызовы. Компилятор продолжает выполнять все эти вызовы пока в выражении не исчезнут макровызовы. Это выражение и будет компилированно в машинный код.

- Continuations Это возможность функции прервать свое выполнение а затем продолжить

- Proper tail recursion Это когда рекурсивная функция не требует нового фрагмента в стеке.

Следующий лист хотя и присутсвует во многих языках, в LISP он имеет очень качественную реализацию, не хуже а во многих случаях лучше чем у конкурента.

- First class functions
- CLOS Система обьектноориентированного программирования
- Exceptions Система исключительных ситуаций

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

Если вы хотите бегло ознакомиться с ключевыми преимуществами LISP воспользуйтесь книжкой (буклетом) Land of Lisp: Learn to Program in Lisp, One Game at a Time!

Если вы хотите изучить LISP для его использования рекомендую (было издание на русском) ANSI Common LISP

Есть еще Practical Common LISP (http://lisper.ru/pcl/)

goodboy
06.10.2017, 13:27
ещё lisp часто упоминают всвязи с игрой Abuse
"Abuse (1995) считалась довольно популярной 2d стрелялкой для своего времени. Но, что особенно интересно, на деле это была не просто игра, а настоящий конструктор. Конечно же, там был редактор уровней, но не только он один. Джонатан Кларк, разрабочик Abuse, сильно увлекался языком Лисп, и в результате вся высокоуровневая логика игры была написана на этом языке (диалект Common Lisp). Более того, исходный Лисп-код распространялся вместе с Abuse и допускалась возможность модификации игры пользователем, благодаря встроенному интерпретатору. Надо сказать, код на Лиспе смотрится довольно органично, особенно в описании поведения врагов, чего, собственно, и стоило ожидать от классического языка для задач ИИ. Запустив Abuse с ключем "-lsf" и именем пользовательского скрипта, получаем уже свою собственную игру. К сожалению, мне неизвестно о существовании производных от Abuse разработок, кроме, собственно, авторского примера Pong в дистрибутиве. Кстати, игровой движок Abuse был написан всего за 4 месяца."

ну и (как было сказано выше)
" Компания Naughty Dog создавала достаточно успешные игры для PlayStation с использованием Лисп-подобного языка, такие как Crash Bandicoot (1996) и Jak and Daxter: The Precursor Legacy (2001).

Shiny
06.10.2017, 16:15
Вот это некрофилия:v2_dizzy_facepalm:

Sherlock
06.10.2017, 17:44
Интересная страничка с анимациями Serious Software SpecLisp for Sinclair ZX Spectrum (http://blog.funcall.org/lisp/2015/10/30/zx-spectrum-lisp/)
Судя по всему имплементация LISP на ZX Spectrum уже существовала в 1983 году. Мы еще в школе учились, и увидели первый калькулятор.

Sherlock
08.10.2017, 12:44
Наверное проще всего сегодня было бы сделать кросскомпилятор с PC версии LISP на Z80 на ZX Spectrum. Для этого достаточно сделать s-expression ассембрер на самом LIPS, получившиеся файлы компилировать кроссасемблером на Z80, и через соединение сразу запускать на спектруме.
Другой вариант использовать c-interface и С-кроскомпилятор на Z80.
Третий вариант использовать Scheme компилятор в C код (Chicken) или промежуточный код компилятора С (Gambit)

В любойм из этих случаев среда разработки могла бы выглядить как LambdaNative (http://www.lambdanative.org/) хотя и работала бы иначе.

LambdaNative (http://www.lambdanative.org/) это кросплатформенное средство разработки на языке Scheme (диалект LISP). Оно позволяет создавать ПО на iOS и Android. Построено на базе Gambit Scheme.

Shiny
08.10.2017, 14:31
Интересно, фрактал Мандельброта написан на LISP. А Спектрум осилит?

Sherlock
08.10.2017, 14:48
Интересно, фрактал Мандельброта написан на LISP. А Спектрум осилит?

Все зависит от имплементации LISP. Тут существуют варианты:

Интерпретатор скорость будет не выше чем у BASIC. Хотя может быть и выше... по своему внутреннему устройству LIPS язык более низкого уровня, с более простым синтаксисом, а как результат более быстрым парсером и интерпретатором.

Компилятор в байткод Тогда скорость будет немного медленней чем у Forth. А на Forth было написано не мало игрушек на: MSX, Специалист, и т.д.

Компилятор в машинный код Очевидно скорость будет чуть ниже чем С. Но на самом деле многое зависит от конкретной реализации компилятора.

И последнее. Программа на LIPS может включать куски машинного кода: бинарного кода, исходного ASM кода, исходного С-кода. Тут не ограниченное число вариантов того как кодировать критически важные части программы.

Shiny
08.10.2017, 16:48
любой способ.

Sherlock
08.10.2017, 17:02
любой способ.

При неопределенном варианте LISP, будет неопределенное время вычисления фрактала. Есл убрать в сторону разговор о конкретной версии интерпретатора и компилятора. То проще воспринимать LISP как другой С, или Assembler. Как напишешь так и будет. Z80 в принципе не очень эффективен для языков уровня выше ассемблера и форта. А LISP чуть выше форта, примерно на уровне С. Но никак не на уровне ZX Basic. Первый собранный мной компьютер был Специалист, а первая программа, генератор фракталов на BASIC. Нет препядствий для реализации на LISP.

msm
08.10.2017, 18:03
На самом деле именно Lisp - как раз очень распространенный язык, имеющий свою нишу.

На рынке достаточное количество программистов, имеющих коммерческий опыт CommonLisp. Хоть и сам не занимался, но собеседовал людей, которые на нем реальные корпоративные системы делали. И довелось работать с теми, у кого был коммерческий опыт Lisp. Кроме CommonLisp, сейчас весьма распространен язык clojure - в принципе его можно рассматривать как Lisp диалект. Если рассматривать гибкость языка - реально превосходный язык. Недостатки конечно тоже есть - динамическая типизация и скобочки, но это цена за простоту. Фронтэндеры, например, используют clojurescript и реально тащатся, получают гораздо большую гибкость по сравнению с JavaScript.

Вот только на спектруме нормального Lisp нет. Тот, который есть на кассете, урезан до безобразия и непонятно что на нем можно написать. Даже для SICP не сделать задания. И кроме всего прочего хрен найдешь документацию. Я в 90-е пытался найти описание LISP и Prolog для ZX, увы, не получилось. Что то подобное на описание Lisp я нашел, страницы на 2 текста, но степень урезанности меня ужаснула, а сейчас снова не могу найти. По Prolog вообще ни черта не удалось найти. По существу на спектруме кроме как на ассемблере писать ни на чем нельзя.

Sherlock
08.10.2017, 18:46
На рынке достаточное количество программистов, имеющих коммерческий опыт CommonLisp.
В сравнении с Java, C#,C а уж тем более PHP незначительное число.


Даже для SICP не сделать задания.
Это значит только то что это очень некачественный интерпретатор.

JV-Soft
08.10.2017, 21:43
Интересно, фрактал Мандельброта написан на LISP. А Спектрум осилит?

:)


https://www.youtube.com/watch?v=5DhT2ACTqDo&feature=youtu.be

- - - Добавлено - - -

62467

- - - Добавлено - - -

http://s014.radikal.ru/i328/1710/d4/575787363358.png (http://radikal.ru)