Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Лисп - Lisp

Автор: storm
Дата сообщения: 04.09.2002 08:08
Интересует информация по данному языку.
Ссылки, книги и ...

Короче, кто, что знает поделитесь.
Автор: dremon
Дата сообщения: 04.09.2002 08:57
Самая лучшая ссылка - www.lisp.org
Там можно найти все.
Автор: Dust
Дата сообщения: 05.09.2002 22:24
Писал на нем лабы в универе. Зубодробительная штука

Коротко - заточен на работу со списками. Программа имеет такой вид:

Func1(Func2(Func3(A),B,C),D)

Очень сложно
1. Типизация - все списки, посему есть куча функций для работы с ними;
2. Баланс скобок !!! Ненавижу эту мутотень - иногда С++ раздражает, а ТУТ - алесс полный :-О
Автор: storm
Дата сообщения: 06.09.2002 16:31

Цитата:
Самая лучшая ссылка - www.lisp.org

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

А нет ли каких-нибудь русских сайтов про него?


Цитата:
Зубодробительная штука

У нас только вторая лекция пошла, а я уже об этом подумал.
Туго с ним прийдется в этом семестре.
Автор: Esc
Дата сообщения: 07.09.2002 03:12
Лисп - МАСТДАЙ!
storm
Мои глубочайшие соболезнования.
Автор: dremon
Дата сообщения: 07.09.2002 14:58

Цитата:
Лисп - МАСТДАЙ!

Ты просто очень мало знаешь про этот язык. Он сейчас активно используется и развивается (естественно, не в среде windows). Примеры использования: редактор EMACS, компиляторы GCC, Yahoo Store и т.д. и т.п.
Автор: ivank
Дата сообщения: 07.09.2002 18:17
dremon
Угу, и везде свои диалекты Имхо простым смертным Схема будет гораздо интереснее... Кста, а как в GCC Лисп используется?
Автор: dremon
Дата сообщения: 07.09.2002 21:25
ivank
См. RTL (промежуточный язык всех компиляторов семейства GCC).
компильни чего-нибудь с опцией -dynamic и посмотри внутрь сгенерированного файла .rtl
Автор: ivank
Дата сообщения: 07.09.2002 21:39
А он там используется только как способ передачи внутреннего представления списков во внешний мир, или списки внутри компилера представлены им же, или даже непосредственно оптимизатор написан на лиспе?

Добавлено
Сорри за безграмотность, но во внутренностях таких сложных компиляторов я никогда не лазил. Максимум что я делал -- копал lcc...
Автор: dremon
Дата сообщения: 07.09.2002 22:15
ivank
Не, у них язык RTL - это и есть лисп. Т.е. исходники всех поддерживаемых языков сначала компилятся в стандартный RTL, который затем транслируется в машинный код. В документации есть подробное описание RTL, поэтому можно легко добавлять новые языки в GCC без необходимости писать backend (генератор кода) компилятора заново.
Автор: varjag
Дата сообщения: 28.08.2003 17:02
Esc
Сам ты мастдай.

Dust
> Коротко - заточен на работу со списками.

Заточен на работу с чем угодно. Это язык общего назначения.

>Программа имеет такой вид:
> Func1(Func2(Func3(A),B,C),D)

Нет, вид совершенно не такой.

> 1. Типизация - все списки, посему есть куча функций для работы с ними;

Не все списки. Есть строки, массивы, packages, хэш-таблицы, куча числовых типов, символы и объектная система.

>2. Баланс скобок !!! Ненавижу эту мутотень - иногда С++ раздражает, а ТУТ - алесс полный :-О

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

ivank

>Имхо простым смертным Схема будет гораздо интереснее...

Схема не совсем Лисп. Кроме того, в ней надо изобретать слишком много велосипедов для решения даже простейших задач.

>dremon

RTL - не совсем лисп. Это скорее специализированный язык представления данных. Просто GCC писал Столлмэн, а он с Лиспом работал достаточно плотно, отсюда и схожесть.

Добавлено
P.S. А о том, как в наших ВУЗах лисп преподают, у меня впечатления самые отвратные. Уж лучше бы вовсе не трогали.
Автор: arto
Дата сообщения: 28.08.2003 21:46
ftp://ftp.ptc.spbu.ru/people/artur/ где-то лежит хювянен и сеппянен, "мир лиспа"
Автор: mymuss
Дата сообщения: 31.08.2003 20:04
varjag

Цитата:
Заточен на работу с чем угодно. Это язык общего назначения.

Это не язык общего назначения: на нем нельзя написать, скажем, движок для трехмерной игры.

storm
Язык очень интересный. Реализует парадигму функционального программирования и поэтому научится на нем программировать просто полезно. Для общего развития, так сказать...
Автор: arto
Дата сообщения: 01.09.2003 17:52

Цитата:
Это не язык общего назначения: на нем нельзя написать, скажем, движок для трехмерной игры.


почему?
Автор: Monty
Дата сообщения: 01.09.2003 23:12
arto
ну хотя бы потому что он межплатформенный и граф. библиотеки он не использует
Автор: varjag
Дата сообщения: 02.09.2003 09:39
mymuss

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

Поясни. Почему нельзя?

Monty

> ну хотя бы потому что он межплатформенный и граф. библиотеки он не использует

C++ тоже межплатформенный. И что?
Автор: redp
Дата сообщения: 02.09.2003 09:55
2mymuss:
спорим што можно ? и даже на perl можно
есть такая штука - bindings, это когда ты пишешь свой task-specific или OS-specific код на чем угодно (лучше канешна на C/C++) и потом делаешь свой модуль видимым из твоего script engine
короче почитай про SWIG (http://www.swig.org), я на нем совершенно забубенные штуки делал
Автор: mymuss
Дата сообщения: 02.09.2003 14:02
redp

Цитата:
спорим што можно ? и даже на perl можно

Не надо путать Божий дар с яичницей. С таким же успехом можно этот движок реализовать на машине Тюринга. А что, тезис Черча ведь пока никто не отменял ...
Автор: varjag
Дата сообщения: 02.09.2003 14:49
mymuss

> С таким же успехом можно этот движок реализовать на машине Тюринга.

Ты нам CS101 не разводи, ты пальцем покажи в чем проблема
Т.е. конкретное техническое препятствие, не позволяющее написать 3d-renderer на Лиспе (или хотя бы делающее это неоправданно трудоемким).
Автор: mymuss
Дата сообщения: 02.09.2003 15:22
varjag
1. Что такое CS101 -- не знаю к своему стыду

2. Насчет невозможно я уже говорил: теоретически возможно.

3. Насчет трудно:
- нет интерфейсов к системным вызовам ядра (или есть но через промежуточные layers)
- нет интерфейсов к либам а-ля GMP, OpenGL, Direct3D итд. Опять же можно на С писать layer но это через одно место
- RTTI и вытекающие отсюда тормоза
- отсутствие инструментов для эффективной работы с памятью
- в конце концов, отсутствие качественного, оптимизирующего компилятора (хотя тут не факт, моу ошибаться).

Хватит?
Автор: arto
Дата сообщения: 02.09.2003 18:51

Цитата:
- нет интерфейсов к системным вызовам ядра (или есть но через промежуточные layers)


есть


Цитата:
- нет интерфейсов к либам а-ля GMP, OpenGL, Direct3D итд. Опять же можно на С писать layer но это через одно место


есть


Цитата:
- RTTI и вытекающие отсюда тормоза


а это зачем?


Цитата:
- отсутствие инструментов для эффективной работы с памятью


?


Цитата:
- в конце концов, отсутствие качественного, оптимизирующего компилятора (хотя тут не факт, моу ошибаться).


ошибаетесь.

Автор: mymuss
Дата сообщения: 02.09.2003 20:43
arto
Ок, предлагаю (дабы не быть голословными) привести конкретные примеры кода, без использования промежуточных layer'ов и интерфейсов. Желательно также указать компилятор, которым это можно скомпилить.

1) Системные вызовы: предельно тривиальная задача. Создать окно в котором писать все сообщения, которые окно получает.

Системные вызовы: немного сложнее. Написать программу, которая позволяет свернуть окно на котором юзер кликает мышкой.

2) Графические библиотеки: предельно простая задача. Проинициализировать DirectDraw и перевести приложение в полноэкранный режим 640х480х16. А потом выйти.

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

PS: И на Дельфи и на С любая из этих программ пишется за 10 минут.
Автор: varjag
Дата сообщения: 03.09.2003 08:47
mymuss

Ну зачем уже такие windows-specific вещи? Я, например, сейчас и на C++ не вспомню как видеорежимиы через DirectDraw переключать. Хотя, могу уверить, вызовы различных виндовых api из лиспов делать можно. Лично в молодости через вызовы MCI клипы крутил.

Кроме того, зачем писать-то? Посмотри лучше: http://lemonodor.com/archives/images/mcl-opengl-bild-6.jpg

Если надо, могу нарыть сорцы raytracerа писанного на Лиспе.
Автор: redp
Дата сообщения: 03.09.2003 08:49
2mymuss
постановка условия некорректна -

Цитата:

без использования промежуточных layer'ов и интерфейсов

этак я могу попросить сделать вас то же самое на C/Delphi без использования любых внешних библиотек :-)
Скажем под Linux - только int80, под NT - int2e :-)
И эта
Без интерфейсов не получится сделать - ведь даже для того же DirectX изначально есть только C/C++ interface, а для Delphi уже нужны Delphi specific заголовочные файлы, не так ли ? Также и для любого другого языка нужны будут language specific файлы описания интерфейса - соотв-но нужен некий binding layer, к-рый можно сделать на том же SWIGе. И что самое удивительное - таки да, будет работать. Пример - в AutoCADе используется диалект таки именно Lispа в качестве script engine. Это ни о чем не говорит ?
Автор: mymuss
Дата сообщения: 03.09.2003 16:43
varjag

Цитата:
Ну зачем уже такие windows-specific вещи?

А какие? Ну пусть будут System V сообщения. Покатит или теперь слишком UNIX-specific?


Цитата:
вызовы различных виндовых api из лиспов делать можно

Да я же согласен! Да, можно, только overhead при этом какой!..

redp

Цитата:
а для Delphi уже нужны Delphi specific заголовочные файлы

Ну хорошо, какие специфические заголовочные файлы тебе нужны для вызова в Дельфи, скажем, функции PostMessage?
Автор: redp
Дата сообщения: 03.09.2003 17:21
2mymuss:
што-то я не помню штоп стандартный PlatformSDK for Win32 имел файлы заголовков для Delphi (или скажем для Fortran)
так что мне нужны будут файлы заголовков, заботливо предоставленные Buglandом
Ыгы
Автор: mymuss
Дата сообщения: 03.09.2003 18:58
redp

Цитата:
так что мне нужны будут файлы заголовков, заботливо предоставленные Buglandом

Согласен. Тебе нужны файлы заголовков, в которых описаны прототипы функций.
Но тебе ведь не нужны промежуточные layers или дополнительные библиотеки?
Возможно, я ошибаюсь, но Дельфи, вроде, использует напрямую kernel32.dll, user32.dll etc. Иначе как дельфовская прога, не использующая модуль Forms, весит 15К и не требует никаких дополнительных dll-ек для запуска?

PS: Fortran тем более не язык общего назначения.
Автор: arto
Дата сообщения: 03.09.2003 19:17
mymuss

у меня не виндовс. но порекомендовал-бы сходить по ссылкам http://www.google.fi/search?q=lisp+graphics

Автор: varjag
Дата сообщения: 04.09.2003 09:46
mymuss

> Ну пусть будут System V сообщения.

http://www.laas.fr/~emarsden/tmp/cmucl-shm.lisp

> Да, можно, только overhead при этом какой!..

Да? И какой же там overhead??

Знаешь, меня тоже иногда заносит и я пишу глупости о вещах с которыми я вроде и знаком, но, как выясняется, недостаточно. В таком случае главное вовремя признать свою неправоту, а не упираться рогом из принципа.
Автор: redp
Дата сообщения: 04.09.2003 10:21
2mymuss:
скушный ты
если Lisp compiler поддерживает генерацию native code, то я пожалуй смогу сделать такого же размера исполнимый файлик. Ну на Forthе точно смогу
а Fortran своими грязными ручонками не лапай - это вообще святое

Страницы: 12

Предыдущая тема: Програмку написать кто возмется?


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.