Александр Александрович Степанов ( русский : Алекса́ндр Алекса́ндрович Степа́нов ; родился 16 ноября 1950, Москва ) — русско-американский программист , наиболее известный как сторонник обобщенного программирования и как основной разработчик и реализатор библиотеки стандартных шаблонов C++ , [1] которую он начал разрабатывать около 1992 года, работая в HP Labs . Ранее он работал в Bell Labs рядом с Эндрю Кёнигом и пытался убедить Бьярна Страуструпа ввести что-то вроде обобщений Ады в C++. [2] Ему приписывают понятие концепции . [3] [4]
Он является автором (совместно с Полом МакДжонсом) Elements of Programming, [5] книги, выросшей из курса «Основы программирования» [6] , который Степанов преподавал в Adobe Systems (когда работал там). Он также является автором (совместно с Дэниелом Э. Роузом) From Mathematics to Generic Programming. [7]
В январе 2016 года он ушел из A9.com . [8]
Александр Степанов является сторонником обобщенного программирования . Хотя Дэвид Массер уже разработал и отстаивал некоторые аспекты обобщенного программирования к 1971 году, оно было ограничено довольно специализированной областью разработки программного обеспечения ( компьютерной алгеброй ).
Степанов осознал весь потенциал обобщенного программирования и убедил своих тогдашних коллег в General Electric Research and Development (включая, прежде всего, Дэвида Массера и Дипака Капура ), что обобщенное программирование должно рассматриваться как всеобъемлющая основа для разработки программного обеспечения. В то время не было никакой реальной поддержки обобщенного программирования ни в одном языке программирования.
Первым крупным языком, который предоставлял такую поддержку, был Ada с его функцией универсальных единиц. К 1987 году Степанов и Массер разработали и опубликовали библиотеку Ada для обработки списков, которая воплотила в себе результаты многих их исследований по универсальному программированию. Однако Ada не получила большого признания за пределами оборонной промышленности , и C++, казалось, с большей вероятностью станет широко использоваться и обеспечит хорошую поддержку универсального программирования, хотя язык был относительно незрелым. Другая причина обращения к C++, которую Степанов осознал рано, заключалась в том, что модель вычислений C/C++ (которая обеспечивает очень гибкий доступ к хранилищу через указатели ) имеет решающее значение для достижения общности без потери эффективности . В конечном итоге это привело к разработке Стандартной библиотеки шаблонов C ++ .