LINUX.ORG.RU

[NIH][lisp] simple interpreter

 ,


0

0

Идея такова: есть устройство и C API к нему в виде динамической библиотеки (исходные коды мои). Хотелось бы сделать что-то вроде интерактивной оболочки к этому устройству в виде ЛИСП интерпритатора, который имеет REPL и также может загружать ЛИСП скрипты. ЛИСП интерпритатор должен умееть "mmap'ить" функции из ДЛЛ в Лисп функции после загрузки динамической библиотеки (несколько вариантов API например, или плагины). Если все это реализовать, то можно грабить караваны. PROFIT!

Хочу поэкспериментировать с созданием своего ЛИСП интерпритатора. Какие при этом грабли меня ждут, что почитать по теме. Может быть есть что-то уже готовое (простое) с чего можно начать. Интересует также простейшая реализациа GC.

anonymous

интерпрЕтатор

dave ★★★★★
()

только я не понял, лисп будет на самом устройстве работать или на отдельном компе (и обращаться к устройству через api)?

если второе, то возможно проще взять стандартный питон -- модуль ctypes умеет грузить динамические библиотеки и делать все что надо

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

> только я не понял, лисп будет на самом устройстве работать или на отдельном компе (и обращаться к устройству через api)?

неважно где лисп будет работать (local/remote PC), весь интерфейс через API.

> если второе, то возможно проще взять стандартный питон -- модуль ctypes умеет грузить динамические библиотеки и делать все что надо

LISP

anonymous
()

Поставь Lush.

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

> неважно где лисп будет работать (local/remote PC), весь интерфейс через API.

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

наверняка найдется готовый lisp/scheme, который умеет подключать c-библиотеки

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

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

А в этом как раз весь фан.

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

> /me выражает соболезнования будущим пользователям этого продукта

пиcтонщики, не задерживаемся, проходим дальше :)

anonymous
()

Поставь Lush.

mv ★★★★★
()

Поставь Lush.

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

У вас, пистонщиков, синтаксис какой-то неправильный. Со скобками туго, зато пробелы глаза мозолят.

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

> Со скобками туго, зато пробелы глаза мозолят.

Вашу овсянку с обрезками ногтей только отступы и спасают, но вы не хотите в этом признаваться :D

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

> Вашу овсянку с обрезками ногтей только отступы и спасают, но вы не хотите в этом признаваться :D

Если человек пишет программы сразу в AST, то он точно знает, чего хочет, поэтому ему эти визуальности типа отступов и разноцветных букв ни к чему :-P

mv ★★★★★
()

Почему ему ещё никто не посоветовал сикп?

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

> Если человек пишет программы сразу в AST, то он точно знает, чего хочет, поэтому ему эти визуальности типа отступов и разноцветных букв ни к чему :-P

Хм, не видел Лисп-программ без отступов. Вы что, вообще не знаете, что пишете? O_O

Насчет цветов - это тебя Color Forth так торкнул?

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

> Вашу овсянку с обрезками ногтей только отступы и спасают, но вы не хотите в этом признаваться :D

спасибо, поблевал

anonymous
()

а вот скажите мне лучше, где надыбать реализацию scheme на actionscript?

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

Есть Ouija ( http://www.solve-et-coagula.com/?p=19 ) но оно какое-то унылое и без исходников.

anonymous
()

>Хочу поэкспериментировать с созданием своего ЛИСП интерпритатора.

Странно, почему существует такая просто маниакальная тяга к созданию собственных лисп-интерпретаторов. Ну хорошо, осилишь ты парсер S-выражений, ну может быть сборку мусора, а дальше-то что? Чтобы реализовать Коммон Лисп тебя не хватит, даже без CLOS. Ну любые, блин, лисп-системы насчитывают десятилетия развития, а ты хочешь реализовать то, что создавали поколения программистов, да еще и в одиночку.

Возьми тот же SBCL, у него неплохой FFI. Допиши прослойку на лиспе и используй в режиме REPL со всеми прелестями компиляции в нативный код и _очень_ серьезной оптимизации.

Правда размер конечной системы будет большим... Но кого это теперь волнует? Даже в ту давнюю и славную эпоху лисп-системы этим свойством не отличались :)

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

> Странно, почему существует такая просто маниакальная тяга к созданию собственных лисп-интерпретаторов. Ну хорошо, осилишь ты парсер S-выражений, ну может быть сборку мусора, а дальше-то что? Чтобы реализовать Коммон Лисп тебя не хватит, даже без CLOS. Ну любые, блин, лисп-системы насчитывают десятилетия развития, а ты хочешь реализовать то, что создавали поколения программистов, да еще и в одиночку.

Да не нужен мне CL. Мне нужно минимальное ядро. И чтобы оно было очень простое. Если бы нужен был CL я бы взял ECL.

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

>Мне нужно минимальное ядро.

Свой велосипед с квадратными колесами? А схема тебе чем не угодила?

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

>> Мне нужно минимальное ядро.

> Свой велосипед с квадратными колесами? А схема тебе чем не угодила?

Когда Линус начал_писать/уже_писал свое "минимальное ядро с квадратными колесами" ему наверняка говорили:

"Свой велосипед с квадратными колесами? А BSD тебе чем не угодила?"

Если бы он вас послушал, не было бы Линукс.

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

>Если бы он вас послушал, не было бы Линукс.

Ну, насколько я знаю, Линус бы и не стал заморачиваться, если бы не лицензионная ситуация вокруг 386BSD и BSDi. Короме того, юниксов под i386 было мало. Так что разработка ядра была очень оправдана.

А тут хоть ... ешь свободных реализаций что лиспа, что схемы, что лисп-подобных диалектов типа newLisp, а ты со своим велосипедом.

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

> Lush поставь

Уже давно стоит, спасибо.

mv ★★★★★
()

> что почитать по теме.

"компилятор схемы за 24 часа"

> Может быть есть что-то уже готовое (простое) с чего можно начать.



ECLS, http://ecls.sourceforge.net/ecldev/devel.html http://ecls.sourceforge.net/new-manual/ пример visual basic+ecls http://www.progmatism.com/hacks/eclgui/index.php -- навороченный Common Lisp

Для языка D: dLisp http://iteration-zero.blogspot.com/ простой интерпретатор, понятные исходники

PicoLisp и microPicoLisp: http://www.software-lab.de/down.html . Можно почитать про устройство runtime системы http://www.software-lab.de/ref.html#vm

LUSH: http://lush.sourceforge.net/ -- чем-то похоже на PicoLisp

newLisp: http://www.newlisp.org/ -- оно правда не лисп, просто притворяется


> Интересует также простейшая реализациа GC.


на эту тему хорошо читать книжки по Схеме (или реализации встраиваемых Схем)

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

> Хм, не видел Лисп-программ без отступов. Вы что, вообще не знаете, что пишете? O_O

А мы в одну строку пишем, сразу в REPL. А потом просто image сохраняем.

> Насчет цветов - это тебя Color Forth так торкнул?

Не, это xTERM в треде про Руби жаловался на то, что его говноредактор не умеет Питон расцвечивать, поэтому Питон - говно.

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

> "Свой велосипед с квадратными колесами? А BSD тебе чем не угодила?"

Так не было тогда BSD, по факту :) Была бы - Линукс остался бы очередной студенческой поделкой.

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

>Так не было тогда BSD, по факту :)

http://ru.wikipedia.org/wiki/Файл:Unix_history.en.svg

Джолицы статьи писали в журнал доктора Добба с января 91, когда у Линуса была терминалка, которой он на HDD звонил :))

http://ru.wikipedia.org/wiki/386BSD

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

> Джолицы статьи писали в журнал доктора Добба с января 91, когда у Линуса была терминалка, которой он на HDD звонил :))

Ты сам-то по своим ссылкам ходишь? :)

http://ru.wikipedia.org/wiki/386BSD:

"Согласно представлениям авторов, в 386BSD было достаточно модификаций для того, чтобы позволить работу с ней без лицензии AT&T, однако самой AT&T так не казалось, и система была вовлечена в крупное судебное разбирательство."

"Первый более или менее пригодный (работоспособный) код получен 14 июля 1992 года (версия 0.1)"

Так что не было тогда (в 1992-1993) 386BSD. Поэтому Линукс и поднялся.

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

Я-то хожу, а ты? Фигурный квотинг, да? :)

<dumb-mode>
"Итак, портирование фактически началось в 1989 году, а первые результаты получены в 4.3BSD Net/2 1991 года. Первый более или менее пригодный (работоспособный) код получен 14 июля 1992 года (версия 0.1). Планируемый процесс портирования кода был хорошо документирован Йолитцами в 18 главок, вышедших в журнале Dr. Dobbs Journal в начале января 1991 года."
</dumb-mode>

> Так что не было тогда (в 1992-1993) 386BSD. Поэтому Линукс и поднялся.


<анекдот про вовочку>странные дела, статьи в журнале были (и каждый оглоед мог по ним собрать), а дистра не было. Ага.
</анекдот про вовочку>

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

в аглицкой википедии ещё занятнее про BSDi

"386BSD is often confused with BSD/386 which was developed by BSDi, a Berkeley spinout, starting in 1991. BSD/386 used the same 386BSD code contributed to the University of California on 4.3BSD NET/2. Although Jolitz worked briefly for UUNET (which later spun out BSDi) in 1991, the work he did for them diverged from that contributed to the University of California and did not appear in 386BSD. Instead, William Jolitz gave regular code updates to Donn Seeley of BSDi for packaging and testing, and returned all materials when William Jolitz left that company following fundamental disagreements on company direction and goals."

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

> Фигурный квотинг, да? :)

Нет, абзацами цитирую.

>> Так что не было тогда (в 1992-1993) 386BSD. Поэтому Линукс и поднялся.

><анекдот про вовочку>странные дела, статьи в журнале были (и каждый оглоед мог по ним собрать), а дистра не было. Ага. </анекдот про вовочку>

Что именно во фразе "система была вовлечена в крупное судебное разбирательство" непонятно? А в "Первый более или менее пригодный (работоспособный) код получен 14 июля 1992 года (версия 0.1)"?

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

ну то есть, если сопоставить эту хронологию с http://www.cs.cmu.edu/~awb/linux.history.html (3-06-91, анонс в comp.os.minis) и (01-01-91), http://www.ddj.com/article/printableArticle.jhtml?articleID=184408470&dep... , то Джолицы статейку тиснули раньше.

Другое дело, что ведро версии 0.70 (у меня есть где-то исходники) было невозбранно уныло, и им никто не пользовался до 0.94, (судя по историческим записям, а на моей памяти и до 1.3 народ брезговал). А это уже где-то 94-95 год, и неразбериха с BSD.

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

а что не понятно во фразе "статьи в ddj с января 1991"?

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

> 14 июля 1992 года (версия 0.1)

версия ЧЕГО? //к-ча yelling

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

>статьи в журнале были (и каждый оглоед мог по ним собрать), а дистра не было

Было все, было. Только в отличие от нас ТАМ на лицензию софта и риски, связанные с его использованием, не кладут. И вообще, все это происходило во времена unix wars, которые закончились только к 96-му году.

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

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

> а на моей памяти и до 1.3 народ брезговал

1.3 - это development-линия, "buggiest kernel ever" (c) Линус. Реально широко использоваться стала линия 1.2.x

> это уже где-то 94-95 год, и неразбериха с BSD.

Неразбериха (== суды) началась году в 91-м и была мощным фактором, подтолкнувшим развитие Линукс - народу нужен был свободный Unix, но вкладываться в BSD мало кто не хотел.

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

> Неразбериха (== суды) началась году в 91-м и была мощным фактором,

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

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

>> Неразбериха (== суды) началась году в 91-м и была мощным фактором,

> но перелом и критическая масса у Линукса появилась гораздо позже

Но до этого надо было дожить. А так да, Линус мудр и выбрал правильную лицензию :)

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