Реклама i
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Сообщество > Разное > В чем зло VBA?

В чем зло VBA?

Закрытая тема
Поиск в этой теме
 
Автор темы   Непрочитано 29.07.2008, 10:46 В чем зло VBA?
#1
Vildar

AutoCAD
 
Регистрация: 26.07.2007
Москва
Сообщений: 1,064


Складывается такое впечатление, что здесь его недолюбливают.

Перейдя в проектный институт, 3 мес назад, для меня сложились благоприятные условия для автоматизации работы (в Автокадк в первую очередь). Начал изучить лисп. Между прочим посматривал VBA. Оказалось, что он намного проще. Переключился на него. В итоге, получилось написать макрос (в одном файле ~1Мб), для расчета и построения чертежей спецификаций ростверка.

Так вот, есть желание продолжить изучение VBA и возможно ARX.
На этом форуме, стоит это делать?
Судя по нескольким моим темам. Как-то не очень. Кроме Алексея Кулика, который плохо относится к VBA (где-то встречал в его постах), никто не помогает.

Куда податься?
Мне нравится этот форум. Хотелось, что бы здесь было побольше тем по VBA и ObjectARXу.
Vildar вне форума  
 
Непрочитано 29.07.2008, 10:59
#2
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,599


Почему лично я не люблю VBA:
  1. Его можно отключить (а вот лисп - фигушки)
  2. У меня на работе есть 20 мест AutoCAD LT, где штатного программирования кот наплакал (DIESEL и больше ничего). Используя LT Extender, можно в LT подключить lisp и arx. lisp более прост для изучения мне показался, поэтому я все силы кинул на него.
  3. В VBA невозможно, например, вычислить ближайшую точку к указанному примитиву (аналог vlax-curve-getclosestpointto). Также недоступны некоторые другие функции lisp'a.
  4. В VBA очень плохо сделана работа с массивами (в чистом варианте. Я не учитываю квалификацию fixo, который там творит чудеса).
  5. VBA, начиная с версии 2007 (точнее, формы, созданные и хранимые с dvb), начинают привязываться к версии. То есть если форму создать в 2007, то в 2005 или 2006 открыть ее может составлять приличную проблему.
  6. Дальнейшая судьба VBA тонет в тумане: MS уже в последнем офисе начала потихоньку отходить от него. Логично ожидать, что и Autodesk пойдет этим же путем. Где-то мелькала информация по этому поводу - то ли здесь, то ли на caduser.ru, уже не помню.
  7. Вечная проблема с передачей данных в лисп и обратно. Хотя и решаемая проблема
Вот черт, отвлекся, что-то еще хотел написать, но забыл.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 29.07.2008, 12:56
#3
Regby


 
Регистрация: 05.10.2007
р. Татарстан
Сообщений: 4,840


прошу прощения - грубо говоря ничего не понимаю в данном вопросе, но почему лисп нельзя отключить? его ведь еще включить надо сначала... или тут имеется ввиду некоторая защита от тупости?
__________________
Категории - нет
Главспеца - нет
ГИПА - нет
Начальник - архитектор
Regby вне форума  
 
Непрочитано 29.07.2008, 13:04
#4
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,599


Имеется в виду прежде всего: поддержка VBA может быть элементарно не установлена (посмотри подробности установки). Даже на "полный" AutoCAD. LISP таким манером не отключается.
Я сейчас не помню, но где-то можно установить, что при попытке загрузки VBA-кода AutoCAD будет задавать глупые вопросы.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 29.07.2008, 14:28
#5
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,386


"Зло VBA" заключается в том, что оно калечит мозги. Люди начинают думать примерно так:
Цитата:
Оказалось, что он намного проще. Переключился на него. В итоге, получилось написать макрос (в одном файле ~1Мб), для расчета и построения чертежей спецификаций ростверка
1Мб - это вроде как и предмет гордости (так мало)? Или наоборот (так много)? После этого начинают думать, что могут сделать что-то серьезное. Типа "и возможно ARX". Вот ARX может быть уже и невозможно будет. Мозги уже не те будут.

С конкретными ограничениями VBA в AutoCAD столкнетесь позже. Тогда и поймете, почему столько про LISP рассуждают.

Кое-где VBA совсем не "зло" - где оно к месту. В MS Office, например. И даже сам язык Basic не является "абсолютным злом". Там, где его различные диалекты встроены в разные системы и являются единственным доступным инструментом для программирования.

А в AutoCAD VBA - "зло". Потому что до его встраивания туда по наущению Microsoft уже было достаточно разных инструментов - LISP и ARX и кое-что еще. А теперь есть и COM, и .NET. Но приделали "пятое колесо" к телеге. Исключительно в конъюнктурных целях.

"Зло" еще и в том, что все MS-Basic-и продвигались как личная любимая игрушка Билла Гейтса. А теперь ушел он "на пенсию". Политику будут диктовать другие люди, которым это чудо самим обрыдло. И очень скоро (не завтра) MS "кинет" всех почитателей идеи - "раз Билл самый богатый, то он и самый умный. А раз он придумал VBA, то и я буду его пользовать и тоже буду богатым".
ShaggyDoc вне форума  
 
Автор темы   Непрочитано 29.07.2008, 14:36
#6
Vildar

AutoCAD
 
Регистрация: 26.07.2007
Москва
Сообщений: 1,064


У меня пока, нет причин для сверх-универсальности программ (макросов). У всех (в отделе , все в одной комнате сидим) стоят АА2008.
- По массивам. Я не очень в них разбираюсь, и пользовался коллекциями.
- С формами есть косяк. Сталкивался с проблемой связанной с версией используемых Controls (типа ListViev). У меня дома (дом мой в Балаково, в Саратове я работаю и живу в коммуналке) стоит тоже АА2008 тока кря., но форма сделанная на работе, с применением этого ListViev'ера, не пашет. Уже забыл, но, пишет что-то типа: У вас нет прав на исп. этого элемента управления (тока на английском). Че за фигня, так и не понял.
- по 6, пока ниче не нашел.

Мне удобен VBA тем, что можно быстро сварганить макросик, для оперативной работы. Объектная модель, как на ладони (только поболее внимательности нужно ).

Думаю о перспективе изучения ObjectARXa. Это вообще реально.
С чего лучше начать. Какой язык выбрать. Пока, я не знаю никакой.
Посмотрел первые шаги для Visual C++, на http://www.firststeps.ru/, и испугался, совсем не похоже на VB.
Можно ли использовать VB.NET (должен быть похож на VB) с ObjectARX'ом.
Vildar вне форума  
 
Автор темы   Непрочитано 29.07.2008, 14:58
#7
Vildar

AutoCAD
 
Регистрация: 26.07.2007
Москва
Сообщений: 1,064


Цитата:
Сообщение от ShaggyDoc Посмотреть сообщение
"Зло VBA" заключается в том, что оно калечит мозги. Люди начинают думать примерно так:
1Мб - это вроде как и предмет гордости (так мало)? Или наоборот (так много)? После этого начинают думать, что могут сделать что-то серьезное. Типа "и возможно ARX". Вот ARX может быть уже и невозможно будет. Мозги уже не те будут.
Это Ваши домыслы. Могу пояснить. Я, как смог (а ведь получилось, пусть и работает только у меня на машине, нет универсальности), написал этот макрос, для ускорения своей работы. Раньше расчеты делались в экселе, с последующим ручным составлением таблиц спецификаций. Уходило несколько дней. Теперь, я курю, а он (макрос) работает. И за 10 мин, все готово.

Цитата:
Типа "и возможно ARX". Вот ARX может быть уже и невозможно будет. Мозги уже не те будут.
Это что, типа табу. Да, я деллитант в программировании. Но ведь, у человека есть мечты, и ничего невозможного для него нет.

У меня есть время, есть желание и мне за это еще деньги платят.
Буду пытаться. И с помощью этого форума, в первую очередь (привязался уже).
Vildar вне форума  
 
Непрочитано 29.07.2008, 14:58
#8
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,599


Использовать VB.NET для AutoCAD возможно. Но arx-приложения на нем писать - нет.
Лично для меня сейчас в изучении ARX несколько препятствий: слабое понимание разницы между конструкцией int* p и int *p (если она вообще есть); страх перед теми же указателями (и за компанию строками). И есть еще один момент, самый трудный - достаточно богатая фантазия + лень. Ежедневно придумываю себе несколько десятков отговорок, только чтобы не начать работать на C++ или C#. Каждый день новые...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 29.07.2008, 16:23
#9
Sleekka

-
 
Регистрация: 24.07.2005
Москва
Сообщений: 1,335


Получать доступ к объектам объектной модели может оно и проще. Да вот не все можно достать через объектную модель. ето минус раз.
Работа с данными. Чтобы создать на лиспе пятимерный массив данных (к примеру) (по логике программы нужно) - ето пара строк, потому как лисп для этого предназначен. Встроенные функции, на ВБА же придется запускать кучу циклов, постоянно определять размерность динамических массивов и т.п. Про скорость работы этих высокоуровневых циклов на пятимерных массивах - молчу, лисп быстрее будет на несколько порядков.
off:
Цитата:
Ежедневно придумываю себе несколько десятков отговорок, только чтобы не начать работать на C++ или C#. Каждый день новые...
Такое бывает - похоже на усталость.
Sleekka вне форума  
 
Непрочитано 29.07.2008, 17:10
#10
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,406
Отправить сообщение для Александр Ривилис с помощью Skype™


Цитата:
Сообщение от Vildar Посмотреть сообщение
Складывается такое впечатление, что здесь его недолюбливают.
Я один из тех, кто его недолюбливает.
Цитата:
Сообщение от Vildar Посмотреть сообщение
Куда податься?
Мне нравится этот форум. Хотелось, что бы здесь было побольше тем по VBA и ObjectARXу.
Здесь традиционно больше вопросов по VisualLisp. Вопросы по VBA и ObjectARX чаще задают на caduser.ru
Собираешься стать профессиональным программистом? Если нет, то лучше в ObjectARX не лезь.

Леша. А int* p и int *p - это одно и тоже.
Александр Ривилис вне форума  
 
Непрочитано 29.07.2008, 20:06
#11
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,386


Цитата:
Сообщение от Vildar Посмотреть сообщение
Это Ваши домыслы.
Когда говорят "не пей из копытца" или "не лижи металл на морозе" детям, обычно такой же ответ - "домыслы".

Цитата:
Сообщение от Vildar Посмотреть сообщение
Могу пояснить. Я, как смог (а ведь получилось, пусть и работает только у меня на машине, нет универсальности)...
Ну, это типа "я только кончиком языка лизну". Вопросов-то нерешаемых много будет, и проблемы с формами - пустяк, "батонокидательство". Хотя и с хорошими визуальными формами - это не уровень VBA.
Цитата:
Сообщение от Vildar Посмотреть сообщение
Это что, типа табу. Да, я деллитант в программировании. Но ведь, у человека есть мечты, и ничего невозможного для него нет.
Почему же табу? Дерзайте. Только программирование (настоящее) дисциплина строгая. И если там будете писать как здесь - "деллитант" (очень похоже на последствия для мозга, о которых я писал), то ничего хорошего не выйдет. Уж если к родному языку так относиться, то что будет в ARX?

Цитата:
Сообщение от Vildar Посмотреть сообщение
У меня есть время, есть желание и мне за это еще деньги платят.
Буду пытаться. (привязался уже).
Надо не пытаться, а изучать. И если время есть, да еще и платят, то не надо тратить его на такую чепуху, как VBA - оно как раз для "деллитантов". Займитесь лучше изучением .NET, да не на диалекте VB, а на C#. Или действительно, если есть желание стать профессионалом, можно изучать ObjectARX. Пользы будет гораздо больше, в том числе и в плане дисциплины для мозга. И даже если останетесь дилетантом, это лучше, чем остеться деллитантом.
ShaggyDoc вне форума  
 
Непрочитано 29.07.2008, 20:28
#12
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,599


Александр Ривилис, спасибо
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 29.07.2008, 20:32
#13
Хворобьев

make love not war
 
Регистрация: 22.05.2008
Сообщений: 681


VBA, Basic - полезные для инженера языки. Хотя бы потому, что навыки программирования пригождаются в MS Office или Open Office.
Если вы смогли написать приложение и оно работает так, как вам именно нужно, и при этом ощущаете, что и остальные приложения сможете разработать в том же духе - это и есть критерий достаточности его для вас.
У инженера одна цель - повысить производительность труда и заработать больше денег, в конце концов. Продажей программ вы вряд ли будете зарабатывать, поэтому и доводить до совершенства вам их не нужно.
Просто Lisp исторически лучше работает с автокадом (кстати и с интелликадом тоже работает). Критерии, перечисленные kpblс-ом довольно убойно действуют - если вам ваши знания в какой то момент окажутся бесполезными, то лучше получать те, хчто может быть немного сложнее, но прослужат вам верой и правдой при любом развитии событий и на любой работе. Будь у меня время и потребность я бы и сам Лисп подучил.
__________________
РАМА и MaXiMa
Хворобьев вне форума  
 
Непрочитано 29.07.2008, 20:39
#14
Александр Бауск

FEA/CAD/МКЭ/САПР
 
Регистрация: 20.03.2007
48,38°:35,03°
Сообщений: 1,056
Отправить сообщение для Александр Бауск с помощью Skype™


>ShaggyDoc

Доктор, а ходить я буду?

Подпись: счастливо ударенный об VBA со стажем.
__________________
Reshaping the STEM field
Александр Бауск вне форума  
 
Непрочитано 29.07.2008, 23:24
#15
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,386


Цитата:
Сообщение от Александр Бауск Посмотреть сообщение
>ShaggyDoc

Доктор, а ходить я буду?

Подпись: счастливо ударенный об VBA со стажем.
Ходить, батенька, будете. Летать - нет. Впрочем, кто-то счастлив и ползая.

Цитата:
VBA, Basic - полезные для инженера языки. Хотя бы потому, что навыки программирования пригождаются в MS Office или Open Office.
Речь то ведь не об языке программирования, а о применении определенных сред в разных условиях.

VBA - это система, проталкиваемая (проталкивавшаяся) Microsoft для того, чтобы другие разработчики программ встраивали её в свои продукты и делились бабками с MS. Под это дело и распространяются легенды, что это "полезные для инженера языки". Когда MS впервые ввела VBA в свой Office - это было хорошо и к месту - заменили вообще ублюдочный WordBasic. VBA в Office соотносится с моделью офисных документов. Встраивать туда, например, LISP, было бы глупостью. Но даже в Office многие ли воспользовались возможностями VBA?

А вот для AutoCAD LISP родной, потому что наибольшим образом соответствует структуре данных. Да и одна функция command чего стоит - именно она позволила "простым инженерам" делать в AutoCAD вполне профессиональные программы.

VBA в AutoCAD появился в R14. И где результаты в виде полезных програм? Есть, конечно, единичные "полезняшки" локального значения, но разв их сравнить с LISP? Пусть я тут "злобно клевещу", так ткните мне в морду результатами - вот, мол, сумей так сделать.

Для инженера по настоящему полезен грамотный родной литературный язык, технический, и иностранный (сейчас, видимо, английский). А языки программирования - ерунда, преходящее. Студентов 60-70-х годов (инженеров, не программистов) мучили Фортраном, Алголом и даже PL/1 и тоже рассказывали сказки про "полезность". В 80-х годах, когда появились Искра-226, где единственным доступным средством был Basic (очень неплохая версия), стали рассказывать сказки про него.

Потом на первых PC появился BASICA, который не надо было "доставать" и на него стали напирать. Потом было еще много всяких (GW-Basic, TurboBasic, TrueBasic, QuickBasic, PowerBasic) и их стали проталкивать. Например, TurboBasic мог делать настоящие автономные EXE, и это понравилось. Но "простые инжененры" делавшие на него ставку бывали очень разочарованы в последний момент, когда натыкались на его ограничения.

VisualBasic был революционным - он дал возможность намного легче проектировать интерфейс, а это самое трудоемкое. Но "визуальность" быстро вошла во все среды програмирования. Если говорить только про инженеров, не программистов, так для них гораздо лучше оказалась Delphi. Язык (именно язык) Pascal гораздо лучше, так как он специально разрабатывался Виртом чтобы вправлять мозги. А сама среда програмирования неизмеримо эффективнее. И я знаю немало "простых инженеров", которые так и работают. При этом еще и их программы очень популярны. Где-то в Download лежит Научный Инженерный Калькулятор Николая Волкова - он "простой ОВ-шник" из Минска. Есть и такие, которые "подсели" на C-платформу. Начинали с TurboC, теперь в VS работают. Немало "простых инженеров" прошли эволюцию от dBase до VisualFoxPro. Там и язык-то почти естественный, но это профессиональные инструменты.

А профессиональным инструментом (хоть ножовкой, хоть автомобилем, хоть средой программирования) всегда лучше пользоваться даже любителю. Даже "для себя".

Линия же VB - это любительский инструмент. Несмотря на то, что встречаются и очень хорошие програмы, сделанные на VB. Но это уж от рук мастера зависит. Только таких мастеров очень и очень мало, по сравнению с общей массой блаженно верующих.
ShaggyDoc вне форума  
 
Непрочитано 30.07.2008, 09:18
#16
serov


 
Регистрация: 06.03.2008
Сообщений: 165


ShaggyDoc! Спасибо хоть ходить и ползать разрешили. Написать прикладные программы можно на любом языке программирования. Тут дело привычки и вкуса.VBA для AutoCAD- это математика + векторная алгебра, правда не всегда выполненая удачно. Считай и рисуй и все в одном dvb.
Хотелось бы чтобы Вы на простых примерах, а не голословно, обосновали свою точку зрения.
serov вне форума  
 
Непрочитано 30.07.2008, 10:10
#17
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,386


Простенькие примеры? Пожалуйста - хоть с математикой, хоть с векторной алгеброй.

1. Нарисуйте с помощью VBA интерактивный круг. Указали центральную точку - а радиус динамически, чтоб "резиновый круг" тянулся. Lisp не использовать по религиозным соображениям. А также блочки повставлять, чтоб на курсоре висели, поворочать что-то.

2. Сделайте несколько проектов, использующих одну и ту же функцию. Потом попробуйте изменить эту функцию (допустим, ошибка нашлась), и добейтесь новой работы без изменения проектов.

3. Попробуйте создать размерный стиль и установить его параметры средствами VBA. Параметры - это то, что отображается в диалоге - форма стрелок и прочее.

4. Попробуйте нарисовать какую-нибудь интерактивную трассу, наподобие того, как это делается командой PLINE.

Это как раз детские задачки.
ShaggyDoc вне форума  
 
Непрочитано 30.07.2008, 11:30
#18
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,599


Кстати, п.4 в VBA реализовать можно. Но у меня сию секунду мозгов хватит только на прямые участки, дуговые сегменты мне не осилить. А вот п.3 на VBA нереализуем в принципе
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 30.07.2008, 12:00
#19
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,406
Отправить сообщение для Александр Ривилис с помощью Skype™


От себя добавлю несколько оценок VBA (по 5-бальной шкале):
1. Возможности интерактивного взаимодействия с пользователем AutoCAD : 3
2. Отсутствуют начисто возможности по работе с кривыми: 2
3. В отличие от VisualLisp/ARX/.NET есть возможность работать с AutoCAD только через COM-интерфейс, так что возможности взаимодействия покрываются разве что на 50%: 3
P.S.: А почему тема не в программировании?

Последний раз редактировалось Александр Ривилис, 30.07.2008 в 12:42.
Александр Ривилис вне форума  
 
Непрочитано 30.07.2008, 12:02
#20
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,599


Изначально тема находилась в "разном", да и заголовок такой, достаточно расплывчатый. Кто ж знал, что сюда придут такие спецы, как Александр Ривилис, ShaggyDoc. Alaspher'a еще сюда притащить бы
Если есть желание - можно и перенести.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
Закрытая тема
Вернуться   Форум DWG.RU > Сообщество > Разное > В чем зло VBA?

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Пароль к VBA karp_b Программирование 24 29.08.2013 12:43
Юмор 2007 Огурец Разное 1172 29.12.2007 11:16
Чем можно удалить файл, занятый не понятно чем? G.A.W. Разное 4 08.10.2007 15:12
ActiveX Automation из VBA karp_b Программирование 5 14.09.2007 18:05
VBA vs LISP Kosenko Sasha LISP 23 06.03.2007 02:56