Nov 30, 2018 13:31
В очередной раз побывал на "Открытой конференции им. В. П. Иванникова". Сейчас конференция проходит в трех секциях, две для программистов разной направленности (и обе не прикладное программирование) и одна секция посвящена решению задач механики сплошной среды при помощи свободного программного обеспечения. В основном это задачи гидроаэродинамики, теплопередачи, акустики и так далее. Задачи прочности встречаются редко, в этом году не было совсем. Доклады этого года были достаточно интересными, однако актуальность и полезность большинства из них весьма сомнительная. Большая часть работ, представленных в докладах, это работы типа "а не посчитать ли нам вот эту невиданную фигню? А вдруг получится." Из этого следует крайне неприятный вывод - сообщество пользователей свободного программного обеспечения для инженерных расчетов практически не пересекается с промышленностью, которой требуется решение реальных практических задач. К сожалению, причины такого разделения вполне объективны. Попробуем разобраться откуда что берется.
Итак, промышленность. Промышленность - это заводы, конструкторские бюро, научно-исследовательские институты и различные проектные организации. Конструктора, технологи, строители и так далее. Всем надо посчитать абсолютно конкретную железяку, а не "неведомую фигню". Причем посчитать надо быстро, иной раз даже ко вчерашнему дню, а исходные данные будут завтра. Отсюда следуют следующие выводы: времени на эксперименты нет, над считать здесь и сейчас. Чтобы это обеспечить, программное обеспечение (ПО) должно иметь понятный интерфейс, удобные средства для создания моделей, простую процедуру запуска расчета и средства для вывода результатов как в графическом, так и в текстовом или таблично виде. Причем результаты должны иметь возможность дополнительной обработки. Все это желательно иметь в рамках одного программного продукта. Есть еще один немаловажный фактор - ПО должно быть валидировано и верифицировано для выполнения расчетов в конкретной отрасли промышленности. Это не всеобщее требование, но, например, в атомной промышленности, такое требование имеется и оно весьма жесткое. Менее жесткий вариант - ПО должно быть общепризнанным в отрасли. То есть считать непойми чем конечно можно, но на полученные результаты будут смотреть с большим сомнением.
В противоположность промышленности, университетская среда имеет возможность проводить различные исследования и эксперименты. Собственно, это их прямая задача. Отсюда и возникает желание посчитать некую невиданную фигню. Ученым это интересно. Задачи посчитать железку ко вчерашнему дню у них не стоит. Можно вволю поэкспериментировать. Отсюда следует такое требование к ПО, как гибкость и возможность добавлять различные дополнительные модули. Или даже написать свою программу или скрипт под конкретную задачу. Проблемы удобного интерфейса, удобства создания моделей и обработки результатов несущественны. Это конечно удобно, но можно и на коленке что-то сваять, смоделировать, получить результаты и нужным образом их обработать. Так или иначе результат будет получен. Возможно он будет получен не сразу, а после множества попыток с различными параметрами расчета, с использованием дополнительных (самописных) модулей, но он будет. При этом требований к валидации и верификации, как правило нет. Часто сама задача является попыткой верификации некоего ПО для решения задач некоего типа ("а не посчитать ли нам вот эту невиданную фигню? А вдруг получится.").
Теперь рассмотрим ситуацию с точки зрения программного обеспечения. Имеем две группы ПО - коммерческие коды и свободное программное обеспечение (СПО). Рассмотрим плюсы и минусы этих двух групп.
Коммерческие коды.
Как видно из названия данное ПО платное. Причем, как правило, стоимость данного ПО весьма существенная. В российских реалиях стоимость одной лицензии решателя с препостпроцессором может достигать нескольких миллионов. Можно, конечно, воспользоваться трофейным ПО, но для серьезной организации это однозначно неприемлемо. Но приобретая ПО за такие суммы, покупатель получает инструмент, который не требует возни с настройками и 90% задач будут решаться, что называется, из коробки. Коммерческие коды включают в свой состав препостпроцессоры, позволяющие создавать модели любой сложности, подготавливать исходный код для решателя и обрабатывать полученные результаты всеми возможными способами. В наличии графический интерфейс, позволяющий выполнять большинство операций интуитивно, не обращаясь к справочным материалам. Сами справочные материалы содержат в себе полное описание продукта со всеми его нюансами, включая теоретические основы. Часто при покупке лицензии предоставляется возможность пройти курс обучения работе с ПО или такое обучение проводится за относительно небольшие деньги. Также пользователям предоставляется техническая поддержка - все вопросы будут решены. При покупке вместе с лицензией платной технической поддержки, пользователям бесплатно предоставляются новые версии ПО. Проводятся конференции, семинары и прочие мероприятия, где можно получить много интересной и полезной информации. Большинство коммерческого ПО включает API, дающий возможность написания различных скриптов для выполнения каких-либо дополнительных функций, как по подготовке исходных данных, так и при обработке результатов. Для некоторых решателей есть возможность вмешиваться и в сам процесс решения, дополняя стандартные коды (но не меняя их). Само собой подразумевается, что коммерческий код уже верифицирован, валидирован, имеет все требуемые сертификаты, позволяющие решать задачи определенного в типа в конкретной области промышленности.
Свободное ПО
Свободное программное обеспечение, как следует из названия, совершенно свободно (но это не точно). Пользователь ничего не платит, свободно скачивает ПО, включая исходный код. При этом волне допустима модификация кода (тут конечно есть нюансы, но тем не менее). Кажется что вот оно счастье - "Зачем платить больше?". Ан нет. Платить надо за все. В данном случае, пользователь платит своим временем и удобством работы. Итак, что пользователь получает, скачав пакет СПО? Во-первых, вполне возможна такая ситуация, что кроме исходного кода, пользователь ничего более не получит. То есть надо совершенно самостоятельно скомпилировать исходный код под свою операционную систему. Как правило, компиляция такого ПО весьма неординарна и требует использования нестандартных настроек. Вполне возможна также и ситуация, когда компиляция возможна только в определенных операционных системах. Весьма часто СПО разрабатывается под Linux (СПО для свободной ОС!). Компиляция под Windows или невозможна вовсе или требует серьезных усилий. Итак, пакет программ тем или иным путем инсталлирован. Можно начинать работать. Но не тут то было. Подробной справочной системы, как правило нет. Часто присутствует только краткое описание основных функций. Информацию о том, как пользоваться пакетом программ необходимо искать самому. В предельном случае, необходимо влезать в исходный код, чтобы понять как это работает (а исходный код может быть очень скверно написан и еще более скверно документирован). Но и это еще не все. При работе с коммерческим ПО привыкаешь работать в среде препостпроцессора, в которой выполняются все операции от создания модели, до обработки результатов. В случае работы с СПО препостпроцессор может вообще отсутствовать как класс. И пользователю придется дополнительно скачивать препроцессор и постпроцессор. Или препроцессор и/или постпроцессор присутствуют в пакете, но отдельно от самого решателя. То есть работать придется с несколькими программами. Вполне возможна также ситуация, когда исходный код для решателя придется полностью набирать в текстовом редакторе. Да и результаты отображать придется в каком-то отдельном пакете предварительно преобразовав форматы. Не правда ли как удобно? И можно модифицировать код. Можно добавлять свои модули. Можно скачивать дополнительные модули из сети и интегрировать с уже имеющимися. Зато нескучно! Техническая поддержка? Нет, не слышали. Вся информация только из форумов и сообществ. На форумах и в сообществах, как правило, присутствуют и разработчики. Но и они могут не знать всех нюансов. Сертификаты, валидация, верификация? Этого тоже нет. То есть для решения реальной задачи пользователю придется выполнить энное количество тестовых задач и доказать соответствующим органам, что данное ПО может быть использовано по назначению. Такая вот свобода.
Вопрос, кто что выберет риторический. Для промышленности, где важен результат, а не процесс несомненно будет выбрано коммерческое ПО. А ученые вряд ли будут тратится на коммерческие лицензии ради экспериментов. Есть, конечно, и исключения. Инженер-расчетчик из КБ может при определенных условиях поэкспериментировать с СПО, а университеты и институты закупают коммерческие или студенческие лицензии коммерческого ПО. Но используют их в целях обучения студентов и выполнения работ для промышленности. Но основное направление остается неизменным - промышленность пользуется коммерческим ПО, ученые используют СПО. Как результат, промышленность на конференциях представляет доклады о конкретных расчетах конкретных железок, ученые о расчетах "неведомой фигни". В принципе это нормально, но хотелось все же более тесного взаимодействия таких разных сообществ.
расчеты,
философское,
компьютерное,
рабочее