|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,377
|
Не-а. Начать надо с того, что определить глобальные переменные (которые практически константы). Обработчик ошибок (как замена *error*) применяться вряд ли сможет - библиотека-то должна функционировать внутри и сторонних разработок, а та могут быть свои обработчики ошибок. Поэтому первым кодом будет ru-error-catch. Потом уже пойдет определение активного пространства; чтение ini-файлов; создание текстового и (или) размерного стиля на основе ini-файлов или ответов пользователя; вызов и уничтожение объектов СОМ-серверов...
Блин, я так чую, что моего в этой библиотеке вообще ничего не будет ![]()
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
>Kpblc.
Правильно чуешь. Мою позицию про библиотеки ты знаешь. И как? ![]() Хоть бы кто-нибудь сказал: "Братцы, а можно написать программу, кторая будет опираться только на эту созданную базу?" Представляешь, маленький лиспик, а к нему в придачу на гиг база ![]() Нет концепции использования. Пока не будет сформулировано четко назначение этой базы - ничего не получится. Сразу скажу свое мнение - если базу собираются использовать как рабочее дополнение к основной программе - я такую программу как серьезное изделие буду воспринимать тогда, когда ее тело будет раз в пять превышать размер этой базы. Немного уточню свою позицию: Совокупное количество используемого кода должно в 5 раз превышать количество не используемого кода. Последний раз редактировалось Supermax, 12.11.2007 в 15:07. |
||||
![]() |
|
||||
Регистрация: 11.10.2004
e•burg
Сообщений: 755
|
> ShaggyDoc
1. Тады ждём рыбу, тогда и обсуждать бум. По разделению зон, считаю, что полностью закрытая зона нужна, но для решения технических вопросов, которые нет смысла выносить на обсуждение. Код должен публиковаться в исходниках, в ветках которые всем открыты только на чтение и только штатным "пополнителям" на редактирование. Должна быть зона публичного обсуждения, с возможностью постить для любого зарегестрированного посетителя. Собственно, основной путь пополнения библиотеки должен проходить, как раз через паблик. моя так думай 2. Поддерживаю. ![]() 3. Как бы ни было сие лестно ![]() 4. А вот доступ к редактированию самой библиотеки я-п давал крайне ограниченно - хотя-б из-за ошибок. 5. Чужой код без камментов - помойка - как правило, проще самому написать с нуля. Цитата:
Цитата:
![]() |
|||
![]() |
|
||||
Регистрация: 25.12.2005
Москва
Сообщений: 13,627
|
Я думаю, что "Готовые функции" и "Библиотека функций" - разные вещи. Вот Евгений Елпанов создал массу функций в теме
http://www.caduser.ru/cgi-bin/f1/board.cgi?t=25113OT Библиотекой это не назовешь, но некоторые функции оттуда и я применял. Такое впечатление, что здесь предполагается совместно создать еще одну САПР dwgCAD. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,377
|
Alaspher, по поводу комментирования: ну неужели надо будет комментировать строки типа:
Код:
Supermax, а ты знаешь мое. Для того, чтоб выложить любой более-менее рабочий код (нарисованный за 5 минут), мне приходится полчаса рыскать по библиотеке и вытаскивать функции. Екнуться ж можно!
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Конструирование в области нефтеразведки Регистрация: 10.02.2006
Гомель
Сообщений: 321
|
Ну никто же не запрещает взять код функции из "Библиотеки функций" и использовать его в своей программе, не используя *.fas. К тому же если для проекта будет созданно свое "именное пространство" т.е. раздел, в нем будут публиковаться функции, которые в свою очередь по решению "техсовета" проекта могут попасть в "Библиотеку функций". Если не попали - в топике все равно останутся...
|
|||
![]() |
|
||||
Регистрация: 11.10.2004
e•burg
Сообщений: 755
|
Нет, ты не понял - комментарии в теле функции - дело писателя - есть - хорошо, нет - ну на нет и суда нет. Обязательно и тщательно должно документироваться то, что делает функция (описание), формат аргументов, формат возвратов и (если есть) ограничения при использовании. Вот тут никаких полумер быть не должно - описываться должны все возможные варианты поведения функции, причём в заранее оговорённой форме. Чтобы тому, кто будет пользоваться не приходилось потом читать рассказы на вольную тему.
|
|||
![]() |
|
||||
Здравствуйте все!
![]() Читаю и не совсем понимаю, вы собираетесь делать библиотеку законченных функций или сборник идей, для использования в своих проектах? И еще, как будет организован поиск в базе, хотя бы из 5000 функций? На сегодняшний день, гораздо проще написать новую функцию, чем найти в интернете библиотечную... |
||||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,377
|
CB, боюсь, это будет тяжко. Если будет использован подход ruCAD'a (а он так сюда и просится), то выцепить одну функцию будет практически нереально. Как пример позволю себе привести дерево вызовов моей функции получения перечня атрибутов текста:
Код:
Alaspher, есть еще один мелкий вопросик: поскольку делается библиотека, и заранее неизвестно, что и как будет использоваться, придется повсюду вставлять отловы ошибок, так? А в вертикальных приложениях (типа ADT) я наткнулся на ограничение вложений vl-catch-all-apply - не больше 4 уровней, дальше они перестают работать (вообще, как будто их и нет в коде). Словил на 2005 и 2006. Как обходить - я пока не представляю, кроме как тупо вбивать if'ы и cond'ы ![]() Или это уже оффтоп покатил? ![]() Елпанов Евгений, вопрос можно? "Найти невозможно" - правильно. А почему? Может, потому, что комментарии отстствуют как класс? ![]()
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 11.10.2004
e•burg
Сообщений: 755
|
Цитата:
![]() Цитата:
|
|||
![]() |
|
||||
Цитата:
Как простой пример (быстрее написать, чем выбрать), необходимо найти программу без рекурсии, для удаления повторяющихся, рядом стоящих элементов. Как сложный пример (быстрее написать, чем найти), необходимо найти программу, для проверки, проходит ли луч, заданный точкой и вектором, через многоугольник / треугольник, в пространстве с произвольной системой координат. |
||||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
Сейчас идет пока обсуждение самой идеи - "делать ли", но уже непонимания.
1. С одной, стороны, те, кто слабо представляют, что такое библиотека функций выдвигают идеи про какое-то соотношение используемого и неиспользуемого кода. Какой-то "базы" и "программы". А если начнем "воспринимать программу" как серьёзное или несерьезное изделие по соотношению количества используемых-неиспользуемых стандартных средств? 2. Евгений, который безусловно знает, что к чему, заботится о поиске в какой-то базе функций. Если ему проще самому написать, так никто и не заставляет использовать библиотеку. И такой, "безбиблиотечный" подход есть. Однако мы постоянно видим массу примеров, когда использование готовых, отработанных библиотечных функций могло бы значительно сократить разработку программ. Один набор "get-xxxx" чего стоит... 3. Profan заботится об *error*, которая при "правильных" функциях никогда и не вызовется. И подозревает в проталкивании ереси, именуемой "САПР". Даже имя придумал - "dwgCAD". За язык никто не тянул ![]() ![]() Сейчас еще можно потрепаться, но если примем решение, то потом некогда будет азбуку разъяснять и почему так сделано, а не эдак. Конечно и по таким поводам никто не запретит высказываться, но в отдельных ветках. Давайте лучше по существу. Для начала все желающие могут предложить форму начальных комментариев - Цитата:
|
|||
![]() |
|
||||
Цитата:
Другими словами, есть несколько вариантов и я хочу понять, какой из них, здесь пытаются реализовать... 1 вариант - создание взаимосвязанной библиотеки функций. В этом случае, видимо, все пользователи этой библиотеки, сразу впадают в зависимость от нее, т.е. сейчас скачивают готовые функции, потом на новой версии автокада, они не работают, нужно либо долго ждать обновление от автора, либо самому разбираться в большом количестве чужого кода, причем взаимосвязанного... 2 вариант - создание библиотеки различных функций, которые полностью самостоятельны, могут быть подключены в любое место. В этом варианте, тонкое место - количество функций и возможности поиска. Я бы поддержал именно этот вариант. |
||||
![]() |
|
||||
инженер (КМ) Регистрация: 30.10.2004
Красноярск
Сообщений: 3,837
|
Действительно, вытащить неподготовленному человеку функцию из rucad практически невозможно уж больно сильно там все переплетено. Поэтому если это первый вариант от Елпанова, то к форме начальных комментариев я бы добавил и краткое описание иерархии входящих функций до самого первого уровня, примерно то что показал Крыс в 51 постинге.
|
|||
![]() |
|
||||
Регистрация: 11.10.2004
e•burg
Сообщений: 755
|
Цитата:
Цитата:
На мой то взгляд самая важная проблема, это классификатор, именно потому я и предлагаю придумать систему тегов, по которым можно было бы сортировать функции. Как это реализовать - не знаю, но выглядеть это должно так - выбираешь интересующие теги из списка и функции отбираются по данному критерию, причём теги должны суммироваться, т.е., если я хочу найти функции для преобразования строк, то выбираю теги "сторка" + "преобразование" и уже в списке содержащем оба тега ищу нужное. |
|||
![]() |
|
||||
>ShaggyDoc
Вы правильно уловили мое отношение к библиотекам, но не надо говорить, что я слабо разбираюсь в этом. Слабо может быть по отношению к вам, в смысле вы сильнее, а я слабее, но для себя любимого, совсем не слабо. Я противник использования библиотеки как аппендикса программы и не надо над этим иронизировать. Это кстати «проблема века» для всех компьютерщиков. Эти «библиотеки», вместо того чтобы нести знание в люди, несут деградацию программ. То, что раньше могло быть сделано компактно, а значит быстро обрабатывалось, теперь похоже на скульптуру из пивных банок и бутылок. А зачем писать функцию – возьмем пару существующих, которые ее могут заменить. Программа занимает сотни мегабайт места на диске, а работает как те, что в 286 компах помещались на дискетку. Самое интересное, что утверждение Цитата:
Однако мы постоянно видим массу примеров, когда для решения простых задач используются сложные алгоритмы, предназначенные для совсем других целей, но оформленные как функция и поэтому более доступные программисту. Короче микроскопом забиваем гвозди. Одним людям надо наработанную базу упорядочить и превратить в справочник, а другим - превратить в конструктор лего. Вот я за справочник и против конструктора. Цитата:
Нет, описание вещь великая, только искать функцию надо не по описанию. Оно надо, но как вторичное, уточняющее средство. Классифицировать функции по описанию? Так может сначала классифицировать, а потом описывать? |
||||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,377
|
Попробую и я высказаться
![]() > Елпанов Евгений, я согласен, что зачастую написать "с нуля" функцию-однодневку проще и быстрее. Согласен и с тем, что в критичных ко времени выполнения функциях лучше всего использовать линейный ход программы, без вызовов других функций. Но тут основная задача не только и не столько соблюсти / нарастить скорость, сколько повторно использовать отлаженный код, выполняющий строго определенную задачу. Этакий аналог MFC нарисовать, только для AutoCAD'a и под лиспом. > Alaspher, по-моему, такой подход потребует специального софта, да еще и написанного с учетом того, что "сумма длин отрезков" может быть написана как "сума длинн атрезкаф" ![]() Может, проще определиться с законом формирования имен функций, да и следовать ему по максимуму? > Supermax, я все понимаю. Но когда ты раз этак 10-20 напишешь один и тот же код, а потом тебе понадобится его быстро поменять, я думаю, ты изменишь свое отношение к библиотекам. У меня (я последовал мудрому примеру) нарисована всего одна (!) функция, заменяющая мне все варианты getstring, getint, getdist, entsel и гарантированно возвращающая предсказуемый результат независимо от действий пользователя (что бы тот ни нажал, ну, кроме Reset, конечно). Точно так же нарисована всего одна функция, которая преобразовывает и variant, и safearray в список, которым я могу спокойно управлять. Примеров повторного использования кода масса. У меня почему-то в случае А возвращается верно, а в случае Б - нет? Так мне не надо ползать по десятку/сотне/тысяче (ненужное подчеркнуть) команд и функций, исправляя ошибку. Это все расписано в "САПР на базе", кстати ![]()
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 11.10.2004
e•burg
Сообщений: 755
|
Цитата:
|
|||
![]() |
![]() |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как связать две функции | 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 |