Барбара Лисков, лауреат премии Тьюринга, о CLU и о том, почему программирование по-прежнему круто

    0
    73


    Интервью Прошло 13 лет с тех пор, как Барбара Лисков выиграла премию Тьюринга за свой вклад в практические и теоретические основы языка программирования и проектирования систем, и в наши дни создатель языка программирования CLU продолжает работать над некоторыми интересными проблемами.

    Мы говорили об инновациях, абстракции и инкапсуляции в 1970-х и сегодня в недавнем чате.

    Лисков, которому сейчас за 80, возглавляет группу по методологии программирования в Массачусетском технологическом институте. Недавно она работала над параллельными вычислениями и вместе со студентом изобрела Byzantine Fault Tolerance *. [PDF] в 1990-х, «что оказалось очень важным для мира блокчейнов», – говорит она.

    Однако с появлением CLU на GitHub внимание переключилось на более раннюю работу Лисков и ее учеников по созданию языка в начале 1970-х годов.

    Я думаю, что программирование и разработка программного обеспечения – все еще захватывающая карьера.

    «Одна из интересных вещей в CLU, – говорит она, – заключалась в том, что из-за состояния языков программирования в то время было много нововведений, чтобы сдвинуть CLU с мертвой точки.

    «Например, нам пришлось столкнуться с проблемой дженериков, потому что до того, как появилось понятие абстрактных типов данных, вам уже были нужны дженерики. Если вы написали процедуру сортировки, вы не захотели бы переписывать ее каждый раз, когда вы был другой тип массива, но люди еще не столкнулись с этим.

    «И как только у вас есть абстрактные типы данных, становится абсолютно ясно, что вам нужны обобщения», – говорит она. «Поэтому нам нужно было выяснить, что делать с дженериками, и это было большим делом».

    А потом была обработка исключений, которая в те времена была довольно примитивной. Лисков вспоминает споры о том, что называлось моделью возобновления по сравнению с альтернативами: «Вопрос был в том, после того, как исключение было возбуждено, возвращалось ли управление к коду, который вызвал исключение, или он просто завершил этот код? мы должны были признать это ».

    “Если у вас нет способа обрабатывать случаи ошибок отдельно от основного потока, то, к сожалению, до сих пор происходит то, что в коде много ошибок, которые часто проявляются далеко от источника ошибки. . Значит, его труднее выследить “.

    Помимо обработки ошибок, были представлены и другие нововведения в итераторах. «Одна из вещей, которые это означало, заключалась в том, что мы опережали время, – продолжает Лисков, – потому что мы работали над вещами, с которыми люди еще не сталкивались».

    «Абстракция данных – это большое дело, – говорит она, – но все остальное приходит вместе с ней».

    «Если вы оглянетесь, например, на то, что случилось с Java в 90-х, с тем, как они реализовали параметрический полиморфизм, чего не было», – смеется Лисков, – «вы также можете увидеть с обработкой исключений, люди действительно никогда не вполне собрались вместе “.

    То, что случилось с Java в 90-х, с тем, как они реализовали параметрический полиморфизм … было не так. Вы также можете увидеть с обработкой исключений, люди действительно никогда не собирались действовать вместе

    Конечно, Лисков и ее соавторы могли позволить себе роскошь, что CLU является исследовательским проектом и поэтому не подчиняется требованиям нескольких групп. Однако к концу 1970-х была достигнута развилка: попробуйте сделать язык коммерческим или продолжайте исследования. Лисков выбрал исследование. «Ни один из студентов моей группы, – говорит она, – не хотел создавать стартап».

    Отмечая разницу с сегодняшним опытом, когда размещение чего-либо в Интернете и создание сообщества вокруг этого является относительно более простым процессом, она говорит, что к концу 1970-х все было по-другому. «Вы должны были пройти через компанию», – объясняет она. «Если бы у меня была пара студентов, которые хотели бы это сделать… но даже тогда было трудно получить деньги для стартапа. Это было совсем другое время, чем в начале 90-х».

    С другой стороны, природа CLU состоит в том, что он не собирал мусора, от которого многие другие языки страдали на протяжении многих лет. «Каждый раз, когда запускается язык, – говорит Лисков, – он начинает развивать свое наследие. И тогда у вас возникает проблема, заключающаяся в том, что вы должны продолжать поддерживать весь написанный код, а это создает багаж».

    Большая часть разработки за последние 20 лет, в которой участвовал Лисков, была связана с C ++. «В программировании на машинном языке больше не ведется большая разработка. И это большое улучшение, – говорит она, – просто поднимаясь на этот уровень абстракции. И я действительно думаю, что принципы модульности довольно хорошо поняты».

    Однако «одна из вещей, о которых я сожалею или хочу, чтобы было иначе, – это то, что я хочу, чтобы языки принудительно применяли инкапсуляцию».

    «Это правда, – признает она, – что иногда приходится нарушать инкапсуляцию. Обычно это происходит, когда вы создаете некую низкоуровневую платформу».

    Однако Лисков утверждает, что инкапсуляция – объединение данных вместе с методами, которые работают с этими данными, в единый блок – это ключевой элемент методологии программирования: «тот, который заставляет работать модульность».

    «Лучшее, что вы можете сделать в учебе, – это добавить его и поговорить со студентами о том, насколько это важно. Но это не то же самое, что заставить компилятор выполнять это требование».

    Тем не менее, в остальном ситуация улучшилась. Сегодняшние огромные возможности хранения (по крайней мере, по сравнению с тем, что было доступно в 1970-х годах) означают, что компактность может отойти на второй план перед элегантностью при проектировании модулей: «Да, если вы хотите, чтобы его можно было использовать, с одной стороны, но так же просто, как возможно с другой “.

    Лисков хочет отдать должное своим ученикам Рассу Аткинсону, Алану Снайдеру и Крейгу Шафферту, а также Стивену Зиллесу, который также работал в Массачусетском технологическом институте и работал с ней в 1973 году, совершенствуя концепции, лежащие в основе CLU.

    Боб Шайфлер, Элиот Мосс и Тоби Блум также фигурируют в Справочном руководстве CLU за октябрь 1979 г. (PDF). Статья, История CLU. [PDF], дает более подробный список кредитов.

    Лисков, который также отвечает за принцип замены Лискова **, по-прежнему с энтузиазмом относится к программированию и технологиям и говорит нам: «Я думаю, что программирование и разработка программного обеспечения – все еще захватывающая карьера.

    «Я думаю, что различие между интерфейсом и реализацией действительно полезно иметь в виду, вы знаете… определение поведения отдельно от реализации.

    «И если вы не используете язык, который обеспечивает инкапсуляцию, а, к сожалению, большинство из них, то вам придется наложить это на себя». ®

    * Один из механизмов консенсуса, который помогает поддерживать целостность системы блокчейн.

    ** В общих чертах, что «объекты суперкласса должны быть заменены объектами его подклассов без нарушения работы приложения»

    Предыдущая статья5 самых распространенных причин, по которым игроков банят в GTA Online
    Следующая статьяFinal Fantasy 9: Как легко победить Озму
    Виктор Попанов
    Эксперт тестовой лаборатории. Первый джойстик держал в руках в возрасте 3 лет. Первый компьютер, на котором „работал” был с процессором Intel i386DX-266. Тестирует оборудование для издания ITBusiness. Будь то анализ новейших гаджетов или устранение сложных неполадок, этот автор всегда готов к выполнению поставленной задачи. Его страсть к технологиям и приверженность качеству делают его бесценным помощником в любой команде.