Как изобретатель мороженого из Сомервилля повлиял на пионеров Lisp в лаборатории искусственного интеллекта Массачусетского технологического института и оставил неизгладимый след в программировании.
25 февраля 2025 г. 
В начале 1970-х годов команда инженеров в лаборатории ИИ Массачусетского технологического института произвела революцию в компьютерном программировании. Lisp, семейство языков программирования, которое лаборатория начала разрабатывать в 1950-х годах, имело простое, но математически точное ядро, которое можно было полностью объяснить всего за несколько страниц или полчаса у доски. По мере распространения диалектов Lisp в 70-х годах, лаборатория ИИ впервые разработала концепции, которые теперь настолько фундаментальны, что программисты не могут представить себе пригодный для использования компьютерный язык без них. Для некоторых из этих инженеров Lisp был больше, чем просто способом программирования; это был образ жизни. Поэтому к середине 70-х годов Дэн Вайнреб, Говард Кэннон и их коллеги из лаборатории ИИ начали разрабатывать машины Lisp — специализированное оборудование, предназначенное для выполнения инструкций Lisp. Как позже вспоминал Вайнреб: «Мы действительно думали, что Lisp изменит мир так же, как люди 60-х годов считали, что мир может быть изменен «миром, любовью и радостью»».
Они и не подозревали, что сторонник мира, любви и радости переворачивает мир мороженого всего в нескольких милях отсюда. Но эта трансформация оказала удивительное влияние на их работу.

Вскоре после окончания колледжа в 1967 году Стив Херрелл, сознательный отказник от войны во Вьетнаме, прибыл в Кембридж, чтобы выполнить свое альтернативное задание в качестве учителя английского языка в старшей школе. Однако именно кулинарное хобби создало его наследие. Живя в групповом доме недалеко от Портер-сквер, Херрелл возился с мотором на мелкосерийном коммерческом мороженом, чтобы замедлить его, минимизируя количество воздуха, которое он впрыскивал в мороженое при замораживании. Он кормил своих друзей богатыми, кремовыми результатами, совершенствуя свои рецепты, и в 1973 году он открыл Steve's Ice Cream в соседнем Сомервилле.
Steve's не был типичным кафе-мороженым. Как описывала его Washington Post: «[Херрелл] притащил туда механическое пианино, работавшее от двигателя пылесоса, разбросал коробки, раскрасил место в яркие цвета, стоял вокруг, отпуская шутки, и начал революцию». Основатель Toscanini Гас Ранкаторе, начинавший свой бизнес с мытья полов в Steve's, описывает атмосферу как «импровизированный хиппи-дом на дереве».
Но самым большим нововведением Херрелла было глубокое смешивание с его мороженым двумя лопаточками за несколько минут до подачи. Хотя сегодня это кажется обыденным, Херрелл был первым, кто позволил клиентам выбирать кусочки конфет, печенья, фруктов и многого другого, чтобы смешивать их с базовыми вкусами. Поскольку печенье Oreo было одним из первых вариантов того, что Стив называл «микс-инами», Херрелл делает правдоподобное заявление как изобретатель печенья и сливочного мороженого.
Тем временем в AI Lab Кэннон работал над объектно-ориентированным расширением Lisp для машин Lisp. С помощью объектно-ориентированного программирования можно определить класс, например «Dog», который определяет свойства и действия, общие для всех его членов; затем можно создать объекты класса Dog, представляющие отдельные экземпляры собак, которые могут выполнять действия, указанные в классе (например, преследование объекта класса Cat). Но собаки и кошки являются млекопитающими и имеют некоторые общие для всех млекопитающих свойства, такие как рождение живого потомства. Поэтому мы можем определить класс Mammal с этими свойствами и указать, что любой объект Dog или Cat также наследует свойства Mammal.

Новшеством в работе Кэннона было то, как он обрабатывал множественное наследование, фундаментальную проблему объектно-ориентированного программирования. В нашем примере, так же как собаки и кошки являются млекопитающими, они также являются домашними животными, поэтому они наследуют от класса Pet. И скажем, что свойство, общее для всех домашних животных, заключается в том, что они вообще не рожают, потому что их необходимо стерилизовать. Но у нас есть проблема — млекопитающие должны рожать живое потомство! Рожает ли объект класса Dog или нет? В наших определениях нет ничего, что говорило бы нам, имеет ли Mammal или Pet приоритет, и мы не можем аккуратно «упорядочить» их, потому что не все домашние животные являются млекопитающими или наоборот. Система Кэннона была первой, которая предложила удовлетворительное решение. Она позволяла программистам объединять разные классы, такие как Mammal и Pet, без необходимости навязывания иерархии, и она давала программистам систематический способ указывать, как должны разрешаться конфликтующие определения из разных классов одного и того же свойства при создании объекта.

Конечно, это была тяжелая работа, и компьютерные инженеры любят перерыв на мороженое так же, как и все остальные. Джерри Сассман '68, доктор философии '73, который был одним из изобретателей диалекта Lisp под названием Scheme в AI Lab и позже присоединился к факультету MIT, подтверждает, что он и его коллеги «определенно часто ходили к Стиву за мороженым».
Но эти поездки в Steve's не просто давали инженерам возможность прочистить голову и насладиться одним из лучших мороженых. Они также давали немного вдохновения. «Я помню, как думал, что, как и смешивание разных вкусов, иногда комбинации [классов] работали, а иногда нет», — вспоминает Кэннон. «Подмешивание казалось очень похожим на то, чтобы начать с «базового» класса, а затем добавлять другие поведения, которые дополняли бы базовый». Имея в виду эту метафору, Кэннон решил назвать свой язык программирования «Вкусы». А ключевая идея неиерархической композиции классов? «Подмешивание». Благодаря Кэннону, MIT и креативности в области мороженого Херрелл оставил свой след в истории языков программирования в масштабе, о котором большинство компьютерных специалистов могут только мечтать.
У двух типов миксинов были странно похожие судьбы. Кэннон, Вайнреб и другие основали Symbolics, чтобы продавать машины Lisp для персональных и деловых вычислений, используя язык программирования Flavors для создания новой на тот момент системы отображения, которая позволяла программистам создавать интерфейсы для различных приложений из общего набора строительных блоков (миксинов). Машины так и не стали популярными (хотя Symbolics добилась известности, зарегистрировав первый домен dot-com в Интернете 15 марта 1985 года). Тем не менее, аспекты миксинов Кэннона в конечном итоге были приняты многими основными языками программирования. Например, Java, TypeScript, Scala и Rust имеют встроенные функции для поведения миксинов, а Python и JavaScript эмулируют его с помощью общих шаблонов программирования.
Не менее влиятельными были и миксы Херрелла. Ранкаторе выразился так в 2009 году: «В каждом студенческом городке Америки вскоре появился довольно хороший магазин „домашнего“ мороженого. Расцвели сотни цветов, и американцы могли получить головокружительное разнообразие вкусов, дополненное миксами из шоколадных батончиков, фруктов и орехов. Несколько лет назад оригинальные идеи Стива легли в основу нескольких скучных сетей, включая Marble Slab и Cold Stone Creamery».
ЛЮБОВЬЕ ШАРДУЛА ЧИПЛУНКАРА '22Но Херрелл устал от ведения бизнеса и продал Steve's (вместе с правами на термин «mix-in») в 1977 году за 80 000 долларов. Он сказал своим работникам, что собирается разводить коз в Западном Массачусетсе, где, как сообщается, настраивал пианино до истечения трехлетнего пункта о неконкуренции в его соглашении о продаже. В 1980 году он открыл Herrell's Ice Cream в Нортгемптоне, предлагая «smoosh-ins». Вскоре последовали франшизы Херрелла, включая ныне несуществующий магазин Allston, который громил панк-рок и создал свой собственный логотип в виде рожка мороженого в форме черепа.
Сегодня Steve's больше не существует. Но оригинальный магазин Northampton Herrell's по-прежнему обслуживает постоянный поток покупателей даже зимним вечером, как и подобает магазину с закусками в Новой Англии.
Шардул Чиплункар в 22 году прошел UROP в CSAIL и сейчас изучает языки программирования в качестве аспиранта по информатике в EPFL в Швейцарии.
Источник: www.technologyreview.com



























