Comments by "Julia P." (@juliap.5375) on "АСКОН: российский САПР, PLM, BIM. В чем ПРОЕКТИРОВАТЬ процессор?" video.
-
@tyrykmakto6682 По-уму, оно вообще не так делается.
Ядро. Ядро — это алгоритмы, оно универсальное априори под любую ОС, а подстраивать его необходимо под железо. Тут у них нет проблем, они вон его даже под Эльбрус сразу перенесли (вероятно без оптимизации, не суть, главное что сразу можно работать).
Интерфейс. А вот интерфейс всегда завязан на библиотеки и среду конкретной ОС. Как создается окно, кнопка, список, надписи, взаимодействие с мышкой, окно выбора файла, работа с именем файла и прочее-прочее. В нём проблемы и возможны разные решения.
Ты говоришь про ещё целый отдел, но это самое глупое решение, держать две разные ветки программы. Есть более простое. Находится среда, которая представляет из себя прослойку и встраивается между программой и конкретной ОС. Например тот же Qt. Программист интерфейс создает в ней: окошко, кнопку, список, взаимодействие с мышкой, работу с именем файла. А далее уже Qt преобразует всю эту работу под конкретную ОС. Поэтому отдел у тебя будет один и тот же, тот что занят интерфейсом (а в больших продуктах этот всегда целый отдел, остальные программисты этим не занимаются и ничего там не трогают), а под разными ОС оно нативно работает уже само, как магия.
Перенос — большую часть кода логики даже не придется переписывать, меняется только код который непосредственно завязан на работу с контролами.
Но и это не самое оптимальное решение. Учитывая специфику их программ, самое правильное решение, это им вообще не завязываться на третьи решения, а воплотить интерфейс самостоятельно. Тем более что у них на должности есть и дизайнер. Т.е. чтобы все эти кнопочки, надписи, списки и прочее у них были свои собственные, была своя логика их отрисовки и работы с ними. Оно может показаться сложным, но только показаться, процесс довольно тривиальный. Допустим чтобы оно сразу всё отрисовывалось через тот же условный opengl, у них будет лишь немного не универсального базового кода под каждую ОС, без необходимости даже заводить отдельного человека за этим следить, а со всей задачей может справиться даже один человек. До кучи такое решение позволит сильно улучшить интерфейс введя в него нестандартное поведение/отрисовку. Обычно такое через стандартные контролы решается через костыли, а любые переносы между разными ОС не всегда получаются и так же требуют немало костылей и лишнего кода. Тут такого не будет. И опять же, этим будет занят все тот же один единственный отдел.
Причем переносить такое приложении можно самостоятельно вообще куда угодно и сразу. Давай пофантазируем — завтра в России стандартом становится некая ОС (хорошо если на линукс, не факт) со своим собственным сервером отображения, который не совместим ни с какими хorg, wayland и прочими. Под него не будет того же Qt и прочая. Перенос под неё будет по сути как ты и предложил — через создание нового отдела и никак иначе. А в случае собственного решения перенос будет сразу и из коробки. Окей, допустим в этой ОС не будет даже opengl, но будет что-то своё аналогичное. Решается оно через интерфейс-прокладку в коде, которая и так должна быть там изначально, чтобы в одной ОС обращение для отрисовки шло к opengl, в другой к metal.
Для больших продуктов это самые разумные и правильные решения. И они не требуют новых отделов, этим занимается все тот же старый один отдел. Последнее решение ещё и сильно дешевле получится.
9
-
1