Стандарты: облегчение взаимодействия между сущностями
В 18 веке оружие изготавливали искусные оружейники; каждое изготавливаемое таким образом оружие было уникальным предметом. Это делало оружие чрезвычайно дорогим и сложным для ремонта в случае поломки, так как единственный способ исправить его — отправить обратно к оружейнику и попросить его восстановить свое творение вручную.
Так в середине 18 века французский оружейник по имени Анри Леблан предложил сделать стандартизованные детали оружия. Стандартизованные детали работают друг с другом независимо от создателя; таким образом, поломанное оружие может быть легко отремонтировано, заменив неисправную деталь на новую.
Хотя Анри Леблан умер давно, его идея стандартизации живет и стала одним из основ современной разработки программного обеспечения.
В этом разделе мы рассмотрим идею стандартизации и ее значение.
Что такое стандарт?
Грубо говоря, стандарт — это абстракция, используемая несколькими сущностями. Такое определение содержит две части:
- Что такое абстракция?
- Каким сущностям применима эта абстракция?
Стандарты важны, потому что:
- Они предоставляют стандартизированный способ взаимодействия нескольких сущностей друг с другом, и если взаимодействие соответствует стандарту, оно "гарантированно работает правильно"; и
- При проектировании чего-либо, наличие "абстрактных стандартов" лучше, чем зависание от "конкретных вещей", поскольку первое работает с любым, соответствующим стандарту, а второе работает только с определенными вещами.
Давайте рассмотрим пример, чтобы лучше понять идею.
Пример стандартов
Одним из заметных примеров стандартов являются Архитектуры набора инструкций (ISA). ISA представляет собой, по сути, абстракцию компьютера, которая определяет, какие операции он должен поддерживать, например, математические операции, такие как сложение и вычитание.
Предыдущее определение стандарта применимо к ISA:
- Что такое абстракция? Абстракция - это набор операций, которые должны быть поддерживаемы, определенный ISA.
- Каким объектам применима абстракция? Стандарт (абстракция) применим к всем компьютерам, которые поддерживают операции, определенные ISA.
Почему это важно? А размышляли ли вы о том, почему приложения могут выполняться на разных компьютерах, созданных разными производителями и оснащенными разными ЦПУ? Каждый компьютер является уникальным, и у старых и новых компьютеров могут отличаться аппаратные части, так почему одно и тоже приложение работает на обоих?
Ответ заключается в том, что программное приложение не зависит от конкретного оборудования; вместо этого оно зависит от определенного ISA. То есть оно использует только операции, определенные в ISA. В то же время разные компьютеры могут реализовывать (т.е. поддерживать инструкции, определенные в) том же ISA. Таким образом, пока компьютер поддерживает определенный ISA, он может запускать любое программное обеспечение, созданное для этого ISA: приложение использует только операции, определенные ISA; компьютер поддерживает этот ISA, поэтому все операции ISA гарантированно работают; следовательно, программное обеспечение гарантированно работает правильно.
%%{init: { "flowchart": { "curve": "linear" } } }%%
graph TD
S1([Приложение-1]) --> I([ISA])
S2([Приложение-2]) --> I
S3([Приложение-3]) --> I
I --> C1([Компьютер-1])
I --> C2([Компьютер-2])
I --> C3([Компьютер-3])
Как видите, ISA служит "соглашением" между приложениями и аппаратным обеспечением компьютера; между софтовым приложением и аппаратным обеспечением выполняется взаимодействие в соответствии с ISA стандартом (то есть приложение использует только операции, определенные в ISA, и аппаратное обеспечение поддерживает ISA), программное обеспечение гарантированно работает правильно. Соблюдение ISA стандарта приносит огромные выгоды и разработчикам программного обеспечения, и производителям аппаратного обеспечения: без ISA разработчикам программного обеспечения пришлось бы писать одно и то же программное обеспечение для каждого компьютера, тогда как ISA сокращает это до написания программного обеспечения только для нескольких ISA; такие выгоды также распространяются и на производителей аппаратного обеспечения.
Поздравляю! Вы узнали о понятии стандартов, которое является важной концепцией, лежащей в основе практически всех программных приложений.