Если вы никогда не слышали про Алана Кэя, то как минимум слышали его знаменитые цитаты. Например, это высказывание 1971 года:
The best way to predict the future is to invent it.
Лучший способ предсказать будущее это изобрести его.
У Алана очень яркая карьера в информатике. Он получил
У нас в
Про разработку ПО
Алан Кэй считает, что компьютерная революция еще впереди (
проблема в слабых, плохо масштабируемых идеях и инструментах, лени, нехватке знаний и т.д.
Эту ситуацию хорошо описывает
What Andy giveth, Bill taketh away
Энди дал, Билл взял
Энди Грув, CEO Интела, и Билл Гейтс, тогдашний CEO Майкрософта.
Улучшение текущего состояние разработки было целью исследовательского проекта
В его открывающем глаза докладе
Алан считает Интернет, протоколы TCP/IP, интерпретаторы LISP,
Он называет Интернет (TCP/IP) одним из немногих масштабных софтверных проектов, который был правильно разработан, и его уровень сложности — в балансе с уровнем комплексности (complication vs. complexity). Этот проект, в котором меньше 20 тысяч строк кода, работает как живая, динамическая система, способная поддерживать миллиарды узлов, и она ни разу не отключалась после первого запуска в сентябре 1969 года. Мы просто перестали считать Интернет нормальным софт-проектом, созданным людьми:
Интернет разработан настолько хорошо, что многие относятся к нему как к естественному ресурсу, вроде Тихого океана, а не к плоду человеческого труда. Когда в последний раз мы видели настолько стабильную, четкую технологию без ошибок? Для сравнения, Веб это ерунда. Веб создан дилетантами.
Про объектно-ориентированное программирование
Первое, что меня интересовало, это его
Я считал объекты чем-то вроде биологических клеток, и/или отдельных компьютеров в сети, которые могут общаться только через сообщения.
и опыт в математике:
Мой опыт в математике заставил меня понять, что каждый объект может иметь несколько алгебр, они могут объединяться в семейства, и это может быть очень полезным.
Идеи позднего свзяывания и мощных мета-возможностей LISPa:
Вторая фаза — это понимание LISPa и использование этого понимания для создания более удобных, маленьких и мощных структур и более позднее связывание.
И вскоре Алан стал поддерживать идею того, что динамические языки это
Позднее связывание позволяет с меньшими усилиями встраивать в проект идеи, которые возникли позже в процессе разработки (по сравнению с системами с более ранним связыванием вроде C, C++, Java, и пр.)
И потенциал для изменений на ходу и более быстрых итераций:
Одна из ключевых идей: система должна продолжать работу во время тестирования о особенно во время произведения изменений. Даже крупные изменения должны быть поэтапными и занимать не больше доли секунды.
который отсутствует в
Если вы используете языки с ранним связыванием, как это делает большинство, то вы запираете себя в рамки того, что уже написали. Переформулировать с легкостью уже не получится.
Удивительно, но его мысл про ООП ограничивались этим:
ООП для меня это сообщения, локальное удержание и защита, скрытие состояния и позднее связывание всего. Это можно сделать в Smalltalk и в LISP.
И ничего про наследование. Это не тот ООП,
Мне жаль, что давным давно я использовал термин «объект» для этой темы, потому что из-за этого многие люди фокусируются на меньшей из идей.
Большая идея, которой не хватает современным статически-типизированным ОО-языкам:
Большая идея это «сообщения»
Он считает, что нужно фокусироваться на сообщениях, слабой связи и взаимодействии модулей, а не на внутренностях объекта:
Ключ к созданию хороших масштабируемых систем это проработка механизмов общения модулей, а не проработка их внутренних свойств и поведения.
Статически-типизированные языки кажутся ему
Я не против типов, но мне не знакома ни одна система типов, которая не вызывала бы боли. Так что мне все еще нравится динамическая типизация.
Некоторые популярные языки сегодня используют идеи передачи сообщений Smalltalk’а, позднее связывание, и конструкцию
Уничтожить все и создать что-то лучше
У Алана есть интересная теория о развитии информатики:
Мне кажется, что существует только один тип компьютерной науки, и это наука похожа на строительство мостов. Кто-то строит мосты, а кто-то разрушает их и создает новые теории. И нам нужно продолжать строить мосты.
Про LISP
Алан Кэй считает Лисп
лучшим языком программирования всех времен
И что его должен изучать каждый выпускник в computer science:
Большинство людей, получающих дипломы в CS, не понимают всей важности Lisp. Lisp это самая важная идея в computer science.
Про правильную атмосферу и контекст
Он часто вспоминает об уникальной атмосфере в
Точка зрения дает 80 баллов IQ.
Алан Кэй считает:
История ARPA/PARC демонстрирует, как комбинация видения, скромного финансирования, правильного контекста и процесса может волшебным образом рождать новые технологии, которые не только влияют на цивилизацию, но и создают огромную ценность для общества.
И это правда.
- Лазерные принтеры
- Объектно-ориентированное программирование / Smalltalk
- Персональные компьютеры
- Ethernet / распределенные вычисления
- GUI / компьютерная мышь / WYSIWYG
А в
P.S.
Источник: habr.com