История стандартной библиотеки шаблонов - History of the Standard Template Library
Архитектура Стандартная библиотека шаблонов (STL) - это в значительной степени создание Александр Степанов. В 1979 году он начал разрабатывать свои первоначальные идеи общее программирование и изучение их потенциала для революции в разработке программного обеспечения. Несмотря на то что Дэвид Массер разработал и отстаивал некоторые аспекты универсального программирования уже к 1971 году, он ограничивался довольно специализированной областью разработки программного обеспечения (компьютерная алгебра ).
Зачатие
Степанов осознал весь потенциал универсального программирования и убедил своих тогдашних коллег в General Electric Исследования и разработки (включая, прежде всего, Дэвид Массер и Дипак Капур ), что универсальное программирование следует использовать как всеобъемлющую основу для разработки программного обеспечения. В то время не было реальной поддержки универсального программирования ни в одном языке программирования.
Первым основным языком, предоставившим такую поддержку, был Ада (ANSI стандарт 1983 г.), с его характеристикой общих единиц. В 1985 г. Эйфель язык программирования стал первым объектно-ориентированным языком, который включает внутреннюю поддержку универсальных классов в сочетании с объектно-ориентированным понятием наследования.[1] К 1987 году Степанов и Массер разработали и опубликовали библиотеку Ada для обработки списков, которая воплотила результаты большей части их исследований в области универсального программирования. Однако Ада не получила большого признания за пределами оборонная промышленность а C ++ с большей вероятностью получит широкое распространение и обеспечит хорошую поддержку общего программирования, хотя язык был относительно незрелым. Еще одна причина обращения к C ++, которую Степанов осознал на раннем этапе, была модель вычислений C / C ++, которая обеспечивает очень гибкий доступ к хранилищу через указатели, что имеет решающее значение для достижения универсальности без потери эффективности.
Развитие
Потребовалось много исследований и экспериментов, не только для разработки отдельных компонентов, но и для разработки общей архитектуры библиотеки компонентов на основе общего программирования. Сначала в AT&T Bell Laboratories а позже в Исследовательские лаборатории Hewlett-Packard (HP), Степанов экспериментировал со многими архитектурными формулировками и алгоритмами, впервые в C и позже в C ++. Мюссер принимал участие в этом исследовании, и в 1992 г. Мэн Ли присоединился к проекту Степанова в HP и стал одним из основных участников.
Эта работа, несомненно, продолжалась бы какое-то время как исследовательский проект или, в лучшем случае, вылилась бы в проприетарную библиотеку HP, если бы Эндрю Кениг из Bell Labs не были осведомлены о работе и попросили Степанова представить основные идеи на встрече в ноябре 1993 г. Комитет ANSI / ISO для стандартизации C ++. Ответ комитета был в основном положительным и привел к тому, что Кениг запросил официальное предложение к марту 1994 года. Несмотря на огромную нехватку времени, Алекс и Мэн смогли подготовить проект предложения, который получил предварительное одобрение на этой встрече.
У комитета было несколько запросов об изменениях и расширениях (некоторые из них были серьезными), и небольшая группа членов комитета встретилась со Степановым и Ли, чтобы помочь проработать детали. Требования к наиболее значительному расширению (ассоциативные контейнеры ) необходимо было продемонстрировать свою последовательность, полностью выполнив их - задачу Степанов поручил Мюссеру. Степанов и Ли представили предложение, которое было окончательно одобрено на заседании комитета ANSI / ISO в июле 1994 года. (Дополнительные сведения об этой истории можно найти у Стивенса.)[2]Впоследствии документ Степанова и Ли 17 был включен в черновой вариант стандарта ANSI / ISO C ++ (1, части пунктов 17–27). Это также повлияло на другие части стандартной библиотеки C ++, такие как строковые средства, и некоторые из ранее принятых стандартов в этих областях были соответствующим образом пересмотрены.
Несмотря на успех STL в комитете, оставался вопрос, как STL станет доступным и пригодным для использования. При наличии требований STL в общедоступном проекте стандарта поставщики компиляторов и независимые поставщики программных библиотек могут, конечно, разрабатывать свои собственные реализации и продавать их как отдельные продукты или как точки продажи для других своих продуктов. Один из авторов первого издания, Атул Сайни, был одним из первых, кто осознал коммерческий потенциал и начал изучать его как направление деятельности своей компании Modena Software Incorporated еще до того, как STL была полностью принята комитетом.
Перспективы раннего широкого распространения STL значительно улучшились с решением Hewlett-Packard сделать его реализацию свободно доступной на Интернет в августе 1994 года. Эта реализация, разработанная Степановым, Ли и Массером в процессе стандартизации, стала основой многих реализаций, предлагаемых сегодня поставщиками компиляторов и библиотек.
использованная литература
- ^ Мейер, Бертран. Родственность против наследования, в конференции ACM по системам и приложениям объектно-ориентированных языков программирования (OOPSLA), Портленд (Орегон), 29 сентября - 2 октября 1986 г., страницы 391-405.
- ^ Эл Стивенс (Март 1995 г.). "Интервью Эла Стивенса Алексу Степанову". Журнал доктора Добба. Получено 18 июля 2007.