当前位置:

首页 > 编程开发 > 编程的未来

编程的未来

本文目录

    编程将像水电一样成为未来基础设施,人人可借ifttt和YQL等工具编程。所见即所得和编程范型进化降低门槛,让代码更贴近思考。程序员的核心价值在于创造性工作,而非简单翻译代码。

    最近在读加来道雄的《物理学的未来》,前两章聚焦计算机和人工智能的百年预测,正好是程序员最感兴趣的部分。想想计算机发展这短短几十年,翻天覆地的变化几乎都在弹指一挥间。谁的大胆预测能那么准?但书中这几个猜想,确实让人印象深刻:

    因特网眼镜和隐形镜片、无人驾驶汽车、摩尔定律的终结、通用翻译器、全息摄影与三维影像、意识识别、有意识情感的机器人、模拟大脑。

    这是物理学家眼中的世界——另一本《平行宇宙》也值得推荐,同样激动人心。另一方面,想起小时候痴迷的机器猫,那个小小的四维空间袋,寄托了多少纯真的梦想,而其中有多少神奇道具已经成为现实……

    但程序员更想聊的,是自己熟悉的领域。不谈语言的发展与趋势——这些留给专家去分析——不妨把目光放长远一点:100年后的程序员,他们在做什么?100年后的编程,会是怎样一种劳动?

    人人都会编程

    微博上,有朋友评论HTML5实现的Web操作系统:“断网就是废物一个”。但他没意识到,很快网络就会像现在的水、电一样,成为人正常生活不可或缺的基础设施。

    类似的,编程也将成为未来人们的日常必备技能,就像写字、阅读一样。编程并不非得写那些非程序员看不懂的奇形怪状的代码。你把衣服放进洗衣机,设定好水量中等、浸泡20分钟、洗涤20分钟、漂洗3次共15分钟、再甩干3分钟——这,就是编程。你做的仅仅是按几个按键,把这几项工作组合起来。

    再比如ifttt这样的网站,你已经可以实现编程的分支功能了——如果明天天晴,就发一条信息提醒你去爬山。完成这样的功能,你根本不需要是程序员,只要会操作电脑、会上网就行了。

    互联网的资源将被更好地组织和获取。以YQL(Yahoo! Query Language)为例,你可以体会这一点:

    select * from html where url='http://www.dangdang.com/' and xpath='//ul[@id="homepage_promotion_count_ul"]/li/p[@class="name"]/a'

    它做了这样一件事:从当当网的页面获取数据,数据的路径通过XPath表达式给出。如此一来,整个互联网就变成了一个超级大型的数据库。当然,这样的语法还是不够简单,希望能看到类似ifttt的应用出现,目的却是让不会编程的人也能轻松从互联网这个大型数据库中查询自己需要的东西。

    未来需要普通人掌握的编程技能也不尽相同,就像现在年轻人和老人的阅读技能大不相同一样。但可以确定的是,生活中会充满编程的行为,让机器替代自己做更多的事。

    所见即所得

    谈及所见即所得,很容易想到很多编程语言、IDE,甚至包括FCKeditor这样的富文本编辑组件。Google已经做了这样的尝试——App Inventor就是为手机端准备的编程软件,可以看看它的宣传视频。而Bret Victor那场广为流传的演讲《Inventing on Principle》,第一次看的时候,你一定会惊讶得合不拢嘴。

    所见即所得使得编程的过程更贴近人最自然的思维,一张丰富画面所传递的内容远远大于枯燥的代码行语义和数值。

    编程范型的进化

    相较于硬件的摩尔定律,软件的发展似乎真的“太慢了”。几十年历史的编程语言可以长盛不衰地存活下去,而硬件淘汰的速率却快得多。好在软件的发展也有驱动力,软件的复杂性就是直接驱动力之一。想想现在做一个普通网站的代价,和十五年前相比,能省多少功。

    很多时候程序员会觉得,算法还是不容易转变成代码——即便是简单的算法,思路在纸上实现很容易,变成代码却比较冗长。大部分情况下这不是编码技巧的问题,而是编程语言的问题。换句话说,如果使用一种合适范型的编程语言,兴许就能轻松解决这个问题——即便这样的语言并不一定好找,并不一定容易设计。

    我们都知道从过程式编程到面向对象编程的进化,可如今常用的编程范型已经远远超出这两者了:声明式编程、面向方面编程、基于规则的编程等等,固有的思维模式一次又一次遭到挑战。

    以Prolog语言为例,它由事实和规则组成。先告知程序已知的事实和规则,再去询问程序一个需要推断的问题,让它给出推断的结果。比如:

    love(you, dog).
    love(he, dog).
    love(she, cat).
    friend(PA, PB) :- \+(PA=PB), love(PA,Animal), love(PB,Animal).

    解释一下:给定三个事实——你爱狗,他爱狗,她爱猫;给定一条规则——对于人物A和人物B,如果A和B不是同一个人,A爱动物Animal,并且B也爱同一种动物Animal,那么A和B就是朋友。现在询问程序:“你和他是朋友吗?”程序判断你爱狗,他也爱狗,就给出结论:yes。

    这只是一个基于规则编程范型的例子。不同范型的语言适用于解决特定问题。未来我们会看到更多范型的语言,目的就是让对特定问题的表述和解决更简单、更易于理解。

    创造性的工作在哪

    既然编程会成为一件几乎人人都能做的事情,那么程序员,你的价值在哪?

    先来看看为什么越来越多的人可以编程?因为编程的门槛更低了。即便是现在,编程的门槛已经比二十年前低得多:不明白网络协议?有现成的类库可用;不懂平台差异?在无差别的虚拟机上写程序就行;不理解内存管理?让程序自动帮你完成……

    所以,如果还在为了解语言的不良设计、历史原因遗留的陷阱,或者为了知道某个提高表达能力的语法糖而沾沾自喜,这种优势很可能太不值钱了。

    程序员最有价值的部分不应在“翻译”上——即把思考的结果翻译到代码这一层面。编程的未来一定是让编程工作越发贴近人本质的思考,这样的“翻译”工作导致的歧义、错误、陷阱会越来越少,把清晰的思考变成代码会越来越简单,以至于某天可以让能够读懂人脑的计算机来完成。

    另一方面,很多公司的管理者却不懂程序员,在他们心目中,“程序员”只是高成本的劳动力,只会在一台搞不懂的机器上干一些更搞不懂的事情。

    看到这里,你会发现程序员本质上和音乐家、画家类似——往往也让许多人无法理解,而且艺术的价值,常常也都来源于思考。

    音乐家有了更先进的乐器,画家有了更丰富的画笔,情感的抒发都可以更加自由。甚至有一天,拿掉乐器和画笔这些传统物理实体,给大脑接上两根线,思考之后的乐谱和画册就诞生在电脑里了。

    可是,即便计算机可以帮助人思考,它却不能全面代替人思考,尤其对于艺术的创作。即便到了100年以后,程序员创造性的工作,还是无从替代的。

    最后,放开枷锁去想象吧——100年以后,编程会是什么样子,程序员又会是什么样子?期待你的答案。

    本文内容来源于网友投稿,如有侵权请联系删除。
    作者最新文章
    编程开发 编程 未来
    上一篇: 泛型编程
    相关文章 更多
    解决PHP递归报错:max_nesting_level限制与内存溢出处理
    解决PHP递归报错:max_nesting_level限制与内存溢出处理

    遇到PHP递归报错时,不要盲目调大max_nesting_level。本文教你区分Xdebug限制、内存耗尽和正则递归错误,提供代码级的终止条件优化与迭代替代方案,彻底解决栈溢出问题。

    PHP递归中static变量与引用传递的常见陷阱及调试
    PHP递归中static变量与引用传递的常见陷阱及调试

    本文分析PHP递归中static变量导致的状态污染及引用传递引发的共享数据修改问题。提供具体的代码复现、缓存键设计建议及调试打印技巧,帮助开发者避免隐蔽的逻辑错误。

    PHP递归性能优化技巧与迭代替代方案
    PHP递归性能优化技巧与迭代替代方案

    解析PHP递归函数在树形数据处理中的性能瓶颈,提供预加载数据消除I/O、使用显式栈替代深层递归的实战方案,帮助开发者在代码可读性与执行效率间做出合理取舍。

    Java测试中怎么使用Mockito模拟依赖对象
    Java测试中怎么使用Mockito模拟依赖对象

    详细讲解在Java单元测试中如何使用Mockito模拟依赖对象,包括引入依赖、创建Mock、打桩返回值、行为验证以及Mock与Spy的核心差异和常见陷阱排查。

    链表删除节点的时间复杂度是多少及其详细分析
    链表删除节点的时间复杂度是多少及其详细分析

    详细分析链表删除节点的时间复杂度,深入探讨单链表与双向链表在不同已知前提下的查找与删除开销,并结合完整代码与清晰图解进行对比总结。

    codex如何配置模型参数及文件设置教程
    codex如何配置模型参数及文件设置教程

    想知道如何让AI写出的代码更贴合你的习惯?本文手把手教你在VS Code中调整Codex相关模型参数,通过修改配置文件优化温度值和令牌限制,解决代码建议不准确或响应慢的问题。

    Claude Code AI编程工具实力揭秘与编程助手实测
    Claude Code AI编程工具实力揭秘与编程助手实测

    通过实测展示Claude Code在终端中如何理解自然语言指令、自动修改代码文件并处理复杂编程任务,帮助开发者评估其实际辅助能力。

    winforms教程自学入门与基础开发步骤详解
    winforms教程自学入门与基础开发步骤详解

    本教程详细讲解如何使用Visual Studio创建WinForms项目,通过添加按钮和标签控件并编写点击事件代码,实现一个基础的计数器功能,适合C#初学者快速上手Windows窗体应用开发。

    Cursor自动补全设置教程教你快速开启代码补全功能
    Cursor自动补全设置教程教你快速开启代码补全功能

    详解Cursor编辑器中自动补全功能的开启与优化设置,涵盖Tab触发机制、上下文窗口调整及模型切换,帮助开发者解决补全延迟、干扰大等问题,提升编码流畅度。

    pandas的数据格式怎么转换和设置方法教程
    pandas的数据格式怎么转换和设置方法教程

    详解Pandas中数据格式转换的核心方法,包括astype强制转换、to_numeric容错处理及日期解析技巧,解决常见类型错误并提升数据处理效率。

    查看更多
    精品专题 更多
    装机必备
    装机必备

    正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

    Windows
    Windows

    正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

    macOS软件
    macOS软件

    正软商城macOS软件专区,精选适用于Mac电脑的办公、设计、影音、效率、开发和系统工具,提供软件功能介绍、macOS兼容版本、正版授权及购买下载服务。

    Mac软件 更多
    photoshop
    photoshop
    Windows、macOS 、 iPad

    Photoshop 2026 是 Adobe 推出的专业图像处理与视觉设计软件,支持 Windows、macOS 和 iPad 等平台,广泛应用于摄影修图、电商设计、平面海报、数字绘画及视觉合成等创作场景。

    Blender
    Blender
    Windows、macOS 和 Linux

    Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。

    灵活计算器
    灵活计算器
    macOS/iOS/Android

    灵活计算器是一款笔记式算数应用,支持实时计算、动态关联和云端同步功能。记录、整理和输出之间的过渡会更自然,适合长期写作、做笔记或持续沉淀个人内容。

    WINDOWS 更多
    3dmax(3ds max)
    3dmax(3ds max)
    Windows

    Autodesk 3ds Max 是一款专业的三维建模、动画与渲染软件,广泛应用于建筑可视化、游戏开发、影视动画、广告设计和产品展示等领域。

    photoshop
    photoshop
    Windows、macOS 、 iPad

    Photoshop 2026 是 Adobe 推出的专业图像处理与视觉设计软件,支持 Windows、macOS 和 iPad 等平台,广泛应用于摄影修图、电商设计、平面海报、数字绘画及视觉合成等创作场景。

    Blender
    Blender
    Windows、macOS 和 Linux

    Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。