|
|
|
Почему мы используем Common Lisp в автоматизации бизнеса
|
|||
|---|---|---|---|
|
#18+
Arm79Резюмирую: никаких особых задач, требующих именно Lisp, у вас нет. C# с его зачатками псевдофункцинальности в виде LINQ, Expressions вполне справился бы с задекларированным. Также как и нет задач, требующих C#. Или Java. Или что угодно еще. Он просто выбрал удобный инструмент. Arm79Я занимаюсь в том числе и онлайн-трейдингом. Вот кстати блог человека, использовавшего CL в этой сфере: http://13-49-ru.blogspot.ru/search?q=lisp ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2013, 20:55 |
|
||
|
Почему мы используем Common Lisp в автоматизации бизнеса
|
|||
|---|---|---|---|
|
#18+
Arm79 Резюмирую: никаких особых задач, требующих именно Lisp, у вас нет. C# с его зачатками псевдофункцинальности в виде LINQ, Expressions вполне справился бы с задекларированным. Спасибо за потраченное на меня время. Было достаточно познавательно. Странные выводы. Ты думаешь, lisp какой-то особый язык, что для него нужны какие-то особые задачи? Нет, это просто прикольный язык на котором интересно и приятно писать, в отличие от, скажем, той же java или Pl/SQL. Люди, которые на нем пишут, решают обычные проблемы, вот, скажем, продвинутый редактор кода для PostgreSQL написан на common lisp. Ещё я видел презентаху американцев, которые делают систему бронирования авиабилетов, тоже на CL. Так вот, единственным оправданием томы, что это был именно CL, было что-то типа "common lisp - замечательный язык, почему бы нам на нем не писать?" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2013, 18:17 |
|
||
|
Почему мы используем Common Lisp в автоматизации бизнеса
|
|||
|---|---|---|---|
|
#18+
2 budden. Исходя из перечисленный вами в первом посте преимуществ, обязательно посмотрите на erlang как платформу. Собственного опыта не имею, но то что о нем пишут и как хвалят, то ваши хотелки как платформа он удовлетворит. Язык вроде бы ФП, но эквивалентен ли он лиспу я не знаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2013, 01:04 |
|
||
|
Почему мы используем Common Lisp в автоматизации бизнеса
|
|||
|---|---|---|---|
|
#18+
Хорошо Пол Грэм пишет в первых главах своей книги Ansi Common Lisp ... Изменяясь как ДНК, такой язык никогда не выйдет из моды ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2013, 01:13 |
|
||
|
Почему мы используем Common Lisp в автоматизации бизнеса
|
|||
|---|---|---|---|
|
#18+
Arm79, я тоже подытожу: вы сумели меня не услышать, проявив в этом достойное настоящего воина упорство. С чего вы начали - тем и закончили. Видимо, у вас было наготове мнение о том, что "лисп - это язык для ФП". Напрягите память и вспомните, кто вам это внушил. Может быть, у вас высшее образование в области ИТ и вы прослушали в вузе курс "Функциональное программирование на лиспе"? Но такое название курса доказывает лишь одно: лисп пригоден для иллюстрации идей функционального программирования. Из него не следует, что лисп - это язык _только_ для ФП или что ФП - это лучшая вещь в лиспе. Во всяком случае, это мнение вряд ли исходило от ремесленника, который сам программировал на лиспе что-то достаточно большое. А у меня всё же такой опыт есть - я с лиспом знаком около 10 лет. А если интересует именно ФП, то подойдёт даже ANSI C - в нём есть указатели на функции и декларация const. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2013, 13:14 |
|
||
|
Почему мы используем Common Lisp в автоматизации бизнеса
|
|||
|---|---|---|---|
|
#18+
Видимо, у вас было наготове мнение о том, что "лисп - это язык для ФП". Напрягите память и вспомните, кто вам это внушил. Может быть, у вас высшее образование в области ИТ и вы прослушали в вузе курс "Функциональное программирование на лиспе"? Так даже если бы было и так, что мешает писать прикладные программы на функциональном языке? А если интересует именно ФП, то подойдёт даже ANSI C - в нём есть указатели на функции и декларация const. Да, причём функции высших порядков в нём таки ЕСТЬ -- qsort ! Кажется, она единственная... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2013, 13:59 |
|
||
|
Почему мы используем Common Lisp в автоматизации бизнеса
|
|||
|---|---|---|---|
|
#18+
Ggg_old, обязательно посмотрите на erlang как платформу Спасибо, нас лисп вполне устраивает, и, что самое важное, уже много кода на нём написано. Даже если эрланг был бы лучше, переписывание слишком дорого бы встало. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2013, 14:06 |
|
||
|
Почему мы используем Common Lisp в автоматизации бизнеса
|
|||
|---|---|---|---|
|
#18+
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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2013, 14:14 |
|
||
|
Почему мы используем Common Lisp в автоматизации бизнеса
|
|||
|---|---|---|---|
|
#18+
рубист, спасибо. А горячая замена кода функции и определения класса есть? Т.е., в лиспе я пишу (перевожу на бейсико-подобный синтаксис для ясности): Код: vbnet 1. а потом мне понадобился третий параметр и я, не останавливая приложения, пишу и выполняю в REPL: Код: vbnet 1. После чего функция сразу принимает уже три параметра. Программа временно становится некорректной, т.к. в вызовах функции f - всё ещё два параметра, но я могу, не останавливая приложения, найти все места использования и поправить их тоже. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2013, 14:30 |
|
||
|
Почему мы используем Common Lisp в автоматизации бизнеса
|
|||
|---|---|---|---|
|
#18+
Я немного наврал, думал, что для ясности. На самом деле, скорее моё враньё приведёт к путанице. На самом деле всё ещё лучше, чем я написал :) Определение f я меняю не в REPL. Я пользуюсь лисп-модой. Т.е., я правлю прямо исходник функции f в том файле, где она определена, а потом нажимаю волшебное сочетание клавиш "перекомпилировать функцию под курсором". С этой секунды определение изменилось. Подобный комфорт доступен разработчикам SQL по средствам типа IBExpert, но он касается только кода SQL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2013, 14:34 |
|
||
|
Почему мы используем Common Lisp в автоматизации бизнеса
|
|||
|---|---|---|---|
|
#18+
buddenрубист, спасибо. А горячая замена кода функции и определения класса есть? Т.е., в лиспе я пишу (перевожу на бейсико-подобный синтаксис для ясности): Код: vbnet 1. а потом мне понадобился третий параметр и я, не останавливая приложения, пишу и выполняю в REPL: Код: vbnet 1. После чего функция сразу принимает уже три параметра. Программа временно становится некорректной, т.к. в вызовах функции f - всё ещё два параметра, но я могу, не останавливая приложения, найти все места использования и поправить их тоже. budden, а можно более вдаваясь в технологию, объяснить, как это делается ? Я могу попробовать сам ... Работающие ветки кода нарываются на вызов этой функции, вызывается отладчик, ты туда интерактивно входишь, и переопределяешь код вызывающей функции, добавляя новый параметр в вызов, потом запускаешь рестарт, и -- всё ОК ? А как технически дебагер на сервере организован в LispWorks ? (это же он ?) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2013, 14:41 |
|
||
|
Почему мы используем Common Lisp в автоматизации бизнеса
|
|||
|---|---|---|---|
|
#18+
buddenArm79, я тоже подытожу: вы сумели меня не услышать, проявив в этом достойное настоящего воина упорство. С чего вы начали - тем и закончили. Видимо, у вас было наготове мнение о том, что "лисп - это язык для ФП". Напрягите память и вспомните, кто вам это внушил. Может быть, у вас высшее образование в области ИТ и вы прослушали в вузе курс "Функциональное программирование на лиспе"? Вы совершенно не поняли, для чего мне это было нужно. У меня нет и не было никакого мнения, что Лисп - это только ФП. И да, естественно, у меня высшее в IT. И ФП, и ЛП - курсы были. Я - человек прагматичный. Увидев практическое использование достаточно редкого языка я заинтересовался областью его применения в достаточно прикладной области. Если бы были какие-то сверхважные для меня плюсы, я бы попробовал пощупать его на практике. Но из того что вы перечислили, что-то мне не нужно, а что-то покрывается с лихвой возможностями C#. То есть осваивать Lisp кроме как в свое удовольствие смысла нет. buddenА у меня всё же такой опыт есть - я с лиспом знаком около 10 лет. Я за вас рад. К сожалению, несмотря на декларируемую вами и не оспариваемую мной мощь языка, перспективы лиспера найти работу очень невелики. Поиск по агрегатору вакансий по лиспу не выдал ни одной вакансии (как и хаскел), по эрлангу - целых одну штуку. ЗЫ Если говорить о моих задачах, то есть смысл сосредоточиться именно на Эрланге. Кстати, спасибо вам за него. Перечитав кучу статей изучил много нового. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2013, 14:52 |
|
||
|
Почему мы используем Common Lisp в автоматизации бизнеса
|
|||
|---|---|---|---|
|
#18+
budden, Так как вы написали, "меняю часть исходника, и функция в уже работающем скрипте принимает другой набор параметров" сделать можно, только я слабо себе представляю, для чего? "Рефлексия" в Ruby очень мощная и сделать в runtime можно почти что угодно .... с модулями, классам, с отдельными обьектами. Реализовать остановку скрипта по какому-то событию с открытием интерактивной консоли, в которой будет доступно все, что есть в данном месте программы (в данной облости видимости). В этой консоли можно с обьектами и классами делать все, что доступно в языке, даже подключать дополнительные библиотеки и после этого можно отдать команду на продолжение работы скрипта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2013, 14:58 |
|
||
|
Почему мы используем Common Lisp в автоматизации бизнеса
|
|||
|---|---|---|---|
|
#18+
MasterZiv,Работающие ветки кода нарываются на вызов этой функции, вызывается отладчик, ты туда интерактивно входишь, и переопределяешь код вызывающей функции, добавляя новый параметр в вызов, потом запускаешь рестарт, и -- всё ОК ? Так тоже можно, но это лишняя трата времени. Всё гораздо прозаичнее: я ищу имя этой функции по всем своим сорсам обычным грепом. Сорсы, вызывающие f, ведь могут быть и не лиспе написаны. Например, я могу из Дельфи (или, к примеру, из 1С) вызвать эту функцию так же, как я вызываю хрпр файрбёрда командой sql. Скажем, в приложении на Дельфи может быть вызов CallAppServer('f',[1,2,3]). Далее все вхождения правлю. На самом деле, в практике чаще всего делается ещё проще. Добавляется не обычный параметр, а параметр-ключ. Параметры-ключи всем известны по командам операционной системы, например, в команде winrar a -m4 -v100m есть два ключа: m=4 и v=100m. В лиспе есть параметры ключи, за одно это его уже можно любить. Когда я добавляю параметр-ключ, все старые вызовы автоматически остаются правильными и с ними просто не нужно ничего делать. Реализовано это в лиспе достаточно дуболомно - за счёт лишней косвенности при обращении к функции и за счёт проверок корректности параметров при каждом вызове. Однако, если сравнить с тем же питоном, то лисп всё равно работает намного быстрее. Если нужна производительность, все проверки можно отключить, тогда программа станет небезопасной и сможет падать по Access Violation. Но я этого не делаю, т.к. программа тяжёлая, падение её стоит дорого, а производительности пока вполне хватает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2013, 15:05 |
|
||
|
Почему мы используем Common Lisp в автоматизации бизнеса
|
|||
|---|---|---|---|
|
#18+
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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2013, 15:32 |
|
||
|
Почему мы используем Common Lisp в автоматизации бизнеса
|
|||
|---|---|---|---|
|
#18+
2 budden: я вам рекомендовал посмотреть на ерланг не потому, что он возможно лучше лиспа (хотя есть мнение что на данный момент он таки да лучше), а потому что: buddenЯ немного интересовался аналогами в других языках и пришёл к выводу, что такого больше нигде нет. Если я неправ - киньте в меня тапком, я его внимательно обнюхаю. так что исключительно в целях вашего просвящения поделился тапком :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2013, 18:03 |
|
||
|
Почему мы используем Common Lisp в автоматизации бизнеса
|
|||
|---|---|---|---|
|
#18+
рубист, В Ruby почти ничего "греп-ать" не надо. Есть возможность найти исходник с помощью метода source_location (как из консоли, так и в runtime) Как и в большинстве реализаций CL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2013, 18:19 |
|
||
|
Почему мы используем Common Lisp в автоматизации бизнеса
|
|||
|---|---|---|---|
|
#18+
Ggg_old2 budden: я вам рекомендовал посмотреть на ерланг не потому, что он возможно лучше лиспа (хотя есть мнение что на данный момент он таки да лучше), а потому что: buddenЯ немного интересовался аналогами в других языках и пришёл к выводу, что такого больше нигде нет. Если я неправ - киньте в меня тапком, я его внимательно обнюхаю. так что исключительно в целях вашего просвящения поделился тапком :) Erlang отличный язык, для тех вещей, в которых он силен (распределенные вычисления, дата стриминг), Ruby (наверно СL-у тоже) в этом с ним трудно тягаться. У нас он частично используется (couchdb). Серебряной пули нет, каждый язык(платформа) делает что-то лучше других и здесь выбор больше зависит от типов задач и от личного опыта применения того или другого. Автор топика много лет знаком с Lisp, для него это идеальный инструмент. Для меня сейчас это Ruby, хотя за 15 лет я писал много на чём. PS Будет немного времени, поупражняюсь на CL, все таки родство обязывает :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2013, 19:39 |
|
||
|
Почему мы используем Common Lisp в автоматизации бизнеса
|
|||
|---|---|---|---|
|
#18+
Ggg_old, а, спасибо, я вас не понял с первого раза. Может, знаете, есть ли в эрланге такое же "горячее" переопределение функции, как в лиспе? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2013, 19:48 |
|
||
|
Почему мы используем Common Lisp в автоматизации бизнеса
|
|||
|---|---|---|---|
|
#18+
Ggg_old2 budden: я вам рекомендовал посмотреть на ерланг не потому, что он возможно лучше лиспа (хотя есть мнение что на данный момент он таки да лучше), Erlang "лучше" может быть только по одному параметру -- он чистофункциональный, а lisp -- гибридный (не чисто функциональный). А по всем остальным параметрам Erlang сливает лиспу с громким свистом. Ну, по крайней мене в моих глазах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2013, 20:13 |
|
||
|
Почему мы используем Common Lisp в автоматизации бизнеса
|
|||
|---|---|---|---|
|
#18+
2 budden: да, в ерланге есть именно горячее переопределение. Но сила его не в самом языке, а именно в платформе, заточенной на писание распределенных, сильнонагруженных многопоточных программ, надежных к сбоям (идеалогия let it fall), в работе которых важна высокая доступность их работы (отсюда и горячий патчинг кода как в лиспе). Корни растут из телекома, но сейчас его под нагруженные веб-приложения тоже успешно приспосабливают. Я думаю, что именно в вашем случае лисп лучше, но поизучать почти мэйнстримную платформу безусловно стоит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2013, 23:44 |
|
||
|
Почему мы используем Common Lisp в автоматизации бизнеса
|
|||
|---|---|---|---|
|
#18+
рубист, горячая замена нужна для ускорения цикла отладки. Я об этом написал в первом сообщении. Выгоды горячей замены трудно понять, пока не попробуете и у мне до сих пор не удавалось их объяснить кому-то, кто считал это ненужным. Видимо, это трансцендентальное знание, постигаемое только через личный опыт :) Горячая замена в _некоторых_ приложениях не нужна, но таких приложений достаточно мало. В большинстве случаев она полезна - экономит время и силы, снижает сложность. А раз можно познать через личный опыт, воспользуемся методом аналогий. 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2013, 17:52 |
|
||
|
Почему мы используем Common Lisp в автоматизации бизнеса
|
|||
|---|---|---|---|
|
#18+
budden, авторрубист, горячая замена нужна для ускорения цикла отладки. Я об этом написал в первом сообщении. Выгоды горячей замены трудно понять, пока не попробуете и у мне до сих пор не удавалось их объяснить кому-то, кто считал это ненужным. Видимо, это трансцендентальное знание, постигаемое только через личный опыт :) Горячая замена в _некоторых_ приложениях не нужна, но таких приложений достаточно мало. В большинстве случаев она полезна - экономит время и силы, снижает сложность. Горячее изменение кода в Ruby используется очень активно и о преимуществах я знаю. У меня добавление поля в Базе данных или изменение набора параметров метода как правило тоже не ведут к каким-то большим изменениям рабочего кода. В большинстве случаев это просто добавление валидатора и\или разрешения использовать новое поле в так называемых mass assignment-ах. Просто я не совсем понял, зачем этим пользоваться на стадии отладки (менять поведение методов или классов). Наверно это потому, что я не пишу какие-то "долгоиграющие" процессы, которые дорого (по времени) перезапускать и нужно заниматься отладкой и изменением кода на ходу. У меня в основном это Rails\Sinatra приложения, SOA сервисы и скрипты для автоматизации и запуска по cron-у Для отладки в полне хватает Ruby консоли. Можно будет попробовать делать отладку как вы, посмотрим что получится. И еще, у нас есть существенно различие ... CL компилируется в машинный код, скомпилированный код может хранится отдельно. Ruby компилируется в код виртуальной машины _на лету_ т.е. при запуске программы и не хранится отдельно. По этому приемы отладки могут отличатся. У разработчиков языка есть планы сделать возможность хранения уже скомпилированного кода, но пока этого нет. авторНет, аналогом параметра ключа в руби является именованный параметр. Символ тоже есть в лиспе, но я имел в виду не его, когда говорил о добавлении параметра в процедуру. Следует читать так: если нужно изменить число параметров функции, я могу добавить в функцию не обычный, а именованный параметр, тогда все ранее описанные обращения к f из уже существующих исходников останутся корректными. начиная с версии 1.9, в место такой записи Код: ruby 1. можно писать так Код: ruby 1. это одно и тоже - param1, param2 и param3 будут являтся Symbol-ами. Просто в 2.0 расширили синтаксис. так же можно комбинировать обычные параметры и именованные. Код: ruby 1. авторЯ думаю, я говорил не про то. Это вы пишете про место определения функции f. В лиспе (в SLIME и т.п.) исходник тоже ищется за одно нажатие кнопки на имени. Для родовых функций ( = методов) можно увидеть список всех определений. Если мы поменяли набор параметров функции f, мы должны найти все места, где эта функция f _вызывается_. Есть принципиально два пути для этого: информация о ссылках в самой программе и поиск текста. Информация о ссылках даёт результат очень быстро, но она ненадёжна, хотя бы потому, что не весь код может быть в данный момент загружен в память или не весь код скомпилирован с записью информации о ссылках. Поэтому единственный надёжный способ исправить вызовы функции f без падений в дебаггер - это найти именно все упоминания идентификатора f. ааа, ну тогда я тоже фактически "греп-аю", пользуюсь поиском\авто заменой в IDE. У меня это Eclipse. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2013, 19:41 |
|
||
|
Почему мы используем Common Lisp в автоматизации бизнеса
|
|||
|---|---|---|---|
|
#18+
buddenрубист, горячая замена нужна для ускорения цикла отладки. Я об этом написал в первом сообщении. Выгоды горячей замены трудно понять, пока не попробуете и у мне до сих пор не удавалось их объяснить кому-то, кто считал это ненужным. Видимо, это трансцендентальное знание, постигаемое только через личный опыт :) Горячая замена в _некоторых_ приложениях не нужна, но таких приложений достаточно мало. В большинстве случаев она полезна - экономит время и силы, снижает сложность. Не, ну любому разработчику БД в общем это преимущество должно быть очевидно -- пересоздал процедуру или пакет -- и он уже все, работает. Никаких компиляторов, линкеров, WAR-ов и прочей фигни. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2013, 19:42 |
|
||
|
Почему мы используем Common Lisp в автоматизации бизнеса
|
|||
|---|---|---|---|
|
#18+
да, еще добавлю ....... Если был метод Код: ruby 1. и его реализация изменена на Код: ruby 1. то везде где он вызывается ничего не будет сломано, все будет работать. Не именованные параметры тоже можно сделать необязательным, если им установить значение по умолчанию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2013, 19:51 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=38478936&tid=1341556]: |
0ms |
get settings: |
8ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
443ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
37ms |
get tp. blocked users: |
1ms |
| others: | 230ms |
| total: | 752ms |

| 0 / 0 |
