Будущее программирования

image

Никто не знает и не понимает, что такое «программирование» и что такое «компьютер». Какими они задумывались, какими они могли бы быть и какими они могут стать.

Недавно я разговаривал с физтехом и он мне с железобетонной уверенностью выпалил определение: «Программирование — это написание четких инструкций для компьютера». Я же, пересмотрев десятки лекций Кнута, опубликовав десятки переводов Ликлайдера, Ванневара Буша и Дугласа Энгельбарта, немного призадумался о природе его догматичности и отсутствию «сомнений» в своей правоте.

Предлагаю обсудить будущее программирования и рассмотреть взгляды нескольких философов и парочки практиков, которые работают над созданием будущего программирования прямо сейчас.
(Дополняйте своими находками «ростков будущего» и ключевыми статями и лекциями.)

Амджад Масад, 2022


Амджад Масад создает браузерное IDE с целью сократить время от мысли до кода. Недавно он проанонсировал планируемые фичи, на что Пол Грэм восторженно написал:

Replit имеет большие амбиции, чем думает большинство людей. Они не просто хотят разрешить программирование в браузере. Они хотят продвинуть вперед то, что такое программирование.

Вот такие фичи хочет внедрить Replit:

image

Своевременная помощь. ИИ предложит учебные пособия на основе того, что вы кодируете, и, возможно, даже некоторых друзей, которые могли бы помочь вам, исходя из того, что они кодировали в прошлом.

image

Справочные и обучающие ресурсы могут появиться прямо в вашей среде IDE, чтобы вам не пришлось покидать ее и прерывать рабочий процесс.

image

Мы переписываем функцию Explain Code, чтобы сделать ее более полезной. В новой версии вы сможете выбрать свой уровень знаний, а ИИ изменит способ объяснения кода в соответствии с вашим уровнем.

image

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

image

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

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

Джозеф Ликлайдер, 1960


«Любой человек и любая компания, использующие компьютер в интерактивном режиме, должны испытывать благодарность по отношению к Лику»
— Боб Тейлор, основатель Xerox PARC и основатель исследовательской лаборатории DEC

image

Андрей Ершов, 1982


image

Эта заметка появилась на свет при размышлении о разработке программного обеспечения как человеческой деятельности. Если в этом плане рассматривать работу программиста, то нужно различать два, как мне кажется, весьма разных её вида: к одной из них программист относится как слуга, а к другой — как хозяин.

Брет Виктор, 2013 (1973)


Технологии развиваются быстро, мышление людей — медленно.



Брет Виктор выступил на конференции в 2013 году, но он вещал как-будто бы в 1973 году про будущее программирования через 40 лет. Его слайды были на прозрачной бумаге и на световом проекторе (как у меня в универе в 2001 году)
.

image

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

В 1973 году было очень много идей по поводу программирования и информационных систем потому что никто толком не знал, что такое программирование и каким оно может быть. Люди были с чистым незапятнанным разумом и пробовали все подряд.

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

Скажите себе: «Я не знаю, что я собираюсь делать. Я не знаю, что такое программирование и каким оно может быть. Я не знаю, что такое компьютер и каким он может быть». И вы станете свободны от догм и начнете мыслить.

Пол Грэм, PyCon 2003


image

Во-первых, язык программирования будущего, в принципе, может быть изобретён сегодня. Во-вторых, такой язык может годиться для программирования и в наше время. Сложно удержаться и не подумать: так почему бы не попробовать написать язык будущего прямо сейчас?

Оригинал: The Hundred-Year Language
Перевод: Языки программирования через сто лет, Язык программирования будущего — сегодня

Основные мысли:

  • Во что эволюционируют ЯП за 100 лет может быть интересно потому, что хотелось бы знать, на какую ветвь «древа эволюции» сделать ставку сегодня.
  • А будут ли через 100 лет вообще писать код?
  • Любой язык программирования можно поделить на две части: некий набор фундаментальных операторов, которые играют роль аксиом, и остаток языка, который, в принципе, может быть описан в терминах этих фундаментальных операторов. Я считаю, что фундаментальные операторы — это самый важный фактор, влияющий на выживание языка в долгосрочной перспективе. Всё остальное может меняться.
  • Языки программирования — это не технологии, а больше похожи на математическую нотацию. А нотации развиваются намного медленнее чем технологии.
  • Если закона Мура сохранится, через 100 лет компьютеры станут в 74 квинтиллиона раз быстрее.
  • Причина существования большинства типов данных — это производительность. С увеличением производительности в миллион раз может случиться фундаментальный сдвиг парадигмы.
  • Можно ли избавиться от массивов?
  • Можно ли избавиться от чисел как фундаментального типа данных?
  • Через сто лет программисты захотят такой язык, на котором можно оперативно и с минимальными усилиями набросать первую, невероятно неэффективно работающую версию программы. По крайней мере, так это можно описать в современных терминах. Они скажут, что им нужен язык, на котором легко программировать.
  • Параллелизм не будет распространен в программах через сто лет.
  • Сейчас вполне возможно изобрести язык, который будет привлекателен для пользователей через сто лет.
  • Если бы мы получили язык программирования будущего, стали бы мы использовать его?

Алан Кей, 2015


Алан Кей, пожалуй, самый радикальный и оптимистичный философ программирования. Он работал и в Xerox PARC и в Disney, был ментором Стива Джобса. Алан Кей стоял у истоков первых персональных компьютеров и разработал проект лэптопа, ввел понятие ООП (по этой теме много споров что оно ушло не туда). У него есть десяток лекций и статей (в том числе и много переводов на Хабре), где он делится своим видением, каким может быть программирование и обучение.

Пожалуй, вот эти две лекции самые содержательные про будущее программирования:

Наш препод сказал — моя задача полностью размазать все ваши представления о том, что такое «компьютеры» и «программирование» — лучший класс который у меня был в универе.
— Алан Кей

Если кратко, то Алан Кей утверждает, что настоящая информационная революция еще не наступила, потому что на сегодняшний день программирование больше похоже на «алхимию», когда люди наугад что-то соединяют и смотрят что получится. Алан предлагает перейти от простого сваливания в кучу кирпичей строк кода к «архитектуре» и строит не египетские пирамиды, а Эмпайр-стейт-билдинг. Кстати, Эмпайр-стейт-билдинг была построена 3000 людей за 1 год с нуля. Есть ли примеры такой же производительности в области построения софта таким же количеством людей?

Кто хочет копнуть про идеи Алана Кея чуть глубже, вот несколько ссылок:

еще переводы Алана Кея на Хабре:

Джонатан Блоу, 2019


Создатель игр Braid и The Whitness сейчас занимается разработкой новой игры, которая будет сделана на новом движке, разрабатываемым Джонатоном Блоу, а движок в свою очередь, будет написан на языке программирования тоже созданным Джонатоном.

Джонатан очень недоволен текущим положением дел в программировании и пророчит в ближайшем времени коллапс:

Краткое изложение мыслей Джонатана Блоу есть Никитонкого: Хорошие времена рождают слабаков

  • Кризис программного обеспечения носит системный и поколенческий характер.
  • Знания не передаются следующему поколению автоматически.
  • В программировании мы развиваем абстракции с пугающей скоростью. Когда они накапливаются в достаточном количестве, понимать и контролировать всё что происходит становится невозможным.

PS


Пост «Моё разочарование в софте» набрал 443+, так какое же должно быть программирование, чтобы не быть разочарованным?

«А для завтра что сегодня сделал я?»

kymc4w0tsvxjf9ninsv-gqhcpx0.png

© Habrahabr.ru