История библиотеки стандартных шаблонов
В вычислительной технике Стандартная библиотека шаблонов (STL) представляет собой программную библиотеку для языка программирования C++ . Архитектура STL — во многом творение Александра Степанова . В 1979 году он начал разрабатывать свои первоначальные идеи универсального программирования и исследовать их потенциал для революции в разработке программного обеспечения. Хотя Дэвид Массер уже к 1971 году разработал и пропагандировал некоторые аспекты обобщенного программирования, оно ограничивалось довольно специализированной областью разработки программного обеспечения ( компьютерной алгеброй ).
Концепция
[ редактировать ]Степанов осознал весь потенциал обобщенного программирования и убедил своих тогдашних коллег из General Electric Research and Development (в том числе, в первую очередь, Дэвида Массера и Дипака Капура ), что обобщенное программирование следует рассматривать как всеобъемлющую основу для разработки программного обеспечения. В то время ни один язык программирования не имел реальной поддержки универсального программирования.
Первым основным языком, обеспечивающим такую поддержку, был Ada ( стандарт ANSI 1983 г.) с его функцией общих единиц измерения. В 1985 году язык программирования Eiffel стал первым объектно-ориентированным языком, включавшим внутреннюю поддержку универсальных классов в сочетании с объектно-ориентированным понятием наследования. [1] К 1987 году Степанов и Массер разработали и опубликовали библиотеку Ada для обработки списков, которая воплотила в себе результаты большей части их исследований в области обобщенного программирования. Однако Ada не получила широкого признания за пределами оборонной промышленности , и C++, похоже, получил широкое распространение и обеспечил хорошую поддержку универсального программирования, хотя этот язык был относительно незрелым. Еще одной причиной обращения к C++, которую Степанов сразу понял, была модель вычислений C/C++, которая обеспечивает очень гибкий доступ к хранилищу через указатели, что имеет решающее значение для достижения общности без потери эффективности.
Разработка
[ редактировать ]Требовалось много исследований и экспериментов не только для разработки отдельных компонентов, но и для разработки общей архитектуры библиотеки компонентов, основанной на универсальном программировании. Сначала в AT&T Bell Laboratories , а затем в Hewlett-Packard Research Labs (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 г.