Сделать код понятным: как Барбара Лисков повлияла на современное программирование
![Барбара Лисков (Фото Kenneth C. Zirkel / CC BY-SA 3.0)](https://cdn.forbes.ru/forbes-static/c/608x342/new/2022/08/Barbara-Liskov-MIT-computer-scientist-2010-copy-62f13baac7397.jpg)
«Когда я росла, определенно не считалось, что девочка должна интересоваться математикой и естественными науками, — вспоминала Барбара Лисков в 2016 году. — На самом деле в те дни месседж, который вы получали [от общества], заключался в следующем: вы должны были выйти замуж, иметь детей и не иметь работы». Барбара не последовала этому плану и стала одной из пионеров IT, именем которой назван один из принципов в современном программировании.
Барбара Джейн Губерман родилась 7 ноября 1939 года в Лос-Анджелесе. Ее отец был адвокатом, а мать — домохозяйкой, несмотря на то что у нее был диплом университета Беркли.
По словам ученой, «родители всегда поощряли ее серьезно относиться к учебе» и не запрещали дочери интересоваться «странными» для девушки вещами, такими как наука. При этом отец настоял, чтобы Барбара научилась машинописи. С его точки зрения, это было крайне важно. «Причина заключалась в том, что если, упаси боже, мне когда-нибудь придется содержать себя, потому что я не вышла замуж или что-то случилось с моим мужем, я могла бы устроиться на работу секретарем, — объясняла ученая впоследствии. — Секретарша или учительница были в каком-то смысле приемлемыми профессиями для женщины, которой приходилось работать».
В IT — случайно
В старшей школе Барбара, как и другие ученики, проходила тест на профориентацию. Ей посоветовали стать ландшафтным дизайнером. Позже она предположила, что этот вариант был выбран, потому что, с одной стороны, отчасти был связан с математикой и вычислениями, а с другой — не выглядел «слишком неженским». Барбара говорила: «Мне казалось, что это как-то смешно и странно».
Сама она решила не сворачивать с выбранного пути и заниматься наукой. В 1961 году получила степень бакалавра математики в Калифорнийском университете в Беркли. После выпуска подала документы в аспирантуру Принстонского университета, но там ответили, что женщин-аспиранток не принимают. Барбара поступила в Беркли, но в итоге решила в аспирантуру не идти: «Я чувствовала, что не готова так интенсивно учиться, поэтому решила сделать перерыв». Она начала искать работу, еще не зная, что ее заинтересуют компьютеры.
«Я попала в информатику случайно. Когда я искала работу, лучшим предложением оказалось стать программистом. В то время нанимали таких людей, как я, — неподготовленных, но потенциально способных выполнять работу. Так я открыла для себя область, в которой я действительно хороша, и мне это очень понравилось», — рассказывала Барбара позже.
Она устроилась в Mitre Corporation, которая занималась IT-разработками для Министерства обороны США и аэрокосмической отрасли. По словам Лисков, в начале 1960-х информатика была «довольно примитивной» по сравнению с тем, что она представляет собой сейчас. Программы, которые сегодня умеет писать каждый студент, тогда казались прогрессивными и новаторскими идеями. Но ей нравилась эта новая сфера: «Одна из вещей, которые казались мне замечательными, заключалась в том, что я могла совершать открытия в этой области, в том, к чему у меня был большой талант».
Проработав два года, Барбара поступила в аспирантуру по информатике в Стэнфорде и защитила там диссертацию. Ей хотелось преподавать, но интересных вакантных мест не нашлось. Поэтому Барбара вернулась в Mitre Corporation и занялась исследованиями в области компьютерной архитектуры, а затем операционных систем.
Время перемен
«Раньше я немного завидовала инженерам-электрикам, потому что думала: «По крайней мере у них есть компоненты, они соединяют их проводами, и это заставляет их сосредоточиться на том, что это за провода». В то время как программное обеспечение было настолько пластичным, что люди привыкли проектировать, не особо задумываясь о «проводах». В конечном итоге они получали множество беспорядочных взаимосвязей между частями программы», — вспоминала Лисков. Проблему этих «беспорядочных связей» она решила в экспериментальной операционной системе Venus, которая поддерживала одновременную работу пяти-шести пользователей на небольшом компьютере.
«Прошло много времени, с тех пор я особо об этом не задумывалась, — говорила Барбара много лет спустя. — Но благодаря Venus я увлеклась операционными системами».
В 1970-е годы в жизни Барбары произошло несколько важных событий. В 1970-м она вышла замуж за ученого в области информатики Натана Лискова, а в 1971 году ей предложили работу в Массачусетском технологическом институте. Барбара согласилась: ушла из Mitre и осенью 1972-го стала профессором Лаборатории компьютерных наук. Параллельно Лисков занималась исследованиями. Ее интересовала тема создания максимально надежных компьютерных систем.
«У преподавателя есть свобода определять свои собственные направления исследований, и одновременно это его ответственность, — говорила Лисков. — Я была готова взяться за это: я очень увлеклась своей работой над методологией программирования и за первые несколько месяцев в Массачусетском технологическом институте додумалась до идеи абстракции данных».
Принцип подстановки Лисков
В Массачусетском технологическом институте Барбара руководила разработкой и внедрением языка программирования CLU. Появление CLU стало значимой вехой в истории информатики: этот язык повлиял на формирование распространенного сегодня объектно-ориентированного подхода к программированию (он позволяет делать код структурированным). Однако CLU не стал популярным в профессиональной среде: язык оказался чересчур академичным и сложным. Тем не менее, по словам Барбары, он «использовался более чем на 200 сайтах» и «для создания большого программного обеспечения».
Этим языком разработки Лисков не ограничились. В 1987 году вместе со своей студенткой Жаннет Винг она сформулировала принцип программирования, который сегодня известен как принцип подстановки Барбары Лисков. Если сформулировать его максимально упрощенно, он звучит так: подклассы не должны противоречить надклассам. Речь идет о том, как организовать код, чтобы, если потребуется дополнить или изменить какую-либо его часть, не нужно было переписывать все с самого начала. Принцип Лисков не является нерушимым, но помогает при написании программ избежать проблем, похожих на бытовую ситуацию, когда из-за покупки домашнего электроприбора приходится заново делать ремонт, чтобы добавить розетку. Это особенно важно, когда над кодом работают разные люди.
«Мораль этой истории: моделируйте свои классы на основе поведения, а не свойств; моделируйте свои данные на основе свойств, а не поведения. Если кто-то ведет себя как утка, то это, безусловно, птица» — так объясняет принцип Лисков один из пользователей форума StackOverflow. Есть похожий программистский мем: «Если кто-то выглядит как утка и плавает как утка, но работает на батарейках, значит, у вас плохо с абстракцией данных». «Я обнаружила, что в интернете очень много людей спорят о том, что означает принцип подстановки Лисков, — признавалась сама Барбара. — Приятно иметь что-то, что оказало такое влияние [на программирование]».
Сегодня Барбара Лисков — обладательница медалей Джона фон Неймана (награды в области информационных технологий) и «Пионер компьютерной техники», лауреат премии Тьюринга (самой престижной в информатике), а также член Национальной инженерной академии, Национальной академии наук, Национального зала славы изобретателей. В 2002 году журнал Discover включил ученую в список 50 самых важных женщин в науке.
Она по-прежнему работает в Массачусетском технологическом институте. «В [институтском] сообществе Барбару уважают за ту роль, которую она сыграла как ученый, наставник и лидер», — говорит президент Массачусетского технологического института Сьюзан Хокфилд. По ее словам, новаторские исследования сделали Лисков «одним из ведущих мировых авторитетов в области языков программирования и проектирования систем».