Барбара Лисков является пионером современного подхода к написанию кода. Она хочет предостеречь нас, что задачи, с которыми сегодня сталкиваются компьютерные науки, невозможно решить с помощью одного лишь продуманного дизайна.
Барбара Лисков изобрела архитектуру, лежащую в основе современных программ. «Создание чего-либо достаточно мощного — это искусство».
Хорошему коду присущи стиль и суть. Он предоставляет всю необходимую информацию без излишних деталей. Он обходит стороной неэффективность и ошибки. Он точен, лаконичен и достаточно красноречив, чтобы он мог быть прочитать и понят людьми.
Но к концу 1960-х годов достижения в области вычислительной мощности превзошли возможности программистов. Многие специалисты по информатике создавали программы, не задумываясь о дизайне. Они писали длинные, бессвязные алгоритмы, пронизанные операторами «goto» — машинными инструкциями для перехода к другой части программы, если выполняется определенное условие. Первые программисты полагались на эти операторы, чтобы исправлять непредвиденные последствия своего кода, но они делали программы трудными для чтения, непредсказуемыми и даже опасными. Плохое программное обеспечение в конечном итоге стоило людям жизни, например, когда радиационная установка Therac-25, управляемая компьютером, стала причиной серьезных передозировок радиацией у больных онкологией.
В те времена, когда Барбара Лисков получала докторскую степень по информатике в Стэнфордском университете в 1968 году, она завидовала инженерам-электрикам, потому что они работали с аппаратным обеспечением, соединенным проводами. Эта архитектура, естественно, позволяла им дробить задачи и разделять их на модули — подход, который давал им больше контроля, поскольку позволял им независимо рассуждать о дискретных компонентах.
Как ученый-информатик, размышляющий о коде, Лисков не имела физических объектов, с которыми можно было бы работать. Как писатель или поэт, она смотрела на чистый лист.
Там предо мной были серьезные задачи. Все, что мне нужно было сделать, это без промедления начать решать их.
Барбара Лисков
Лисков, которая изучала математику на бакалавриате в Калифорнийском университете в Беркли, хотела подходить к программированию не как к технической задаче, а как к математической — чему-то, где можно было бы руководствоваться логическими принципами и эстетической красотой. Она хотела организовать программное обеспечение так, чтобы она могла контролировать его и четко понимать его сложность.
Когда она была еще молодым профессором Массачусетского технологического института, она возглавляла команду, создавшую первый язык программирования, который не полагался на операторы goto. Язык CLU (сокращение от «cluster») основывался на изобретенном ею подходе — абстракции данных — который организовывал код в модули. Все используемые сегодня важные языки программирования, включая Java, C++ и C#, являются потомками CLU.
«Одним из преимуществ того, что я оказалась в этой области так рано, заключалось в том, что там передо мной были серьезные задачи. Все, что мне нужно было сделать, это без промедления начать решать их», — говорит Лисков. В 2008 году Лисков получила премию Тьюринга — часто называемую Нобелевской премией по информатике — за «вклад в практические и теоретические основы языка программирования и проектирования систем, особенно связанных с абстракцией данных, отказоустойчивостью и распределенными вычислениями».
Журнал Quanta встретился с Лисков в ее доме после Гейдельбергского форума лауреатов — закрытого собрания (исключительно по приглашениям) ученых-информатиков и математиков, получивших самые престижные награды в своих областях. Лисков была приглашен в Гейдельберг, но ей пришлось отменить свое участие за несколько недель до форума по личным причинам. Интервью было сокращено и отредактировано в целях лучшего понимания.
Вы достигли профессионального совершеннолетия во время разработки искусственного интеллекта. Как изменилось представление об искусственном интеллекте и машинном обучении за время вашей карьеры?
Я защитила докторскую диссертацию с Джоном Маккарти в области искусственного интеллекта. Я написала программу для разыгрывания шахматных эндшпилей. Эту тему предложил Джон, потому что я не играла в шахматы. Я прочитала [шахматные] учебники и перевела эти алгоритмы в поле информатики. В то время, вершиной научной мысли было — сделать так, чтобы программа вела себя так, как поступал бы человек. Сейчас уже дела обстоят иначе.
Сегодня программы на основе машинного обучения в большинстве случаев неплохо справляются со своими задачами, но все же не всегда. Люди не понимают, почему они работают или не работают. Если я работаю над проблемой и мне нужно точно понять, почему работает алгоритм, я не буду применять машинное обучение. С другой стороны, один из моих коллег анализирует маммограммы с помощью машинного обучения и находит доказательства того, что рак можно обнаружить намного раньше.
Искусственный интеллект — это скорее прикладная, нежели обособленная дисциплина. Его всегда использовали для чего-то конкретного.
Вас он больше интересовал как отдельная дисциплина?
Честно говоря, в то время искусственный интеллект мало на что был способен. Меня интересовали основополагающие задачи. Вопрос «как организовать программное обеспечение?» был для меня действительно интересен. В процессе проектирования вы сталкиваетесь с необходимостью выяснить, как вам следует реализовать приложение. Вам нужно организовать код, разбив его на части. В этом помогает абстракция данных. Это очень похоже на доказательство теоремы. Невозможно доказать теорему одним махом. Вместо этого вы придумываете несколько лемм и дробите задачу.
В моей версии вычислительного мышления я представляю абстрактную машину только с теми типами данных и операциями, которые мне нужны. Если бы эта машина существовала, то я могла бы написать программу, которую хочу. Но это не так. Вместо этого я ввела кучу подзадач — типы данных и операции — и мне нужно выяснить, как их реализовать. Я делаю это снова и снова, пока не начну работать с реальной машиной или реальным языком программирования. Это искусство проектирования.
Первые компьютеры использовали перфокарты для ввода как программ, так и данных.
Знание методологии не гарантирует, что вы умеете хорошо проектировать. Некоторые люди умеют проектировать, а некоторые нет. Я никогда не чувствовала, что могу научить своих учеников проектированию. Я могла показать им дизайн, объяснить его, поговорить об абстракции данных и рассказать им, что хорошо, а что плохо. Слишком много наворотов — все усложняется. Слишком мало — работает неэффективно. Создание чего-то достаточно мощного — это искусство.
Если бы у вас была волшебная палочка, и вы могли бы направить развитие информатики вперед, как бы это выглядело?
Я очень переживаю за интернет. У нас целая куча проблем, включая фейковые новости и проблемы с безопасностью. Меня беспокоит разведенная пара, в которой муж публикует клевету на жену, в том числе информацию о том, где она живет. Происходят ужасные вещи. Частично это выросло из настроений 80-х. В то время у нас было 15 университетов и пара государственных лабораторий, соединенных интернетом. Мы все были друзьями. Позиция заключалась в том, что сайты не должны нести ответственности за контент. Это задушит их развитие. Вы можете наблюдать, что такое отношение пока сохраняется.
Было ли такое мышление следствием академической свободы?
Нет, это был чистый прагматизм, без понимания того, чем мы закончим. Если бы они взяли на себя модерирование, им пришлось бы решать сложные задачи. Они пошли на это без добавления защитных мер. Для решения наших текущих проблем нужны не только технологии. Нам нужны законы, регулирующие ненадлежащее поведение людей. Нам нужно решить вопросы о конфиденциальности и безопасности. Некоторые из них технические. Например, у Facebook есть алгоритм распространения информации. Они могут распространять информацию медленнее или распознавать, какая информация не должна распространяться. Обществу всегда трудно иметь дело с чем-то новым. Мы можем лишь надеяться, что повзрослеем. Но если бы у меня была волшебная палочка, я бы решила именно эти проблемы.
Видео: Барбара Лисков говорит о вызовах, с которыми сталкиваются компьютерные науки.
Расскажите мне о своем личном опыте в качестве женщины в информатике.
Меня поощряли хорошо учиться в школе. Не знаю, подбадривала ли меня мама, но она точно не мешала мне и не говорила: «О нет, это плохая идея». Я прошла все курсы математики и естествознания, к чему девочек не поощряли. В Беркли я была одной из двух женщин (или даже единственной) в классе из 100 человек. Никто никогда не говорил: «Вот это да, дела у тебя идут хорошо, почему бы тебе не поработать со мной?» Я не знал, что такое вообще может происходить. Я поступила в аспирантуру Стэнфорда. Когда я закончила учебу, со мной никто не разговаривал о работе. Я заметил, что коллег-мужчин, таких как Радж Редди, который был моим другом, брали на академические должности. Мне такую работу никто не предлагал.
В то время научные руководители трудоустраивали выпускников по контрактам с ведомствами по всей стране.
Да, но мне никто ничего не предлагал. В 90-х я вернулась в Стэнфорд на день факультета. Группа старых профессоров, не осознавая, что они делают, рассуждали о подобном кумовстве (old boy network). Они говорили: «О, мой друг сказал мне, что у меня есть хороший молодой парень, которого ты должен нанять». Так обстояли дела. Они не понимали, что тут не так. Они говорили о молодой женщине, которая так преуспела, потому что вышла замуж за профессора! Разве это правильно? У другого коллеги в офисе была пинап-фотография кинозвезды. Я спросил его: «Что это за пинап-фотография в твоем офисе?» Никакого вразумительного ответа.
Я подала заявление в Массачусетский технологический институт, но меня даже не рассматривали на должность преподавателя. Когда такое происходит, вы думаете: «Я недостаточно хороша». Вы ничего не можете с этим поделать. Но также я думала: «Информатика - открытая наука». Моя промышленная работа в Mitre была хорошей исследовательской работой. Там я работала над методологией программирования и проводила исследования, которые принесли мне мою первую премию. Затем в 1971 году я выступила с докладом, после которого Корби [Фернандо Корбато] пригласил меня в Массачусетский технологический институт. Меня также пригласили в Беркли. Ситуация менялась.
Тем не менее, правда ли, что когда вы начали работать в Массачусетском технологическом институте, было около 1000 преподавателей, из которых только 10 были женщинами?
Насколько я помню.
Так что прогресс был, но…
Раздел IX еще не был законом, но давление нарастало. Президент Массачусетского технологического института Джерри Визнер был источником давления. Давление должно идти сверху. Оно не пузырится снизу. В Массачусетском технологическом институте было несколько выдающихся женщин, которых не было в составе факультета. Примерно тогда нескольких из них неожиданно пригласили войти в состав факультета. Конечно, в математике их никогда не было. В математике с этим дела обстоят очень плохо.
В 2018 году Лисков была награждена премией Computer Pioneer Award в знак признания ее достижений.
Мне кажется, что ни одна научная область не признала какой-либо фундаментальный вклад женщин.
За 10 лет до того, как я возглавила факультет информатики в Массачусетском технологическом институте, департамент нашел только одну женщину достойной предложения работы. Когда я была руководителем [с 2001 по 2004 год], я наняла семь женщин. По сусекам скрести не приходилось. Все три молодые женщины, которых я наняла — выдающиеся. Долгое время женщины вообще не рассматривались.
После того, как вы выиграли премию Тьюринга, в сети появился комментарий: «Почему она получила эту награду? Она не сделала ничего, о чем мы еще не знали». Мог ли этот пренебрежительный комментарий иметь отношение к тому факту, что вы женщина.
Бьюсь об заклад, что да! Был еще один комментарий — о котором я никогда не рассказываю — в котором говорилось: «О, это не она проделал эту работу. [Коллега-мужчина] сделал это вместо нее». Это полная чушь. Я не смотрела комментарии. Мой муж смотрел. Это была пара, о которых он мне поведал. Иногда я выступаю с докладами, на которых мне задают враждебные вопросы (и к этому нужно быть готовым), будь то из-за того, что я женщина, или потому, что люди пытаются сконфузить меня, понимаете…
Сконфузить лауреата премии Тьюринга?
Ага! Тогда я не понимала, что некоторые люди в моем отделе поддерживают меня. И к тому времени, когда я начала путешествовать, я была уже хорошо известна. Но вот в чем загадка: почему некоторые женщины способны стойко, упорно продолжать двигаться вперед?
Есть ли у вас какие-нибудь советы для начинающих женщин-ученых? Есть ли какой-нибудь “тефлон”, который женщины могут применять для предотвращения прилипания дискриминации или домогательств?
Было бы неплохо узнать, как применять этот “тефлон”. Только проработав достаточное количество времени в Массачусетском технологическом институте, я разрушила в себе блок задавать вопросы публично. Потребовалось много времени, чтобы развить эту уверенность в себе
Это достаточно деликатно. В вашей истории обнаруживается скрытый подтекст: «не высовывайся, пока не сможешь по-настоящему стоять прямо, а затем всецело отдайся этому».
Да, возможно, это была моя стратегия. Это, вместе с отсутствием потребности угождать другим людям. Женщины социализированы, чтобы угождать.
Это уже конкретный совет: откажитесь от потребности угождать.
Вы знаете, сейчас дела обстоят не лучше, чем тогда. Может мне повезло. Если бы я вышла замуж сразу после колледжа, я бы, наверное, попала в совершенно другое место.
Вы действительно так думаете? Ваш вклад изменил компьютерные технологии и общество.
Вы знаете, вы просто идете по этому извилистому пути, и кто знает, что будет?
Узнать подробнее о курсе «Архитектура и шаблоны проектирования».
Приглашаем также записаться на открытый вебинар «SOLID как условие постоянной скорости разработки». На этом уроке мы разберем, почему SOLID принципы являются достаточным условием сохранения скорости разработки, рассмотрим простой и понятный механизм их применения для получения повторно используемого кода.