7 April

Алан Кей: История SmallTalk (Аннотация и Введение)

проект «Энгельбарт» corporate blogProgrammingSystem Analysis and DesignSmalltalkHistory of IT
Original author: Alan Kay
У меня есть цель — разобраться в том, что же происходило в 60-70-е годы в Xerox PARC и в окрестностях, как так вышло, что несколько коллективов инженеров, работая рука об руку, создали невероятные технологии, которые определили наше настоящее, а их идеи будут определять будущее. Почему этого не происходит сейчас? (а если происходит, то где?). Как собрать подобный коллектив? Где же мы повернули не туда? Какие идеи мы пропустили, а стои ло бы к ним повнимательнее присмотреться?

Предлагаю вашему вниманию перевод начала большого текста Алана Кея (150 000 знаков), на который он неоднократно ссылается во всех своих выступлениях и ответах на Quora и HackerNews.

Кто готов помогать с переводом — пишите в личку.

The Early History Of Smalltalk


image

Аннотация


Большинство идей основываются на предыдущих идеях. В шестидесятые, особенно в ARPA-сообществе (Advanced Research Projects Agency – агенство перспективных исследований), появилась множество понятий касательно «симбиоза человек-компьютер» на основе интерактивных систем разделения времени, графических дисплеев и указывающих устройств. Были изобретены продвинутые языки программирования для симуляции сложных систем, таких как нефтеперерабатывающие заводы и полу разумное поведение. Готовящаяся смена парадигмы в области современных персональных компьютеров, перекрывающихся оконных интерфейсов и объектно-ориентированного проектирования возникла благодаря трудам из 60-х, которые представляли собой нечто большее, чем «улучшенное старое».

Вот что еще лучше: появление мейнфреймов; активация функциональных возможностей для конечных пользователей; перевод структур данных в более абстрактные. Вместо этого, обещания экспоненциального роста в вычислениях/доходах/объемах заставили 60-е воспринимать как «почти новое», а также определиться с тем, что такое действительно «новое». Например, когда кто-то проводил бы вычисления на портативном «Dynabook» таким способом, который было бы невозможно реализовать на мейнфрейме. Или когда миллионы потенциальных пользователей считали, что пользовательский интерфейс должен стать обучающей средой, примерно как у Монтессори и Брунера. Или когда необходимость в больших возможностях, в уменьшении сложности, а также в грамотности конечных пользователей потребовала бы избавиться от структур данных и управления в пользу более биологической схемы защищенных универсальных клеток, которые взаимодействуют только через сообщения, имитирующие любое желаемое поведение.

На ранних стадиях Smalltalk был первым полноценным воплощением этих новых точек зрения, т.к. его “вырастили” многочисленные предшественники в проектировании аппаратного обеспечения, языков и пользовательского интерфейса. Он стал образцом новых вычислений отчасти потому, что мы фактически пытались вызвать качественные изменения в структуре убеждений (наподобие новой парадигмы Куна в духе изобретения печатного станка), и таким образом, занять весьма крайние позиции, которые практически вынудили придумать эти новые направления.

—Посвящается Дэниелу Инголлсу, Адель Голдберг и всем работающим в Xerox PARC LRG
—Посвящается Дейву Эвансу, Бобу Бартону, Марвину Мински и Сеймуру Пейперту
—Посвящается SKETCHPAD, JOSS, LISP, и SIMULA, четырем великим концепциям программирования 60-х

Введение


Я пишу данное вступление, находясь в самолете на высоте почти в 10,5 тысяч метров. У меня на коленях лежит ноутбук массой в пару килограмм, «Interim Dynabook» 1992 года, который к концу этого года стоил меньше 700 долларов. У него плоский четкий экран с высоким разрешением, перекрывающиеся окна, иконки и устройство управления курсором, большой объем памяти и вычислительные мощности, объектно-ориентированное ПО. Ноутбук обладает продвинутыми встроенными возможностями работы с сетью, а также уже имел поддержку беспроводных сетей. Smalltalk в этой системе присутствует и является одним из основных инструментов, который я использую в своей текущей работе с детьми. В некотором роде, это больше, чем Dynabook (в количественном отношении), но в каком-то смысле, еще и не совсем дотягивает до его (Dynabook) уровня (по качеству). В общем и целом, в конце 60-х много всяких мыслей в голове крутилось.

Smalltalk был частью тех амбициозных стремлений ARPA, а затем и Xerox PARC, которые я обозначил как персональный компьютер. На каждой стадии этого проекта было вовлечено так много людей от исследовательских сообществ, что точная локализация основного источника идей довольно затруднительна. Вместо этого, как любил цитировать Гёте Боб Бартон, мы должны «разделить радость открытия без тщетных попыток заявить о своем праве на авторство.»

Я попытаюсь показать, откуда пришло большинство веяний, и как они сформировали центр притяжения на основе нового выражения “персональный компьютер”. Именно установки наравне с великими идеями первопроходцев помогли изобрести Smalltalk. Казалось, что многие люди, которыми я больше всего восхищался в то время (Айвен Сазерленд, Марвин Минский, Сеймур Пейперт, Гордон Мур, Боб Бартон, Дейв Эванс, Батлер Лэмпсон, Джером Брунер, и др.), прекрасно понимали, что их создания хоть и были по своему чудесны, но они и не приблизились к абсолютным рубежам, которые которые они очень хотели преодолеть. Ограниченные умы пытаются создать религию, а великие просто хотят лучших маршрутов на вершину горы. По словам Ньютона, он видел дальше, потому что стоял на плечах гигантов. Все ученые в области компьютерных наук зачастую наступают друг другу на ноги. В ситуации, когда есть гиганты, на чьи плечи можно встать, близорукость все еще вызывает проблемы, ведь «наблюдение» (со стороны) лучше интуитивного понимания. В данном случае можно снизить негативный эффект с помощью очков, у которых линзы имеют высокую чувствительность к эстетике и критицизму.

Языки программирования можно разделить по разным критериям: императивные, прикладные, логические, проблемно-ориентированные, и т.д. Но возникает ощущение, что все они представляют собой либо «агглютинацию (сочетания) свойств», либо «кристаллизацию стиля». COBOL, PL/1, Ada, и т.д., принадлежат к первому типу, а LISP, APL и Smalltalk – ко второму. Возможно, не случайно все агглютинативные языки были инициированы целыми комитетами, а языки с кристаллизацией — одним человеком.

Структура (и существование) Smalltalk основана на следующем представлении: все, что мы можем описать, можно представить через рекурсивную композицию одного типа поведенческого блока, скрывающего свой набор состояния и процесса внутри. С этим блоком можно взаимодействовать только посредством обмена сообщениями. С философской точки зрения, объекты в Smalltalk имеют много общего с монадами Лейбница и концепциями из физики и биологии XX века. Способ создания объектов совсем как у Платона, в том смысле, что некоторые из них действуют как идеализация концепций (Идеи), из которых можно создать материальные вещи. Идеи уже сами по себе являются некой формой (Идея об Идее), а Идея об Идее — это своего рода Овеществленная Идея, которая ссылается сама на себя. Таким образом, система полностью само описываемая. Платон бы оценил это как хорошую шутку [Платон].

С точки зрения компьютера, Smalltalk — это рекурсия на саму идею “компьютера”. Вместо разделения «компьютера» на части, каждая из которых слабее целого (например, структуры данных, процедуры и функции, т.е. обычные атрибуты языков программирования), каждый объект Smalltalk — это рекурсия на весь набор возможностей компьютера. Таким образом, семантически это похоже на объединение тысячи тысяч компьютеров через очень быструю сеть. Вопросы по конкретному представлению можно отложить на неопределенное время, потому что нас в большей степени заботит соответствие поведения компьютеров нашим ожиданиям, и мы заинтересованы только в конкретных стратегиях, когда результаты неверны или возвращаются слишком медленно.

Хоть Smalltalk поистине благородного происхождения, его вклад можно описать как новую концепцию проектирования, которую я назвал объектно-ориентированной, потому что она нацелена на крупные задачи профессионального программиста, и позволяет решить мелкие задачи пользователя-новичка. Объектно-ориентированная структура — это удачная попытка качественно улучшить эффективность моделирования взаимоотношений между еще более сложными динамичными системами и пользователем, которые возникли в результате бурного развития кремния.

«Мы бы узнали, о чем они думали, когда они бы это сделали.»
— Ричард Хэмминг

«Память и воображение — всего лишь два слова для описания одного и того же.»
— Томас Хоббс

В этом тексте я постараюсь соответствовать запросу Хэмминга, руководствуясь замечанием Хоббса. В прошлый раз, когда я попытался написать о Smalltalk, я столкнулся с некоторыми трудностями, потому что моя эмоциональная вовлеченность всегда завязана на персональных компьютерах, которые двигали бы человеческие достижения (а не разработку системы программирования) вперед, а мы еще не достигли этой точки. Хоть я и был инициатором и первым проектировщиком языка Smalltalk, он всегда принадлежал в большей степени людям, которые поддерживали его работу и вывели его в свет. Особенно хотелось бы выделить Дэниела Инголлса и Адель Голдберг. Каждый участник LRG (Learning Research Group — учебная исследовательская группа) внес свой вклад в проект, и мне жаль, что здесь недостаточно места, чтобы воздать им должное. Думаю, все согласны с тем, что в разработке Smalltalk Дэниел стал центральной фигурой. Программирование, по своей сути, искусство прикладное, где создаются реальные вещи, и поэтому должно существовать реальное применение. В действительности многие языки, если не большинство, используются сегодня не потому, что у них есть какие-то реальные преимущества, а потому что они просто уже присутствуют на одной или большем числе машин, потому в них возможно выполнение начальной загрузки, и т.д. У Дэниела прекрасно получалось внедрять, а с течением времени он все больше и больше углублялся в разработку, и не только языка, но и пользовательского интерфейса, по мере того, как Smalltalk пробивался в реальный мир.

Здесь я попытаюсь сфокусироваться на событиях, которые привели к появлению Smalltalk-72 и его дальнейшему преобразованию в свою современную форму в виде Smalltalk-76. Большинство идей возникли именно в это время, а многие ранние стадии ООП плохо задокументированы и их почти невозможно найти в списке литературы.

История получилась чересчур длинная, но я был поражен, как много людей и систем, оказавших влияние, упоминаются вскользь или не упоминаются вообще. Мне жаль, что я не могу побольше рассказать про Боба Бальзера, Боба Бартона, Дэниела Боброу, Стива Карра, Уэсли Кларка, Барбару Дойч, Питера Дойча, Билла Дюваль, Боба Флегала, Лауру Гулд, Брюса Хорна, Батлера Лэмпсона, Дейва Лиддла, Уильяма Ньюмана, Билла Пакстона, Трюгве Реенскауга, Дэйва Робинсона, Дугласа Росса, Пола Ровнера, Боба Спроулла, Дэна Свайнхарта, Берта Сазерленда, Боба Тейлора, Уоррена Тейтельмана, Бонни Тенненбаум, Чака Такера и Джона Уорнока. Что еще хуже, я опустил названия многих систем, структуры которых были мне ненавистны, но в результате это вывело меня на весьма полезные идеи и точки зрения. Иными словами, не нужно к «историям» относиться слишком серьезно, а воспринимать их как «слабые жесты с просьбой уйти», выполняемые уже после того, как актеры покинули сцену.

Хочу поблагодарить многочисленных рецензентов за вычитку черновых вариантов, к которым им пришлось писать комментарии. Особая благодарность Майку Мэхоуни за столь ненавязчивую помощь. Это заставило меня прислушаться к его предложениям, да так удачно, что мое эссе значительно улучшилось. Еще хотелось бы сказать спасибо Жану Саммету, старинному другу, который в буквальном смысле напугал меня так, что я закончил работу (мне и знать не хотелось, что бы случилось, если бы я опоздал). Шерри МакЛахлен и Ким Роуз оказали неоценимую помощь в компоновке всего материала.

Перевод: Щёкотова Яна

Кто готов помочь с переводом следующих глав — пишите в личку или на почту magisterludi2016@yandex.ru



Ещё


Переводы Алана Кея:


Ричард Хэмминг

image

Книга Ричарда Хэмминга The Art of Doing Science and Engineering: Learning to Learn
Предисловие
  1. Intro to The Art of Doing Science and Engineering: Learning to Learn (March 28, 1995) Перевод: Глава 1
  2. «Foundations of the Digital (Discrete) Revolution» (March 30, 1995) Глава 2. Основы цифровой (дискретной) революции
  3. «History of Computers — Hardware» (March 31, 1995) Глава 3. История компьютеров — железо
  4. «History of Computers — Software» (April 4, 1995) Глава 4. История компьютеров — Софт
  5. «History of Computers — Applications» (April 6, 1995) Глава 5. История компьютеров — практическое применение
  6. «Artificial Intelligence — Part I» (April 7, 1995) Глава 6. Искусственный интеллект — 1
  7. «Artificial Intelligence — Part II» (April 11, 1995) Глава 7. Искусственный интеллект — II
  8. «Artificial Intelligence III» (April 13, 1995) Глава 8. Искуственный интеллект-III
  9. «n-Dimensional Space» (April 14, 1995) Глава 9. N-мерное пространство
  10. «Coding Theory — The Representation of Information, Part I» (April 18, 1995) Глава 10. Теория кодирования — I
  11. «Coding Theory — The Representation of Information, Part II» (April 20, 1995) Глава 11. Теория кодирования — II
  12. «Error-Correcting Codes» (April 21, 1995) Глава 12. Коды с коррекцией ошибок
  13. «Information Theory» (April 25, 1995) Готово, осталось опубликовать
  14. «Digital Filters, Part I» (April 27, 1995) Глава 14. Цифровые фильтры — 1
  15. «Digital Filters, Part II» (April 28, 1995) Глава 15. Цифровые фильтры — 2
  16. «Digital Filters, Part III» (May 2, 1995) Глава 16. Цифровые фильтры — 3
  17. «Digital Filters, Part IV» (May 4, 1995) Глава 17. Цифровые фильтры — IV
  18. «Simulation, Part I» (May 5, 1995) Глава 18. Моделирование — I
  19. «Simulation, Part II» (May 9, 1995) Глава 19. Моделирование — II
  20. «Simulation, Part III» (May 11, 1995) Глава 20. Моделирование — III
  21. «Fiber Optics» (May 12, 1995) Глава 21. Волоконная оптика
  22. «Computer Aided Instruction» (May 16, 1995) Глава 22. Обучение с помощью компьютера (CAI)
  23. «Mathematics» (May 18, 1995) Глава 23. Математика
  24. «Quantum Mechanics» (May 19, 1995) Глава 24. Квантовая механика
  25. «Creativity» (May 23, 1995). Перевод: Глава 25. Креативность
  26. «Experts» (May 25, 1995) Глава 26. Эксперты
  27. «Unreliable Data» (May 26, 1995) Глава 27. Недостоверные данные
  28. «Systems Engineering» (May 30, 1995) Глава 28. Системная Инженерия
  29. «You Get What You Measure» (June 1, 1995) Глава 29. Вы получаете то, что вы измеряете
  30. «How Do We Know What We Know» (June 2, 1995) переводим по 10 минутным кусочкам
  31. Hamming, «You and Your Research» (June 6, 1995). Перевод: Вы и ваша работа

Tags:онтолистория ИТАлан КейSmallTalk
Hubs: проект «Энгельбарт» corporate blog Programming System Analysis and Design Smalltalk History of IT
+6
1.9k 27
Comments 14
Top of the last 24 hours