LINUX.ORG.RU

[Common Lisp] Инкрементальная разработка и VCS

 


1

2

Несомненно инкрементальная разработка и возможность поправить что-то на работающем образе относятся к большим достоинствам Common Lisp. Но вот предположим я там чего-то наинкрементировал на живой системе через REPL, в нескольких разных местах. Подскажите Ъ-способ синхронизировать изменения обратно в дерево исходников, для дальнейшей синхронизации в VCS, например Subversion. Или, для любителей DVCS - Git/Mercurial/Monotone etc.



Последнее исправление: Ignatik (всего исправлений: 1)

Ответ на: комментарий от Norgat

> попробуйте ввести там функцию состоящую строчек из 5 раз 5-6, поймёте, что это дико неудобно

никаких принципиальных отличий от ввода такой функции в исходник не заметил

korvin_ ★★★★★
()
Ответ на: комментарий от korvin_

> никаких принципиальных отличий от ввода такой функции в исходник не заметил

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

Norgat ★★★★★
()
Ответ на: комментарий от Norgat

> автодополнение

не проверял, но думаю в SLIME это есть

подсветка

как-то не напрягало

автоформатирование

в SLIME есть

korvin_ ★★★★★
()
Ответ на: комментарий от korvin_

Да не, это фигня, в буфере *slime-repl* запускают код для разных экспериментов, определять функции непосредственно там имеет смысл только совершенно одноразовые, которые совершенно точно не будут нужны в последующем.

Кроме того, ведь функция не пишет один раз и навсегда, она постоянно поправляется и изменяется. Гораздо удобней это делать по месту её определения в исходных кодах.

archimag ★★★
()
Ответ на: комментарий от korvin_

не проверял, но думаю в SLIME это есть
в SLIME есть

Ты, всё-таки, прочитай, что тебе написали выше внимательно. ;)

Reaper ★★
()
Ответ на: комментарий от anonymous

>> А где твоя fun?

После выхода из репла? В образе.

Теперь кто-то хочет использовать твою функцию - ты дашь ему образ? Тебе надо предъявить функцию на review - образ? Тебе нужно посмотреть, как изменялась функция со временем - ты сохранишь несколько образов? Затейливо.

tailgunner ★★★★★
()
Ответ на: комментарий от anonymous

Зафигачили образ и вперед.

У лисперов, по крайней мере, уже давно код правится во внешних редакторах. И вся инфраструктура для этого есть. Даже переносимая между реализациями.

В отличие от.

baverman ★★★
()
Ответ на: комментарий от anonymous

> В цл между реализациями переносимы только факториалы.

Конечно, я тут как-то внезапно взял и смог загрузить и заюзать RESTAS под LW при том, что разрабатывал его практически исключительно под SBCL (иногда тестил под Clozure CL). Ну да, наверное это просто такая разновидность факториалов.

archimag ★★★
()
Ответ на: комментарий от anonymous

> Зафигачили образ и вперед.

Такое о CL только полный профан/даун может говорить. В CL никогда не было разработки, основанной на образе.

archimag ★★★
()
Ответ на: комментарий от archimag

> В CL никогда не было разработки, основанной на образе. > Такое о CL только полный профан/даун может говорить.

А вот antares0 говорит:

Для тех кто не в курсе, поясню что компиляция и загрузка идет другими способами (обычно единообразно через ASDF) а загрузка самого лиспа в стиле *CL |имя образа|.

anonymous
()
Ответ на: комментарий от Reaper

> Ты, всё-таки, прочитай, что тебе написали выше внимательно. ;)

что именно? ты намекаешь, что Norgat имел в виду использование «чистого» REPL'а, без всяких SLIME/LispWorks?

korvin_ ★★★★★
()
Ответ на: комментарий от archimag

Не ты ли в соседнем треде про ecl говорил?

И да, я в душе не знаю что такое рестат. Но кажется, что 'продакшен' руди библиотека, по твоей гордости за нее

anonymous
()
Ответ на: комментарий от anonymous

> А вот antares0 говорит:

И что он говорит? Где тут про разработку на основе образа? Вы вообще Smalltalk то видели? Вот там всё в образе, но при этом есть все небходимые инструментальные средства (включая контроль версий). А в CL образ это результат и рабочая среда, но сам исходный код всегда хранятся в файлах. Чисто теоретически, можно работать только с образом, но инструментальных средств подобных тем, что используется в Smalltak, нет, так что никто так, конечно, не делает.

archimag ★★★
()
Ответ на: комментарий от archimag

Томик стартер и хочет как в смолтолке. Не тупи.

В общем и тут лисп топик стартера подвел. Сплошной провал

anonymous
()
Ответ на: комментарий от anonymous

> Не ты ли в соседнем треде про ecl говорил?

ECL это довольно маргинальная реализация (с весьма ограниченным количеством пользователей), которая просто не реализует стандарт в необходимой мере, плюс имеет кучу своих баго-фичей. Обсуждать переносимость можно только для основных реализаций SBCL/ClozureCL/LW/Allegro, т.е. либо коммерческих, либо open source с мощным сообществом.

archimag ★★★
()
Ответ на: комментарий от korvin_

что именно?


Ну, хорошо, давай я тебе повторю.

Norgat: в REPL не программируют напрямую, а посылают туда код из редактора (читай: из SLIME).
Norgat: попробуйте писать в REPL напрямую, это неудобно

korvin_: никаких различий нет от ввода функции в исxодник не заметил

Norgat: ... - перечисляет неудобства

korvin_: а в SLIME это есть, а в SLIME и это есть...

Ну и с чём ты споришь? )))

Reaper ★★
()
Ответ на: комментарий от Norgat

> Имхо, проблема топикстартера в том, что он ещё не совсем понял, как юзать REPL(не пробовал?).

1 Не везде такой обгрызенный репл как в cl

2 Техник использования принципиально по меньшей мере две

вот например как это выглядит в уютном репле R

6.4 Philosophies for using ESS[S]

The first is preferred, and configured for. The second one can be retrieved again, by changing emacs variables.

1: (preferred by the current group of developers): The source code is real. The objects are realizations of the source code. Source for EVERY user modified object is placed in a particular directory or directories, for later editing and retrieval.

2: (older version): S objects are real. Source code is a temporary realization of the objects. Dumped buffers should not be saved. _We_strongly_discourage_this_approach_. However, if you insist, add the following lines to your .emacs file:

psv1967 ★★★★★
()
Ответ на: комментарий от tailgunner

Теперь кто-то хочет использовать твою функцию - ты дашь ему образ? Тебе надо предъявить функцию на review - образ? Тебе нужно посмотреть, как изменялась функция со временем - ты сохранишь несколько образов? Затейливо.

принципиально проблема только с версионностью. не думаю что в cl трудно изобразить аналог edit() из R (в принципе slime вершина этого для реплов :)

но проблема версий не такая уж и проблема в случае когда код пишется на злобу дня, а такого кода большинство. 90% случаев будут удовлетворительно выглядеть.

psv1967 ★★★★★
()
Ответ на: комментарий от archimag

> ECL это довольно маргинальная реализация (с весьма ограниченным количеством пользователей), которая просто не реализует стандарт в необходимой мере.

Чисто для интереса, а что именно он не реализует?

antares0 ★★★★
()
Ответ на: комментарий от anonymous

> А вот antares0 говорит:

Ну ты anonymous и вспомнил. У тебя что все топики про лисп за 5 лет проиндексированы?

antares0 ★★★★
()
Ответ на: комментарий от Norgat

> Сколько же упёртых людей, которые никак не хотят понять простой вещи: def'ы, с нормальным REPL, не объявляют в нём, а объявляют в реальных файлах

Это всем ясно, но ОП же понятным языком сказал - у него задача синхронизировать исходники из образа, то есть вводит он определения в репле. Нахрена он делает такое - другой вопрос.

anonymous
()
Ответ на: комментарий от psv1967

Вообще, сделать так, чтобы функции в лиспе сохраняли код - как два пальца об асфальт. Но, раз никто не делает, то, видимо, не нужно.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.