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

Также как и нет задач, требующих C#. Или Java. Или что угодно еще. Он просто выбрал удобный инструмент.

Arm79Я занимаюсь в том числе и онлайн-трейдингом.
Вот кстати блог человека, использовавшего CL в этой сфере: http://13-49-ru.blogspot.ru/search?q=lisp
...
Рейтинг: 0 / 0
Почему мы используем Common Lisp в автоматизации бизнеса
    #38475333
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arm79
Резюмирую: никаких особых задач, требующих именно Lisp, у вас нет. C# с его зачатками псевдофункцинальности в виде LINQ, Expressions вполне справился бы с задекларированным.

Спасибо за потраченное на меня время. Было достаточно познавательно.

Странные выводы.
Ты думаешь, lisp какой-то особый язык, что для него нужны какие-то особые задачи?
Нет, это просто прикольный язык на котором интересно и приятно писать, в отличие от, скажем, той же java или Pl/SQL.

Люди, которые на нем пишут, решают обычные проблемы, вот, скажем, продвинутый редактор кода для PostgreSQL написан на common lisp.

Ещё я видел презентаху американцев, которые делают систему бронирования авиабилетов, тоже на CL. Так вот, единственным оправданием томы, что это был именно CL, было что-то типа "common lisp - замечательный язык, почему бы нам на нем не писать?"
...
Рейтинг: 0 / 0
Почему мы используем Common Lisp в автоматизации бизнеса
    #38475520
Фотография Ggg_old
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 budden. Исходя из перечисленный вами в первом посте преимуществ, обязательно посмотрите на erlang как платформу. Собственного опыта не имею, но то что о нем пишут и как хвалят, то ваши хотелки как платформа он удовлетворит. Язык вроде бы ФП, но эквивалентен ли он лиспу я не знаю.
...
Рейтинг: 0 / 0
Почему мы используем Common Lisp в автоматизации бизнеса
    #38475525
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хорошо Пол Грэм пишет в первых главах своей книги Ansi Common Lisp

... Изменяясь как ДНК, такой язык никогда не выйдет из моды
...
Рейтинг: 0 / 0
Почему мы используем Common Lisp в автоматизации бизнеса
    #38476502
budden
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arm79, я тоже подытожу: вы сумели меня не услышать, проявив в этом достойное настоящего воина упорство. С чего вы начали - тем и закончили.

Видимо, у вас было наготове мнение о том, что "лисп - это язык для ФП". Напрягите память и вспомните, кто вам это внушил. Может быть, у вас высшее образование в области ИТ и вы прослушали в вузе курс "Функциональное программирование на лиспе"?

Но такое название курса доказывает лишь одно: лисп пригоден для иллюстрации идей функционального программирования. Из него не следует, что лисп - это язык _только_ для ФП или что ФП - это лучшая вещь в лиспе.

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

А если интересует именно ФП, то подойдёт даже ANSI C - в нём есть указатели на функции и декларация const.
...
Рейтинг: 0 / 0
Почему мы используем Common Lisp в автоматизации бизнеса
    #38476590
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Видимо, у вас было наготове мнение о том, что "лисп - это язык для ФП". Напрягите память и вспомните, кто вам это внушил. Может быть, у вас высшее образование в области ИТ и вы прослушали в вузе курс "Функциональное программирование на лиспе"?


Так даже если бы было и так, что мешает писать прикладные программы на функциональном языке?


А если интересует именно ФП, то подойдёт даже ANSI C - в нём есть указатели на функции и декларация const.


Да, причём функции высших порядков в нём таки ЕСТЬ -- qsort !
Кажется, она единственная...
...
Рейтинг: 0 / 0
Почему мы используем Common Lisp в автоматизации бизнеса
    #38476606
budden
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ggg_old,
обязательно посмотрите на erlang как платформу
Спасибо, нас лисп вполне устраивает, и, что самое важное, уже много кода на нём написано. Даже если эрланг был бы лучше, переписывание слишком дорого бы встало.
...
Рейтинг: 0 / 0
Почему мы используем Common Lisp в автоматизации бизнеса
    #38476620
рубист
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
buddenПоступил вопрос в связи с открытой нами вакансией по Common Lisp:
Зачем вам функциональные языки? ... Типовая компания, ... . Знание торговли, склада, бухгалтерии. Внезапно, ... Lisp.

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


Все что вы пишите, за исключением статической типизации, есть в Ruby.
Но это не удивительно, так как Lisp это один из языков на котором он основан.
Успешно пользуемся всем, что вы описали ..... и сфера деятельности похожа.

авторRuby is a language of careful balance.
Its creator, Yukihiro “Matz” Matsumoto, blended parts of his favorite languages (Perl, Smalltalk, Eiffel, Ada, and Lisp)
to form a new language that balanced functional programming with imperative programming.
...
Рейтинг: 0 / 0
Почему мы используем Common Lisp в автоматизации бизнеса
    #38476663
budden
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
рубист, спасибо. А горячая замена кода функции и определения класса есть?

Т.е., в лиспе я пишу (перевожу на бейсико-подобный синтаксис для ясности):
Код: vbnet
1.
function f (x,y) ... end 



а потом мне понадобился третий параметр и я, не останавливая приложения, пишу и выполняю в REPL:
Код: vbnet
1.
function f (x,y,z) ... end 



После чего функция сразу принимает уже три параметра.
Программа временно становится некорректной, т.к. в вызовах функции f - всё ещё два параметра, но я могу, не останавливая приложения, найти все места использования и поправить их тоже.
...
Рейтинг: 0 / 0
Почему мы используем Common Lisp в автоматизации бизнеса
    #38476671
budden
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я немного наврал, думал, что для ясности. На самом деле, скорее моё враньё приведёт к путанице.

На самом деле всё ещё лучше, чем я написал :) Определение f я меняю не в REPL. Я пользуюсь лисп-модой.
Т.е., я правлю прямо исходник функции f в том файле, где она определена, а потом нажимаю волшебное
сочетание клавиш "перекомпилировать функцию под курсором". С этой секунды определение изменилось.

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

Т.е., в лиспе я пишу (перевожу на бейсико-подобный синтаксис для ясности):
Код: vbnet
1.
function f (x,y) ... end 



а потом мне понадобился третий параметр и я, не останавливая приложения, пишу и выполняю в REPL:
Код: vbnet
1.
function f (x,y,z) ... end 



После чего функция сразу принимает уже три параметра.
Программа временно становится некорректной, т.к. в вызовах функции f - всё ещё два параметра, но я могу, не останавливая приложения, найти все места использования и поправить их тоже.


budden, а можно более вдаваясь в технологию, объяснить, как это делается ?

Я могу попробовать сам ...

Работающие ветки кода нарываются на вызов этой функции, вызывается отладчик, ты туда интерактивно входишь, и переопределяешь код вызывающей функции, добавляя новый параметр в вызов, потом запускаешь рестарт, и -- всё ОК ?

А как технически дебагер на сервере организован в LispWorks ? (это же он ?)
...
Рейтинг: 0 / 0
Почему мы используем Common Lisp в автоматизации бизнеса
    #38476719
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
buddenArm79, я тоже подытожу: вы сумели меня не услышать, проявив в этом достойное настоящего воина упорство. С чего вы начали - тем и закончили.

Видимо, у вас было наготове мнение о том, что "лисп - это язык для ФП". Напрягите память и вспомните, кто вам это внушил. Может быть, у вас высшее образование в области ИТ и вы прослушали в вузе курс "Функциональное программирование на лиспе"?

Вы совершенно не поняли, для чего мне это было нужно. У меня нет и не было никакого мнения, что Лисп - это только ФП. И да, естественно, у меня высшее в IT. И ФП, и ЛП - курсы были.

Я - человек прагматичный. Увидев практическое использование достаточно редкого языка я заинтересовался областью его применения в достаточно прикладной области. Если бы были какие-то сверхважные для меня плюсы, я бы попробовал пощупать его на практике. Но из того что вы перечислили, что-то мне не нужно, а что-то покрывается с лихвой возможностями C#. То есть осваивать Lisp кроме как в свое удовольствие смысла нет.

buddenА у меня всё же такой опыт есть - я с лиспом знаком около 10 лет.

Я за вас рад. К сожалению, несмотря на декларируемую вами и не оспариваемую мной мощь языка, перспективы лиспера найти работу очень невелики. Поиск по агрегатору вакансий по лиспу не выдал ни одной вакансии (как и хаскел), по эрлангу - целых одну штуку.

ЗЫ Если говорить о моих задачах, то есть смысл сосредоточиться именно на Эрланге. Кстати, спасибо вам за него. Перечитав кучу статей изучил много нового.
...
Рейтинг: 0 / 0
Почему мы используем Common Lisp в автоматизации бизнеса
    #38476734
рубист
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
budden,

Так как вы написали, "меняю часть исходника, и функция в уже работающем скрипте принимает другой набор параметров"
сделать можно, только я слабо себе представляю, для чего?
"Рефлексия" в Ruby очень мощная и сделать в runtime можно почти что угодно .... с модулями, классам, с отдельными обьектами.
Реализовать остановку скрипта по какому-то событию с открытием интерактивной консоли,
в которой будет доступно все, что есть в данном месте программы (в данной облости видимости).
В этой консоли можно с обьектами и классами делать все, что доступно в языке, даже подключать дополнительные библиотеки
и после этого можно отдать команду на продолжение работы скрипта.
...
Рейтинг: 0 / 0
Почему мы используем Common Lisp в автоматизации бизнеса
    #38476756
budden
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv,Работающие ветки кода нарываются на вызов этой функции, вызывается отладчик, ты туда интерактивно входишь, и переопределяешь код вызывающей функции, добавляя новый параметр в вызов, потом запускаешь рестарт, и -- всё ОК ?

Так тоже можно, но это лишняя трата времени.

Всё гораздо прозаичнее: я ищу имя этой функции по всем своим сорсам обычным грепом. Сорсы, вызывающие f, ведь могут быть и не лиспе написаны. Например, я могу из Дельфи (или, к примеру, из 1С) вызвать эту функцию так же, как я вызываю хрпр файрбёрда командой sql. Скажем, в приложении на Дельфи может быть вызов CallAppServer('f',[1,2,3]).

Далее все вхождения правлю.

На самом деле, в практике чаще всего делается ещё проще. Добавляется не обычный параметр, а параметр-ключ. Параметры-ключи всем известны по командам операционной системы, например, в команде winrar a -m4 -v100m есть два ключа: m=4 и v=100m.

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

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

Реализовано это в лиспе достаточно дуболомно - за счёт лишней косвенности при обращении к функции и за счёт проверок корректности параметров при каждом вызове. Однако, если сравнить с тем же питоном, то лисп всё равно работает намного быстрее. Если нужна производительность, все проверки можно отключить, тогда программа станет небезопасной и сможет падать по Access Violation. Но я этого не делаю, т.к. программа тяжёлая, падение её стоит дорого, а производительности пока вполне хватает.
...
Рейтинг: 0 / 0
Почему мы используем Common Lisp в автоматизации бизнеса
    #38476820
рубист
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
buddenMasterZiv,Работающие ветки кода нарываются на вызов этой функции, вызывается отладчик, ты туда интерактивно входишь, и переопределяешь код вызывающей функции, добавляя новый параметр в вызов, потом запускаешь рестарт, и -- всё ОК ?

Так тоже можно, но это лишняя трата времени.

Всё гораздо прозаичнее: я ищу имя этой функции по всем своим сорсам обычным грепом. Сорсы, вызывающие f, ведь могут быть и не лиспе написаны. Например, я могу из Дельфи (или, к примеру, из 1С) вызвать эту функцию так же, как я вызываю хрпр файрбёрда командой sql. Скажем, в приложении на Дельфи может быть вызов CallAppServer('f',[1,2,3]).

Далее все вхождения правлю.

На самом деле, в практике чаще всего делается ещё проще. Добавляется не обычный параметр, а параметр-ключ. Параметры-ключи всем известны по командам операционной системы, например, в команде winrar a -m4 -v100m есть два ключа: m=4 и v=100m.

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

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

Реализовано это в лиспе достаточно дуболомно - за счёт лишней косвенности при обращении к функции и за счёт проверок корректности параметров при каждом вызове. Однако, если сравнить с тем же питоном, то лисп всё равно работает намного быстрее. Если нужна производительность, все проверки можно отключить, тогда программа станет небезопасной и сможет падать по Access Violation. Но я этого не делаю, т.к. программа тяжёлая, падение её стоит дорого, а производительности пока вполне хватает.

В Ruby почти ничего "греп-ать" не надо.
Есть возможность найти исходник с помощью метода source_location (как из консоли, так и в runtime)
Например вот этот вызов User.method(:find).source_location вернет такой результат.
[".... /.rvm/gems/ruby-2.0.0-p247@rails3.2/gems/activerecord-3.2.15/lib/active_record/querying.rb", 4]

Что-то на подобиии "Параметр-ключь" в Ruby тоже есть. класс Symbol.
Он используется как в для именнованных параметров методов, так и для очень много чего еще.
Чаще всего Symbol используют как ключи хеш-массивов. В примере выше :find это тоже Symbol.
...
Рейтинг: 0 / 0
Почему мы используем Common Lisp в автоматизации бизнеса
    #38477133
Фотография Ggg_old
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 budden: я вам рекомендовал посмотреть на ерланг не потому, что он возможно лучше лиспа (хотя есть мнение что на данный момент он таки да лучше), а потому что:
buddenЯ немного интересовался аналогами в других языках и пришёл к выводу, что такого больше нигде нет. Если я неправ - киньте в меня тапком, я его внимательно обнюхаю.

так что исключительно в целях вашего просвящения поделился тапком :)
...
Рейтинг: 0 / 0
Почему мы используем Common Lisp в автоматизации бизнеса
    #38477160
antares0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
рубист,
В Ruby почти ничего "греп-ать" не надо. Есть возможность найти исходник с помощью метода source_location (как из консоли, так и в runtime)
Как и в большинстве реализаций CL
...
Рейтинг: 0 / 0
Почему мы используем Common Lisp в автоматизации бизнеса
    #38477251
рубист
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ggg_old2 budden: я вам рекомендовал посмотреть на ерланг не потому, что он возможно лучше лиспа (хотя есть мнение что на данный момент он таки да лучше), а потому что:
buddenЯ немного интересовался аналогами в других языках и пришёл к выводу, что такого больше нигде нет. Если я неправ - киньте в меня тапком, я его внимательно обнюхаю.

так что исключительно в целях вашего просвящения поделился тапком :)

Erlang отличный язык, для тех вещей, в которых он силен (распределенные вычисления, дата стриминг),
Ruby (наверно СL-у тоже) в этом с ним трудно тягаться. У нас он частично используется (couchdb).
Серебряной пули нет, каждый язык(платформа) делает что-то лучше других
и здесь выбор больше зависит от типов задач и от личного опыта применения того или другого.

Автор топика много лет знаком с Lisp, для него это идеальный инструмент.
Для меня сейчас это Ruby, хотя за 15 лет я писал много на чём.

PS Будет немного времени, поупражняюсь на CL, все таки родство обязывает :)
...
Рейтинг: 0 / 0
Почему мы используем Common Lisp в автоматизации бизнеса
    #38477258
budden
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ggg_old, а, спасибо, я вас не понял с первого раза. Может, знаете, есть ли в эрланге такое же "горячее" переопределение функции, как в лиспе?
...
Рейтинг: 0 / 0
Почему мы используем Common Lisp в автоматизации бизнеса
    #38477275
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ggg_old2 budden: я вам рекомендовал посмотреть на ерланг не потому, что он возможно лучше лиспа (хотя есть мнение что на данный момент он таки да лучше),

Erlang "лучше" может быть только по одному параметру -- он чистофункциональный, а lisp -- гибридный (не чисто функциональный).
А по всем остальным параметрам Erlang сливает лиспу с громким свистом.
Ну, по крайней мене в моих глазах.
...
Рейтинг: 0 / 0
Почему мы используем Common Lisp в автоматизации бизнеса
    #38477429
Фотография Ggg_old
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 budden: да, в ерланге есть именно горячее переопределение. Но сила его не в самом языке, а именно в платформе, заточенной на писание распределенных, сильнонагруженных многопоточных программ, надежных к сбоям (идеалогия let it fall), в работе которых важна высокая доступность их работы (отсюда и горячий патчинг кода как в лиспе). Корни растут из телекома, но сейчас его под нагруженные веб-приложения тоже успешно приспосабливают.
Я думаю, что именно в вашем случае лисп лучше, но поизучать почти мэйнстримную платформу безусловно стоит.
...
Рейтинг: 0 / 0
Почему мы используем Common Lisp в автоматизации бизнеса
    #38478753
budden
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
рубист, горячая замена нужна для ускорения цикла отладки. Я об этом написал в первом сообщении. Выгоды горячей замены трудно понять, пока не попробуете и у мне до сих пор не удавалось их объяснить кому-то, кто считал это ненужным. Видимо, это трансцендентальное знание, постигаемое только через личный опыт :) Горячая замена в _некоторых_ приложениях не нужна, но таких приложений достаточно мало. В большинстве случаев она полезна - экономит время и силы, снижает сложность.

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

Попробуйте пройти тем путём, с которого ушёл Arm79. Чтобы понять, насколько горячая замена помогает жить, представьте себе SQL Server без ALTER TABLE. Приятно ли будет работать с таким SQL? Как будет выглядеть процесс добавления поля в таблицу? Распишите по пунктам сценарий добавления поля в ответе на моё сообщение.

Что-то на подобиии "Параметр-ключь" в Ruby тоже есть. класс Symbol.


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

Следует читать так: если нужно изменить число параметров функции, я могу добавить в функцию не обычный, а именованный параметр, тогда все ранее описанные обращения к f из уже существующих исходников останутся корректными.

Например вот этот вызов User.method(:find).source_location вернет такой результат.
[".... /.rvm/gems/ruby-2.0.0-p247@rails3.2/gems/activerecord-3.2.15/lib/active_record/querying.rb", 4]

Я думаю, я говорил не про то. Это вы пишете про место определения функции f. В лиспе (в SLIME и т.п.) исходник тоже
ищется за одно нажатие кнопки на имени. Для родовых функций ( = методов) можно увидеть список всех определений.

Если мы поменяли набор параметров функции f, мы должны найти все места, где эта функция f _вызывается_. Есть принципиально два пути для этого: информация о ссылках в самой программе и поиск текста. Информация о ссылках даёт результат очень быстро, но она ненадёжна, хотя бы потому, что не весь код может быть в данный момент загружен в память или не весь код скомпилирован с записью информации о ссылках.

Поэтому единственный надёжный способ исправить вызовы функции f без падений в дебаггер - это найти именно все упоминания идентификатора f.
...
Рейтинг: 0 / 0
Почему мы используем Common Lisp в автоматизации бизнеса
    #38478936
рубист
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
budden,
авторрубист, горячая замена нужна для ускорения цикла отладки. Я об этом написал в первом сообщении. Выгоды горячей замены трудно понять, пока не попробуете и у мне до сих пор не удавалось их объяснить кому-то, кто считал это ненужным. Видимо, это трансцендентальное знание, постигаемое только через личный опыт :) Горячая замена в _некоторых_ приложениях не нужна, но таких приложений достаточно мало. В большинстве случаев она полезна - экономит время и силы, снижает сложность.

Горячее изменение кода в Ruby используется очень активно и о преимуществах я знаю.
У меня добавление поля в Базе данных или изменение набора параметров метода как правило тоже
не ведут к каким-то большим изменениям рабочего кода. В большинстве случаев это просто
добавление валидатора и\или разрешения использовать новое поле в так называемых mass assignment-ах.
Просто я не совсем понял, зачем этим пользоваться на стадии отладки (менять поведение методов или классов).
Наверно это потому, что я не пишу какие-то "долгоиграющие" процессы, которые дорого (по времени)
перезапускать и нужно заниматься отладкой и изменением кода на ходу.
У меня в основном это Rails\Sinatra приложения, SOA сервисы и скрипты для автоматизации и запуска по cron-у
Для отладки в полне хватает Ruby консоли.

Можно будет попробовать делать отладку как вы, посмотрим что получится.

И еще, у нас есть существенно различие ...
CL компилируется в машинный код, скомпилированный код может хранится отдельно.
Ruby компилируется в код виртуальной машины _на лету_ т.е. при запуске программы и не хранится отдельно.
По этому приемы отладки могут отличатся.

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

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

Следует читать так: если нужно изменить число параметров функции, я могу добавить в функцию не обычный, а именованный параметр, тогда все ранее описанные обращения к f из уже существующих исходников останутся корректными.

начиная с версии 1.9, в место такой записи
Код: ruby
1.
obj.method(:param1=>'value1', :param2=>'value2', :param3=>'value3')


можно писать так
Код: ruby
1.
obj.method(param1: 'value1', param2: 'value2', param3: 'value3')


это одно и тоже - param1, param2 и param3 будут являтся Symbol-ами. Просто в 2.0 расширили синтаксис.
так же можно комбинировать обычные параметры и именованные.
Код: ruby
1.
obj.method('value1', 'value2', named_param: 'value3')



авторЯ думаю, я говорил не про то. Это вы пишете про место определения функции f. В лиспе (в SLIME и т.п.) исходник тоже
ищется за одно нажатие кнопки на имени. Для родовых функций ( = методов) можно увидеть список всех определений.

Если мы поменяли набор параметров функции f, мы должны найти все места, где эта функция f _вызывается_. Есть принципиально два пути для этого: информация о ссылках в самой программе и поиск текста. Информация о ссылках даёт результат очень быстро, но она ненадёжна, хотя бы потому, что не весь код может быть в данный момент загружен в память или не весь код скомпилирован с записью информации о ссылках.

Поэтому единственный надёжный способ исправить вызовы функции f без падений в дебаггер - это найти именно все упоминания идентификатора f.

ааа, ну тогда я тоже фактически "греп-аю", пользуюсь поиском\авто заменой в IDE. У меня это Eclipse.
...
Рейтинг: 0 / 0
Почему мы используем Common Lisp в автоматизации бизнеса
    #38478938
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
buddenрубист, горячая замена нужна для ускорения цикла отладки. Я об этом написал в первом сообщении. Выгоды горячей замены трудно понять, пока не попробуете и у мне до сих пор не удавалось их объяснить кому-то, кто считал это ненужным. Видимо, это трансцендентальное знание, постигаемое только через личный опыт :) Горячая замена в _некоторых_ приложениях не нужна, но таких приложений достаточно мало. В большинстве случаев она полезна - экономит время и силы, снижает сложность.

Не, ну любому разработчику БД в общем это преимущество должно быть очевидно -- пересоздал процедуру или пакет -- и он уже все, работает. Никаких компиляторов, линкеров, WAR-ов и прочей фигни.
...
Рейтинг: 0 / 0
Почему мы используем Common Lisp в автоматизации бизнеса
    #38478946
рубист
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да, еще добавлю .......
Если был метод
Код: ruby
1.
obj.method('value1', 'value2')


и его реализация изменена на
Код: ruby
1.
obj.method('value1', 'value2', named_param: 'value3')


то везде где он вызывается ничего не будет сломано, все будет работать.

Не именованные параметры тоже можно сделать необязательным, если им установить значение по умолчанию.
...
Рейтинг: 0 / 0
25 сообщений из 94, страница 3 из 4
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Почему мы используем Common Lisp в автоматизации бизнеса
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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