Re: Стоит ли изучать ObjectARX
> Н.Н.Полещук
Да, со временнымифайлами я понял. А без них?
Информационный портал для профессионалов в области САПР
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Форумы CADUser → Программирование → ObjectARX → Стоит ли изучать ObjectARX
> Н.Н.Полещук
Да, со временнымифайлами я понял. А без них?
> Н.Н.Полещук
Николай Николаевич.
Как исхитриться и на билдере все-таки сделать ARX? Если и получится, то с большими проблемами.
Никак. AutoCAD проверяет версию компилятора и это зарыто так глубоко, что не стоит даже и связваться. Но! Никто не запрещает делать .NET-приложения на билдере (если он конечно умеет их делать - я не в курсе) и загружать их в AutoCAD, аналогично тому, как мы делаем со сборками на C++/C#/VB используя VS.
А можно немного из азов?
Что такое, собственно, ObjectARX и что такое .NET-приложения?
> Glorius
В чистом виде и то и другое - это dll-файлы. Но чистое arx-приложение не использует .NET, а .NET-приложение только его и спользует, но через P/Invoke может обращаться к некоторым из "родных" функций ObjectARX (воспользуйся поиском по форуму .NET). На C++ (но только на VC++) можно делать и смешанный ("Mixed") код, когда приложение одновременно и arx и .NET.
А можно ли провернуть такое дело. Запроектировать в Билдере некоторую форму обработки некоторой Команды. Затем, при вызове Команды Лиспа в Автокаде, открыть приложение Билдера, задать некоторые параметры Команды, передать эти параметры Лиспу. А?
Это возможно через COM. Варианты:
1. Делаешь свой COM-сервер и обращаешься к нему из LISP (или из любой программы, написанной в среде, поддерживающей COM)
2. Обращаешься к AutoCAD как к COM-серверу. Так работают объектные функции VisualLisp и VBA.
LISP знать надо в любом случае - это встроенный "язык общения" в AutoCAD. Хотя бы для того, чтобы загрузить ARX-приложение.
ARX сделать можно и на Builder. Для этого в DLL надо определить три обязательные функции. Только такой ARX не загрузится в современный AutoCAD. А вот в версии R14 такой фокус проходил.
Основной недостаток ARX - привязка конкретной версии VS к конкретной версии AutoCAD. Типа, бабками надо почаще делиться. Есть и "маленький недостаток" - сложность. Разумеется, это не синтаксис языка. Чтобы начать писать что-то приличное, надо с годик вникать. На LISP "приличное" можно начать писать через месяц. Но кое-что можно сделать исключительно на ARX.
Если условно задаться областью применения OdjectARX под AutoCAD = 100%, какой процент покроет AutoLISP?
И по поводу быстродействия тут говорилось, насколько LISP уступает по этому показаелю?
> Glorius
Если упрощенно, то автолисп дает возможность делать все, что угодно, в рамках возможностей автокада.
ARX - дает возможность расширять возможности самого автокада и лиспа, т.е. не просто автоматизировать используя имеющиеся возможности, но и добавлять принципиально новые, например, новые типы примитивов...
И по поводу быстродействия тут говорилось, насколько LISP уступает по этому показателю?
На разных задачах по-разному. Есть задачи в которых выигрыш будет минимальный, в других в десятки если не в сотни раз.
> Glorius
Смотря какие задачи. Если задумаете нечто "интеллектуальное", наподобие ADT или ABS, с собственными объектами, скажем СТЕНА, то это надо делать только на ObjectARX.
Если делать нечто наподобие СПДС, то здесь, по моему мнению, разработка на ARX только вредит - задачи мелочные, но разрабатываются долго, полно глюков, несовместимость версий, неприятности с proxy. Это гораздо легче и удобнее делать на LISP.
Однако навороченные приложения есть кому делать и без одиночек. А без "новых примитивов" обычно можно обойтись. Хотя бытует мнение, что программа на ARX заведомо "лучше". Хотя чаще зависит от HAND.SYS.
Быстродействие обычно не является критичным, 90% времени уходит на "разевание рта". Хотя есть и задачи, требующие длительного времени. Часто их можно ускорить на алгоритмическом уровне. Разумеется, ARX при прочих равных условиях быстрее. Но так ли важно, нарисуется "забор" за 0.01 сек или за 0.0001 сек? Вот если рисовать"забор" Москва-Пекин со всеми штакетинами, тогда важна скорость.
Имеют значение и чисто "языковые" свойства. На LISP можно написать в одной строке такое, что на C++ (при использовании только минимальных "стандартных" функций) потребует несколько страниц кода.
Мне лично язык не имеет значения, на работе, в основном пишу на C++ с Qt и Java, но для AutoCAD - LISP+COM на Delphi.
Glorius
1) Если ты хочешь написать 2-10 команд для себя, то париться с изучением ObjectARX - не стоит свечь.
2) Если ты хочешь написать для комерческой продажи, то оцени реально свой уровень знания (два года надо будет учить С++ и ObjectARX и скорее всего .NET(C# + идеологию fRamework-a) и т.п.). Оцени реально уровень конкуренции. Если ты хочешь делать 2-10 команд, то инвестиции и конкуренция на 100% не в твою пользу и изучать ObjectARX не имеет смысла.
3) Если ты хочешь писать серьезное приложение, долгосрочный проект под AutoCAD, то учить ObjectARX придется по любому. Но прежде оцени инвестиции, трудозатраты и время. Для серьезных коммерческих приложений при отсутствии "наставника" или "платных курсов" тебе потребуется года три как минимум на ObjectARX, чтобы писать реальный конкурентноспособный код.(С учетом, что тебе надо учить С++/.NET/C# и идеологию AutoCAD и множество программных шаблонов).
4) Если ты хочешь просто выучить ObjectARX чтоб потом "устроиться на работу", то тоже реально оцени свои шансы и неширокий рынок программистов под AutoCAD (относительно других областей). Если ты студент и тебе еще года два можно "обучаться", то флаг в руки и все дело в стремлении человека. Если ObjectARX выучишь на 5+ и у тебя есть/будут "мозги хорошего разработчика", то дерзай, думаю трудоустроиться (скорее всего с переездом) будет вполне реально.
Если тебе надо кормить себя и семью уже сейчас, то это, конечно, дело личное... можно попробовать совмешать... но это очень высокий риск.
5) Если работаешь в достаточно серьезной организации (большой проектный НИИ, или КБ), и вдруг этой организации понадобились разработчики под AutoCAD на долгосрочную перспективу, для того, чтобы решать себе какие-нибудь постоянно возникающие задачи, то учить ObjectARX - НАДО. Но организация должна четко понять что это серьезное инвестирование с отдачей не ранее чем через год.
Т.е. для того, чтобы серьезно разрабатывать под AutoCAD - есть два пути "Коммерческий" и "Непрофильный".
"Коммерческий" - Найти спонсоров и инвестиции, четко понимать о времени отдачи (не ранее двух лет), составить бизнес-план и в плавание.
"Непрофильный" - На базе некоторой организации(КБ, НИИ и т.п.) начать разработку под AutoCAD, под нужды этой организации. В перспективее возможен вариатнт отделения в самостоятельную независимую "Коммерческую" ветку.
ObjectARX vs Lisp
Поэтому если у Вас нет ресурсов (времени и денег), то учить ObjectARX нецелесообразно. Если Вам нужно серьезно программировать под Акад и есть организация/спонсор, готовые проинвестировать проект, то необходимо учить ObjectARX (организация и спонсор должны это четко понимать что это долгосрочное инвестирование). Если надо сделать небольшой набор "заплаток", то надо использовать Lisp или найти на стороне готовые решения. Ради этого учить ObjectARX - дорогое удовольствие.
Я думаю что этот ответ универсален - т.к. вопрос о целесообразности учить ObjectARX возникает с достаточной регулярностью. Но вместо того, чтобы смотреть на это "сверху", все начинают углубляться в примеры отдельных команд.
> KonstantinM
Спасибо за толкование.
Решение программировать под автокад возникло исключительно ради коммерческой выгоды. Но поскольку сам его постоянно использую (работаю инженером-конструктором), то конечно и для своих нужд буду что нибудь делать.
А в будущем просто хотел открыть свое дело по разработке программного обеспечения, специализируясь на различных типах проектных организациях, поскольку работая с проектировщиками мы сможем лучше найти общий язык относительно их потребностей. Сначала хотел сосредоточиться на различного рода расчетных и вспомогательных программах на С++, программирование под автокад - еще одна дорожка к взаимовыгоде. Под автокад все таки решил изучать пока Лисп, за ARX возьмусь может быть позже (если возникнет необходимость).
Всем спасибо за советы и участие в моем вопросе! :)
> Glorius
Не хочу тебя расстраивать, но писать программы должен программист-разработчик, а проектировать в AutoCAD - инженер-конструктор и проектировщики...
Я уже давно заметил, что основная масса людей, задающая вопрос о целесообразности изучения ObjectARX, принадлежит к касте людей использующих AutoCAD в работе, и которым не хватает каких-то "фич" и "примочек" под себя.
Надо быть реалистом. Разрабатывать программы и быть проектировщиком-инженером-конструктором - это авантюра, которая обречена на смерть в самом ее начале. Просто все зависит от твоего упорства, возможно что на Lisp ты сможешь в свое время при затрачивании на это необходимого времени что-то создавать... Но пойми, что программирование в широком смысле - это то, чему люди учаться годами, десять лет, с университета и т.п. Если сравнить это с музыкой, то ты говоришь, что хочу писать свою музыку как мне надо(разрабатывать программы), но играть на пианино пока не умею(знание С++ и опыт разработки)...
Я сторонник специализации, что человек должен быть профессионалом в своей области. Т.е. лучше быть хорошим проектировщиком и выполнять больше проектов и заказов, чем проектировать объекты и паралельно что-то кодировать... рискуешь ослабить рост своего профессионализма в области проектирования, взамен став посредственным разработчиком...
В твоем случае рекомендую найти нужные тебе "феньки" на стороне. А если их нет, то купить и заказать "на стороне".
Если хочешь заняться коммерцией на этом, то лучше найти программиста и ставить ему задачи (и платить зарплату соотвественно - опять к вопросу ресурсов), а самому заниматься проектированием.
> KonstantinM
Проектирования я уже накушался :), да и на дядю работать надоело. Естественно программировать сразу коммерческий код я не смогу - я просто буду постепенно приобретать вторую специальность - программист, опыт же работы проектировщиком должен дать огромную пользу при написании программ не вплане искусства программирования, а в плане понимания того, что нужно вообще.
Конечно вся затея попахивает авантюрой. Есть вопросы и по разработке и по распространению, но посмотрим что из всего этого получится.
Сначала хотел сосредоточиться на различного рода расчетных...
Так вот для расчетных программ (IMHO) и следует использовать С++/ObjectARX:
1) производительность;
2) возможность создать удобный и красивый интерфейс, чего при помощи lisp'а сделать нельзя - его возможности в этом плане очень ограничены. Это не значит, что не следует использовать lisp - часто он бывает намного лаконичнее и удобнее.
> Glorius
Из личного опыта - лучше тебе заняться разработкой и ставить задачи программистам, чем пытаться программировать самому.
Из личного опыта — лучше тебе заняться разработкой и ставить задачи программистам, чем пытаться программировать самому.
Я очень надеюсь что в процессе все так и будет. Но начинать я буду один, поэтому просто необходимо уметь программировать, да и если руководителем стану знания такие не помешают.
А что касается расчетных программ, то тут считаю вполне достаточно знать С++ и С++Builder6 который я использую. Я имею ввиду расчетные программы без привязки к автокаду - самостоятельные.
KonstantinM очень точно изложил варианты.
Да еще есть специфика xUSSR, где все делается "со спецификой".
Приложения для AutoCAD - очень узкий рынок в коммерческом смысле. Не нужны они "распорядителям кредитов". А инженерам нужны. Не от хорошей жизни они сами делают всякие "довески".
Разумеется, идеально, если инженер занимается постановкой задачи, а программист - реализацией. Но что делают "чистые программисты" в проектных организациях сейчас, все наверное, знают. И многие ли из тех, кто называются программистами могут разработать хорошую программу, так как надо, а не так, как могут? И многие ли из них задерживаются хотя бы на несколько лет? При этом профессиональный программист для AutoCAD просто обязан знать ObjectARX (как и многое другое). Да еще и знать инженерную специфику.
Разумеется, есть и исключения, такие, как Александр Ривилис. Но много ли их?
Даже в "добрые старые времена", когда были крупные проектные институты до 1000 чел, разработкой систем проектирования занимались в единичных. Но везде - бухгалтерия, сметы, всякие АСКИД и прочие АСххх. Сейчас все иначе. Кто же выделит хотя бы одну пару постановщик-программист? А таких пар надо несколько.
В целом коммерческие перспективы программирования для САПР слабые, не сравнишь с 1С. Хотя может образоваться и удачное стечение обстоятельств. Случайно.
PS Builder теперь пора забывать, надо срочно переходить на что-то иное. Он и так отставал от Delphi, теперь, после раздела Borland дельфисты перейдут на Turbo, а куда билдеристам податься? Только на продукты Microsoft.
Разумеется, есть и исключения, такие, как Александр Ривилис.
Это в каком смысле, Сергей Александрович? :) В том что я чистый программист?
> Glorius
Я начинал программировать под AutoCAD в далеком 1989 году, причем сразу профессионально (в том смысле, что платили мне именно за это). Времена и условия были совершенно другие. Конкуренции практически не было и небольшие команды разработчиков/программистов в состоянии были создать продукт, который пользовался спросом - т.е. его готовы были покупать. Причем как бюджетные организации, так и зарождающиеся строительные кооперативы и даже в частном порядке архитекторы и конструкторы.
Сейчас выйти на этот рынок и занять в нем свою нишу достаточно сложно - появилась масса программ (это если не учитывать тех, которые создает сам Autodesk). Нужна какаято идея, которая еще никому не пришла в голову.
Но отговаривать не буду - дерзай.
Сейчас выйти на этот рынок и занять в нем свою нишу достаточно сложно
Вот! Именно то, что в моем регионе все наоборот я и надеюсь на что-то. Конкуренцию никакой! Думаю только в нескольких солидных фирмах дополнительному программному обеспечению уделяется внимание.
> Александр Ривилис
Это в каком смысле, Сергей Александрович? :) В том что я чистый программист?
В том, что уже "нечистый" программист, т.е. сочетание инженера и программиста. Или наоборот. Причем неважно, с каким именно изначальным образованием. "Плотют" за одну работу, делаешь две. "Да больше, больше..."
> Glorius
Правильно Александр говорит - дерзай! Было бы желание. Времена меняются, меняются и потребности в специалистах. "Брокеры" уже никому не нужны, а какие спесивые были. Возможно, понадобятся и прикладные программисты.
Хорошо было и в начале внедрения AutoCAD. Я свою первую, смешную по нынешним временам "систему" продал за $22000 через полгода работы, а потом еще раз за $50000. Тогда еще были "советские" конторы, которым надо было "деньги осваивать".
Я свою первую, смешную по нынешним временам "систему" продал за $22000 через полгода работы, а потом еще раз за $50000.
Ух ты! Я предполагаю, что первая моя программа будет не дороже 100 баксов :)
ShaggyDoc (2007-02-14 06:34:50)
При этом профессиональный программист для AutoCAD просто обязан знать ObjectARX (как и многое другое).
Уважаемый С.А.!
А если по должности ты называешься программистом, а по сути - draftsman. И программирование - это только "хобби", то есть начальство тебя не "подталкивает" делать программы? Хорошо, что хоть есть форумы, иногда классные идеи народ выдает!
Значит ли это обязательность знания ARX и прочее. Мне например LISPа за глаза хватает (правда с оговоркой ПОЧТИ). Конечно, я понимаю, что знание C, NEN, COM и пр. не повредило-бы, но ЛЕНЬ (туды ее в качель), если нужные задачи решаются и так, хотя хотелось бы, чтобы код LISP побыстрее работал в некоторых случаях.
И вообще, наша надежда на молодежь! За последнии 2 года вполне определенно видно, что смена подрастает, красивые программы появляются (VVA и пр.)
> KAI
Настоящий программист не должность, а "состояние души". Полно "программистов" и по образованию, и по должности. Но у них нет "программистсткой души", занимаются чем угодно - чаще всего "компьютерными" делами, но не программированием. Также бывает и с инженерами.
А у многих инженеров программирование - "вынужденное хобби". И часто делают программы намного лучше, псевдопрофессионалов. Настоящие же профессионалы программирования редки, но работать с ними одно удовольствие.
> ShaggyDoc
Настоящий программист не должность, а "состояние души". Полно "программистов" и по образованию, и по должности. Но у них нет "программистсткой души".
Тьфу, блин, на "состояние души"... :)
Настоящий программист - это программист, который получил хорошое образование в этой области !И! имеет хороший опыт работы с !правильно! вставленными мозгами.
Я кручусь в среде, где готовят программистов из студентов. Есть факультеты специализированные на обучение будующих разработчиков ПО.
Если студент честно отучился и получил корочки диплома, то он еше не программист. У него "мозги" не вставлены и нет опыта.
Студент должен попасть (еще во время обучения) на некоторую работу в девелоперской компании. Попасть в компанию, которая не доски сколачивает, а занимается реальной разработкой софта. Тогда студент пройдет путь от писания банальных алгоритмов, создания маленьких компонентов, изучение паттернов программирования и затем построение архитектуры, скручивание компонентов воедино, выучит некий(несколько) стиль code-conversion чтоб писать аккуратный понятный код и мн. др.
После этого человек становится "настоящим программистом". Именно поэтому "настоящих программистов" мало. Обычно разработчики останавливаются на стадии написания алгоритмов и маленьких компонентов и "хаотичного" скручивания всего этого вместе без дизайна и архитектуры... опыт создания на практике различных паттернов минимален... такой программист НЕ МОЖЕТ разрабатывать программный продукт. Он может лишь по требованию "сверху" писать небольшие "корявые" фрагменты. Отдельные "примочки" и "довески".
Все логично и просто...
Не надо смешить мои подковы - "состоянием души"... Это банальное народное мнение, когда человек не знает первопричин эффективности индивидуума в некоторой области.
> >KonstantinM (2007-02-15 13:38:37)
Настоящий программист — это программист, который получил хорошое образование в этой области! И! имеет хороший опыт работы с !правильно! вставленными мозгами.
Насчет образования - спорно, скорее более подойдет термин 'САМОобразование', опыт и "мозги' - согласен.
Но наиважнейшее, на мой взгляд, это знание области, для которой выполняется программа и ПОТРЕБНОСТЬ, или даже личная заинтересованность в ней.
Никакое, даже сделанное сверх подробно, задание, описание задач и пр.пр. не поможет. Программист должен обладать ПРЕДВИДЕНИЕМ! Делать продукт так, чтоб можно было его легко адаптировать ко всем (или почти всем) желанием пользователя.
Я по образованию - водопроводчик-канализаторщик. А тут занесло меня в геологоразведку. 2 года приглядывался, изучал, делал такую кучу рутины, что аж тошнило. А с приходом знаний о предмете пришла и идея сделать такой продукт, чтобы все делали геологи и не сваливали на меня тривиальные, но такие нудные задачи (уж что им нужно мной за эти годы было выяснено). Короче:
Лень - великий двигатель програсса!
Форумы CADUser → Программирование → ObjectARX → Стоит ли изучать ObjectARX
Форум работает на PunBB, при поддержке Informer Technologies, Inc