Барбара Лисков: первый архитектор абстракции данных
В 1968 году Барбара Лисков (Barbara Liskov) стала одной из первых женщин в Соединенных Штатах, получивших докторскую степень на факультете компьютерных наук. Четыре десятилетия спустя ректор Массачусетского технологического института (MIT) заявил всему миру, что каждый раз, когда кто-то проверяет баланс банковского счета онлайн или выполняет поиск, он «пользуется импульсом ее исследований». Между этими двумя моментами она выстроила концептуальный каркас — абстракция данных, абстрактные типы данных и формальное правило о том, когда один тип может безопасно заменить другой — который тихо работает под почти каждым языком программирования, написанным с тех пор.
Невероятное начало в вычислениях
Барбара Джейн Хуберман (Barbara Jane Huberman) родилась 7 ноября 1939 года в Лос-Анджелесе и была старшей из четырех детей. Она специализировалась на математике с дополнительной специализацией по физике в Калифорнийском университете в Беркли (UC Berkeley) и закончила его в 1961 году, будучи одной из всего двух женщин в своем классе, изучавших математику. Вместо того чтобы выбрать легкий путь к технической карьере в то время, когда для женщин почти не существовало таких возможностей, она устроилась программистом в корпорацию Mitre Corporation до того, как Стэнфорд принял ее на только что зародившуюся программу компьютерных наук. Ее докторская диссертация 1968 года была посвящена программированию шахматных эндшпилей и привела к созданию «киллер-эвристики» — метода отсечения при поиске, который до сих пор обсуждается в области искусственного интеллекта. Ее научным руководителем был Джон Маккарти (John McCarthy), один из основателей ИИ как области. Она признана первой женщиной в США, получившей докторскую степень на факультете компьютерных наук.
CLU и идея абстракции данных
Лисков присоединилась к MIT в 1972 году, чтобы возглавить группу, которая позже стала группой методологии программирования, и именно там, в середине 1970-х годов, она разработала язык CLU. В то время большинство программистов организовывали программное обеспечение процедурно, записывая последовательности инструкций, которые напрямую манипулировали структурами данных, оставляя и то, и другое запутанными повсюду. CLU представил «кластеры» — автономные модули, которые объединяли тип данных с единственными операциями, которым разрешено его изменять, полностью скрывая внутреннее представление от остальной части программы. Это была абстракция данных, и трудно переоценить, насколько сильно она изменила программную инженерию: структуры классов в основе Java, C++, C# и Ada ведут свою родословную от кластеров CLU. Лисков создала этот язык по сути как аргумент, реализованный в рабочем коде, о том, что крупные программные системы могут быть надежно построены только в том случае, если они разделены на небольшие, независимо проверяемые части с чистыми интерфейсами.
Двадцать вопросов, восемь минут на часах и процентиль, измеренный по всем, кто его проходил. Без регистрации.
Пройти тест IQ →Argus, византийская отказоустойчивость и распределенные системы
Лисков не остановилась на программах для одной машины. В 1980-х годах она руководила разработкой Argus, первого языка программирования высокого уровня, созданного специально для поддержки распределенных вычислений — программ, которые правильно работают даже при разделении между несколькими машинами, общающимися по сети, — идея, которая теперь является фундаментальной для каждой облачной службы и веб-приложения. Позже она перешла к еще более сложной задаче: как распределенная система продолжает правильно функционировать, даже если некоторые из ее составляющих машин произвольно выходят из строя или ведут себя злонамеренно, сценарий, который компьютерные ученые называют «византийским отказом». Практические методы, которые она и ее студенты разработали для обеспечения византийской отказоустойчивости, теперь встроены в инфраструктуру, которая поддерживает надежность крупномасштабных интернет-сервисов, и позже легли в основу некоторых протоколов консенсуса блокчейна.
Принцип, носящий ее имя
В своем основном докладе в 1987 году Лисков сформулировала то, что позже стало известно как принцип подстановки Лисков (Liskov substitution principle), формализованный впоследствии вместе с Джаннет Винг (Jeannette Wing): если программа написана для использования объектов заданного типа, она должна иметь возможность использовать объекты любого подтипа этого типа, не нарушая корректность программы. Это звучит почти самоочевидно, если сказать просто, и именно поэтому это важно — это превращает смутную интуицию о том, что «подклассы должны вести себя как их родительский класс», в строгий, проверяемый критерий для правильного объектно-ориентированного проектирования. Этот принцип стал одним из пяти столпов «SOLID», преподаваемых почти каждому студенту программной инженерии, что является редким случаем, когда имя отдельного исследователя входит в рабочий словарь целой отрасли.
Премия Тьюринга и признание
В 2008 году Ассоциация вычислительной техники (ACM) присудила Лисков премию А. М. Тьюринга (A.M. Turing Award), высшую награду в области вычислительной техники, «за вклад в практические и теоретические основы языков программирования и проектирования систем, особенно в отношении абстракции данных, отказоустойчивости и распределенных вычислений». Она стала лишь второй женщиной, получившей эту награду. Президент MIT того времени Сьюзан Хокфилд (Susan Hockfield) назвала ее вклад «идеалом MIT: новаторское исследование с глубокими преимуществами», а слова ректора Л. Рафаэля Райфа (L. Rafael Reif) были более конкретными: «Каждый раз, когда вы обмениваетесь электронной почтой, проверяете банковскую выписку онлайн или выполняете поиск в Google, вы пользуетесь импульсом ее исследований». Она уже получила медаль IEEE Джона фон Неймана в 2004 году; Национальный зал славы изобретателей включил ее в свой состав в 2012 году, а позже, в 2023 году, она получила медаль Бенджамина Франклина. Она остается профессором института MIT, высшим отличием факультета университета, присужденным в 2008 году.
Почему Барбару называют гением
Случай Лисков как гения — это случай самой абстракции: специфического интеллектуального навыка нахождения правильной границы для проведения внутри сложной системы, чтобы каждую часть можно было понять и ей доверять саму по себе. Кластеры CLU и принцип подстановки, носящий ее имя, не являются яркими изобретениями; это точные ответы на проблему, которую большинство программистов в 1970-х годах еще не научились четко формулировать, что отчасти является причиной того, почему ее имя навсегда закрепилось за решением в области, которая редко отдает должное отдельным людям таким образом. Язык комитета премии Тьюринга — «практические и теоретические основы» — указывает именно на это: не на единичный артефакт, а на способ мышления о корректности, который обобщился на языки и десятилетия. Честный контр-аргумент заключается в том, что Лисков работала в рамках исследовательской традиции, которая уже двигалась к модульности и абстрактным типам — Тони Хоар (Tony Hoare), Никлаус Вирт (Niklaus Wirth) и другие одновременно преследовали схожие идеи — и сам CLU никогда не стал широко используемым производственным языком; его влияние пришло из вторых рук, через более поздние языки, которые приняли его концепции. Ее гениальность, судя по всему, заключалась не столько в чистом изобретении, сколько в необычайной ясности: получить абстракцию точно правильной раньше, чем это сделал кто-либо другой.
Наследие
Идеи Лисков теперь невидимо лежат в основе программного обеспечения, работающего на телефонах, в банках и поисковых системах, а ее имя живет как сокращение — «нарушает ли это подстановку Лисков?» — в рамках анализа кода, проводимого инженерами, которые, возможно, никогда не читали ее работ. Лишь немногие исследователи достигают этой особой, неброской формы бессмертия: быть настолько полностью включенными в здравый смысл области, что люди перестают помнить, что когда-то к этому было привязано какое-то имя.

.jpg)
