42 / 8 / 0
Регистрация: 27.01.2016
Сообщений: 9
|
|
1 | |
Почему Лисп не стал популярным языком программирования?10.05.2017, 10:01. Показов 26847. Ответов 448
Метки нет (Все метки)
Спасибо большое за помощь!
Как итог мне надо было написать макрос чтения, который из конструкции вида #[1 11] делал список (2 3 5 7 11), при этом если начальное или конечное значение во входных данных отрицательное, то должно выводиться nil. Макрос вроде получился (во всяком случае проверки по значениям #[1 11]; #[-7 11]; #[1 -7] выдают то, что мне требовалось). Ещё раз спасибо! З.Ы. Интересный, конечно, язык Lisp. Только не понимаю почему он несильно популярный и мало известных продуктов на нём написано?
0
|
10.05.2017, 10:01 | |
Ответы с готовыми решениями:
448
Firefox 3.5 стал самым популярным в мире Нужно определиться с языком программирования Является ли html языком программирования? Нужно определиться с языком программирования |
618 / 938 / 150
Регистрация: 10.08.2015
Сообщений: 4,987
|
|
10.05.2017, 13:22 | 2 |
0
|
4527 / 3521 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
|
|
10.05.2017, 13:52 | 3 |
Интересно. А я пойму? В чём вообще проблема написания судоку? (Вопрос без подвоха — я не думал об алгоритме.)
0
|
defun
603 / 617 / 44
Регистрация: 30.04.2011
Сообщений: 702
|
|
10.05.2017, 13:52 | 4 |
0
|
618 / 938 / 150
Регистрация: 10.08.2015
Сообщений: 4,987
|
|
10.05.2017, 14:28 | 5 |
Вряд ли, у тебя профессиональная деформация. и дело тут не в алгоритме, а в недружелюбности лисповой парадигмы. попробуй представить, что ты забыл все о лиспе, что знал и у тебя задача сделать игру судоку, а в помощниках только гугл. впрочем это уже отдельная тема.
уверен?
0
|
defun
603 / 617 / 44
Регистрация: 30.04.2011
Сообщений: 702
|
|
10.05.2017, 14:32 | 6 |
1
|
42 / 8 / 0
Регистрация: 27.01.2016
Сообщений: 9
|
|
10.05.2017, 14:33 [ТС] | 7 |
тут дело не во мне, так как я изучаю Lisp всего пару месяцев (и то без интенсива), я задал этот вопрос исключительно из любопытства и хотел поинтересоваться что думают на этот счёт продвинутые и опытные прогеры Лиспа.
Просто за этот короткий промежуток времени, что я изучаю Лисп мне он показался настолько интересным, необычным и главное мощным. Привыкание к своеобразности синтаксиса приходит уже через месяц, и ощущения сложности написания программ на Лиспе, у меня лично, не появилось, а наоборот мне показалось что в нём настолько всё гибко и продумано, что можно брать планировать продукт и начать реализовывать.
2
|
4527 / 3521 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
|
|
10.05.2017, 15:09 | 8 |
Про профессиональную деформацию не понял. Про парадигму тоже не понял. Но если какой-то язык не знать и пытаться накорябать что-то с помощью гугла — согласен, что будет трудно хоть с си, хоть с перлом, хоть с хаскеллом. Опять же не понял, в чём особенность лиспа.
Короче, больше не понял, чем понял. В принципе, судоку, наверно, просто решается в лоб: найти клетку с наименьшим числом вариантов и перебирать эти варианты; а если их нет — нет решения. Писать скучно. Например, такая реализация: судоку задаётся в качестве списка списков; по этому списку строим замыкание candidates, которое по i j возвращает список кандидатов в клетке (так неэффективный список переваривается в скомпилированную функцию), потом дело техники — применяем это замыкание ко всем пустым клеткам, минимизируем, рекурсия. Подводных камней не видно. Не примазываюсь к продвинутым и опытным прогерам лиспа, но я подумал следующее: «Ещё один бездельник за халявой припёрся.» Большинство посетителей этого раздела интересуются не лиспом, а зачётами, при этом не желая ничего делать. Был бы рад ошибиться на ваш счёт.
1
|
42 / 8 / 0
Регистрация: 27.01.2016
Сообщений: 9
|
|
10.05.2017, 15:41 [ТС] | 9 |
Нет, я начал прохождение курса не ради зачёта (мои институтские годы уже прошли ) и даже не ради сертификата (хотя его получение будет приятным бонусом), а ради саморазвития себя как программиста, для начала освоения функциональной парадигмы и увеличения перспектив на будущее.
Я люблю программировать и люблю разбираться в тонкостях при решении каких-либо задач (иногда задачи касаются только меня и я сам себе делаю постановку ). Не скрою, при прохождении данного курса я пользовался данным форумом (и не только, благо гуглить научился ), но исключительно для поиска части решения полной задачи (собственно данная тема один из таких поисков, но как написал позже вся задача всё-таки больше запрошенного в начале темы вопроса). Плюс необходимость в помощи некоторых решений начала возникать уже когда уровень задач требовал большего времени на изучение (помимо курса по программированию на Лиспе у меня ещё есть основная работа, занятия с репетитором по английскому и семья из четырех человек )) ) Поэтому да, у меня нет цели "нашёл решение-скопировал-сдал-забыл", моя цель: "начал реализацию самостоятельно-запнулся-поискал что-то подобное в чём появился затык-разобрался в том какое решение нашёл-осознал его-сдал-просмотрел или применил часть решения в другой задаче". А вы можете что-то сказать по этому поводу: ?
0
|
618 / 938 / 150
Регистрация: 10.08.2015
Сообщений: 4,987
|
|
10.05.2017, 16:01 | 10 |
вот такая программка как ориентир, ограничение по весу дистрибутива - 10 мб, не обязательно судоку, это не принципиально, хоть тетрис, хоть три в ряд, любая простая игра, которая на c++ пишется за час.
0
|
2304 / 1063 / 77
Регистрация: 12.03.2013
Сообщений: 4,987
|
|
10.05.2017, 16:29 | 11 |
Порог вхождения не самый маленький. Не в последнюю очередь из-за синтаксиса.
Добавлено через 1 минуту Хорошие ощущения У меня приблизительно точно также было. Конкретно Common Lisp весьма продуманный язык и, безусловно, production ready. Добавлено через 2 минуты А почему именно такое ограничение? А вообще судоку писать действительно не интересно и можно написать на чём угодно. Резона писать именно на Lisp особого нет.
2
|
Модератор
3051 / 2193 / 459
Регистрация: 26.03.2015
Сообщений: 8,469
|
||||||
10.05.2017, 17:32 | 12 | |||||
Вот для примера программа (из учебника), которая
1. создаёт случайный лабиринт 2. выбирает в нём две случайные точки 3. находит путь между этими точками 4. отображает лабиринт и путь
4
|
Модератор
3051 / 2193 / 459
Регистрация: 26.03.2015
Сообщений: 8,469
|
|
10.05.2017, 17:35 | 13 |
Пример результата работы:
1
|
Модератор
|
|
10.05.2017, 18:30 | 14 |
Можно взглянуть и на визуализацию Ханойской башни. Код сложностью не поражает...
1
|
4527 / 3521 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
|
|
10.05.2017, 19:06 | 15 |
x33x, это здорово. Если что, пишите вопросы. Обсуждать интересно, решать студентам задачи ― неинтересно.
Потому что непопсовый. Ах, так вы о формошлёпстве? Не, это ― увольте. ЕМНИП я выкладывал калькулятор на CommonQt, хватит с меня учебного формошлёпства. Если ваш судоку можно сделать на Qt, его примерно так же можно сделать и на CommonQt. (Я не знаю Qt, поэтому мне приходится писать в обнимку с гуглом и жалуясь про себя на недружелюбную парадигму C++.) Было бы занятно сделать на макклиме. Щас вот, его ещё попилят...
2
|
Модератор
|
|
10.05.2017, 19:57 | 16 |
Почему Лисп не стал мейнстримовым? Можно назвать много причин... Например: Лисп хорош для сложных рекурсивных алгоритмов, а первые программы на ЭВМ носили чисто вычислительный характер. Сформировались поколения программистов, которые только вычисляли. А вычисления - не сильная сторона Лиспа. Потом эти поколения стали задавать тон. Императивный стиль стал стандартом де факто. Помню, лет 30 назад от рекурсии шарахались, как чёрт от ладана. Является ли императивный стиль более близким нашему мышлению, чем логический и функциональный? Не знаю, как проверить, когда все поголовно "инфицированы императивщиной"? В общем корни вопроса - в изучении мышления.
3
|
618 / 938 / 150
Регистрация: 10.08.2015
Сообщений: 4,987
|
|
11.05.2017, 01:23 | 17 |
Давайте подведем итоги:
1) нет никакого лиспа, а есть разрозненное семейство языков, напоминающих классический лисп, но им не являющееся. 2) Более того, если понимать под лиспом Common LISP, то нужно отталкиваться от реализаций, а не от самого языка и большинство бесплатных реализаций не имеют из коробки функционала для работы с графическим интерфейсом (уже это ставит под вопрос утверждение про "язык общего назначения") 3) Отсутствие информации. Откройте CLHS и вы не найдете ничего, что вам поможет написать даже элементарную игрушку типа тетриса или судоку. Более того, нет ни одной нормальной книги по лиспу, где разбирались бы вопросы прикладного программирования. Есть pcl, но он как раз только добавляет отчаяния... Такое чувство, и я уже об этом говорил, что их писали люди далекие от реальности, погруженные в свои никому непонятные проблемы. Эти проблемы называются back-end. back-end - это удел скриптовых языков. Без front-end, язык никогда не станет популярным. 4) Отсутствие среды разработки. Не знаю, чем нужно было думать, чтоб не создать нормальное бесплатное средство разработки, как например Лазарус, CodeBlocks, SharpDevelop и т.д. Ну вот есть компилятор digital mars c++ кто-то помнит о нем? 5) Отсутствие библиотек. Библиотеки в CL как и в с++ - сферический конь в вакууме. Они вроде есть, но их нужно скачать, установить... 6) Как итог 3, 4, 5 пунктов. Это какой-то садомазохизм мне кажется. компилятор качай отсюда, среду качай оттуда, библиотеки вообще сам ищи... потом еще попробуй это настрой... Такой конструктор для новичков - адская боль, а никак не скобочный синтаксис 7) Вся инфа по библиотекам на английском, как говорят хочешь жить, умей вертеться. 8) Есть диалекты, в которых уже реализованы танцы с бубном. например, clojure или newlisp используют java. Как по мне это жульничество. Да и с CL они несовместимы. 9) Отсутствие энтузиазмов. Длительное игнорирование конъюнктуры рынка, сделало CL аутсайдером в современном мире разработки ПО. Впрочем он никогда и не претендовал на лидирующие роли. Недавно лисп выдворили из престижного американского университета, хотя питон, как по мне, - тот же геморрой. Отсутствие библиотек из коробки никак не добавляет энтузиазизма. 10) Касаемо HomeLisp, здесь целый букет радости и боли для новичка. Тут можно создавать диалоги прям из коробки, "ничего не подключая". НО: -- отсутствие нормального репозитория -- отсутствие нормального IDE -- отсутствие нормальной справки -- бардак в папке с примерами -- бардак в папке с библиотеками, как по мне, наименование библиотек разными именами не оправдано. Зачем каждый раз менять в коде название библиотеки? -- отсутствие возможности загружать несколько библиотек на старте. делают жизнь новичка наполненной яркими красками... Для сравнения первую программу в Лазарус можно написать где-то через полчаса после того как вы узнали о его существовании. Почти тоже самое с SharpDevelop. С Лиспом так не получится, так как лисп это боль и разочарование. Насчет профдеформации... Профдеформация - это состояние при котором программист мыслит приобретенными штампами, стереотипами и логическими моделями. Яркий пример - "формошлепство" Многие программисты не умеют создавать графический интерфейс пользователя. Я встречал профессиональных разработчиков, которые специально делали интерфейс неудобным, потом переделывали его и ставили это себе в заслугу. На самом деле формошлепство - это не так просто. Более того, это не преподают в университетах, так что научиться можно только сравнивая. Именно поэтому формошлепство считается работой низкого уровня... Конечно, лучше же в консоли за 50-60 строк. Здесь я часто встречаю ситуацию, когда люди путают программный код и программный продукт. Но это далеко не эквивалентные вещи. Разработка простых логических игр - отличный способ попрактиковаться в программировании. Конечно должна быть какая-то основа, но надо четко понимать, зачем изучают те или иные вещи. Просто сравните ветки лиспа и ветку си шарпа. А куда деваются те, кто клянчат решения в ветках QB, TP, LISP, С++. А посмотрите как выглядят сайты, где можно, скачать запчасти для лиспа. Когда на них заходишь ощущаешь себя пришельцем из будущего... Можно конечно возразить в духе "но у лиспа ж есть мощные макросы". Да. Но кому интересен back-end который крутится на серверах не пойми где... Да и часто вы пользуетесь макросами? Просто такая игра на c++ будет весить максимум 5 мб, так что двойная фора. зы. странно, я адресовал сообщение новичку, а откликнулись совсем не новички. зызы. catstail, если вам не безразлично, какое мнение о вашем детище может возникнуть у новичка, наведите порядок в папке с примерами. Особенно, там где вызываются диалоги, потому что, ну, так нельзя, при всем уважении... если создаете диалог, его надо уничтожить, если открываете диалог, дайте пользователю его закрыть... уберите хлам и каталогизируйте примеры по темам и наполните их комментариями. Папка с примерами - это одно из самых важных составляющих программного продукта. Это вещь от которой загораются глаза и роятся идеи...
0
|
4527 / 3521 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
|
|
11.05.2017, 04:08 | 18 |
0
|
2304 / 1063 / 77
Регистрация: 12.03.2013
Сообщений: 4,987
|
|
11.05.2017, 10:06 | 19 |
Что такое классический Lisp? Перволисп от Маккарти?
Как раз таки наоборот, одна из сильный сторон CL - это стандарт. В связи с этим многие библиотеки делаются переносимыми между реализациями и платформами. Конечно не имеют. UI - библиотечный вопрос, не языковой. Добавлено через 3 минуты Информации более чем достаточно. Хм. А вы хотели в справочнике созданному на основе стандарта языка найти пример реализации тетриса или судоку? Добавлено через 1 минуту PCL, PAIP. Прикладнее некуда Добавлено через 3 минуты Что значит непонятные? Какая практика в PCL тебе не понятна? Проблемы описанные в PCL типовые и абсолютно ясные. Зейбель как раз таки приземлённый практик. Если я не ошибаюсь, он долгое время писал на Java. Добавлено через 2 минуты Добавлено через 1 минуту Это не правда. Emacs + slime непревзойдён. Добавлено через 2 минуты Quicklisp. В отличие от C++, Lisp сообщество (а точнее Xach), сделали таки централизованный package manager, с которым все согласны Добавлено через 3 минуты Никто ничего не игнорирует. Просто Lisp-еров немного. Всё не успеть. Добавлено через 2 минуты Это ты о Python что-ли? Там библиотек поставляемых в коробке больше, чем библиотек в Quicklisp Добавлено через 3 минуты Тут я согласен. Писать UI - задача не простая. Справедливости ради, самая интересная часть - UX дизайн. Формошлёпством обычно называют непосредственно реализацию, что на самом деле не всегда интересно.
3
|
Модератор
3051 / 2193 / 459
Регистрация: 26.03.2015
Сообщений: 8,469
|
|
11.05.2017, 11:48 | 20 |
Нужна такая IDE, чтобы запустил инсталятор, пару раз кликнул Ок - и всё установилось.
Потом открыл Справку или у спросил у гугла "как создать виндоуз приложение", а там написано по шагам "в меню Файл выберете пункт Новый Проект, в открывшемся окне..." и так далее. Иначе это не для новичков. Предположим, я ничего не знаю про Лисп. Где мне найти инструкции (подробные и с картинками), как создать простое приложение с пользовательским интерфейсом? (настольное или веб) Что-нибудь типа https://docs.microsoft.com/en-... ng-started
1
|
11.05.2017, 11:48 | |
11.05.2017, 11:48 | |
Помогаю со студенческими работами здесь
20
Разве является Delphi языком программирования? Является ли Delphi современным алгоритмическим языком программирования? Си является языком программирования низкого уровня или высокого? Почему первый Лисп называют функциональным? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |