|
|
|
Почему мы используем Common Lisp в автоматизации бизнеса
|
|||
|---|---|---|---|
|
#18+
Поступил вопрос в связи с открытой нами вакансией по 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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2013, 02:09 |
|
||
|
Почему мы используем Common Lisp в автоматизации бизнеса
|
|||
|---|---|---|---|
|
#18+
Насколько я понимаю, макросы в лиспе - половина мощи языка. Вопрос - насколько они легко читаются? Приходится ли поломать голову, чтобы разобраться в нормально написанной год назад конструкции? Не приходится ли писать много комментариев? Далее, следствия неформата - разве не сложнее найти разработчика, библиотеку, обсудить с кем-то возникающие вопросы? (хотя для последнего есть, на крайний случай, англоязычные форумы). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2013, 05:47 |
|
||
|
Почему мы используем Common Lisp в автоматизации бизнеса
|
|||
|---|---|---|---|
|
#18+
Ну хоть где-то используют лисп да еще и объясняют почему ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2013, 12:43 |
|
||
|
Почему мы используем Common Lisp в автоматизации бизнеса
|
|||
|---|---|---|---|
|
#18+
budden, Прекрасно. Я не буду отрицать всю озвученную вами мощь языка. Хоть и не знаю Lisp, но поверю на слово. Вопрос один - зачем это нужно торговой компании, занимающейся продажами книг? Я бы не удивился, если бы девелоперская контора этим пользовалась. Но вы? Какие задачи вы решаете, что вам нужно делать на бою ALTER CLASS? Зачем "торговцам" создавать новые конструкции языка? Зачем вам кросс-платформенный ГУЙ? PS Повторюсь, не воспринимайте мои слова как критику. Считайте это ликбезом для меня. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2013, 12:51 |
|
||
|
Почему мы используем Common Lisp в автоматизации бизнеса
|
|||
|---|---|---|---|
|
#18+
ГхостикНасколько я понимаю, макросы в лиспе - половина мощи языка. Вопрос - насколько они легко читаются? Нормально читаются. Хотя чем мощнее ружье, тем больше будет дырка в голове, если выстрелить в себя. Какие задачи вы решаете, что вам нужно делать на бою ALTER CLASS? Не то, что "нужно" - полезно. Для почти любых задач полезно. Я вроде расписал довольно подробно, какие выгоды. Но если это непонятно, давайте попробуем по аналогии. Представьте себе, что у меня и у вас есть какой-то SQL сервер и система торговли книжками. Но я не знаю о конструкции ALTER TABLE и не пользуюсь ей. Убедите меня в полезности ALTER TABLE. Один пример новой конструкции языка, используемой у нас: def-fb-patch. Её аргументы - название, комментарий и тело - скрипт на лиспе, который осуществляет шаг эволюции базы, например, делает alter table. Все такие патчи хранятся в одном файле. Благодаря тому, что это макрос, мы можем знать, какие патчи применены к данной базе, какие нет, когда и кем они применены. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2013, 13:22 |
|
||
|
Почему мы используем Common Lisp в автоматизации бизнеса
|
|||
|---|---|---|---|
|
#18+
buddenЯ вроде расписал довольно подробно, какие выгоды. Да, расписали. Но в общем. Есть конкретика по задачам? Какие-такие задачи (бизнесовые) требуют Lisp? buddenНо я не знаю о конструкции ALTER TABLE и не пользуюсь ей. Убедите меня в полезности ALTER TABLE. Чисто теоретически оно вам и не нужно ничего про неё знать, так как нет задач, требующих изменение БД на бою. Это я к чему все. Не потому, что у вас все неправильно (я не могу об этом судить, ведь вас и не знаю). Я не вижу сферы применения у вас достаточно редкого языка. Поэтому и интересуюсь выполняемыми задачами. Ведь для скриптов можно применять кучу разных и очень популярных движков (C#, JavaScript, Lua, т.п.). Сервер приложений - ASP.NET/WCF/C# (ну или, если Delphi, DataSnap кажется). Онлайн-изменения на бою - это 1) очень неправильная идеология 2) неужели у вас настолько чувствительная к доступности система, что не допускает рестарта сервера приложений в течении условно минуты? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2013, 13:35 |
|
||
|
Почему мы используем Common Lisp в автоматизации бизнеса
|
|||
|---|---|---|---|
|
#18+
buddenCommon Lisp - это "обычный", императивный язык, хотя про это не все знают. Это неправда! Во-первых, это лучший в мире язык программирования, что уже делает его необычным. Во-вторых, это гибридный язык, он не императивный, и не функциональный, он -- и такой, и такой. Он не процедурный, и не объектно-ориентированный, он -- и такой, и такой. buddenЯ немного интересовался аналогами в других языках и пришёл к выводу, что такого больше нигде нет. Если я неправ - киньте в меня тапком, я его внимательно обнюхаю. Особенно интересно будет услышать мнения пользователей J2EE и Visual Basic. Ну, scheme ещё есть... Может быть clojure, хотя я не знаю точно, есть там CONDITIONS или CONTINUATIONS. buddenДругих чудес вроде нет. Перечислю просто хорошее: сборка мусора, компиляция в нативный код, полноценные треды, статическая и динамическая типизация, определение методов над встроенными типами, декораторы, комплишн, рефлексия, идентификаторы на Русском языке, слабые ссылки, лямбды, удобная визуализация в отладчике, кроссплатформенный ГУЙ (в лиспворкс). См. также http://ecovillage.narod.ru/lisp/lisp-tutorial.htm В общем-то мне это всё понятно... Не понятно, при чём тут Delphi. Firebird -- ещё ладно, СУБД и СУБД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2013, 13:58 |
|
||
|
Почему мы используем Common Lisp в автоматизации бизнеса
|
|||
|---|---|---|---|
|
#18+
Arm79, давайте последовательно. Тема ALTER TABLE не раскрыта. У нас тут профильный форум, я вижу вы с SQL работаете. Вы что, всерьёз считаете, что ALTER TABLE не нужен? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2013, 14:01 |
|
||
|
Почему мы используем Common Lisp в автоматизации бизнеса
|
|||
|---|---|---|---|
|
#18+
ГхостикНасколько я понимаю, макросы в лиспе - половина мощи языка. Вопрос - насколько они легко читаются? Не всегда макросы используются и вовсе они не половина мощи языка. 1/5, я бы сказал. Потому что во-первых есть ещё reader macros, и все остальные возможности. Во-вторых, можно самому их вообще не использовать. Они читаются на самом деле настолько хорошо, насколько хорошо ты их напишешь. Примерно треть всех стандартных конструкций языка -- на самом деле макросы. Например, IF. Ну нормально он читается, все редакторы понимают (и поймут твои макросы, если ты их нормально напишешь). ГхостикПриходится ли поломать голову, чтобы разобраться в нормально написанной год назад конструкции? Не приходится ли писать много комментариев? Зависит от обстоятельств. ГхостикДалее, следствия неформата - разве не сложнее найти разработчика, библиотеку, обсудить с кем-то возникающие вопросы? (хотя для последнего есть, на крайний случай, англоязычные форумы). Легче прочитать код и понять. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2013, 14:03 |
|
||
|
Почему мы используем Common Lisp в автоматизации бизнеса
|
|||
|---|---|---|---|
|
#18+
Arm79budden, Прекрасно. Я не буду отрицать всю озвученную вами мощь языка. Хоть и не знаю Lisp, но поверю на слово. Вопрос один - зачем это нужно торговой компании, занимающейся продажами книг? Я бы не удивился, если бы девелоперская контора этим пользовалась. Но вы? Какие задачи вы решаете, что вам нужно делать на бою ALTER CLASS? Зачем "торговцам" создавать новые конструкции языка? Зачем вам кросс-платформенный ГУЙ? PS Повторюсь, не воспринимайте мои слова как критику. Считайте это ликбезом для меня. Потому что садится один толковый программер, или 2, и пишут всё за месяц. А пользователям пофигу на чём, лишь бы работало... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2013, 14:04 |
|
||
|
Почему мы используем Common Lisp в автоматизации бизнеса
|
|||
|---|---|---|---|
|
#18+
buddenArm79, давайте последовательно. Тема ALTER TABLE не раскрыта. У нас тут профильный форум, я вижу вы с SQL работаете. Вы что, всерьёз считаете, что ALTER TABLE не нужен? Я? Я считаю, что для торговой компании нет никакой необходимости в изменении БД. Чистое ИМХО: большинство возникающих задач покрываются типовыми решениями. Типа 1С и так далее. Редкие (я подчеркиваю) хотелки вне типовых решений - аутсорс. Вот, MasterZiv тему рубит :-) Вы же, по вашим словам, постоянно что-то внедряете и дорабатываете. Мне и стало очень интересно, что это за доработки такие, выбивающиеся из имеющегося у меня образа торговой компании. Может, у вас сайт есть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2013, 14:09 |
|
||
|
Почему мы используем Common Lisp в автоматизации бизнеса
|
|||
|---|---|---|---|
|
#18+
Arm79, ну вот, например, меняется закон. Например, добавили в книжку поле "возрастные ограничения". Его надо вывести в прайс-листе. Наши действия? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2013, 14:16 |
|
||
|
Почему мы используем Common Lisp в автоматизации бизнеса
|
|||
|---|---|---|---|
|
#18+
buddenArm79, ну вот, например, меняется закон. Например, добавили в книжку поле "возрастные ограничения". Его надо вывести в прайс-листе. Наши действия? Что, так неожиданно поменялся, что вы о проекте закона не знали? На фрилансе вам за 3 тысячи и поле добавят, и в прайс выведут, и так далее. Да, и тема Лиспа в этой задаче не раскрыта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2013, 14:18 |
|
||
|
Почему мы используем Common Lisp в автоматизации бизнеса
|
|||
|---|---|---|---|
|
#18+
Arm79, Онлайн-изменения на бою - это 1) очень неправильная идеология Я, в общем-то и не писал, что это всегда хорошо. Мы используем это, в основном, в разработке и отладке приложения, а в промышленной базе мы пользуемся отладчиком чаще для изучения ошибок. Исправления вносим на отладочной, проверяем и только потом переносим на боевой сервер. В случае какого-нибудь скрипта перекачки данных из одной базы в другую, если скрипт идёт час, а ошибку исправить 1 минута, то мы экономим полчаса, по сравнению с другими скриптовыми языками. У нас каждую ночь идёт скрипт длительностью около двух часов. Он сложный и иногда в нём возникают ошибки из-за кривых входных данных или сбоев оборудования. А утром база должна быть предоставлена пользователям. Трудно сосчитать, сколько часов ночной работы сэкономлено благодаря отладчику лиспа. что не допускает рестарта сервера приложений в течении условно минуты? Условно минуты или точно минуты? У вас есть сервер приложений? Вы его отлаживаете? Сколько времени у вас занимает поменять одну строчку в приложении и перезапустить сервер? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2013, 14:28 |
|
||
|
Почему мы используем Common Lisp в автоматизации бизнеса
|
|||
|---|---|---|---|
|
#18+
Arm79, ну если у нас аутсорс-фриланс, то тогда лисп точно не нужен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2013, 14:38 |
|
||
|
Почему мы используем Common Lisp в автоматизации бизнеса
|
|||
|---|---|---|---|
|
#18+
buddenArm79, ну вот, например, меняется закон. Например, добавили в книжку поле "возрастные ограничения". Его надо вывести в прайс-листе. Наши действия? Забавный подход... Такие вещи (атрибуты) не делаются полями таблиц, а делаются в виде справочников (иногда плавающих). У меня, к примеру, в ПО можно прикрутить к любому объекту любой параметр и установить/получить его значение с помощью процедур. И это делается без изменения ПО и перезапуска сервера . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2013, 14:40 |
|
||
|
Почему мы используем Common Lisp в автоматизации бизнеса
|
|||
|---|---|---|---|
|
#18+
budden, При всем уважении. У вас столько разных баз, с разной структурой, что вы не можете один раз написать скрипт с учетом кривизны данных? Фраза про оборудование немного смущает. Это насколько часто оно должно ломаться, чтобы упоминать об этом? Мои сервера приложений рестартуют в течении нескольких секунд. Если это веб-сервисы, то они хостятся IIS (который может по своему усмотрению перезапускать, да и при правках в Web.config). Отлаживаю все приложения, естественно, на своем компьютере, прогоняю через тесты по значимым моментам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2013, 14:41 |
|
||
|
Почему мы используем Common Lisp в автоматизации бизнеса
|
|||
|---|---|---|---|
|
#18+
MasterZiv, Delphi - по ряду причин. С библиотеками у Дельфи ситуация в чём-то лучше, чем у CL. Поэтому стараемся сочетать сильные стороны. Насчёт "сядет и за два месяца напишет" - это миф. Да, разработка на лиспе идёт быстрее, но нужно учесть, сколько тысяч человеко-лет вложено в библиотеки для того же Дельфи. Не в 10000 раз же этот компьютерный гений быстрее работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2013, 14:44 |
|
||
|
Почему мы используем Common Lisp в автоматизации бизнеса
|
|||
|---|---|---|---|
|
#18+
Arm79, вы уж извините за вопрос. Вы мне много вопросов задали. Какие у вас задачи? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2013, 14:49 |
|
||
|
Почему мы используем Common Lisp в автоматизации бизнеса
|
|||
|---|---|---|---|
|
#18+
и ещё я спросил "Сколько времени у вас занимает поменять одну строчку в приложении и перезапустить сервер? ", а вы мне ответили, сколько времени сервера приложений рестартуют. Это ответ не совсем на тот вопрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2013, 14:50 |
|
||
|
Почему мы используем Common Lisp в автоматизации бизнеса
|
|||
|---|---|---|---|
|
#18+
buddenArm79, вы уж извините за вопрос. Вы мне много вопросов задали. Какие у вас задачи? У меня масса задач. В основном - Server Side. Высокоскоростное общение с клиентами, ЭЦП, интеграционные задачи, SQL (в части OLTP). В последнее время Siebel ковыряю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2013, 14:53 |
|
||
|
Почему мы используем Common Lisp в автоматизации бизнеса
|
|||
|---|---|---|---|
|
#18+
wadmanbuddenArm79, ну вот, например, меняется закон. Например, добавили в книжку поле "возрастные ограничения". Его надо вывести в прайс-листе. Наши действия? Забавный подход... Такие вещи (атрибуты) не делаются полями таблиц, а делаются в виде справочников (иногда плавающих). У меня, к примеру, в ПО можно прикрутить к любому объекту любой параметр и установить/получить его значение с помощью процедур. И это делается без изменения ПО и перезапуска сервера . Я рад, что у вас такое славное "ПО", только не совсем понятно, что вы под этим понимаете. А что такое "процедура"? Она находится внутри "ПО" или снаружи? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2013, 14:53 |
|
||
|
Почему мы используем Common Lisp в автоматизации бизнеса
|
|||
|---|---|---|---|
|
#18+
buddenи ещё я спросил "Сколько времени у вас занимает поменять одну строчку в приложении и перезапустить сервер? ", а вы мне ответили, сколько времени сервера приложений рестартуют. Это ответ не совсем на тот вопрос. Одну строку? Открыть студию (секунд 20-30), поменять (минута), перекомпилировать (пару секунд), прогнать тесты (не более минуты), выложить библиотеку на сервер (минута), перезапустить сервер (несколько секунд) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2013, 14:55 |
|
||
|
Почему мы используем Common Lisp в автоматизации бизнеса
|
|||
|---|---|---|---|
|
#18+
budden, у вас бизнес-логика где-то сосредоточена или разбросана повсюду? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2013, 14:57 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=38474448&tid=1341556]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
419ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
35ms |
get tp. blocked users: |
1ms |
| others: | 236ms |
| total: | 726ms |

| 0 / 0 |
