powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Для чего нужен лисп ?
24 сообщений из 74, страница 3 из 3
Для чего нужен лисп ?
    #35148567
Фотография TonY.Soprano
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
выпил чай с плюшками TonY.Soprano
так всеже ?

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

Хорошие примеры есть в обсуждении статьи Пола Грэма

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
Простейший пример:
(defmacro simple-plus-macro (a b)
`(+ ,a ,b))

Если вставим его в программу вроде:
(setf c (simple-plus-macro  4   5 )) то после раскрытия макроса будет компилироваться следующий код:

(setf c (+  4   5 ))

Одна из мощнейших особенностей макросов Лиспа заключается в том, что в них доступен весь язык и ранее определенные функции:

(defun factorial (x)
(if (<= x  1 )  1  (* x (factorial ( 1 - x))))

(defmacro with-factorial ((var argument) &body body)
`(let ((,var ,(factorial argument)))
,@body))

После этого мы можем в коде написать:
(with-factorial (myvar  5 )
(format t "Factorial of 5 is ~D~%" myvar))

значение факториала  5  будет посчитано и присвоено переменной myvar во время компиляции.

А можно, используя reader macros и так написать:
(format t "Factorial of 5 is ~D~%" #.(factorial  5 ))

Значение факториала будет посчитано прямо во время разбора этой строки (до компиляции) и вставлено в код в этом месте.

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


тоесть если вставить

Код: plaintext
1.
2.
(with-factorial (myvar  500 )
(format t "Factorial of 500 is ~D~%" myvar))

то компиляция не завершится никогда ?
...
Рейтинг: 0 / 0
Для чего нужен лисп ?
    #35148583
Фотография TonY.Soprano
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
точнее если немножко помудрить то можно сделать процесс компиляции бесконечным ?
...
Рейтинг: 0 / 0
Для чего нужен лисп ?
    #35148805
BrokenPot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
!член ксеноцефалаПри том сам ксеня тот... Емоё.

Ну сидит чудачок, пишет на коленке программки для анализа и прочего дейтамайнинга тарабайтов
данных с приборов в CERN-е, чи не мейнстрим, ёмое (отлавливать кривизну вселенной или какие
отголоски инопланетных цивилизацией).

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

Вот именно! ( То есть +1 :) )

Тем, кто не знает, что такое CERN, зато хорошо знает, что такое 1С, действительно не понять, для чего нужен лисп и форт.
...
Рейтинг: 0 / 0
Для чего нужен лисп ?
    #35148810
Фотография TonY.Soprano
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BrokenPot
Тем, кто не знает, что такое CERN, зато хорошо знает, что такое 1С, действительно не понять, для чего нужен лисп и форт.

У мну знакомый в CERN работает..
...
Рейтинг: 0 / 0
Для чего нужен лисп ?
    #35148823
Фотография TonY.Soprano
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Там ++ и Java юзают...
...
Рейтинг: 0 / 0
Для чего нужен лисп ?
    #35148835
BrokenPot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В бухгалтерии :):)
...
Рейтинг: 0 / 0
Для чего нужен лисп ?
    #35148837
Фотография TonY.Soprano
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BrokenPotВ бухгалтерии :):)

ХЗ где ...
...
Рейтинг: 0 / 0
Для чего нужен лисп ?
    #35148840
Фотография TonY.Soprano
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Даже не интересно ... А вы батенько пофлудить зашли ?
...
Рейтинг: 0 / 0
Для чего нужен лисп ?
    #35148848
Фотография TonY.Soprano
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BrokenPotВ бухгалтерии :):)

А ты видел гигабайт текста на C++ ?
...
Рейтинг: 0 / 0
Для чего нужен лисп ?
    #35148853
BrokenPot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну да! :)

А Вы - проанализировать и сравнить возможности языков программирования?

В рамках вот этого вот обсуждения?

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

На основании этого опыта и формируется у каждого мнение о целесообразности применения того или иного инструмента программирования.

Стоит ли сталкивать эти мнения?
...
Рейтинг: 0 / 0
Для чего нужен лисп ?
    #35148855
BrokenPot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну да - я имел ввиду пофлудить.
...
Рейтинг: 0 / 0
Для чего нужен лисп ?
    #35148858
Фотография TonY.Soprano
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BrokenPotНу да! :)

А Вы - проанализировать и сравнить возможности языков программирования?

В рамках вот этого вот обсуждения?

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

На основании этого опыта и формируется у каждого мнение о целесообразности применения того или иного инструмента программирования.

Стоит ли сталкивать эти мнения?

Я не сталкиваю . Меня заинтересовал этот язык и я хочу узнать почему люди на него молятся .
...
Рейтинг: 0 / 0
Для чего нужен лисп ?
    #35148865
BrokenPot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А! Так Вы - топикстартер! Виноват, не заметил.

Я не спорю с поставленным вопросом. Я возражаю некоторым категоричным ответам.
...
Рейтинг: 0 / 0
Для чего нужен лисп ?
    #35148889
BrokenPot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Опыт работы на Лиспе (АвтоЛиспе) в Автокаде у меня небольшой.

Программируя на АвтоЛиспе, получал удовольствие. Он требует несколько другого взгляда на процесс программирования. Именно это обстоятельство и доставляло мне удовольствие.

Обилие скобок - не раздражало.

Там каждый оператор, каждое действие - ФУНКЦИЯ, которая возвращает свой результат, в том числе + и -. Многих это раздражает, а меня - забавляло.

Здесь я хочу сказать, что есть еще и эстетический фактор, влияющий на выбор языка. :)

Я вовсе не хочу сказать, что этот фактор имеет решающее значение. :)
...
Рейтинг: 0 / 0
Для чего нужен лисп ?
    #35149519
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TonY.SopranoМеня заинтересовал этот язык и я хочу узнать почему люди на него молятся .
Посмотрите PLANNER (если найдете, была книжка на русском), это еще интереснее - расширение лиспа и сделан на лиспе
...
Рейтинг: 0 / 0
Для чего нужен лисп ?
    #35149740
dvim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор
Он там и сейчас работает. И я бы не сказал, что он там сильно удачен.
Он туда приверчен исторически, как макроязык.
Но писать на нём - это идевательство.

Было в 80-х годах, когда никто про ООП не знал.
-

Обоих в сад. Нормальные расширения там отродясь писались на C++
Даже у ряда западных кастом решений и то C++ (arx) + Lisp
Для проектов с другим уровнем финансирование использование C++ - смерти подобно.
Просто там совершенно другая трудоемкость разработки.
Просто некоторые вещи ,которые можно разрабатывать на обоих языках, были разработаны на Lisp
в разы быстрее.


Даром не нужны там эти красивости. А средств императивных языков для тех задач, в которых
(кстати - якобы) нужен автолисп - за глаза.
НО по факту именно в среде Autocad пока альтернативы нет.(Писать на С++ ) .Возможно аналог VSTO что то и изменит....
...
Рейтинг: 0 / 0
Для чего нужен лисп ?
    #35149741
TonY.Soprano
тоесть если вставить

Код: plaintext
1.
2.
(with-factorial (myvar  500 )
(format t "Factorial of 500 is ~D~%" myvar))

то компиляция не завершится никогда ?

С чего бы?
автор
Factorial of 500 is 1220136825991110068701238785423046926253574342803192842192413588385845373153881997605496447502203281863013616477148203584163378722078177200480785205159329285477907571939330603772960859086270429174547882424912726344305670173270769461062802310452644218878789465754777149863494367781037644274033827365397471386477878495438489595537537990423241061271326984327745715546309977202781014561081188373709531016356324432987029563896628911658974769572087926928871281780070265174507768410719624390394322536422605234945850129918571501248706961568141625359056693423813008856249246891564126775654481886506593847951775360894005745238940335798476363944905313062323749066445048824665075946735862074637925184200459369692981022263971952597190945217823331756934581508552332820762820023402626907898342451712006207714640979456116127629145951237229913340169552363850942885592018727433795173014586357570828355780158735432768888680120399882384702151467605445407663535984174430480128938313896881639487469658817504506926365338175055478128640000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000


Да, я понимаю, что вы хотели сказать, инструмент макров очень мощный и неразумное его применение может привести к неожиданным результатам. Ну так и в C++ и даже в Си я видел примеры программ, которые валят компилятор, вернее требуют от него дикое количество памяти.

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

Хвостовую (концевую) рекурсию компилятор автоматически разворачивает в итерации.

О Scheme и хвостовой рекурсии
...
Рейтинг: 0 / 0
Для чего нужен лисп ?
    #35151732
Mike7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть очень мощные системы компьютерной алгебры или символьных математических вычислений, разрабатываемые еще с конца 60-х годов.

Maxima и Axiom, - вот статья о них

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

Maxima и Axion - качайте и изучайте!
...
Рейтинг: 0 / 0
Для чего нужен лисп ?
    #35152037
Ммихалыч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну что и говорила всегда моя бабушка, лисп создан чисто для инженерно-математических задач, т.е. специализированный язык.
...
Рейтинг: 0 / 0
Для чего нужен лисп ?
    #35152389
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я смотрю, с периодом ~ 1 раз в квартал возникает вялотекущий флейм на тему нужности/ненужности ФП (и Lisp в том числе). Устав от ковыряния в зубах, императивщики начинают от скуки катить бочку на функциональщиков. Те вяло отбиваются, приводят умные тынц на теоретическую базу и сотрясают воздух зычными фамилиями отцов-основателей (с), но устав от противостояния (по причине своей малочисленности) расползаются по углам.

Не пора-ли поднять непотопляемый ФАК на тему Lisp-a e.t.c?
...
Рейтинг: 0 / 0
Для чего нужен лисп ?
    #35152399
Mike7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ммихалычну что и говорила всегда моя бабушка, лисп создан чисто для инженерно-математических задач, т.е. специализированный язык.

Десятое правило Гринспуна придумали не зря:
Десятое правило Гринспуна
Любая большая система на C или Fortran содержит медленную, плохо продуманную, с кучей ошибок реализацию половины Common Lisp.

Есть ещё, правда, следствие Морриса: "... включая сам Common Lisp" ;-)

В каждой шутке есть доля шутки, но любая большая система, действительно, де-факто, реализует какой-то язык, даже если разработчики об этом не задумывались.
...
Рейтинг: 0 / 0
Для чего нужен лисп ?
    #35152401
Mike7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Не пора-ли поднять непотопляемый ФАК на тему Lisp-a e.t.c?
Кому-то надо его осилить...
...
Рейтинг: 0 / 0
Для чего нужен лисп ?
    #35152403
apapacy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonЯ смотрю, с периодом ~ 1 раз в квартал возникает вялотекущий флейм на тему нужности/ненужности ФП (и Lisp в том числе). Устав от ковыряния в зубах, императивщики начинают от скуки катить бочку на функциональщиков. Те вяло отбиваются, приводят умные тынц на теоретическую базу и сотрясают воздух зычными фамилиями отцов-основателей (с), но устав от противостояния (по причине своей малочисленности) расползаются по углам.

Не пора-ли поднять непотопляемый ФАК на тему Lisp-a e.t.c?

У ООП мать-основатель - и это Барбара Лисков.
...
Рейтинг: 0 / 0
Для чего нужен лисп ?
    #35152891
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а отец - Люка Кардели
...
Рейтинг: 0 / 0
24 сообщений из 74, страница 3 из 3
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Для чего нужен лисп ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]