Форум программистов, компьютерный форум, киберфорум
Наши страницы
Lisp
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.78/32: Рейтинг темы: голосов - 32, средняя оценка - 4.78
x33x
42 / 8 / 0
Регистрация: 27.01.2016
Сообщений: 9
1

Почему Лисп не стал популярным языком программирования?

10.05.2017, 10:01. Просмотров 6147. Ответов 200
Метки нет (Все метки)

Спасибо большое за помощь!

Как итог мне надо было написать макрос чтения, который из конструкции вида #[1 11] делал список (2 3 5 7 11), при этом если начальное или конечное значение во входных данных отрицательное, то должно выводиться nil.
Макрос вроде получился (во всяком случае проверки по значениям #[1 11]; #[-7 11]; #[1 -7] выдают то, что мне требовалось).

Ещё раз спасибо!

З.Ы. Интересный, конечно, язык Lisp. Только не понимаю почему он несильно популярный и мало известных продуктов на нём написано?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.05.2017, 10:01
Ответы с готовыми решениями:

Почему первый Лисп называют функциональным?
Да, функции как аргументы... но, там же вроде не было заморочек с переменными и...

Firefox 3.5 стал самым популярным в мире
Браузер Firefox 3.5 от Mozilla впервые стал самым популярным в мире – он обошел...

Является ли html языком программирования?
Собственно вопрос в заголовке озвучен. Насколько я помню, когда меня учили...

Нужно определиться с языком программирования
Доброй ночи, друзья! Помогите, пожалуйста, определиться с выбором языка...

Нужно определиться с языком программирования
Доброй ночи, друзья! Помогите, пожалуйста, определиться с выбором языка...

200
vlisp
471 / 439 / 105
Регистрация: 10.08.2015
Сообщений: 1,489
Завершенные тесты: 1
11.05.2017, 12:21 21
Цитата Сообщение от nullxdth Посмотреть сообщение
Это не правда. Emacs + slime непревзойдён.
Во-первых, его нечем превосходить
Во, во-вторых
- cкачать и установить sbcl
- cкачать и установить emacs
- cкачать и установить slime
- cкачать и установить quicklisp
- cкачать и установить cl-opengl
- cкачать и установить ...
не слишком ли много телодвижений?
1
helter
Эксперт по математике/физике
3778 / 2801 / 304
Регистрация: 12.03.2013
Сообщений: 5,144
11.05.2017, 15:31 22
Цитата Сообщение от Shamil1 Посмотреть сообщение
Нужна такая IDE, чтобы запустил инсталятор, пару раз кликнул Ок - и всё установилось.
Иногда пилят такое. Раньше был LispBox, теперь Portacle. Упаковка из настроенного емакса с лиспом и некоторыми библиотеками. Правда, кнопочки «создать проект» там нет. Для минимального проекта надо писать в репле (ql:quickload "quickproject") и (quickproject:make-project). Но это ничего, мы же все любим консоли. А фреймворк caveman2 ЕМНИП создаёт довольно большу рыбу веб-проекта, можно сразу начинать по чуть-чуть кодить и смотреть, что получается.

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

Цитата Сообщение от Shamil1 Посмотреть сообщение
Предположим, я ничего не знаю про Лисп. Где мне найти инструкции (подробные и с картинками), как создать простое приложение с пользовательским интерфейсом? (настольное или веб)
Мм... В гугле? По запросам common lisp web application tutorial и commonqt tutorial кое-что гуглится. Но обычно такие туториалы предполагают хотя бы начальное знакомство с лиспом, что логично. А CommonQt предполагает ещё и знакомство с Qt,что печально, но тоже логично. Вообще, я не уверен, что начальные туториалы по какому-нибудь питону начинают с PyQt или даже Tkinter. Люди как-то понимают, что одно дело ― язык, а другое ― графика, которая представляет собой внешние тулкиты, привязанные через FFI.

Если бы я собирался вести коммерческую разработку под виндоус, я бы наверно, аллегро цл, купил. Думаю, у них и графика из коробки, и кнопка «создать проект» имеется.
3
Catstail
Модератор
23617 / 11717 / 2047
Регистрация: 12.02.2012
Сообщений: 19,115
11.05.2017, 16:19 23
Цитата Сообщение от vlisp Посмотреть сообщение
отсутствие нормальной справки
- ну это Вы сильно погорячились. Справка есть. Не хуже, чем HyperSpec (с учетом того, что HomeLisp реализует подмножество CL)

Цитата Сообщение от vlisp Посмотреть сообщение
бардак в папке с библиотеками, как по мне, наименование библиотек разными именами не оправдано. Зачем каждый раз менять в коде название библиотеки?
- актуальна одна версия библиотеки (последняя). Остальные можно удалить.

Цитата Сообщение от vlisp Посмотреть сообщение
отсутствие нормального IDE
- а чем IDE HomeLisp, по большому счету, уступает IDE LispWorks (к примеру)? Все основные функции (с учетом соотнесения масштабов Common Lisp - HomeLisp) имеются. Только экранного дизайнера у LW нет. Никакого. Поэтому замечание "отсутствие нормального IDE" можно отнести скорее к другим реализациям. Да и само понятие "нормальное IDE" - есть нечетко определенное оценочное суждение.

А с остальными замечаниями можно согласиться - спасибо за критику.
1
_sg
3756 / 3548 / 242
Регистрация: 12.05.2012
Сообщений: 2,475
11.05.2017, 16:24 24
http://zeniv.linux.org.uk/~ober/clb/
1
Catstail
Модератор
23617 / 11717 / 2047
Регистрация: 12.02.2012
Сообщений: 19,115
11.05.2017, 16:25 25
Цитата Сообщение от vlisp Посмотреть сообщение
Папка с примерами - это одно из самых важных составляющих программного продукта. Это вещь от которой загораются глаза и роятся идеи...
- признаю справедливость этого замечания. Но я-то привык начинать с документации. А в документации все описано подробно и с примерами: здесь и здесь.
1
_sg
3756 / 3548 / 242
Регистрация: 12.05.2012
Сообщений: 2,475
11.05.2017, 17:44 26
Цитата Сообщение от helter Посмотреть сообщение
Раньше был LispBox, теперь Portacle
+ LispStick! http://www.iqool.de/lispstick.html

Добавлено через 11 минут
+ http://quickdocs.org

Добавлено через 1 час 4 минуты
+ Lisp Cabinet http://lispcabinet.sourceforge.net
3
Lambdik
1037 / 931 / 106
Регистрация: 04.11.2012
Сообщений: 965
Записей в блоге: 2
11.05.2017, 19:06 27
Цитата Сообщение от x33x Посмотреть сообщение
З.Ы. Интересный, конечно, язык Lisp. Только не понимаю почему он несильно популярный и мало известных продуктов на нём написано?
Скажу то что думаю. Лисп "отстал" из-за ООП. Хоть он в лиспе и есть, но тут динамическая типизация. А статическая вроде как лучше подходит. Таким образом если всё равно "рулит" ООП, то лучше создать новый язык специально под эту парадигму, что и было проделано. Зато лисп хорошо подходит для науки, математики, аналитики, диффуров, такое.
1
rdt
186 / 153 / 17
Регистрация: 18.12.2015
Сообщений: 179
11.05.2017, 21:56 28
Хотел было написать, что, благодаря quicklisp, библиотеки ставятся с полпинка, так ведь нет. У меня, почему-то, не заработал ltk; не установился cltcl; начал требовать кучу dll-ок cl-cffi-gtk. Сразу признаюсь, что я не пытался разобраться: пытаюсь ставить, запускаю учебный пример, не работает, иду дальше. Полагаю, что если бы я проверял это под Linux и SBCL, то что-нибудь заработало, но у меня WinXP и CCL.

Зато, вот, bordeaux-threads и bt-semaphore поставились без проблем и удивили простотой использования. Да, документация на английском, но там всего где-то страница текста.

Что касается размера дистрибутива, то я бы побоялся поставить программу с функциональностью “Hello, World!” и размером 20 МБ – а, вдруг, троян в комплекте? Но, если подходить рационально (трояну столько места не потребовалось бы), то между, к примеру, 4 КБ и 20 МБ разница всего 20 МБ – сущая мелочь для современных компьютеров.

Не по теме:

P.S. Лучшая, известная мне, программа для решения судоку – SimpleSudoku, которую, явно, не час писали, занимает всего 800 КБ в архиве. Наверно, если взять свежую версию Delphi и создать пустую форму, то будет, уже, больше мегабайта. К сожалению, сейчас сделать вменяемого размера exe-шник довольно проблематично (конкретно для Delphi есть библиотека KOL, но, для удобства её использования, надо использовать Delphi не старше 7 версии).

0
vlisp
471 / 439 / 105
Регистрация: 10.08.2015
Сообщений: 1,489
Завершенные тесты: 1
11.05.2017, 22:08 29
Цитата Сообщение от Catstail Посмотреть сообщение
ну это Вы сильно погорячились
наоборот, я стараюсь не касаться этой темы, ведь это дело вкуса. Но в качестве примера я могу посоветовать посмотреть CLHS из комплекта поставки LispIDE. там есть и содержание, и индекс и поиск, это весьма удобно. Вообще при разработке справочной системы следует придерживаться некоторых правил. Например наличие содержания is strongly recommended. Первый пункт справки - страничка приветствия, где пользователю рассказывают как разработчики рады и благодарны пользователю за выбор его продукта... второе - что нового в новой версии "этого" замечательного продукта" Затем лицензионное соглашение. Дальше руководство пользователя и наконец справочник по функциям. У вас же как-то это все слеплено, как будто это книга, но справочная система - это не книга. Дальше больше, ну ладно я нашел раздел про создание диалогов, и даже с примерами кода, я не понимаю что значат эти слова, но я беру код, копирую его вставляю в "ИДЭ", загружаю код и получаю диалог, УРА! Но проблема в том, что диалог нельзя убрать с экрана, а "ИДЭ" просто перестает реагировать... и ничего не остается делать, как открывать диспетчер задач и убивать процесс, матерясь в монитор, это в лучшем случае... А все потому что в справке не написано то, о чем я писал выше... Для новичка - это как пощечина.

Кстати, вроде в sbcl исправили багу, из-за которой LispIDE его не воспринимала, но возникла другая проблема, Почему-то sbcl не умеет открывать сразу несколько файлов... Баги - тоже не способствуют популярности... а так как обратной связи мало. то это как замкнутый круг
0
helter
Эксперт по математике/физике
3778 / 2801 / 304
Регистрация: 12.03.2013
Сообщений: 5,144
11.05.2017, 22:09 30
Цитата Сообщение от rdt Посмотреть сообщение
У меня, почему-то, не заработал ltk; не установился cltcl;
Цитата Сообщение от rdt Посмотреть сообщение
WinXP
Наивный вопрос: а tcl/tk в системе имелись и сами по себе работали?
0
vlisp
471 / 439 / 105
Регистрация: 10.08.2015
Сообщений: 1,489
Завершенные тесты: 1
11.05.2017, 22:09 31
Цитата Сообщение от Catstail Посмотреть сообщение
ну это Вы сильно погорячились
наоборот, я стараюсь не касаться этой темы, ведь это дело вкуса. Но в качестве примера я могу посоветовать посмотреть CLHS из комплекта поставки LispIDE. там есть и содержание, и индекс и поиск, это весьма удобно. Вообще при разработке справочной системы следует придерживаться некоторых правил. Например наличие содержания is strongly recommended. Первый пункт справки - страничка приветствия, где пользователю рассказывают как разработчики рады и благодарны пользователю за выбор его продукта... второе - что нового в новой версии "этого" замечательного продукта" Затем лицензионное соглашение. Дальше руководство пользователя и наконец справочник по функциям. У вас же как-то это все слеплено, как будто это книга, но справочная система - это не книга. Дальше больше, ну ладно я нашел раздел про создание диалогов, и даже с примерами кода, я не понимаю что значат эти слова, но я беру код, копирую его вставляю в "ИДЭ", загружаю код и получаю диалог, УРА! Но проблема в том, что диалог нельзя убрать с экрана, а "ИДЭ" просто перестает реагировать... и ничего не остается делать, как открывать диспетчер задач и убивать процесс, матерясь в монитор, это в лучшем случае... А все потому что в справке не написано то, о чем я писал выше... Для новичка - это как пощечина.

Кстати, вроде в sbcl исправили багу, из-за которой LispIDE его не воспринимала, но возникла другая проблема, Почему-то sbcl не умеет открывать сразу несколько файлов... Баги - тоже не способствуют популярности... а так как обратной связи мало. то это как замкнутый круг
0
helter
Эксперт по математике/физике
3778 / 2801 / 304
Регистрация: 12.03.2013
Сообщений: 5,144
11.05.2017, 22:15 32
Цитата Сообщение от vlisp Посмотреть сообщение
Почему-то sbcl не умеет открывать сразу несколько файлов...
Вы утверждаете, что в SBCL не будет работать код
Lisp
1
2
3
4
(with-open-file (f1 "foo")
  (with-open-file (f2 "bar")
    (write-line (read-line f1))
    (write-line (read-line f2))))
?
0
rdt
186 / 153 / 17
Регистрация: 18.12.2015
Сообщений: 179
11.05.2017, 22:29 33
Цитата Сообщение от helter Посмотреть сообщение
tcl/tk в системе имелись и сами по себе работали?
Да, есть, работают. Поставил себе tk/tcl 8.6.4, прошёл обучалку http://tclstudy.narod.ru/tk/index.html , а потом захотел то же, но под лиспом - и не срослось. Решил отложить, всё равно большинство моих программ, написанных на Delphi - консольные.
0
vlisp
471 / 439 / 105
Регистрация: 10.08.2015
Сообщений: 1,489
Завершенные тесты: 1
11.05.2017, 22:46 34
Цитата Сообщение от helter Посмотреть сообщение
Вы утверждаете, что в SBCL не будет работать код
есть вот такой код, который прекрасно работает в GCL, но не работает в sbcl. А вы говорите стандарт...
Lisp
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
;; функция генерирует случайное простое число из списка list_simple_num
(defun get_simple_num ()
 
  (declare (special list_simple_num))
  ;; список простых чисел
  (setq list_simple_num
'(1087  1091    1093    1097    1103    1109    1117    1123    1129    1151    1153    1163    1171    1181    1187    1193    1201    1213    1217    1223
1229    1231    1237    1249    1259    1277    1279    1283    1289    1291    1297    1301    1303    1307    1319    1321    1327    1361    1367    1373
1381    1399    1409    1423    1427    1429    1433    1439    1447    1451    1453    1459    1471    1481    1483    1487    1489    1493    1499    1511
1523    1531    1543    1549    1553    1559    1567    1571    1579    1583    1597    1601    1607    1609    1613    1619    1621    1627    1637    1657
1663    1667    1669    1693    1697    1699    1709    1721    1723    1733    1741    1747    1753    1759    1777    1783    1787    1789    1801    1811
1823    1831    1847    1861    1867    1871    1873    1877    1879    1889    1901    1907    1913    1931    1933    1949    1951    1973    1979    1987
1993    1997    1999    2003    2011    2017    2027    2029    2039    2053    2063    2069    2081    2083    2087    2089    2099    2111    2113    2129
2131    2137    2141    2143    2153    2161    2179    2203    2207    2213    2221    2237    2239    2243    2251    2267    2269    2273    2281    2287
2293    2297    2309    2311    2333    2339    2341    2347    2351    2357    2371    2377    2381    2383    2389    2393    2399    2411    2417    2423
2437    2441    2447    2459    2467    2473    2477    2503    2521    2531    2539    2543    2549    2551    2557    2579    2591    2593    2609    2617
2621    2633    2647    2657    2659    2663    2671    2677    2683    2687    2689    2693    2699    2707    2711    2713    2719    2729    2731    2741
2749    2753    2767    2777    2789    2791    2797    2801    2803    2819    2833    2837    2843    2851    2857    2861    2879    2887    2897    2903
2909    2917    2927    2939    2953    2957    2963    2969    2971    2999    3001    3011    3019    3023    3037    3041    3049    3061    3067    3079
3083    3089    3109    3119    3121    3137    3163    3167    3169    3181    3187    3191    3203    3209    3217    3221    3229    3251    3253    3257
3259    3271    3299    3301    3307    3313    3319    3323    3329    3331    3343    3347    3359    3361    3371    3373    3389    3391    3407    3413
3433    3449    3457    3461    3463    3467    3469    3491    3499    3511    3517    3527    3529    3533    3539    3541    3547    3557    3559    3571))
 
  (nth (random (- (length list_simple_num) 1)) list_simple_num))
 
 
;;поиск взаимно простого числа
(defun mutually_distinct(num ph)
  (do ()
      ((< num ph) num)
       (setq num (truncate num 2)))
  (do ()
      ((eql (gcd num ph) 1) num)
       (if (eql (rem num 2) 0) (setq num (+ num 1 )))
  (setq num (+ num 2))))
 
 
;;декодирование числа
(defun decoding (xabp)
  ;;объявление переменных
  (declare (special x))
  (declare (special a))
  (declare (special b))
  (declare (special p))
  (setq x (car xabp))
  (setq a (cadr xabp))
  (setq b (caddr xabp))
  (setq p (cadddr xabp))
  (setq a (expt a x))
  (do ((i 1))
      ((= (mod (- (* i a) b) p) 0) i)
      (setq i (+ i 1))))
 
 
(defun elgamal (text)
  ;;объявление переменных
  (declare (special p))
  (declare (special q))
  (declare (special x))
  (declare (special y))
  (declare (special k))
  (declare (special b))
  (declare (special a))
  (declare (special key))
  (setq p (get_simple_num))
  (setq q (get_simple_num))
  (setq q (mutually_distinct q p))
  (setq x (random p))
  (setq y (mod (expt q x) p))
  (setq k 100000)
  (setq k (mutually_distinct k (- p 1)))
  (setq a (mod (expt q k) p))
  (setq b (mod (* text (expt y k)) p))
  (setq key (list x a b p)))
 
 
(defun set_public_key (xabp)
;;объявление переменных
  (declare (special public_key))
  (setq public_key (cdr xabp)))
 
 
;;считываем сообщение
(setq text 0)
 
(setq input (open "d:\\numbers.txt" :direction :input))
(setq text (read input))
(close input)
 
;;шифрование
(setq key (mapcar 'elgamal text))
;;установка открытого ключа
(setq public_key (mapcar 'set_public_key key))
 
(setq output (open "d:\\coding.txt" :direction :output))
(print 'publc_key output)
(print public_key output)
(terpri output)
(close output)
 
;;дешифровка
(setq decoding_text (mapcar 'decoding key))
(setq output (open "d:\\decoding.txt" :direction :output))
(print decoding_text output)
(terpri output)
(close output)
0
Catstail
Модератор
23617 / 11717 / 2047
Регистрация: 12.02.2012
Сообщений: 19,115
11.05.2017, 23:15 35
Цитата Сообщение от vlisp Посмотреть сообщение
Например наличие содержания is strongly recommended
- а оно есть

Цитата Сообщение от vlisp Посмотреть сообщение
Но проблема в том, что диалог нельзя убрать с экрана, а "ИДЭ" просто перестает реагировать...
- думал над этими словами и, кажется, понял. Вы, допустим, создали диалог, но не предусмотрели орган для его закрытия. Тогда, чтобы закрыть диалог и вернуться в IDE, можно нажать красную кнопку "Stop" на панели инструментов.

Цитата Сообщение от vlisp Посмотреть сообщение
я не понимаю что значат эти слова, но я беру код, копирую его вставляю в "ИДЭ", загружаю код и получаю диалог
- позвольте "повернуть доску другой стороной". Человек получил пощечину, потому, что не понял, что написано. Но зачем пробовать, не понимая? Может, сначала стоит понять? И не надо "вставлять код в IDE", у дизайнера есть кнопочка "сгенерировать лисп-код". Все это описано (если читать документацию).

Тем не менее, я благодарен за критику, польза есть.
0
helter
Эксперт по математике/физике
3778 / 2801 / 304
Регистрация: 12.03.2013
Сообщений: 5,144
11.05.2017, 23:27 36
Кто-то шибко грамотный писал. Может, на диалекте CLtL1 это нормально, но на CL — не надо так.

Если вы считаете, что при выполнении этого кода SBCL где-то отклоняется от стандарта — написали бы где, и в чём отклонение. Впрочем, если приведёте пример содержимого файлов, я скажу, что и почему не работает.

Если уж на то пошло, GCL только частично реализует стандарт ANSI.
0
vlisp
471 / 439 / 105
Регистрация: 10.08.2015
Сообщений: 1,489
Завершенные тесты: 1
11.05.2017, 23:42 37
Цитата Сообщение от Catstail Посмотреть сообщение
Но зачем пробовать, не понимая?
мы так устроены... Просто с этого надо было начать, что диалог должен иметь как минимум одну кнопку завершения. Так сделано например в autolisp, если нет ни одной дефолтной кнопки,то интерпретатор выдает ошибку
Цитата Сообщение от Catstail Посмотреть сообщение
а оно есть
я говорил про это
0
Миниатюры
Почему Лисп не стал популярным языком программирования?  
vlisp
471 / 439 / 105
Регистрация: 10.08.2015
Сообщений: 1,489
Завершенные тесты: 1
11.05.2017, 23:45 38
Цитата Сообщение от helter Посмотреть сообщение
Если уж на то пошло, GCL только частично реализует стандарт ANSI.
самое удивительное, что если запускать код частями, то он работает и в sbcl... но мы опять же вернулись к реализациям
0
Catstail
Модератор
23617 / 11717 / 2047
Регистрация: 12.02.2012
Сообщений: 19,115
11.05.2017, 23:47 39
Цитата Сообщение от vlisp Посмотреть сообщение
мы так устроены...
- Вы меня верно поняли. Я это и имел в виду. Еще раз спасибо за критику.
0
helter
Эксперт по математике/физике
3778 / 2801 / 304
Регистрация: 12.03.2013
Сообщений: 5,144
11.05.2017, 23:52 40
Цитата Сообщение от vlisp Посмотреть сообщение
самое удивительное, что если запускать код частями, то он работает и в sbcl... но мы опять же вернулись к реализациям
Приведите содержимое файлов с данными. Скажите, как запускаете, и какие наблюдаете при этом ошибки. Что вы как студент: «Ыыы, не работаееет».
1
11.05.2017, 23:52
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.05.2017, 23:52

Разве является Delphi языком программирования?
Когда учился, нам четко втемяшили, что Delphi это среда разработки,...

Является ли Delphi современным алгоритмическим языком программирования?
Здравствуйте! Скажите пожалуйста, является ли Delphi современным...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru