powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Почему мы используем Common Lisp в автоматизации бизнеса
25 сообщений из 94, страница 1 из 4
Почему мы используем Common Lisp в автоматизации бизнеса
    #38473664
budden
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поступил вопрос в связи с открытой нами вакансией по Common Lisp:
Зачем вам функциональные языки? ... Типовая компания, ... . Знание торговли, склада, бухгалтерии. Внезапно, ... Lisp.

В вакансиях обсуждение технологий не приветствуется, поэтому пишу здесь.

Common Lisp - это "обычный", императивный язык, хотя про это не все знают.

Как используем? Для скриптов и для сервера приложений.
Почему используем? Два ключевых преимущества:

1. Разработка программы происходит без остановки программы.
Можно, не выходя из приложения, добавить и удалить поля класса или поменять число параметров функции.
Уже существующие в памяти объекты при переопределении класса приводятся в соответствие с
новым определением, как при ALTER TABLE
. Стек тоже не ломается. При возникновении исключения, в
отладчике можно направить исполнение "в другое русло" на любом уровне стека с помощью команд "перезапустить
кадр стека" и "вернуть нужное значение из кадра стека". Поэтому, регулярно бывает так: "падаем" на какой-то проверке в отладчик, исправляем ошибку и продолжаем выполнение дальше. Особенно полезно для долго выполняющихся скриптов.

Я немного интересовался аналогами в других языках и пришёл к выводу, что такого больше нигде нет. Если я неправ - киньте в меня тапком, я его внимательно обнюхаю. Особенно интересно будет услышать мнения пользователей J2EE и Visual Basic.

2. Расширяемый компилятор. Можно создавать новые конструкции языка, при "компиляции" которых
компилятор может делать всё, что угодно: читать из базы данных, интернета, создавать другие файлы, использовать информацию о ранее определённых классах и функциях.

С помощью этого технологично реализуются ORM, Embedded SQL, шаблоны, RAII, pattern matching, юнит-тесты.

Других чудес вроде нет. Перечислю просто хорошее: сборка мусора, компиляция в нативный код, полноценные треды, статическая и динамическая типизация, определение методов над встроенными типами, декораторы, комплишн, рефлексия, идентификаторы на Русском языке, слабые ссылки, лямбды, удобная визуализация в отладчике, кроссплатформенный ГУЙ (в лиспворкс).

См. также http://ecovillage.narod.ru/lisp/lisp-tutorial.htm
...
Рейтинг: 0 / 0
Почему мы используем Common Lisp в автоматизации бизнеса
    #38473693
Гхостик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Насколько я понимаю, макросы в лиспе - половина мощи языка. Вопрос - насколько они легко читаются? Приходится ли поломать голову, чтобы разобраться в нормально написанной год назад конструкции? Не приходится ли писать много комментариев?

Далее, следствия неформата - разве не сложнее найти разработчика, библиотеку, обсудить с кем-то возникающие вопросы? (хотя для последнего есть, на крайний случай, англоязычные форумы).
...
Рейтинг: 0 / 0
Почему мы используем Common Lisp в автоматизации бизнеса
    #38474125
goorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну хоть где-то используют лисп да еще и объясняют почему )
...
Рейтинг: 0 / 0
Почему мы используем Common Lisp в автоматизации бизнеса
    #38474150
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
budden,

Прекрасно. Я не буду отрицать всю озвученную вами мощь языка. Хоть и не знаю Lisp, но поверю на слово.

Вопрос один - зачем это нужно торговой компании, занимающейся продажами книг? Я бы не удивился, если бы девелоперская контора этим пользовалась. Но вы? Какие задачи вы решаете, что вам нужно делать на бою ALTER CLASS? Зачем "торговцам" создавать новые конструкции языка? Зачем вам кросс-платформенный ГУЙ?

PS Повторюсь, не воспринимайте мои слова как критику. Считайте это ликбезом для меня.
...
Рейтинг: 0 / 0
Почему мы используем Common Lisp в автоматизации бизнеса
    #38474234
budden
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ГхостикНасколько я понимаю, макросы в лиспе - половина мощи языка. Вопрос - насколько они легко читаются?
Нормально читаются. Хотя чем мощнее ружье, тем больше будет дырка в голове, если выстрелить в себя.

Какие задачи вы решаете, что вам нужно делать на бою ALTER CLASS?
Не то, что "нужно" - полезно. Для почти любых задач полезно. Я вроде расписал довольно подробно, какие выгоды.

Но если это непонятно, давайте попробуем по аналогии. Представьте себе, что у меня и у вас есть какой-то SQL сервер и система торговли книжками. Но я не знаю о конструкции ALTER TABLE и не пользуюсь ей. Убедите меня в полезности ALTER TABLE.

Один пример новой конструкции языка, используемой у нас:
def-fb-patch. Её аргументы - название, комментарий и тело - скрипт на лиспе, который осуществляет шаг эволюции базы, например, делает alter table. Все такие патчи хранятся в одном файле. Благодаря тому, что это макрос, мы можем знать, какие патчи применены к данной базе, какие нет, когда и кем они применены.
...
Рейтинг: 0 / 0
Почему мы используем Common Lisp в автоматизации бизнеса
    #38474271
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
buddenЯ вроде расписал довольно подробно, какие выгоды.
Да, расписали. Но в общем. Есть конкретика по задачам? Какие-такие задачи (бизнесовые) требуют Lisp?

buddenНо я не знаю о конструкции ALTER TABLE и не пользуюсь ей. Убедите меня в полезности ALTER TABLE.
Чисто теоретически оно вам и не нужно ничего про неё знать, так как нет задач, требующих изменение БД на бою.

Это я к чему все. Не потому, что у вас все неправильно (я не могу об этом судить, ведь вас и не знаю). Я не вижу сферы применения у вас достаточно редкого языка. Поэтому и интересуюсь выполняемыми задачами. Ведь для скриптов можно применять кучу разных и очень популярных движков (C#, JavaScript, Lua, т.п.). Сервер приложений - ASP.NET/WCF/C# (ну или, если Delphi, DataSnap кажется). Онлайн-изменения на бою - это 1) очень неправильная идеология 2) неужели у вас настолько чувствительная к доступности система, что не допускает рестарта сервера приложений в течении условно минуты?
...
Рейтинг: 0 / 0
Почему мы используем Common Lisp в автоматизации бизнеса
    #38474336
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
buddenCommon Lisp - это "обычный", императивный язык, хотя про это не все знают.


Это неправда!
Во-первых, это лучший в мире язык программирования, что уже делает его необычным.
Во-вторых, это гибридный язык, он не императивный, и не функциональный, он -- и такой, и такой.
Он не процедурный, и не объектно-ориентированный, он -- и такой, и такой.


buddenЯ немного интересовался аналогами в других языках и пришёл к выводу, что такого больше нигде нет. Если я неправ - киньте в меня тапком, я его внимательно обнюхаю. Особенно интересно будет услышать мнения пользователей J2EE и Visual Basic.


Ну, scheme ещё есть...
Может быть clojure, хотя я не знаю точно, есть там CONDITIONS или CONTINUATIONS.


buddenДругих чудес вроде нет. Перечислю просто хорошее: сборка мусора, компиляция в нативный код, полноценные треды, статическая и динамическая типизация, определение методов над встроенными типами, декораторы, комплишн, рефлексия, идентификаторы на Русском языке, слабые ссылки, лямбды, удобная визуализация в отладчике, кроссплатформенный ГУЙ (в лиспворкс).

См. также http://ecovillage.narod.ru/lisp/lisp-tutorial.htm

В общем-то мне это всё понятно...
Не понятно, при чём тут Delphi.
Firebird -- ещё ладно, СУБД и СУБД.
...
Рейтинг: 0 / 0
Почему мы используем Common Lisp в автоматизации бизнеса
    #38474342
budden
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arm79, давайте последовательно. Тема ALTER TABLE не раскрыта. У нас тут профильный форум, я вижу вы с SQL работаете. Вы что, всерьёз считаете, что ALTER TABLE не нужен?
...
Рейтинг: 0 / 0
Почему мы используем Common Lisp в автоматизации бизнеса
    #38474346
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ГхостикНасколько я понимаю, макросы в лиспе - половина мощи языка. Вопрос - насколько они легко читаются?


Не всегда макросы используются и вовсе они не половина мощи языка. 1/5, я бы сказал.
Потому что во-первых есть ещё reader macros, и все остальные возможности. Во-вторых, можно
самому их вообще не использовать.

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

ГхостикПриходится ли поломать голову, чтобы разобраться в нормально написанной год назад конструкции? Не приходится ли писать много комментариев?


Зависит от обстоятельств.

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

Легче прочитать код и понять.
...
Рейтинг: 0 / 0
Почему мы используем Common Lisp в автоматизации бизнеса
    #38474347
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arm79budden,

Прекрасно. Я не буду отрицать всю озвученную вами мощь языка. Хоть и не знаю Lisp, но поверю на слово.

Вопрос один - зачем это нужно торговой компании, занимающейся продажами книг? Я бы не удивился, если бы девелоперская контора этим пользовалась. Но вы? Какие задачи вы решаете, что вам нужно делать на бою ALTER CLASS? Зачем "торговцам" создавать новые конструкции языка? Зачем вам кросс-платформенный ГУЙ?

PS Повторюсь, не воспринимайте мои слова как критику. Считайте это ликбезом для меня.

Потому что садится один толковый программер, или 2, и пишут всё за месяц.
А пользователям пофигу на чём, лишь бы работало...
...
Рейтинг: 0 / 0
Почему мы используем Common Lisp в автоматизации бизнеса
    #38474363
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
buddenArm79, давайте последовательно. Тема ALTER TABLE не раскрыта. У нас тут профильный форум, я вижу вы с SQL работаете. Вы что, всерьёз считаете, что ALTER TABLE не нужен?

Я? Я считаю, что для торговой компании нет никакой необходимости в изменении БД. Чистое ИМХО: большинство возникающих задач покрываются типовыми решениями. Типа 1С и так далее. Редкие (я подчеркиваю) хотелки вне типовых решений - аутсорс. Вот, MasterZiv тему рубит :-)

Вы же, по вашим словам, постоянно что-то внедряете и дорабатываете. Мне и стало очень интересно, что это за доработки такие, выбивающиеся из имеющегося у меня образа торговой компании.

Может, у вас сайт есть?
...
Рейтинг: 0 / 0
Почему мы используем Common Lisp в автоматизации бизнеса
    #38474378
budden
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arm79, ну вот, например, меняется закон. Например, добавили в книжку поле "возрастные ограничения". Его надо вывести в прайс-листе. Наши действия?
...
Рейтинг: 0 / 0
Почему мы используем Common Lisp в автоматизации бизнеса
    #38474381
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
buddenArm79, ну вот, например, меняется закон. Например, добавили в книжку поле "возрастные ограничения". Его надо вывести в прайс-листе. Наши действия?
Что, так неожиданно поменялся, что вы о проекте закона не знали? На фрилансе вам за 3 тысячи и поле добавят, и в прайс выведут, и так далее. Да, и тема Лиспа в этой задаче не раскрыта.
...
Рейтинг: 0 / 0
Почему мы используем Common Lisp в автоматизации бизнеса
    #38474401
budden
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arm79,
Онлайн-изменения на бою - это 1) очень неправильная идеология
Я, в общем-то и не писал, что это всегда хорошо. Мы используем это, в основном, в разработке и отладке приложения, а в промышленной базе мы пользуемся отладчиком чаще для изучения ошибок. Исправления вносим на отладочной, проверяем и только потом переносим на боевой сервер.

В случае какого-нибудь скрипта перекачки данных из одной базы в другую, если скрипт идёт час, а ошибку исправить 1 минута, то мы экономим полчаса, по сравнению с другими скриптовыми языками. У нас каждую ночь идёт скрипт длительностью около двух часов. Он сложный и иногда в нём возникают ошибки из-за кривых входных данных или сбоев оборудования. А утром база должна быть предоставлена пользователям. Трудно сосчитать, сколько часов ночной работы сэкономлено благодаря отладчику лиспа.

что не допускает рестарта сервера приложений в течении условно минуты?
Условно минуты или точно минуты? У вас есть сервер приложений? Вы его отлаживаете? Сколько времени у вас занимает поменять одну строчку в приложении и перезапустить сервер?
...
Рейтинг: 0 / 0
Почему мы используем Common Lisp в автоматизации бизнеса
    #38474428
budden
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arm79, ну если у нас аутсорс-фриланс, то тогда лисп точно не нужен.
...
Рейтинг: 0 / 0
Почему мы используем Common Lisp в автоматизации бизнеса
    #38474431
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
buddenArm79, ну вот, например, меняется закон. Например, добавили в книжку поле "возрастные ограничения". Его надо вывести в прайс-листе. Наши действия?
Забавный подход... Такие вещи (атрибуты) не делаются полями таблиц, а делаются в виде справочников (иногда плавающих).
У меня, к примеру, в ПО можно прикрутить к любому объекту любой параметр и установить/получить его значение с помощью процедур. И это делается без изменения ПО и перезапуска сервера .
...
Рейтинг: 0 / 0
Почему мы используем Common Lisp в автоматизации бизнеса
    #38474438
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
budden,

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

Мои сервера приложений рестартуют в течении нескольких секунд. Если это веб-сервисы, то они хостятся IIS (который может по своему усмотрению перезапускать, да и при правках в Web.config).

Отлаживаю все приложения, естественно, на своем компьютере, прогоняю через тесты по значимым моментам.
...
Рейтинг: 0 / 0
Почему мы используем Common Lisp в автоматизации бизнеса
    #38474448
budden
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv, Delphi - по ряду причин.

С библиотеками у Дельфи ситуация в чём-то лучше, чем у CL. Поэтому
стараемся сочетать сильные стороны.

Насчёт "сядет и за два месяца напишет" - это миф. Да, разработка на лиспе идёт быстрее,
но нужно учесть, сколько тысяч человеко-лет вложено в библиотеки для того же Дельфи.
Не в 10000 раз же этот компьютерный гений быстрее работает.
...
Рейтинг: 0 / 0
Почему мы используем Common Lisp в автоматизации бизнеса
    #38474459
budden
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arm79, вы уж извините за вопрос. Вы мне много вопросов задали. Какие у вас задачи?
...
Рейтинг: 0 / 0
Почему мы используем Common Lisp в автоматизации бизнеса
    #38474462
budden
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и ещё я спросил "Сколько времени у вас занимает поменять одну строчку в приложении и перезапустить сервер? ", а вы мне ответили, сколько времени сервера приложений рестартуют. Это ответ не совсем на тот вопрос.
...
Рейтинг: 0 / 0
Почему мы используем Common Lisp в автоматизации бизнеса
    #38474467
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
buddenArm79, вы уж извините за вопрос. Вы мне много вопросов задали. Какие у вас задачи?

У меня масса задач. В основном - Server Side. Высокоскоростное общение с клиентами, ЭЦП, интеграционные задачи, SQL (в части OLTP). В последнее время Siebel ковыряю.
...
Рейтинг: 0 / 0
Почему мы используем Common Lisp в автоматизации бизнеса
    #38474470
budden
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadmanbuddenArm79, ну вот, например, меняется закон. Например, добавили в книжку поле "возрастные ограничения". Его надо вывести в прайс-листе. Наши действия?
Забавный подход... Такие вещи (атрибуты) не делаются полями таблиц, а делаются в виде справочников (иногда плавающих).
У меня, к примеру, в ПО можно прикрутить к любому объекту любой параметр и установить/получить его значение с помощью процедур. И это делается без изменения ПО и перезапуска сервера .
Я рад, что у вас такое славное "ПО", только не совсем понятно, что вы под этим понимаете. А что такое "процедура"? Она находится внутри "ПО" или снаружи?
...
Рейтинг: 0 / 0
Почему мы используем Common Lisp в автоматизации бизнеса
    #38474474
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
buddenи ещё я спросил "Сколько времени у вас занимает поменять одну строчку в приложении и перезапустить сервер? ", а вы мне ответили, сколько времени сервера приложений рестартуют. Это ответ не совсем на тот вопрос.

Одну строку? Открыть студию (секунд 20-30), поменять (минута), перекомпилировать (пару секунд), прогнать тесты (не более минуты), выложить библиотеку на сервер (минута), перезапустить сервер (несколько секунд)
...
Рейтинг: 0 / 0
Почему мы используем Common Lisp в автоматизации бизнеса
    #38474482
Нелояльный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
budden, у вас бизнес-логика где-то сосредоточена или разбросана повсюду?
...
Рейтинг: 0 / 0
Почему мы используем Common Lisp в автоматизации бизнеса
    #38474485
budden
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arm79, вот, SQL. Хорошо. Вы alter table делаете или нет?
...
Рейтинг: 0 / 0
25 сообщений из 94, страница 1 из 4
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Почему мы используем Common Lisp в автоматизации бизнеса
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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