Вычислительная платформа
Вычислительная платформа, программная платформа — инфраструктура, необходимая для запуска определённого программного обеспечения (ПО). Совокупность необходимых компонентов для работы ПО составляет вычислительную платформу, хотя отдельные компоненты вычислительной платформы могут быть скрыты под слоями абстракции[1][2].
Вычислительная платформа — широкий термин, конкретное значение которого зависит от контекста — типа ПО, для описания работы которого определяют необходимые компоненты. Так как способов классификации типов ПО достаточно много и в каждой классификации выделяют множество параметров, то и термин вычислительная платформа для такого ПО имеет множество вариантов определения. Однако, общим всегда остаётся определение принципиально необходимых для работы ПО компонентов.
Иногда наиболее отличительный параметр, необходимый для конкретного программного обеспечения, называют вычислительной платформой сам по себе, чтобы облегчить коммуникацию, ссылаясь на целое только по одному из его атрибутов, то есть используя метонимию.
Общие сведения
| Вычислительная платформа | |
|---|---|
| Изучается в | информатика |
Примеры вычислительных платформ
- Для системного программного обеспечения, написанного на языке ассемблера и запускающегося при старте компьютера, к вычислительной платформе можно отнести архитектуру компьютера (большинство современных компьютеров относятся к ЭВМ). Например, для командного процессора операционной системы (ОС) MS-DOS, хранящегося в файле COMMAND.COM, загружаемого в оперативную память (ОЗУ), запускаемого при старте и являющегося, фактически, ядром ОС, платформой будет архитектура процессора и система команд процессора x86.
- Для исходного кода программы на языке C, предназначенной для работы в среде ОС UNIX, поддерживающей стандарты POSIX, платформой будет являться собственно ОС UNIX, поддерживающая стандарты POSIX (или просто POSIX, использую метонимию). Однако, для такой же программы, транслированной в машинные коды конкретного процессора и собранной в исполняемый файл, вычислительная платформа может быть уже обозначена, например, как «ОС CLIX на процессорах архитектуры Intergraph Clipper».
- Для триггера СУБД, написанной на языке PL/SQL, платформой будет конкретная СУБД, подходящая для исполнения такого программного кода: СУБД Oracle Database или IBM DB2. При этом ни тип ОС, ни даже её наличие, ни конкретная архитектура центрального процессора (ЦП) значения не имеют.
- Для ПО, написанного на языке Java, платформой может быть указана конкретная виртуальная машина, например JX. В общем случае, c ПО на языке Java тип ОС и даже её наличие не важны, так как исходный текстовый код на Java транслируется в байткод Java и выполняется не реальным аппаратным устройством (центральным процессором), а специальным программным механизмом — виртуальной машиной Java (Java Virtual Machine, JVM), которая может сама по себе исполняться в среде какой-то ОС или непосредственно на «голом» железе.
- Если уникальный программный комплекс требующий сложных вычислений для моделирования поведения биологических макромолекул, созданный в НИИ, разработан c целью использовать множество процессоров конкретного графического ускорителя, например, nVidia GeForce RTX 4090, и без такой платы ПО не сможет работать, то такой аппаратный компонент вычислительной системы будет входить в понятие «вычислительная платформа» для такого ПО.
- Другой пример. Серийное ПО для расчётов, например, поведения атмосферных явлений может использовать такой интерфейс прикладного программирования (API) графических ускорителей, как CUDA, благодаря чему сможет работать уже на множество графических ускорителей, например, ускорителях серии GeForce 40. Тут в понятие вычислительная платформа попадает уже не конкретная модель аппаратного компонента, а целая линейка аналогичных продуктов.
- В случае же c какой-то компьютерной игрой, где графический ускоритель может повысить плавность анимации и качество графического изображения, он может являться желательным, но не безусловно обязательным аппаратным компонентом персонального компьютера (ПК). В этом случае он не будет включаться в понятие «вычислительная платформа» для такого ПО.
Приведённые примеры показывают, что в зависимости от уровня и типа ПО, те или иные слои и компоненты вычислительной системы могут быть скрыты за промежуточным программным и аппаратным обеспечением, представляющим различные уровни абстракции. При этом отдельный слой, например, виртуальная машина, являющийся вычислительной платформой для приложения, сам по себе нуждается в следующем нижележащем слое ОС, который будет являться платформой для него и т. д.[1].
Общее правило таково: До тех пор, пока нечто — это необходимый компонент для выполнения программного кода, оно является частью вычислительной платформы для такого кода.
Компоненты
Компонентами вычислительных платформ могут являться:
- Аппаратное обеспечение (АО) в виде т. н. «голого железа»: вычислительная система без установленного программного обеспечения. Такой вычислительная платформа может существовать для встраиваемых систем (embedded system), где ПО обращается к аппаратным компонентам напрямую, без участия ОС. Также это будет являться платформой для системного ПО, типа ОС. Пустое аппаратное обеспечение может являться готовой платформой и для таких видов ПО, как СУБД и виртуальные машины.
- Программные каркасы (фреймворки) и библиотеки предоставляют программам готовые функциональные и архитектурные компоненты.
- Веб-браузеры для веб-приложений могут являться платформой. Хотя они сами функционируют на определённой платформе АО + ОС, это не относится и не является компонентами вычислительной платформы для приложений, функционирующих в среде браузера[3].
- Любое приложение, которое предоставляет возможность выполнять в его среде пользовательский программный код на встроенном скриптовом языке. Например, макрос электронной таблицы LibreOffice Calc имеет в качестве вычислительной платформы это приложение, а для полноценного приложения управления продажами, написанного на встроенном в пакет офисных приложений скриптовом языке платформой может быть уже весь пакет LibreOffice или многие его приложения[4].
- Системы облачных вычислений и сервисы типа «Платформа как услуга» (Platform as a Service) расширяют идею программных каркасов, позволяя разработчикам создавать приложения, многие компоненты которых располагаются на площадках провайдеров таких услуг. В таких распределённых приложениях, где компоненты связаны посредством глобальной сети, они также являются «вычислительной платформой»[5]. Сайты социальных сетей, например ВК, позволяющие пользователям создавать и запускать собственные приложения, также являются для таких приложений «вычислительной платформой», предоставляя разработчику программные компоненты и данные недоступные другим способом[6].
- Виртуальные машины (такие, как JVM) и среды исполнения, например .NET CLR, безусловно относятся к вычислительным платформам, предоставляя приложениям в исходных кодах или транслированным в байт-код, необходимую инфраструктуру для работы, изолируя их от особенностей реальной вычислительной системы.
Примеры существующих вычислительных платформ
Ниже дан список примеров вычислительных платформ различного уровня абстракции[комментарий 1][комментарий 2].
- Семейства микроконтроллеров AVR и MIK от компании «Микрон»
- ARM — лицензируемая архитектура микроконтроллеров (включая однокристальные ЭВМ) и ядер центральных процессоров
- Raspberry Pi полнофункциональные миниатюрные компьютеры
- ARM-серверы c Unix-подобными операционными системами такими, как Linux или BSD
- IBM PC-совместимые персональные компьютеры и серверы
- IBM z/Architecture мейнфреймы
- Игровые приставки (специализированные игровые компьютеры, игровые консоли): Nintendo, PlayStation, Xbox
- Суперкомпьютеры
- Дубна — ОС для больших ЭВМ (мейнфреймов) серии БЭСМ-6 (подробнее)
- z/OS — ОС для больших ЭВМ (мейнфреймов) семейства IBM System z
Программное обеспечение
- .NET — модульная платформа для разработки программного обеспечения с открытым исходным кодом и общеязыковой средой исполнения Common Language Runtime (CLR), которая подходит для различных языков программирования
- .NET Framework — патентованная реализация от Microsoft
- Mono — воплощение системы «.NET Framework» на базе свободного программного обеспечения
- Java — программная платформа для разработки переносимого программного обеспечения
- LibreOffice — свободный пакет офисных приложений
- LibreCAD — свободная САПР
- Oracle Database — одна из старейших промышленных СУБД
- Platform V Pangolin DB — российская сборка СУБД PostgreSQL уровня enterprise, содержащая доработки для повышения производительности, безопасности, удобства разработки и сопровождения
- Qt — фреймворк для разработки кроссплатформенного программного обеспечения на языках программирования C++, Python, Java, Ruby, PHP и др.
См. также
Литература
- Платунов А. Е., Яналов Р. И. Проектирование вычислительных платформ киберфизических систем // Известия высших учебных заведений. Приборостроение. — 2017. — № 10.
- Таненбаум Э. С. Архитектура компьютера = Structured Computer Organization. — 5-е изд.. — СПб.: Питер, 2007. — 848 с. — (Классика Computer Science). — ISBN 978-5-469-01274-0.
- Лукьяненко А., Григорьев В. Словарь терминов в области вычислительной техники. Москва, ИТТП, 2008.
- Большой энциклопедический словарь. Москва, 2011.
- Крыжановский А. Н. Технический словарь по вычислительной технике. Москва, Вузовская книга, 2005.
- Wood, David. The Oxford Dictionary of Computing. Oxford University Press, 2016.
- Merriam-Webster. Merriam-Webster’s Collegiate Dictionary. 11th Edition, Merriam-Webster, 2003.
- IEEE. IEEE Std 610.12-1990: IEEE Standard Glossary of Software Engineering Terminology. Institute of Electrical and Electronics Engineers, 1990.

