¬аше окно в мир —јѕ–
 
Ќовости —татьи јвторы —обыти€ ¬акансии Ёнциклопеди€ –екламодател€м
—татьи

18 марта 2018

BLADE Runner: новое прочтение классики AutoLISP в BricsCAD V18.2

—тив ƒжонсон

ќт редакции isicad.ru: ѕредставл€ем ¬ашему вниманию перевод интервью известного —јѕ–-блоггера —тива ƒжонсона с разработчиком компании Bricsys. »нтервью перевел ≈гор ≈рмолин — сотрудник компании Ѕриксис “екноледжис –аша, российского офиса разработки компании Bricsys.

—тив ƒжонсон (Steve Johnson) — ведет блог cad nauseam, специалист в области —јѕ– с 1985 года. –аботал в качестве руководител€, разработчика, консультанта и технического писател€. —тив был пишущим редактором в журнале Cadalyst magazine, ѕрезидентом √руппы ѕользователей AutoCAD «ападной јвстралии и вице-президентом CADLock, Inc.


“орстен ћозес (Torsten Moses) — ведущий разработчик компании Bricsys. »звестен тем, что создал знаменитый LT Extender (надстройку, позвол€ющую запускать LISP-приложени€ в среде AutoCAD LT); столкнувшись с судебным преследованием со стороны Autodesk, был вынужден прекратить разработку, перенес€ все свои наработки в BricsCAD.


BLADE (BricsCAD LISP Advanced Development Environment) — замечательна€ нова€ визуальна€ среда разработки (IDE) на €зыке LISP, по€вивша€с€ в недавнем релизе BricsCAD V18.2. Ќа конференции Bricsys 2017 Conference в ѕариже € воспользовалс€ шансом увидеть вживую эту IDE на закрытой предрелизной демонстрации, проведенной лично создателем BLADE, “орстеном ћозесом (Torsten Moses), и был при€тно удивлен набором возможностей данного инструмента. ¬ своем недавнем интервью “орстен любезно ответил на мои вопросы. — первым же релизом BLADE в BricsCAD V18.2 Bricsys не просто догнала устаревший (а-л€ 1999 год) редактор VLIDE от Autodesk, но и оставила его далеко позади по функциональности, сохранив при этом в высокой степени совместимость.

“орстен, насколько € понимаю, в процессе создани€ IDE дл€ LISP в BricsCAD у ¬ас были трудности, св€занные с особенностью интерпретации команд LISP в BricsCAD. Ќе могли бы ¬ы рассказать об этом подробнее?

»нтерпретатор LISP в BricsCAD в качестве основы использует OpenLisp от французского разработчика  ристиана ∆ульена (Christian Jullien). Ёто единственный интерпретатор LISP, который все еще находитс€ в разработке; разработка остальных, которые € нашел, остановилась в середине дев€ностых годов прошлого века.

OpenLisp представл€ет собой очень современную разработку, несовместимую со старым диалектом XLisp, используемым в AutoLISP, например, поддержаны объектно-ориентированные расширени€ €зыка. ѕоэтому внутреннее представление выражений LISP отличаетс€ от текстового, которое мы видим в файле с кодом LISP.

“аким образом, код AutoLISP, который € пишу, отличаетс€ от кода, который исполн€ет BricsCAD?

¬ерно. –€д типичных €зыковых конструкций AutoLISP поддержан на уровне эмул€ции, привод€щей к еще большему отличию между внутренним и внешним (текстовым) представлением. —ледствием €вл€етс€ сложна€ задача по синхронизации внутреннего выражени€ на OpenLisp и внешнего текстового выражени€ на AutoLISP во врем€ выполнени€ и при отладке кода.

ѕомимо технических, казавшихс€ практически неразрешимыми, проблем по синхронизации двух представлений, передо мной сто€ла задача по разработке пользовательского интерфейса. Ќужно было предложить пользователю не простенький редактор, а полноценную визуальную среду разработки.

»де€ создани€ IDE дл€ LISP в BricsCAD витала давно, но из-за описанных выше сложностей мы посто€нно откладывали ее реализацию.  роме того, было бы большой ошибкой просто повторить редактор VLIDE, написанный по стандартам AutoCAD двадцатилетней давности.

¬ итоге, как ¬ы справились с этими проблемами?

ѕрежде всего, помог счастливый случай (смеетс€). „исто случайно € обнаружил скрытую деталь в OpenLisp — с каждым выражением LISP можно св€зать неограниченный набор метаданных, очень похожий на XData дл€ объектов базы данных в DWG формате. я знал об этом довольно давно, но не использовал этот ‘хак’ дл€ двунаправленной св€зи выражени€ LISP c редактором и отладчиком. ѕервые же эксперименты показали перспективность данного подхода.

ƒемо BLADE

“орстен рассказывает про BLADE в дни Bricsys 2017 Conference: работа продолжаетс€ и вечером, в лобби парижского отел€

Ѕлагодар€ другому совпадению € обнаружил, что WxWidgets (открыта€ кроссплатформенна€ система, используема€ в разработке BricsCAD) уже поддерживает опенсорсный редактор Scintilla, широко примен€емый во многих текстовых редакторах. ƒл€ него существует два уровн€ API — проста€ обертка уровн€ €дра и высокоуровнева€ система классов, превосходно укладывающа€с€ в логику WxWidgets. Ќо данный редактор — еще не полноценный пользовательский интерфейс. я нашел очень удобный и расшир€емый редактор wxStEdit, основанный на Scintilla, с поддержкой GUI. ƒополнительным аргументом в выборе послужил тот факт, что услови€ его применени€ в коммерческом приложении также покрываютс€ лицензией WxWidgets.

я убедилс€, что этот редактор подходит дл€ нашей среды разработки LISP, и приложил должное количество усилий, чтобы расширить под наши нужды. –азработка wxStEdit прекратилась в 2008 году, и в целом этот код компилируетс€ и работает достаточно хорошо. “ем не менее, € нашел и исправил много ошибок на всех уровн€х (Scintilla, обертка Scintilla в WxWidgets и wxStEdit).

“ака€ последовательность событий и привела нас к конечному результату!

я заметил, что программы AutoLISP и Visual LISP работают в BricsCAD в несколько раз быстрее, чем в AutoCAD.  ак нова€ технологи€ вли€ет на их производительность?

¬се программные слои, относ€щиес€ к BLADE, вообще не вли€ют на обычное выполнение LISP-кода вне среды разработки и отладчика. —в€зь обеспечиваетс€ несколькими callback-функци€ми, которые не вызываютс€ при обычной работе. ѕоэтому никаких проблем с производительностью от применени€ BLADE по€витьс€ не должно. »нструменты отладчика оптимизированы дл€ высокой производительности даже во врем€ отладки и потребл€ют минимум ресурсов компьютера.

¬ процессе разработки отладчика € убрал большинство слоев эмул€ции в интерпретаторе LISP и реализовал обращени€ напр€мую к OpenLisp. ѕри€тным дополнительным эффектом стало то, что конструкции (repeat), (foreach) и (vlax-for) теперь работают в п€ть раз быстрее в создании циклов. ѕоэтому вместо замедлени€ выполнени€ работы над BLADE привели к ускорению!

ѕолучат ли версии дл€ Mac и Linux этот инструмент?

ƒа, код BLADE полностью совместим с этими платформами, благодар€ WxWidgets и моему коду, который не содержит фрагментов кода, специфичных дл€ платформы Windows. я уже проверил работу BLADE под Linux — отличий в работе нет.

Ќе могли бы ¬ы привести простой пример отладочной сессии?

ѕрежде всего, не делайте предварительную загрузку (pre-load) никаких LISP-файлов в BricsCAD.  од, загружаемый вне отладчика, полностью работоспособен, но не может быть использован при отладке. —в€зь между внешним и внутренним представлением кода устанавливаетс€, когда код загружаетс€ из-под отладчика.

¬ BLADE откройте существующий проект FAS или VLX; и/или «»менованную сессию» («Named Session»); или просто любой LISP файл, подлежащий отладке. «агрузите нужный LISP файл, выполнив команду ««агрузить в BricsCAD» в меню «ќтладка» («Debug»/«Load  LISP  file in BricsCAD») или нажав кнопку ««агрузить» («Load») в панели инструментов. “еперь дл€ загруженного кода включен режим отладки, и ¬ы увидите файл и отладочные функции в двух вкладках справа. ¬ыберите «Ќачать ќтладку» («Start Debugging») из меню или панели инструментов либо нажмите F8.

ѕо€витс€ панель инструментов «ќтладка» («Debug»). ћожно включить функцию автоостанова («AutoBreak»), что приведет к остановке на первой исполн€емой строчке, либо поставить точки останова на нужных строчках кода (примечание переводчика: дл€ перехода к первой точке останова мне понадобилось переключитьс€ в BricsCAD и выполнить команду, реализуемую отлаживаемым скриптом).

 огда отладчик останавливаетс€ на точке останова, на отладочной панели инструментов станов€тс€ доступны привычные инструменты пошагового выполнени€ кода. » их больше, чем в отладчике VLIDE в AutoCAD! ћожно устанавливать специальные точки останова по значению заданной переменной («Data Break Point»); как только значение переменной изменитс€, отладчик остановитс€ на соответствующей строчке кода.

„то произойдет, если мой код вызовет код из файлов, еще не загруженных в отладчик?

Ќе беспокойтесь об этом. ќтладчик распознает данную ситуацию и попросит догрузить недостающие LISP файлы. ¬ обычном LISP ¬ы бы получили ошибку о том, что функци€ неизвестна, но отладчик перехватывает данную проблему. ¬ообще, это одна из технологичных фишек отладчика — ¬ы загружаете только основной LISP файл, и остальные файлы загружаютс€ на лету по ходу отладки. Ёто очень удобно при отладке сложных приложений. ƒумаю, вы знакомы с законом ћЄрфи, глас€щим, что только что загруженна€ вами функци€ — не та, котора€ нужна на самом деле. –абота€ с BLADE, ¬ы не столкнетесь с такой ситуацией.

 акие планы на будущее?

“ак как BLADE — новейша€ разработка, потенциал дл€ ее улучшени€ определенно есть. ѕока основной целью было предоставление инструментов дл€ разработки и поддержки проекта, теперь можно говорить об улучшении возможностей работы с документом.

¬ моих планах по расширению функциональности есть несколько ключевых пунктов. ћы собираемс€ добавить редактор гор€чих клавиш, так как каждый разработчик привык к своим комбинаци€м клавиш. “акже нужно добавить проверку перекрестных ссылок в рамках файла и сессии, что будет полезно дл€ больших приложений на LISP. ѕо ходу разработки расширим и улучшим возможности редактора, например, будут добавлены всплывающие подсказки, показывающие при наведении курсора на вызов функции ее сигнатуру и небольшую справку.

 ак показывает практика, как только люди начинают использовать программу, ты начинаешь получать обратную св€зь в форме пожеланий и сообщений об ошибках. —корее всего, будет много требований по доработке каких-то деталей, чтобы сделать BLADE похожим на VLIDE в AutoCAD. Ќо это не всегда возможно и не €вл€етс€ главной целью. я надеюсь, что разработчики будут готовы прин€ть немного другой подход к отладке, получа€ взамен большие преимущества от нового инструмента.

–езюмиру€, мы максимально открыты к предложени€м по улучшению, новым требовани€м — это касаетс€ разработки как BLADE, так и BricsCAD в целом. ¬ центре нашего внимани€ — пользователь-разработчик, максимально продуктивно и комфортно работающий с BLADE. ѕри подготовке первого релиза BLADE нам очень помогла обратна€ св€зь от бета-тестеров, например от ћартина ƒресе (Martin Drese, CAD Wiesel).

ќт переводчика. “орстен передал несколько приветственных слов читател€м isicad.ru:

ћне вдвойне при€тно, что читатели isicad.ru ознаком€тс€ с переводом интервью, ведь, насколько мне известно, среди них есть немало опытных пользователей —јѕ– на основе .dwg с опытом программировани€ на диалектах €зыка LISP. Ќесмотр€ на то что LISP — достаточно старый €зык, его рано списывать со счетов: в BricsCAD мы посто€нно расшир€ем программные интерфейсы на LISP и насчитываем немало успешных пользовательских приложений на этом €зыке. я надеюсь, что вы по заслугам оцените BLADE, и рассчитываю на ваши отзывы дл€ улучшени€. ¬ы всегда можете св€затьс€ со мной и командой Bricsys на нашем форуме, либо обратившись в службу поддержки Bricsys.


„итайте также:


¬акансии:

јктуальное обсуждение

RSS-лента комментариев

ƒавид Ћевин
ƒавид Ћевин
ќт редактора: Ѕыть самосто€тельной личностью, эффективно включенной в —еть, Ц втора€ грамотность. »ли перва€?
ѕроект ЂЌародное —јѕ–-интервьюї

—лучайна€ стать€:

isicad Top 10

—амые попул€рные материалы

   ‘орумы isicad:

isicad-2010 isicad-2008
isicad-2006 isicad-2004

ќ проекте

ѕриглашаем публиковать на сайте isicad.ru новости и пресс-релизы о новых решени€х и продуктах, о проводимых меропри€ти€х и другую информацию. јдрес дл€ корреспонденции - info@isicad.ru

ѕроект isicad нацелен на

  • укрепление контактов между разработчиками, поставщиками и потребител€ми промышленных решений в област€х PLM и ERP...
ѕодробнее

»нформаци€ дл€ рекламодателей


¬се права защищены. © 2004-2018 √руппа компаний «Ћ≈ƒј—»

ѕерепечатка материалов сайта допускаетс€ с согласи€ редакции, ссылка на isicad.ru об€зательна.
¬ы можете обратитьс€ к нам по адресу info@isicad.ru.