计算机技术的发展历程中,编程一直被视为核心驱动力,然而,随着计算机使用的普及,一道显著的鸿沟逐渐显现:程序员与普通用户之间的隔阂。Erann Gat在2001年发表的《编程被视为有害》一文中,深刻剖析了这一问题的根源,并提出了对未来软件开发方式的反思与全新设想,为突破当前困局指明了方向。最初,个人计算机革命诞生于对大型主机及其操作权限垄断的反抗,年轻人渴望获得自主控制计算的权力。早期的个人电脑为此提供了物理上的自由,但随着时间演进,这种自由在逻辑意义上逐渐消失。硬件虽由用户直接拥有和操作,软件控制权却被少数程序员——当时的“高僧”——握在手中,且这种权力被大企业如IBM、微软、新思科等牢牢掌控。对广大普通用户而言,使用计算机的体验未免与过去连接主机的终端机大同小异,功能受限,操作复杂。
尽管互联网的兴起、Linux系统以及如Perl等编程语言的流行为计算环境带来了一丝希望,但核心的程序员与用户之间差距依然存在且难以跨越。用户因为不了解软件内部机制,且被所谓“软件本质上不可靠且脆弱”的观念所影响,只能被动接受频繁重启、系统崩溃等不便,市场因此生成一条恶性循环:用户只能选择购买质量参差的软件,或者彻底远离计算机。与这一现况形成鲜明对比的是,优质软件的成本其实往往低于劣质软件。Linux系统的免费、稳定便是实例,然而用户市场并未广泛接受它,关键原因在于其设计和特性主要迎合程序员群体,而非普通用户。试图将编程普及大众的尝试,如Logo语言,最终未能扑灭用户心中的陌生感与恐惧,令许多人将编程视为难以跨越的高墙。反观HTML的意外成功,则展示了部分编程语言具备易于理解、操作友好的潜力,尽管其设计初衷并非如此。
Erann Gat在文中描绘了一个理想未来:消除程序员和用户之间的分界,将计算机使用和构建活动视为一个连续体,让用户参与甚至主导软件的生成过程。唯有如此,市场才能真正反映用户需求,促使软件质量提升,权力也能重新回归最广大普通用户手中。该观点本质上反对传统计算机的数学继承性质。早期计算机的设计依托于数学家为解决数学问题研发的机器,强调求解已有的问题并获得明确结果。这一模式与现代计算机广泛应用于流程驱动、体验导向的领域如文档编辑和电子游戏形成鲜明对比。传统软件开发方法往往忽视了这种区别,错把软件开发当作一种完成特定数学计算的问题,期望有个终点和“成果”,从而产生了程序的概念。
Gat主张应当将“软件”与“程序”概念分离,认为程序完全可以被替代。若计算机应用不再依赖编写程序这一僵化过程,就不再需要传统意义上的程序员,进而打破用户与程序员的分隔。尽管当前已有如Lisp、Smalltalk及LabVIEW这类依靠交互环境或图形化界面构建软件的系统,它们仍停留于表面创新,未彻底变革编程的本质。软件的交付通常以可执行代码的形式体现,程序员耗费大量时间反复开发通用但缺乏深度创新的用户界面及命令解析,效率低下。以Lisp的S表达式为例,提供了一种简单统一的解析方案,消解了命令行界面种类繁杂造成的混乱与学习门槛。Gat基于此指出,在软件使用端,庞杂的应用程序接口和功能不断膨胀,逼迫用户必须接受培训和指导,才能勉强掌握计算机操作。
他批判了现代应用程序中对“功能丰富即优质”的迷思,主张软件应围绕模块化接口设计,避免重复集成功能,而是实现跨模块的无缝协作与资源共享。例如,拼写检查不应内嵌于每款软件,而应作为独立模块供所有应用调用使用,从而降低复杂度与用户学习负担。未来的软件世界将基于大量小而廉价的模块构建,这些模块单独能力有限,但通过良好接口标准实现组合,完成复杂工作。与传统编程中代码小而快速但功能有限的逻辑不同,模块化设计重视模块能力的广泛性,而运行效率并非首要矛盾,因为硬件性能日益强大。模块设计的工程重心转向削减冗余,达成稳定与易维护。传统意义上的文件概念也将淡化,所有操作均通过模块状态变更体现且自动持久化与管理版本、权限。
整个系统形成动态对象集合,具备健壮的控制与追溯能力。综上所述,《编程被视为有害》一文提出了对现有计算机软件体系的深刻批判,并以模块化、无程序化的理念为基础,勾勒了未来计算可能实现的理想形态。这种形态下,计算机不再是程序员的专属领域,普通用户能够直接参与甚至主导软件的构建与调试,降低了技术门槛,提升了软件质量和用户体验。同时,这种变革有望冲破当今巨头垄断的格局,让计算机真正回归为每一个人的工具。尽管实现这一理想存在技术与社会多重挑战,但也为信息技术的发展提供了颇具前瞻性的思考路径。随着人工智能、低代码平台和模块化技术的兴起,编程边界正逐渐模糊,用户愈发接近成为软件的创造者。
未来计算机世界,或将不再束缚于传统程序编写的范式,而是迎来更加开放、灵活而用户友好的新时代。