Manifold Geometry // Многообразная Геометрия

OpenCascade как воля и представление

/ Просмотров: 2320
«Понять феномен открытых исходников помогает аналогия с тем, как наука воспринималась религией столетия назад (а иными и сейчас воспринимается так же). Исходно наука представлялась чем-то вредным, опасным и антиобщественным — именно так многие софтверные компании рассматривают открытые исходники. И точно так же как наука не родилась для подрыва религиозных устоев, так и движение открытых исходников не направлено на разрушение софтверной отрасли. Его задача — производить хорошие технологии и смотреть, что из этого получится» (Линус Торвальдс, Just For Fun).

Мы уже неоднократно говорили о библиотеке Open CASCADE Technology (OCCT), чем планируем заниматься и дальше. Дело в том, что альтернатив этой библиотеке нет — она открыта. Конечно, само по себе это еще ничего не означает, ведь открытый софтвер сегодня не редкость. Редкость — это открытый софтвер индустриального качества, с помощью которого моделируют изделия, проводят расчеты и управляют станками. Сама модель открытого программного обеспечения — это, на мой скромный взгляд, модель будущего. Почему? Давайте перечислим преимущества такой модели:

  1. Зайдем издалека, а именно от науки. Сегодня в научном издательстве сформировалась коммерческая схема доступа к публикациям. Известно, что любая научная деятельность начинается с ознакомления с уже существующим комплексом знаний. Могут ли сегодня деятели от науки беспрепятственно получить доступ к свежим статьям? Нет. Есть ли равные права доступа у разных университетов? Нет. Одинаковы ли цены для разных стран? Опять же, по курсу валют — даже близко нет. Вот и появляются такие ресурсы как «Sci-Hub» и «КиберЛенинка» в виде естественного противодействия сложившемуся устройству оборота знаний. Нетрудно провести параллель между закрытой информацией в виде статей и закрытым программным обеспечением, реализующим нечто наукоемкое. Открытый исходный код делает библиотеку (мы говорим о библиотеках геометрического моделирования) достоянием всего человечества, тогда как закрытый продукт — это вещь в себе, чаще всего опутанная маркетинговым туманом вплоть до полной неразличимости ее истинного облика (не говоря уже о содержании).

  2. Открытое программное обеспечение потенциально более надежно. Парадоксально, но факт. Вспомним, что сверхсложное программное обеспечение немыслимо без регрессионного тестирования. Формируется своеобразный диполь Программа-Среда. Понятно, что открытый продукт имеет потенциально более широкую аудиторию, а значит и большее количество разнообразных сценариев использования. То есть, выражаясь биологически, среда здесь более агрессивна. Но это в теории. Ведь ясно также и то, что сегодня все обстоит абсолютно противоположным образом. Коммерческий софтвер занимает практически весь рынок, тогда как продукты, использующие открытую базу, довольствуются малым (напомню, речь о геометрическом моделировании и прочей вычислительной геометрии). Возвращаясь к аналогии с экосистемой, нетрудно увидеть, что давление среды на OCCT в этом смысле ниже. Грубо говоря, народ использует SolidWorks, а не FreeCAD потому что первый надежнее, но именно поэтому FreeCAD менее надежен. Круг замкнулся. Вопрос лишь в том, насколько это справедливо в долгосрочной перспективе, и здесь есть основания для оптимизма.

  3. Открытое ПО более гибко. В распоряжении программиста оказывается не только тот интерфейс (API), который был предусмотрен разработчиком, но и все «тело» продукта. По сути вы можете делать с ним все, что угодно, например, заниматься алгоритмическим дифференцированием. Последнее далеко не так просто осуществить на закрытом продукте, не имея его исходных кодов. Располагая же текстом программы, вы можете готовить необходимые конкретно вам дистрибутивы (например, использовать только геометрию сплайнов, физически исключив весь B-Rep), вживлять разнообразные расширения и вообще чувствовать себя как дома. В академических кругах это особенно полезно и актуально, ведь можно начать практическую проработку смежного научного направления, не потратив ни рубля на лицензию. Мы уже упомянули алгоритмическое дифференцирование, которое является средством решения задач оптимизации в САПР. Другим примером может служить разработка всякого рода алгоритмов вычислительной геометрии и моделирования, например, булевых операций.

  4. Открытое ПО более безопасно. Скажем, компетентная рабочая группа может сертифицировать его для нужд оборонной промышленности путем анализа открытого кода. «Вражеские закладки», внезапно срабатывающие в условиях атомной войны, здесь исключены. Любая шпионская функциональность обречена быть вырезанной, а потому едва ли вообще появится в открытом ПО.

Перечень достоинств открытого ПО можно продолжить, и читатель наверняка придумает еще какой-нибудь хороший аргумент в его пользу. Например, деньги. Открытое программное обеспечение выводит из игры тот капитал, которым вы необходимо должны пожертвовать, начиная разработку своего продукта на основе коммерческих библиотек. Вы не платите за использование чужого интеллектуального труда, — вы вовлекаетесь в открытый проект и добавляете к нему свои сценарии пользования. Никто не перекроет вам дыхательное горло, перестав продавать лицензии, — весь продукт полностью ваш. Цена продукта, который делаете вы, не будет включать нередко астрономический ценник на лицензию стороннего программного обеспечения — вы продаете ровно то, что произвели собственными интеллектуальными силами. Таким образом, открытая модель по природе своей оказывается и более безопасной и более честной. Вы стоите на плечах гигантов.

«У всех, кто впервые слышит о возможности сделать открытым уже существующий коммерческий проект, возникают одни и те же вопросы. Во-первых, каково будет сотрудникам компании, если кто-то посторонний выполнит работу лучше их и все об этом узнают. Мне кажется, они должны радоваться. К тому же они получают деньги, а основную работу делает кто-то другой. С этой точки зрения открытые исходники — вообще что бы то ни было открытое — вещь беспощадная. Они ясно показывают, кто чего стоит. Тут не спрячешься за управляющими» (Линус Торвальдс, Just For Fun).

Упражнение на тему «кто чего стоит» смотрите в заметке OCE vs OCCT.

Здесь можно возразить, что надежность коммерческого продукта компенсирует все затраты, тогда как использование открытого ПО грозит перерасти в постоянную борьбу со случайными багами и низкой производительностью (скажите это производителям VTK). Мне, однако, не встречалось ни одного до конца честного сравнения надежности OCCT с коммерческими собратьями. То, что доступно в виде документов, либо проговаривается на семинарах — прошу пардону... Банальное неумение пользоваться документацией, нежелание разбираться в сложном продукте, замешанное на довольно гнусной установке, что «мне, как потребителю, должны предоставить грамотный сервис» — не это ли причины стольких провальных попыток задействовать OCCT? Добавим сюда еще слепую веру в принципиально иное качество продукта, за который просят много денег.

Итак, есть ли объективное сравнение открытого геометрического ядра с лидерами рынка? По правде говоря, его не так-то просто осуществить. Следовательно, есть основания полагать, что ничего дельного по данному вопросу просто не существует в природе. За исключением, повторюсь, субъективных и поверхностных взглядов на весьма сложный по сути предмет. А такие взгляды, как известно, всегда очень категоричны. Очень. Категоричны.