Лекция Брета Виктора “The Future of Programming” 2013 года даёт критическую оценку истории и перспектив программирования. Виктор начинает с того, что в шестьдесят-семидесятые годы компьютеры изменились от огромных машин, таких как IBM 650, до более компактных устройств, благодаря закону Мура, который говорит об экспоненциальном росте вычислительной мощности. Однако, несмотря на все технологические достижения, программисты связаны своими устоявшимися привычками программирования, что делает их нежелающими выходить за рамки этих фреймворков и осваивать новые идеи в программировании.
Четыре ключевых идеи лекции приводит Брет Виктор и также побуждает людей отказаться от старых способов мышления и взглянуть на вещи с совершенно новой точки зрения.
Во-первых, coding -> direct manipulation of data: Вместо того, чтобы писать код, мы работаем со структурами данных.
Во-вторых, procedures -> goals and constraints: Нам нужно говорить о целях, а не о том, как их достичь.
Во-третьих, spatial representations of information: Нам лучше писать код в 2D, чем просто строчки текста в файлах.
Во-четвертых, sequential -> concurnent programming: Для очень мощного оборудования хорошо подходит модель акторов Карла Хьюитта. Она использует процессы, которые работают независимо друг от друга и обмениваются сообщениями. В ней нет потоков и блокировок.
В своей лекции он привёл примеры, такие как использование программистами абсолютного двоичного кода и сопротивление ассемблерам. Джон фон Нейман критиковал студентов за написание ассемблеров, называя языки высокого уровня «канцелярская работа». Он также упомянул новые идеи, которые появились в середине 1960-х годов: Sketchpad Ивана Сазерленда, позволявший напрямую манипулировать данными с помощью светового пера и ограничений; появление таких систем, как NLS и GRAIL Энгельбарта, и Smalltalk, несомненно, заложивших основу для более поздних технологий, таких как разнообразие языков программирования и интерактивные вычисления.
Теперь я хочу поделиться своими мыслями об идеях Виктора. Я считаю, что его лекция очень полезна, потому что она объясняет, почему программирование не развивается так быстро, как могло бы. Она показывает, как наши привычные представления могут мешать появлению новых идей, и это очень важно для разработчиков, чтобы они не становились слишком узкими в своем мышлении. Идеи Виктора остаются актуальными даже в 2026 году, особенно с учетом развития искусственного интеллекта, и параллельных вычислений, таких как графические процессоры и квантовые вычисления. Его аргументы основаны на исторических фактах, таких как Sketchpad и Prolog, и логичны; он не фантазирует, а опирается на забытые прототипы 1960-х годов. В целом, идеи Виктора надёжны, но их необходимо использовать критически, учитывая характеристики и тенденции современных технологий программирования.
В общем, я согласен с Виктором: программистам, как и всем остальным, важен оптимизм и не терять воображение, когда дело доходит до способов и приемов программирования. Как сказал Виктор, может случиться так, что следующее поколение вообще не узнает об этих вещах, потому что их будут учить только одному способу думать о программировании. И они будут программировать именно так, оттачивая каждую мелочь и улучшая конкретные подходы. Они будут уверены, что знают все, и передадут эти знания дальше. Этот круг будет повторяться, и люди просто упустят крутые способы думать и создавать новое. Эта лекция важна не только для программистов, но и для всех, кому интересно, как развиваются технологии. Нам стоит учиться на прошлом и оставаться открытыми и позитивными в отношении прогресса.
Bret Victor 2013 年的演讲“编程的未来”对编程的历史和未来进行了批判性的评估。Victor 首先解释说,在 20 世纪 60 年代和 70 年代,计算机从 IBM 650 等庞大的机器发展到更紧凑的设备,这要归功于摩尔定律,该定律预测了计算能力的指数级增长。然而,尽管技术取得了这些进步,程序员仍然受制于他们既有的编程习惯,不愿跳出这些框架,接受新的编程理念。
Brett Victor 在演讲中提出了四个关键观点,鼓励人们摒弃旧的思维方式,从全新的视角看待事物。
第一,编码 -> 直接操作数据:我们不再编写代码,而是使用数据结构。第二,过程 -> 目标和约束:我们需要讨论的是目标,而不是如何实现目标。第三,信息的空间表示:用二维方式编写代码比仅仅在文件中编写文本行要好得多。第四,顺序编程到并发编程:卡尔·休伊特的 Actor 模型非常适合高性能硬件。它使用独立运行并交换消息的进程,没有线程或锁。
在他的演讲中,他列举了一些例子,例如程序员使用绝对二进制代码以及对汇编语言的抵触。约翰·冯·诺伊曼批评学生编写汇编语言,称高级语言为“文书工作”。他还提到了 20 世纪 60 年代中期涌现的新思想:伊万·萨瑟兰的 Sketchpad,它允许使用光笔和约束直接操作数据;恩格尔巴特的 NLS 和 GRAIL 等系统的出现,以及 Smalltalk,这些无疑为后来的各种编程语言和交互式计算等技术奠定了基础。
现在我想分享一下我对维克多思想的看法。我认为他的演讲非常有用,因为它解释了为什么编程的发展速度没有达到应有的水平。它揭示了我们的传统观念是如何阻碍新思想的产生的,这对开发者避免思维过于狭隘至关重要。即使到了2026年,维克多的观点依然具有现实意义,尤其是在人工智能和并行计算(例如GPU和量子计算)蓬勃发展的今天。他的论证基于Sketchpad和Prolog等历史事实,逻辑严密;他并非凭空臆想,而是依赖于上世纪60年代那些已被遗忘的原型。总的来说,维克多的观点是合理的,但必须批判性地运用,并考虑现代编程技术的特性和发展趋势。
我基本同意维克多的观点:程序员和其他人一样,在编程方法和技术方面需要保持乐观,不要失去想象力。正如维克多所说,下一代可能根本不会接触到这些,因为他们只会学习一种编程思维方式。他们会完全按照这种方式编程,精雕细琢每一个细节,完善特定的方法。他们会自信满满地认为自己无所不知,并将这些知识传授给下一代。这种循环会不断重复,人们最终会错过许多绝妙的思考方式和创造新事物的机会。这次讲座不仅对程序员很重要,对所有关注技术发展的人来说也意义非凡。我们应该从过去吸取经验教训,并对进步保持开放和积极的态度。