程序员是注定灭绝的一个物种?

简介:
程序员是注定灭绝的一个物种。

在一个来自于CGP Grey很精彩的视频中,他提出说,在不久的将来,大多数工作将会由机器替代。许多行业,从卡车司机到医生,在不久的将来将会 消失或发生巨大的变化,创造出一种全新的社会体制。但是,这样一来似乎有点说不通——既然未来的计算机程序将会大放光彩,那么势必需要更多的程序员。毕 竟,创建自动汽车、自动化的医疗诊断系统、小贩机器人等等,都需要程序员的参与,不是吗?

大错特错。

编程是什么?

编程是将理念(业务、法律、游戏、数学问题等)翻译成机器可以执行,其他人可以读取的代码的学科。归根结底,程序员不过是中间人而已,一个既能明白问题又能理解机器的中间人,因此,可将两者进行转换。仅仅如此而已。

伟大的程序员既 透彻了解他们编程的平台,又深刻理解问题域。创新迸发在域和技术甜美的交集中。这就是为什么(除其他事项外)如果让程序员(GitHub、Visual Studio、AWS等)去做大型产品和政府产品(Healthcare.gov,FBI’s Sentinel,等等)时,软件往往会变得糟糕又昂贵。

每个人都在编程

中间人最终会被淘汰。

编程在过去几十年间已经发展到了相当高的程度。高级编程语言和可用的在线信息将进入编程的门槛几乎降至为零。Scratch,一款来自于MIT有着数百万用户和上千万项目的儿童友好型的编程平台,已经可以媲美GitHub。现在,一个普通的程序员相较于20年前他的同行,需要理解的计算机体系结构和算法要少很多。

然而,这场革命近期似乎停滞不前了。我们最重要的工具——编程语言最近并没有发生太大的改变。大多数新的和流行的语言(如GO和Rust),只是逐渐改进了现有的范式,缺乏革命性的功能。目前最流行的编程语言是 Java(1995年),C(1973)和C ++(1983年),年纪都已经不小。这个行业却反而开始专注于开发支持工具和方法,来提高生产效率。我们已经太久没有创新了,所以,我强烈推荐大家看看 Bret Victor的演讲《The Future of Programming》。

这是什么意思?

S曲线

科技的发展是这样的:SSSSSSSSSSSSSS

如果要描述地更清楚点的话,它是这样的:

例如,IBM的第一个文字处理器程序(FORMAT)使用繁琐的穿孔卡片作为输入。在同一时间,最先进的打字机附带可替换字体、自动字符重复以及打印数学公式的能力。然而,却没有人使用打字机。本来位于打字机下方的文字处理器的曲线很快赶上并超越了打字机,打字机变成了过去时。

我相信,我们正处在一个类似的语言技术曲线上,正在等待一个新的时代的到来。

不需要程序员的编程语言

为了从系统中彻底淘汰程序员(中间人),我们需要让编程平台自身去“理解”问题,而不再需要编写代码。

这个想法并不是我首创的。 1963年,Ivan Sutherland在《Sketchpad》中就描述了这样一个系统,它可以解决给定的若干已定义约束的问题。Prolog(1972年),一种声明性 编程语言就是为了解决给定的一系列逻辑规则问题而创建的。它虽然依然是一种需要程序员的编程语言,并且并没有被广泛使用,但是它没有完全消失。比如,它以 及其他语言一起成就了IBM著名的超级计算机沃森(Watson)。

对于不需要程序员的编程语言,最伟大的例子是自然语言,如英语。从二进制代码到汇编,从C到Python,编程语言趋向于越来越类似自然语言。并且 作为现在一种推崇的方式,越来越多的程序员正在试图让他们的代码尽可能地接近于白话英文,以便于其他程序员和未来自己的理解。那么这个融合的限制是什么?

NLP

现在的自然语言处理(natural language processing,NLP)系统能够理解文本中的单词角色以及它们之间的相互关系。下面是来自斯坦福大学CoreNLP输出的一个例子:

我们可以发现,仅通过分析文本,该程序就能够识别同一个人的联合引用,并识别单词的角色。

下面说一个更有趣的,例如,此简单的业务规则:

注意CoreNLP是如何识别条件(if – buy)和对象(buy – iPhones)的。那么现在将这些翻译成计算机程序还有什么难的吗?

有越来越多的新闻文章是由机器人写的。最近如Apple、Google、Microsoft和亚马逊等公司已经相继开发出基于语音识别和自然语言处理的客户产品。这进一步加快了这一领域的研究。

如果你想亲自体验自然语言处理,那么我强烈建议Python的NLTK。

遗传编程

另一个有趣的研究领域是遗传算法。使用类似于自然选择的进程,遗传算法通过生产最佳的解决方案来解决问题。从设计喷气发动机到玩超级玛丽都是它的应用范围。

但是,遗传算法肯定不能生成程序代码,是吧?再好好想想。

一个名叫Kory Becker的开发人员,编写了一个可以生成Brainfuck代码来解决简单问题的程序。当然,这款软件的实用性非常有限,但这仅仅是个开始。正如他所说,更复杂的问题需要更多的计算能力,来找出最适合的解决方案。

例如,下面的代码,完全是由程序写的,可打印hello。

+-+-+>-<[++++>+++++<+<>++]>[-[---.--[[-.++++[+++..].+]],]<-+<+,.+>[[.,],+<.+-<,--+.]],+]
[[[.+.,,+].-

该字段称为遗传编程,并且也不是什么新生事物:

对遗传和进化的研究需要结合查找的基因和生存价值标准。(Alan Turing,《Intelligent Machinery》,1948年)

结合NLP和GP,我们就可以建立能理解用自然语言写的约束的系统,并实施可解决这些带有约束的问题的程序。

享受这段美好时光吧

我相信不是所有的编程工作都会被机器人取代,至少不会很快。比如说,那些需要高度优化的代码或使用高级算法的编程任务。其他的还有领域过于复杂的情 况。不过,我也相信,大量的程序员将会在未来几年被取代。我的预测是,这将急剧减少对程序员的需求,抵消对软件创造的不断增加的需求,并最终结束程序员的 高薪时代。

这是否令你很难过?享受这段美好时光吧,至少我们比货车司机和医生要幸运得多,并且有机会参与到这场革命中。


作者:小峰

来源:51CTO

相关文章
|
人工智能 数据可视化 数据挖掘
从传统软件到SaaS:为什么更多企业选择订阅制服务?
本文详细介绍了SaaS的概念、优势及其在现代工作中的重要性。SaaS是一种通过互联网提供云计算服务,用户无需安装和维护本地软件,只需通过网络访问软件即可。SaaS通过自动更新和维护、订阅制收费模式等方式降低成本,提供更便捷的服务。
6075 4
从传统软件到SaaS:为什么更多企业选择订阅制服务?
|
8月前
|
存储 弹性计算 Linux
2026阿里云购买云服务器流程及注意事项(新用户指南)
在数字化场景中,个人和企业部署网站、APP 常需要服务器支撑。相比逐渐淘汰的虚拟主机和成本较高的独立服务器,云服务器凭借弹性扩展、性价比高的优势成为主流。阿里云 ECS(弹性计算服务)地域节点多、配置灵活,但新手容易在地域、实例规格等选择上困惑。下面结合最新信息,梳理阿里云服务器的购买流程和配置要点,帮新手高效完成选购。
|
9月前
|
弹性计算 搜索推荐 异构计算
租用阿里云服务器一年要多少钱?38元、68元、99元和199元多个配置选择
阿里云服务器租用价格多样,轻量应用服务器38元起/年,ECS云服务器99元起/年,2核2G至8核32G多种配置可选,香港节点25元/月起,GPU服务器按需计费,活动优惠力度大,新老用户同享,详情可查官方活动页。
1619 8
|
人工智能 API 开发工具
蚂蚁百宝箱首届「插件开发大赛」,赛事持续至12月7日,最高赢取3W奖金!
首届「MCP插件开发大赛」由蚂蚁百宝箱联合通义灵码发起,聚焦企业场景,鼓励开发者基于AI Agent打造高效、创新的MCP插件。赛事持续至2025年12月7日,提供最高3万元现金奖励、免费AI工具支持及全程技术指导。参赛者可借助通义灵码开发,通过蚂蚁百宝箱发布部署,并在NeMo Agent Toolkit平台验证智能体效果。无论新手或专家,皆可实战练兵,推动AI技术落地,赢取丰厚回报。
699 0
|
9月前
|
供应链 监控 数据可视化
1688库存API:供应链可视化,避免断货风险!
本文介绍如何利用1688库存API构建供应链可视化系统,实现库存实时监控、安全库存预警与智能补货决策。通过API获取精准库存数据,打通ERP等系统,打造数据驱动的智能管理平台,有效避免断货风险,提升运营效率与客户体验。(238字)
|
6月前
|
移动开发 前端开发 Java
【HTML】HTML所有标签的用法及示例(一)
本文系统梳理HTML全部标签,涵盖文档结构、语义分区、文本格式、多媒体、表格、表单等11大类,每类均配基础用法与标准示例,可帮助大家快速掌握HTML核心语法与最佳实践。
|
域名解析 JSON API
【干货满满】如何处理requests库调用API接口时的异常情况
在调用 API 时,网络波动、服务器错误、参数异常等情况难以避免。本文提供一套系统化的异常处理方案,涵盖 requests 库常见异常类型、处理策略、实战代码与最佳实践,通过分类处理、重试机制与兜底策略,提升接口调用的稳定性与可靠性。
|
9月前
|
关系型数据库 API Go
初学者友好:Go-Kratos 集成 go-crud,Ent ORM CRUD 无需重复编码,轻松上手
本文介绍如何基于 `kratos-ent-example` 项目,集成 `go-curd` 工具简化 Go-Kratos 微服务中 Ent ORM 的 CRUD 操作。通过封装重复逻辑,实现增删改查代码的极简编写,帮助初学者快速上手微服务开发,提升效率,降低学习成本。
413 3
|
9月前
|
人工智能 数据可视化 数据挖掘
企业如何应用 BI 系统?从数据整合到决策落地全指南
本文解析BI系统核心价值,对比10款主流工具(如瓴羊Quick BI、Tableau、Power BI),涵盖选型、落地步骤及AI赋能,助力企业实现数据驱动转型。
|
9月前
|
缓存 Ubuntu Linux
Docker安装
本文介绍Docker在CentOS和Ubuntu系统中的安装与配置方法,涵盖卸载旧版本、配置yum源、在线/离线安装、启动服务、设置开机自启、运行HelloWorld测试及daemon.json配置详解,并提供阿里云镜像加速、日志管理、命令补全等实用操作步骤。

热门文章

最新文章