29.04.2016

История одного ядра от Александра Алахвердянца

«Геометрических ядер мало, а параметрических решателей ещё меньше. Вот почему C3D — это круто!»

В этом году геометрическому ядру C3D исполняется 20 лет. Ровно столько лет назад основатели компании АСКОН пришли к единому мнению о необходимости создания собственной системы трехмерного моделирования КОМПАС-3D. В 1996 году была создана группа, которой было поручено написание программного обеспечения для работы с точной 3D-геометрией — инструмента, который бы не уступал по удобству использования и функциональности зарубежным аналогам. С этих дней начинается отсчёт истории «коломенского» геометрического ядра. На протяжении многих лет ядро постоянно развивалось и дорабатывалось — появлялись новые методы моделирования, разрабатывались алгоритмы вычислений, создавались дополнительные модули: параметрический решатель, конвертор данных, модуль визуализации. И за всеми этими изменениями всегда стояли конкретные люди — разработчики геометрического ядра, обретшего со временем собственное имя — C3D.

Сегодня всё больше людей интересуются геометрическим моделированием, многие из них активно следят за тем, кто и как разрабатывает российское коммерческое 3D-ядро. Поэтому мы решили подготовить серию «юбилейных» интервью с нашей командой разработки. В первом выпуске мы общались с Анной Ладиловой, поэтому, чтобы мужской части коллектива C3D Labs не было обидно, второе интервью мы решили взять у Александра Алахвердянца. Голос «за кадром» принадлежит менеджеру по продукту C3D, Аркадию Камневу.


Александр Алахвердянц, математик-программист в C3D Labs

— Саш, откуда ты родом?

— Я вырос в Кабардино-Балкарии, в городе Нальчике.

— Как ты оказался в Коломне?

— Я поступил в Московский государственный университет имени М.В. Ломоносова на Физический факультет. Моя базовая кафедра находилась в городе Дубне. Я занимался физикой элементарных частиц и после окончания университета остался в Подмосковье — пошёл учиться в аспирантуру, а заодно начал работать в Объединённом институте ядерных исследований. Уже оттуда, неожиданно для себя, я перебрался в Коломну работать программистом.

— Я слышал, что ты стажировался за границей по линии науки. Это правда?

— В Дубне я работал в составе научной группы по поиску кварк-глюонной плазмы в эксперименте STAR. Solenoidal Tracker At RHIC — это крупнейшая экспериментальная установка ускорительного комплекса RHIC (коллайдер релятивистских тяжелых ионов), который располагается в Брукхейвенской Национальной лаборатории в Лонг-Айленде, США. Участники эксперимента разбросаны по всему миру, всего около 40 институтов. Это крупнейший эксперимент по физике элементарных частиц в БНЛ, куда я дважды летал в служебные командировки по набору данных. Обе командировки длились по 3-4 месяца.


А. Алахвердянц в составе международной группы ученых на дежурстве в BNL

— Интересно, как организована работа в лаборатории?

— Сперва все готовятся к запуску коллайдера, потому что он потребляет очень много энергии и не может работать круглый год. Руководители Лаборатории договариваются с Департаментом энергетики, чтобы ведомство обеспечило работу электростанции, питающей коллайдер. Затем производится запуск, и коллайдер работает без остановки 4-5 месяцев. Круглые сутки собираются данные, нужно сидеть за компьютером и следить за множеством графиков для того, чтобы контролировать корректность записи экспериментальных данных. Важно, чтобы процессы протекали нормально: детекторы были исправны, давление газа в проекционной камере было на нужной отметке и т. д. Для этого приезжают ученые, сдают экзамены, получают различные допуски и заступают на свою смену, которая длится неделю. Работа заключается в том, что 4-6 человек сидят 8-ми часовую смену на рабочих местах, управляют записью экспериментальных данных и контролируют протекающие в детекторе процессы. По истечении этого срока формируется новая смена. За командировку приходилось отработать 10-12 смен, поэтому удавалось познакомиться с большим числом коллег. Непосредственно наука заключается в анализе полученных данных, который делается уже после в своём родном институте.


Рабочее место А. Алахвердянца в лаборатории BNL

— Тебе понравилось работать над экспериментом STAR?

— Конечно! К сожалению, в России не проводятся эксперименты по моей специальности, поэтому для ознакомления с современной физикой элементарных частиц от университета нас возили на Большой адронный коллайдер в Швейцарию в Европейский центр ядерных исследований CERN (фр. Conseil Européen pour la Recherche Nucléaire).

— Писал ли ты какие-то научные работы?

— Я входил в список соавторов научной коллаборации эксперимента STAR. Все статьи, которые публиковались от коллабораций на протяжении 5-6 лет, что я участвовал в эксперименте, выходили с моим соавторством. Публикации можно встретить в таких изданиях, как Physical Review, Physical Letters и др. Также у меня было несколько личных публикаций.

— Что больше всего понравилось в США в профессиональном плане и чего больше всего не хватало в России?

— Главное отличие в том, что американцы изучают фундаментальную науку у себя дома, а нам для этого приходилось ездить далеко за границу. Все, кто участвовал в более или менее серьёзных научных проектах в Дубне, так или иначе работали на разные зарубежные страны — США, Швейцарию, Германию, Италию, Японию, Китай. То есть мы работали практически по всему миру. Хотя, конечно, в России тоже проводились эксперименты, но они были небольшие и очень специфичные.

— Обычно ученые, которые работают за рубежом, на Родину не возвращаются. Как так случилось, что ты снова оказался в России?

— Я никогда не хотел жить за границей. Скорее всего, именно из-за этого и ушёл из науки, потому что выбор такой, если ты занимаешься физикой элементарных частиц: либо ты уезжаешь за границу, либо уходишь из науки. Но это далеко не общее правило. В той же Дубне есть люди, занимающиеся физикой элементарных частиц, про которых я могу говорить только в восторженных тонах. Просто для себя я именно таким образом сделал выбор.


Шахта Большого адронного коллайдера на глубине 100 м под землей
 

Александр Алахвердянц на фоне детекторной установки ATLAS в ЦЕРН

— Поговорим о работе в C3D Labs. В каком году ты присоединился к команде разработки C3D?

— В 2011 году я пришел на работу в математическое подразделение АСКОН.

— Изначально ты занимался геометрией или тебе сразу начали ставить задачи по параметризации в ядре?

— Раньше мы не имели каких-либо подразделений, и был только один отдел математики. Затем уже создали группу конверторов и солвера. Когда нам сообщили, что нас разделяют на группы, то будущий начальник, Саша Максименко, подошёл и спросил, хотел бы я работать вместе. Я сразу согласился.

— Чем разработка геометрического ядра отличается от разработки параметрического ядра?

— Группа разработки геометрического ядра намного больше, чем группа, занимающаяся параметризацией. Поэтому там может сложиться такая ситуация, когда ты не до конца знаешь, что происходит с разными участками программного кода ядра. А в нашем случае, мы вдвоём с Сашей разрабатываем код, и поэтому достаточно хорошо оба знаем весь новый функционал, который появляется в C3D Solver.

— Провокационный вопрос. Чем параметрическое ядро круче геометрического?

— Тем, что решателей намного меньше, чем геометрических ядер. Точнее даже вот так: ядер мало, а параметрических решателей ещё меньше! Будем считать, что они сложнее, раз их меньше. Значит, этим и круче.

— Теперь ты живёшь в Коломне между Москвой и Рязанью. Тебе нравится этот город?

— Нравится, с точки зрения исторических достопримечательностей. У Коломны есть свои красоты и свой древний дух. А с точки зрения бытовых удобств, Коломну всё-таки сложно сравнивать с малыми городами Швейцарии и Америки.

— Чем занимаешься в свободное время?

— Я часто программирую дома, много читаю и занимаюсь самообучением. Я же всё-таки не программист по образованию, а физик. Поэтому есть области информатики, которых я не знаю, и мне приходится восполнять эти пробелы в образовании.

— Выходит, что численные методы вам не преподавали в институте?

— Конечно преподавали. Но одними численными методами программирование не исчерпывается. На первом курсе университета мы проходили программирование, и был даже практикум по C++, где нас научили писать простые функции. Этого было явно недостаточно. Потом уже, когда работал ученым, я довольно много программировал, но делал это на таком уровне, что не вдавался в понятия об архитектуре или, скажем, о сложных языковых концепциях. Главное было — это топорно написать работающий алгоритм и построить графики после обработки данных. Вот и всё.

— На каких языках ты программируешь? Как изучаешь новые языки?

— Программирую на C++ и Python. Изучаю по книгам, смотрю видео лекции, многое коллеги подсказывают. Без них никуда! В C3D Labs работают большие профессионалы своего дела. Особенно в первое время я очень многому у них научился, потому что ни в каких книгах нет того огромного опыта, который есть у коллег. Они мне очень много дали! Теперь ещё и собственный опыт, «сын ошибок трудных», помогает мне самосовершенствоваться.

— Хобби, спорт, увлечения?

— Спорту я всегда уделял очень много времени, и в школьные годы, и в университете. До 6 класса школы я занимался футболом и круглые сутки пропадал на улице с мячом. Родителям это не нравилось. Мама мне говорила: «Саша, ты должен стать человеком, а не футболистом», — и мне пришлось перейти на баскетбол. Родители посчитали, что двухметровым я всё равно не вырасту, а значит, можно не переживать за мою дальнейшую судьбу. В Дубне мы тоже занимались с коллегами мини-футболом в секции от института и даже участвовали с командой в городских соревнованиях. Но когда я переехал в Коломну, то забросил спорт. Сперва я никого не знал, с кем можно было бы заниматься вместе, а сейчас уже банально не хватает на это времени.

— Я знаю, что ты — фанат ЦСКА. А за какие европейские футбольные клубы ты болеешь?

— Очень люблю итальянские клубы! С детства болею за Ювентус и за сборную Италии по футболу. Мой самый счастливый день — это когда в 2006 году итальянцы стали чемпионами мира. Я тогда был в командировке в Швейцарии и жил в Женеве в итальянском квартале. Поэтому я до самого утра отмечал победу с итальянцами.

— В соцсетях ты часто постишь котиков. Это у тебя хобби такое?

— Да, без них как-то не программируется :) Я и на этот раз подготовил фото, где моя кошка проводит ревизию кода.


Любимый питомец А. Алахвердянца редактирует только что написанный им программный код

— Давай снова поговорим о работе. Какими задачами чаще всего приходится заниматься в C3D Labs?

— С тех пор, как из команды выделили группу C3D Solver, я стал заниматься 2D-решателем, в частности функционалом для параметризации NURBS кривых. Мною были доработаны или созданы с нуля ограничения, вроде касаний или инцидентностей, добавлена возможность фиксации производных вплоть до 3-го порядка в любой точке сплайна, чтобы можно было гладко сопрягать кривые, например, по G2. Вообще сплайн — это довольно сложный объект. Работая с ним, очень легко ошибиться, поэтому была большая головоломка — как сделать так, чтобы всё это работало хорошо и было реализовано просто и понятно для окружающих. Отдельная тема — драггинг сплайнов. При разработке данной функции пришлось пересмотреть модель поведения сплайна, настроить и согласовать поведение большого числа объектов, из которых состоит сплайн и с которыми он взаимодействует. В настоящее время мы переместили фокус на 3D-решатель. Последняя моя работа — это создание паттернов.

— Насколько я понимаю, паттерны — это массивы компонентов. Как они могут быть использованы?

— Я и сам не знаю! Когда мы их создавали, я для себя выработал требование, чтобы API паттернов предоставлял разработчикам ПО как можно больше свободы, и каждый пользователь C3D Solver мог использовать их не только по прямому назначению (создание массивов однотипных компонент), но и как-то по-своему: создавать массивы из объектов разной природы, крутить-вертеть каждый элемент массива по отдельности, настраивая его индивидуальное поведение, или просто использовать паттерн, например, для создания средней точки на дуге. Ещё когда мы обсуждали паттерны с моим руководителем Сашей Максименко, я сказал ему, что не хочу ограничивать использование массивов. Пусть пользователи сами решают, для какой задачи им будет удобно их применить, а мы только предоставим для этого соответствующий инструментарий. Хочется, чтобы у нас это получилось.


Пример использования линейных и угловых паттернов в новой версии C3D Solver 2016

— Да, кстати, как тебе работается под руководством Александра Максименко?

— Отлично! Я думаю, что мы друг друга довольно хорошо понимаем. Саша — профессионал очень высокого уровня, очень многому меня научивший. Вообще, люблю людей, у которых постоянно можно учиться чему-то новому. И Саша именно такой человек!

— Ребята мне сказали, что ты — поклонник продукции Apple. У тебя даже ПО Visual Studio 2015 на днях отказалось устанавливаться под Windows. Скажи, как ты согласился компилировать ядро под Android?

— Меня никто не заставлял. Можно сказать, что я сам на себя перетянул обязанность по сборке C3D под Linux и Android. Просто потому, что мне это нравится. Я даже, наверное, не столько поклонник Mac, сколько любитель Linux. Для интереса я сперва начал собирать ядро, затем написал систему автосборки на Python, чтобы не мучиться. Вот так на прикладной задаче я решил изучить Python. Получилось извлечь пользу не только для себя лично, но и для C3D Labs тоже. А учитывая, что у меня техпроцесс уже был налажен, то было не сложно написать скрипт, чтобы ядро собиралось и для Android.

— Не пробовал запускать тестовое приложение C3D на Android?

— Когда SolidEng (корейский заказчик C3D Labs) испытывали наши технологии, они обращались с вопросами о том, как лучше организовать взаимодействие, потому что под Android обычно программируют на Java. Так мне пришлось изучить азы Java, чтобы показать наглядно, как можно связать с этим языком программирования наше ядро, написанное на C++. Позже они попросили продемонстрировать, как прорисовывать графику, используя нашу триангуляционную сетку, и я написал простенькое приложение под Android, демонстрирующее выполнение булевых операций и разные трансформации с получившимся телом. Хоть приложение и элементарное, но пришлось попотеть: я ведь раньше никогда не программировал ни на Java, ни, тем более, ничего не писал под Android. Кроме того, работать надо было быстро, потому что у SolidEng истекал срок тестирования и близилось время принятия решения о лицензировании или не лицензировании нашего ядра. Но всё получилось! И теперь этот пример доступен всем заказчикам, которые решат написать приложение под Android с использованием C3D.

— При общении с корейцами не было проблем с коммуникацией?

— Всё было довольно понятно. Корейцы — предельно корректные люди, они всегда очень вежливо общаются. Когда у них шёл активный этап тестирования, то почти каждый день мы с ними переписывались на английском. Они просили меня что-нибудь объяснить, я отвечал, и они снова задавали мне вопросы. Уже после того, как SolidEng лицензировал ядро, последовал только один вопрос по графическому отображению геометрии. Наверное, они довольно хорошо изучили C3D за время тестирования и теперь полностью самостоятельно разрабатывают свой софт на C3D.

— Что тебе больше всего нравится в рабочем процессе?

— Как и все, наверное, кто занимается наукой и математикой, я очень ценю моменты прозрения. Вот ты решаешь какую-то трудную задачу, мучаешься, не спишь ночами, всё время думаешь о ней... Вдруг в голове что-то щёлкает, и ты неожиданно понимаешь, что нашёл решение. В такие моменты я ощущаю себя самым счастливым человеком в мире! Надо мною даже жена иногда смеётся. Говорит, что Саша отключился от мира, а потом поздравляет с возвращением на Землю.

— Откуда ты черпаешь вдохновение, новые идеи? «Ньютоновские яблоки» ведь не всё время с неба падают?

— Я не знаю, как относиться к вдохновению. Благодаря университету, хорошим преподавателям и научным руководителям я был обучен различным методам решения задач. Поэтому я всегда стараюсь, в первую очередь, решать задачу самостоятельно. Конечно, читаю и специализированные статьи. Если говорить об идеях, то есть вещь, которая меня не перестаёт удивлять: ты какое-то время решаешь задачу, а потом вдруг узнаёшь, что где-то ещё в мире совершенно другие люди пришли к примерно такому же решению. С одной стороны, это всегда повышает самооценку — умные люди додумались, и ты тоже смог. А с другой стороны, думаешь, что все эти знания бренны и ничтожны, раз уж так много людей приходят к ним независимо друг от друга.

— Ты очень много занимался наукой раньше. Откуда такая тяга к знаниям?

— Мама с детства говорила мне, что главное — это знания, поэтому нужно много учиться. Со временем я полюбил учёбу. Особую роль в привитии мне любви к знаниям сыграла моя любимая учительница по русскому языку и литературе Валентина Николаевна Самохвалова. Она научила меня одному золотому правилу: «Когда не знаешь, с чего начать — начинай с вопроса». Тогда она так учила нас писать сочинения, а сегодня — это мой главный принцип решения задач. Если я не знаю, что делать и с чего начинать, то я записываю в тетради вопрос и начинаю методично на него отвечать. Я считаю, что правильно поставленный вопрос или сформулированная проблема — это уже половина решения сложной задачи. Вот так преподаватель по русскому языку поучаствовала в моём становлении как математика.

— Какая твоя любимая литература? Читаешь художественные произведения?

— Сейчас я уже гораздо меньше читаю, а было время в школьные годы, когда я читал без остановки какими-то страшными запоями. Люблю русскую классическую литературу. Многие произведения любимых Достоевского и Гоголя я перечитывал по многу раз. Если говорить о произведениях, то я обожаю «Братьев Карамазовых», которые мне дались только с 3 раза, и «Доктор Живаго» Пастернака за удивительно красивый русский язык!

— Какие передачи смотришь?

— Я постоянно смотрю футбол. Ещё люблю посмотреть видео про науку с сайта postnauka.ru

— Есть выпускники вузов, которые ещё только приглядываются к различным профессиям. Чем их может привлечь разработка ядра C3D?

— Думаю, что у всех есть свои интересы. Лично меня всегда привлекала возможность решения сложных математических задач.

— Ядро C3D может конкурировать с зарубежными ядрами?

— Не «может», а «обязано». В рабочем процессе должны присутствовать здоровые амбиции. Мне всегда хочется делать что-то лучше всех в мире, ну или хотя бы на уровне лучших. Не вижу никакого смысла делать поделки.

— Почему разработчикам инженерного софтвера следует использовать C3D?

— Мне хочется верить, что ядро C3D быстрое, имеет разнообразный функционал, удобно в использовании, имеет очень хорошую поддержку, т.е. стоит в одном ряду с лучшими ядрами в мире. А дальше уже дело вкуса каждого. Но я абсолютно точно уверен, что те, кто использует C3D в своей работе — не прогадали в своём выборе.

— Как параметризация может изменить облик современной трёхмерной системы моделирования?

- Она его уже изменила. Как и всё, что делается в области САПР, параметризация упростила выполнение ряда задач для проектировщиков и инженеров, избавила их от ненужной рутины, а также увеличила ряд возможностей. Мне хочется, чтобы в будущем функционал параметризации различных поверхностей и кривых в 3D стал столь же богат и разнообразен, как функционал параметризации кривых в 2D. Это может дать много новых возможностей инженерам.

— Какие тренды наметились в области САПР?

— Судя по публикациям, сейчас очень много пишут о прямом вариационном моделировании и гибридном моделировании. То есть речь идёт о более глубокой связи моделирования, основанного на истории построения 3D-модели, с моделированием без истории построения. Но пока, насколько я понимаю, «серебряной пули» нет, так как ещё не нашли такого решения, которое бы позволило идеально скрестить эти две методологии проектирования. Но это задача уровня САПР, и над её решением должны думать люди, которые занимаются CAD-системами. Уже от них к «ядерщикам» должны приходить задачи, которые требуется решить, чтобы в CAD-системе можно было осуществить задуманное. Ну, а наш собственные тренд — это как можно больше общаться с заказчиками и узнавать, что им конкретно нужно, чтобы облегчить творческий процесс моделирования и уменьшить долю труда, уходящую на написание кода.


ЧТО ТАКОЕ C3D?

Подробнее о технологиях C3D читайте в специальном разделе на нашем сайте:

c3dlabs.com/ru/products/c3d-kernel/


Google+