|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
|
||||
>Kpblc
Я как понимаю: Есть 100 секций программы и в каждой применяется 10-15 одинаковых функций. Я сгласен, что создав библиотеку из этих 10-15 функций мы делаем более совершенной программу. Но это только при условии, что универсализм как ты его описал есть компромис между легкостью в работе программиста и эксплуатационными качествами готового продукта. Если ты как программист будешь тянуть одеяло на себя и думать только о своих ощущениях при работе с текстом программы "звездолет" не то что не поднимится в космос, он не оторвется от взлетной площадки. Все будет работать, я подчеркиваю, но результат будет выглядеть как ракета весом в 1000 тонн с полезным грузом на борту в 1 кг. С увеличением функций в библиотеке, функций лиспа в теле программы будет все меньше и меньше, пока они не исчезнут вообще. Появится новый уровень языка, хотя сам лисп не такой уж и низкий. Да я буду делать тоже, что и ты, только где-то в глубине мозга будет биться творческий червячок, пока не сдохнет окончательно от безнадеги. Сейчас людей знающих ассемблер раз, два и обчелся. Скоро и лисп станет языком низкого уровня. Что такое "красивое решение"? Вот я смотрю на текст программы и вижу, как она красива. Как все оригинально придумано, как ловко решены проблемные моменты. Как компактно сделаны функции - ничего лишнего. У тебя Kpblc были такие моменты в работе? Как сделать так, чтобы знания и опыт, выраженный в тысячах сделанных функций перетек в качество новых программ? Не стал разменной монетой в погоне за длинным рублем, а научил, как делать настоящие вещи. Я понимаю всех, кто каждый день пишет программы и вынужден повторяться, но неужели моральная усталость убила в вас художников? Я тоже люблю бабло срубить по быстрому, но вот если при этом и качество выдать на гора, то это будет вааще! Каждая функция это микропрограмма с конечной целью. Можно добиться этой цели разными путями, но среди всех есть путь наиболее рациональный и грамотный. Надо эти пути понимать и распространять это понимание среди других. В них заложена красота решения задачи. Но вы на мои вопли особо внимание не обращайте. Если появляется инструмент, позволяющий писать в день не одну, а 10 к примеру программ, то это деньги! А поскольку за красоту программ никто не платит, так и фиг с ней. Вот когда наступит кризис, вот тогда и разгребать его будем. Последний раз редактировалось Supermax, 12.11.2007 в 23:54. |
||||
![]() |
|
||||
Регистрация: 25.12.2005
Москва
Сообщений: 13,627
|
Ни хрена не понимаю. Понимаю, однако, что "Готовые функции" совсем не то, что "Готовые программы". В готовой программе можно определить прикладное назначение кода, про готовую функцию так не скажешь. Функция для программиста, программа для проектировщика. Библиотека функций - неизвестно для кого. Что из этого следует? А то и следует, что предлагаемая здесь стратегия не для меня. И лучше не соваться, а то будет гав.
|
|||
![]() |
|
||||
инженер (КМ) Регистрация: 30.10.2004
Красноярск
Сообщений: 3,837
|
Не понял, какие ошибки? Сам пытаюсь прописывать в коментах, чего куда ссылается и даже какие проги используют эту функцию. Иначе через месяц в свой же проге не разберусь. А если сделать "автоматический механизм связывания", то этож будет еще полезнее чем тэги (может просто - ключевые слова?). Скачав нужную мне функцию, в придачу к ней тянутся все используюмые подфункции в ней. Таким образом обычному пользователю не надо будет тащить эту кучу мусора о которой говорит Supermax, на этом уже и поучится можно будет. Если б это дело еще и в проект как то собиралось (*.prj в редакторе VisualLISP).
|
|||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
Цитата:
Я пока предполагаю, что обязательной частью комплекта библиотеки должен стать настоящий файл справки в формате CHM (HLP Microsoft скоро убьет). В справке будет и дерево, и ключевые слова, и гиперссылки. В том числе могут быть ссылки на внешний файл с действующим исходным текстом. Здесь мы имеем все изобретенные возможности для поиска. Я упоминал также про CMS MODx. Если использовать её для публикации в Интернет, то для каждой страницы можно создать "облако тегов", которое позволяет автоматически вставлять сборник ссылок на "родственные", связанные функции. Плюс, конечно поиск встроенными средствами по индексированной БД, а не Gooogle. Пока сам я (исключительно из-за "лени" по созданию HELP) работаю так. 1. Конечно же я не помню всех своих функций. А если и помню, то не полагаюсь на память, а всегда открываю в SourceExplorer. 2. Если надо - ищу в нем же, по фрагментам текста. Получаю список файлов, можно каждый просмотреть (список сохраняется до следующего поиска). 3. Часто пользуюсь многофайловым поиском в VisualLISP. Он сделан очень неплохо, держит список найденного, позволяет щелчком загрузить требуемый файл. |
|||
![]() |
|
||||
Регистрация: 11.10.2004
e•burg
Сообщений: 755
|
Цитата:
Цитата:
Почему вреда будет больше - да потому, что появятся лайт сборки "только то, что нужно для данной программы", при этом, естественно, никто не будет отслеживать версийность этих функций и заменять, при корректировке основной либы. Подгрузка вспомогательных функций в подавляющем большинстве случаев осуществляется одномоментно с использующей их программой. Т.е., при загрузке нескольких таких лайт сборок рано или поздно возникнет конфликт, когда очередная подгрузка перепишет уже определённую функцию на более старый релиз и это вызовет проблемы. Почему я за то, чтобы такой механизм был, несмотря на его вредоносность - я абсолютно убеждён, что нельзя мешать человеку совершать глупости. Ну кроме случаев, когда это касается меня лично. ![]() Цитата:
Код:
В принципе, тегов может быть больше, чем одна система - например, таким же образом можно хранить линки на вложенные функции (только первый уровень) и, при необходимости строить каскадный список всех задействованных. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,404
|
Alaspher, лично мне будет проще полную библиотеку протащить и не мучаться, вручную пересобирая fas. Вон, doslib таскают же целиком, несмотря на то, что используется оттуда 2-3 функции, и ничего
![]()
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Цитата:
Про глобальные переменные - сложнее, поскольку они встречаются в теле функции. Их надо выискивать и тоже добавлять ник в имя. Я очень опасаюсь, что модернизация функции может привести к появлению в ней дополнительного аргумента, что приведет к неспособности существующих программ работать с такой функцией. Наверное надо чтобы имя функции содержало нечто вроде контрольной суммы, по которой можно оценить взаимозаменимость. В таком случае вообще можно и без ников обойтись, поскольку новая функция будет отличаться именем от старой. Накладок не будет. В больших КБ совсем не обязательно на каждом рабочем месте держать огромную библиотеку функций, достаточно сделать выборку и держать маленькую библиотечку. Вот так и овцы будут и волки. |
||||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,404
|
Supermax, глянь на http://www.arcada.com.ua/forum/viewtopic.php?t=435 - идеи, кстати, ruCAD;овские до мозга костей
![]()
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
Цитата:
![]() Пока что вроде говорили про библиотеку, то есть а) Куча организованных как-то LSP в файловой системе б) Файл проекта, который позволяет из кучи LSP сделать один FAS в) Документация в том или ином виде. Теперь об этой гипотетической БД. Да, можно подобную базу организовать. В принципе. Но детали в реализациях. Если уж это коллективное творчество, то надо делать удаленный сервер в Интернет с соответствующим доступом. Всякие локальные таблицы не пойдут - их невозможно будет синхронизировать. А вот файлы - можно. Всё это выльется в весьма серьезное приложение. Про библиотеку можно будет забыть. Займемся разработкой очередной CMS. Но ничего этого делать не надо. Обычный файл справки решает все вопросы поиска - если правильно его делать, вовремя присваивать ключевые слова (теги), ставить гиперссылки. Есть и специальные системы для разработки, системы контроля версий. Но незачем нам с этим связываться. Есть и штуки, наподобие WIKI-педии. Нам и это не требуется. Есть и программы, в которых можно хранить "что угодно". Сделать программу, которая может выбрать из библиотеки только используемые функции можно. Но пусть этим VBA-шники занимаются - там иного пути нет. Пусть "нельзя мешать совершать глупости", но и помогать тоже не следует. Может не будем усложнять? Или уж тогда нужна не идея, а готовое решение. Может быть оно есть? |
|||
![]() |
|
||||
Готового решения нету, но есть идея...
Можно совместить все предложения и за счет увеличения времени загрузки программы, каждый раз при загрузке, оценивать все теги в программах и подгружать толко необходимые функции из библиотеки. Т.е. при загрузке программы, использующей библиотеку, она сканируется на наличие вызовов библиотечных функций и подгружаются только они. В итоге, у каждого на компьютере есть полная библиотека, все необходимые для работы программы функции, всегда загружены.. Здесь, очень поможет система индексации библиотеки, для правильной загрузки взаимосвязанных.. |
||||
![]() |
|
|||||
Регистрация: 11.10.2004
e•burg
Сообщений: 755
|
Цитата:
![]() Цитата:
в) Документация, в идеале, в виде единого хэлпа для локального использования и описание функций при публикации в Форуме. Цитата:
Цитата:
![]() |
||||
![]() |
|
||||
Для начала, предлагаю в разделе Downloads\разное\программы создать подразделы "макросы AutoLisp" "макросы VBA". В "макросы AutoLisp" создать подраздел "функции AutoLisp" а в этом подразделе взять оглавление книги Полещука "AutoLisp и Visual Lisp в среде AutoCAD" и сделать из него дерево, поскольку все уже привыкли к его классификации. В подразделы этого дерева класть с описанием имеющиеся функции.
Это только начало. Надо чтобы на сайте была опция "скачать все функции" и выбор в каком виде скачать. Вот тут для любителей конструктора лего и найдется работенка, а мне и просто Downloads-a хватит. |
||||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
В полном соответствии с законом о сроках, изложенном в "САПР на базе AutoCAD...." обещанный мною "день-другой" обернулся в две недели.
Выкладываю нулевую версию библиотеки. Это инсталляция прототипа библиотеки DWGruLispLib. Предназначена для того, чтобы посмотреть как примерно это должно быть сделано. Основной компонент пока - справочная система, в которой излагается общая концепция и правила разработки библиотеки. Все это для обсуждения и для привлечения желающих надеть на себя ярмо. Для примера включены и "Addons" - дополнительные компоненты, которые можно использовать по желанию. Пока там пара примеров из ruCAD (XMLmenu и XMLstorage), а также полностью рабочая библиотека ruCAD. Но о том, как это использовать пока нет ни слова. Кто знает - тот знает. После знакомства призываю желающих включиться в разработку. То есть "чисто конкретно" записываться и предлагать взять на себя какую-то часть. Болельщикам - вести себя по усмотрению. PS. В последний момент DLL исключил, а то не пройдет по размеру вложение. PPS. Если это объявление считать хорошей новостью, то будет и плохая. |
|||
![]() |
|
||||
ShaggyDoc, да продлятся ваши дни до бесконечности!
Вижу способ организации работы над библиотекой. 1. Кладете данный файл в Download, но сперва зарегистрируйтесь, например, как ShaggyDoc-2 и под этим ником кладете этот файл. 2. Активным лицам, облеченным вашим доверием вы сообщаете пароль на редактирование данного файла. Что-то типа модераторов вложения получится. Собственно поэтому и надо его выложить с отличным от вашего ником. 3. Открываем чистую тему, ссылку на которую пишем прямо в txt файле справки. В ней мы будем выслушивать и анализировать разные идеи. 5. Чтобы положить свой лисп в библиотеку, его надо сначала выложить в тему и от туда он уже одним из модераторов вложения будет перенесен в тело самой библиотеки. Корректировка самой структуры тоже будет осуществляться модераторами вложений. Хотите сами все делайте, хотите - просто приглядывайте, за модераторами. В общем, не очень напряжное занятие. Предложение на модераторство сами инициируйте, как на всех порядочных сайтах делается. По такой системе можно и альтернативный проект развивать. |
||||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,404
|
Только-только скачал, еще не смотрел. Но "будет и плохая" настораживает...
--- Добавлено: Есть несколько предложений (сразу, с ходу). Возможно, меня закидают камнями, но тем не менее. - снять требование записи форматирования кода напрямую в файл; - снять требование ввода команд, опций и системных переменных в верхний регистр; - при обработке ассоциированных списков с возможностью использования в качестве ключа строкового значения обязательно использовать один (единый) регистр (например, нижний) для корректного срабатывания (assoc) без доп.обработки списка. --- Добавлено 2: Темой дело не обойдется, боюсь. <Удалил>. Надо еще разок подумать...
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. Последний раз редактировалось Кулик Алексей aka kpblc, 27.11.2007 в 16:52. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,404
|
Еще не вечер. Supermax, пойми, тут одной темой не обойдется хотя бы потому, что функций будет немеряно. В результате будет нечто типа "Поиска справочной литературы" старого образца. Оно надо?
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Всплывает также старый спор о самодостаточности этих функций. Надо прямо в названии, сразу за dwgru ставить или SD или SV самодостаточная или связанная функция. Если самодостаточная, то ее можно вставлять в программу без боязни, если связанная, значит она связана с какими-то еще функциями из библиотеки. На такие функции надо давать комментарии с указанием перечня использованных внешних функций.
|
||||
![]() |
|
||||
Есть много хороших функций, которые применяются внутри вновь созданной функции, но они из "чужих" библиотек. Там свои правила "правописания", а копировать их содержимое под другим именем или писать типа (defun dwgru-aaa-bbb (/) 2CB) где 2СB имя функции из другой библиотеки, как-то смешно. Как быть?
И вообще, что делать с вполне приличными, написанными весьма грамотно функциями конкретных авторов? У меня много есть "не моих" функций, которыми я могу вполне легально поделиться с общественностью, но получается в эту библиотеку вставить не могу. |
||||
![]() |
|
||||
Ну тут напрашивается тот же вариант, что и с блоками. Сопровождаемые авторами функции или не сопровождаемые.
Те, что сопровождаемые - строго по правилам библиотеки написаны. Те, что не сопровождаемые - отдельной кучей или с пометками в справке самой библиотеки. |
||||
![]() |
![]() |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как связать две функции | Holon | Программирование | 11 | 30.07.2007 13:32 |
Имя Layout'а из результата функции vla-get-activelayout | kp+ | Программирование | 4 | 16.08.2005 07:58 |
Странности функции rtos | FWA | Программирование | 2 | 16.02.2005 11:37 |