Никто не знает и не понимает, что такое «программирование» и что такое «компьютер». Какими они задумывались, какими они могли бы быть и какими они могут стать.
Недавно я разговаривал с физтехом и он мне с железобетонной уверенностью выпалил определение: «Программирование — это написание четких инструкций для компьютера». Я же, пересмотрев десятки лекций Кнута, опубликовав десятки переводов Ликлайдера, Ванневара Буша и Дугласа Энгельбарта, немного призадумался о природе его догматичности и отсутствию «сомнений» в своей правоте.
Предлагаю обсудить будущее программирования и рассмотреть взгляды нескольких философов и парочки практиков, которые работают над созданием будущего программирования прямо сейчас.
(Дополняйте своими находками «ростков будущего» и ключевыми статями и лекциями.)
Амджад Масад, 2022
Амджад Масад создает браузерное IDE с целью сократить время от мысли до кода. Недавно он проанонсировал планируемые фичи, на что Пол Грэм восторженно написал:
Replit имеет большие амбиции, чем думает большинство людей. Они не просто хотят разрешить программирование в браузере. Они хотят продвинуть вперед то, что такое программирование.
Вот такие фичи хочет внедрить Replit:
Своевременная помощь. ИИ предложит учебные пособия на основе того, что вы кодируете, и, возможно, даже некоторых друзей, которые могли бы помочь вам, исходя из того, что они кодировали в прошлом.
Справочные и обучающие ресурсы могут появиться прямо в вашей среде IDE, чтобы вам не пришлось покидать ее и прерывать рабочий процесс.
Мы переписываем функцию Explain Code, чтобы сделать ее более полезной. В новой версии вы сможете выбрать свой уровень знаний, а ИИ изменит способ объяснения кода в соответствии с вашим уровнем.
Наконец, и это уже построено и скоро будет выпущено, ИИ сможет находить для вас ошибки, которые не может сделать никакой другой инструмент, включая логические и человеческие ошибки.
Сумасшедшая большая идея здесь заключается в том, что мы думаем, что это может стать началом универсальной среды обучения, симбиоза человека и машины, выходящего за рамки простого кодирования.
Далее идут ссылки и краткие выжимки идей теоретиков «программирования» и повстанцев, ратующих за настоящую компьютерную революцию.
Джозеф Ликлайдер, 1960
«Любой человек и любая компания, использующие компьютер в интерактивном режиме, должны испытывать благодарность по отношению к Лику»
— Боб Тейлор, основатель Xerox PARC и основатель исследовательской лаборатории DEC
- Джозеф «Лик» Ликлайдер: «Симбиоз человека и компьютера» (1960), часть 1
- Джозеф «Лик» Ликлайдер: «Межгалактическая компьютерная сеть» (1963 год)
- Джозеф «Lick» Ликлайдер: «Интергалактическая компьютерная сеть» и «Симбиоз человека и компьютера»
Андрей Ершов, 1982
Эта заметка появилась на свет при размышлении о разработке программного обеспечения как человеческой деятельности. Если в этом плане рассматривать работу программиста, то нужно различать два, как мне кажется, весьма разных её вида: к одной из них программист относится как слуга, а к другой — как хозяин.
- Программирование — вторая грамотность
- Андрей Ершов: «Два облика программирования»
- Дональд Кнут: как я занялся анализом алгоритмов и ради этого поехал в СССР (37,91,97/97)
Брет Виктор, 2013 (1973)
Технологии развиваются быстро, мышление людей — медленно.
Брет Виктор выступил на конференции в 2013 году, но он вещал как-будто бы в 1973 году про будущее программирования через 40 лет. Его слайды были на прозрачной бумаге и на световом проекторе (как у меня в универе в 2001 году)
.
Беда не в том, что многие через 40 лет удивятся, что в 1973 году были такие идеи насчет программирования, более негативный сценарий в том, что в 2013 году люди будут иметь четкое представление о том, что такое «программирование». И будут обсуждать детали и частные ситуации только одной парадигмы программирования из тех нескольких, что я показал сегодня, и откинут все остальные пути развития программирования. Беда в том, что подавляющее большинство программистов вырастет на догмах.
В 1973 году было очень много идей по поводу программирования и информационных систем потому что никто толком не знал, что такое программирование и каким оно может быть. Люди были с чистым незапятнанным разумом и пробовали все подряд.
Самая опасная вещь, которая может быть у созидающего человека — это в точности знать, что ты хочешь сделать. Создатель перестает смотреть по сторонам и становится слеп. Скажите себе: «Я не знаю, что я собираюсь делать. Я не знаю, что такое программирование и каким оно может быть. Я не знаю, что такое компьютер и каким он может быть». И вы станете свободны от догм и начнете мыслить.
Пол Грэм, PyCon 2003
Во-первых, язык программирования будущего, в принципе, может быть изобретён сегодня. Во-вторых, такой язык может годиться для программирования и в наше время. Сложно удержаться и не подумать: так почему бы не попробовать написать язык будущего прямо сейчас?
Оригинал: The Hundred-Year Language
Перевод: Языки программирования через сто лет, Язык программирования будущего — сегодня
Основные мысли:
- Во что эволюционируют ЯП за 100 лет может быть интересно потому, что хотелось бы знать, на какую ветвь «древа эволюции» сделать ставку сегодня.
- А будут ли через 100 лет вообще писать код?
- Любой язык программирования можно поделить на две части: некий набор фундаментальных операторов, которые играют роль аксиом, и остаток языка, который, в принципе, может быть описан в терминах этих фундаментальных операторов. Я считаю, что фундаментальные операторы — это самый важный фактор, влияющий на выживание языка в долгосрочной перспективе. Всё остальное может меняться.
- Языки программирования — это не технологии, а больше похожи на математическую нотацию. А нотации развиваются намного медленнее чем технологии.
- Если закона Мура сохранится, через 100 лет компьютеры станут в 74 квинтиллиона раз быстрее.
- Причина существования большинства типов данных — это производительность. С увеличением производительности в миллион раз может случиться фундаментальный сдвиг парадигмы.
- Можно ли избавиться от массивов?
- Можно ли избавиться от чисел как фундаментального типа данных?
- Через сто лет программисты захотят такой язык, на котором можно оперативно и с минимальными усилиями набросать первую, невероятно неэффективно работающую версию программы. По крайней мере, так это можно описать в современных терминах. Они скажут, что им нужен язык, на котором легко программировать.
- Параллелизм не будет распространен в программах через сто лет.
- Сейчас вполне возможно изобрести язык, который будет привлекателен для пользователей через сто лет.
- Если бы мы получили язык программирования будущего, стали бы мы использовать его?
Алан Кей, 2015
Алан Кей, пожалуй, самый радикальный и оптимистичный философ программирования. Он работал и в Xerox PARC и в Disney, был ментором Стива Джобса. Алан Кей стоял у истоков первых персональных компьютеров и разработал проект лэптопа, ввел понятие ООП (по этой теме много споров что оно ушло не туда). У него есть десяток лекций и статей (в том числе и много переводов на Хабре), где он делится своим видением, каким может быть программирование и обучение.
Пожалуй, вот эти две лекции самые содержательные про будущее программирования:
Наш препод сказал — моя задача полностью размазать все ваши представления о том, что такое «компьютеры» и «программирование» — лучший класс который у меня был в универе.
— Алан Кей
Если кратко, то Алан Кей утверждает, что настоящая информационная революция еще не наступила, потому что на сегодняшний день программирование больше похоже на «алхимию», когда люди наугад что-то соединяют и смотрят что получится. Алан предлагает перейти от простого сваливания в кучу кирпичей строк кода к «архитектуре» и строит не египетские пирамиды, а Эмпайр-стейт-билдинг . Кстати, Эмпайр-стейт-билдинг была построена 3000 людей за 1 год с нуля. Есть ли примеры такой же производительности в области построения софта таким же количеством людей?
Кто хочет копнуть про идеи Алана Кея чуть глубже, вот несколько ссылок:
- С днём рождения, Алан Кейǃ (или как получить +80 к IQ)
- Алан Кей: Будущее «чтения» зависит от будущего «обучения сложным для понимания вещей»
- Алан Кей: «Компьютеры — это инструменты, музыка которых — идеи»
- Алан Кей: Что сделало Xerox PARC особенными и кто еще сегодня похож на них
- Алан Кей: крутым концепциям тоже нужна любовь
- Алан Кей: Как обстоят дела у всего человечества, вид «из космоса»
- Алан Кей и Марвин Мински: Computer Science уже имеет «грамматику». Нужна «литература»
- Алан Кей (и коллективный интеллект Хабра): какие книги формируют мышление тру инженера
- Алан Кей: как бы я преподавал Computer Science 101
- Алан Кей: Будущее нельзя построить постепенно
- Персона. Алан Кэй — пророк, автор концепции GUI и языка Smalltalk
- Алан Кэй, создатель ООП, про разработку, Лисп и ООП
- Алан Кей в мире компьютеров
Джонатан Блоу, 2019
Создатель игр Braid и The Whitness сейчас занимается разработкой новой игры, которая будет сделана на новом движке, разрабатываемым Джонатоном Блоу, а движок в свою очередь, будет написан на языке программирования тоже созданным Джонатоном.
Джонатан очень недоволен текущим положением дел в программировании и пророчит в ближайшем времени коллапс:
Краткое изложение мыслей Джонатана Блоу есть Никитонкого: Хорошие времена рождают слабаков
- Кризис программного обеспечения носит системный и поколенческий характер.
- Знания не передаются следующему поколению автоматически.
- В программировании мы развиваем абстракции с пугающей скоростью. Когда они накапливаются в достаточном количестве, понимать и контролировать всё что происходит становится невозможным.
PS
Пост «Моё разочарование в софте» набрал 443+, так какое же должно быть программирование, чтобы не быть разочарованным?
«А для завтра что сегодня сделал я?»