当前位置: 首页 > news >正文

ChatGPT时代,我们可能站到了自然语言编程的大门口

ChatGPT大火,我现在有种感觉:我们可能站到了自然语言编程的门口,一脚下去,也许能把门踹开。 

当然,也可能会踢到一块铁板。 

回顾我们的编程之路,基本上就是一个编程门槛不断降低的历史。 

最早的一批前辈们通过手工插拔电路的方式把程序输入计算机,每次编程都得好几个小时,甚至好几天。 

0d58e5ebbe112f7c340f7c31b36cd59c.png

冯诺依曼架构出现后,程序可以存储在内存中,随意变化,一下子方便了很多,但是编程依然是非常低级的汇编,上古的大神们用汇编写Unix等操作系统、编译器,这时候程序员是珍稀动物,编程门槛太高了。

76486822324c0beb4772a31a0642d043.png

Fortran/COBOL/BASIC/C/C++/Pascal等高级语言的出现让编程难度降了一个等级,再加上80年代PC行业的爆发,编程行业开始繁荣。 

到了90年代,Java、Python、Ruby、JavaScript等编程语言,让程序员更加远离硬件,远离内存管理,可以把目标聚焦到业务逻辑上。 

进入21世纪,企业为了应对快速的市场变化,对信息化的需求越来越高,迫切需要快速地实现业务,推向市场,于是low code ,no code 又形成一个巨大的浪潮,在界面上,通过拖拽的方式就可以编程了。 

再往下走一步,大家都非常明白,那就是自然语言编程。

在之前自然语言编程大家都觉得是挺不可思议的事情,因为这需要AI理解自然语言,并且能准确地输出代码,这是一件非常难的事情。

但是ChatGPT、通义千问等大模型出现以后,我们突然发现,自然语言编程出现了重大突破,我们可以告诉AI需求,让AI来生成代码了! 

我们可以告诉AI:

我需要实现一个Product的RESTful的接口,用SpringBoot来实现,Product的属性包括id,name,description, imageUrl。

在几秒内,AI就可以迅速生成从最上层到最底层的代码,更让人震撼的是,它还支持微调的能力。

我们可以说:“数据库访问用MyBatis实现。”AI可以迅速把数据库访问代码改成MyBatis。

当我们说:“把imageUrl改为image_url”,AI 马上可以找到所有相关代码,把imageURL改过来。

这种微调的能力,远远超过了之前常见的代码生成器,AI似乎准确地理解了你的要求,对代码做了精确的修改。

当然,对于某些极端的情况,AI会有些考虑不周,还依赖程序员的洞察力。所以我经常说AI能生成95%的可运行代码,剩下的5%需要则依赖程序员的功力。

这还只是生成代码,程序员还需要把代码从聊天窗口复制到IDE中去运行调试。说实话,这个过程也挺烦人的。

钉钉刚刚发布的AI生成应用场景突然又让我看到了新的方式,在通义千问这个大模型的支持下,它不仅仅是用自然语言生成代码,而是直接生成应用,一键部署,然后直接在钉钉群聊里运行起来!

它甚至通过拍照的方式就可以生成一个应用,让输入的方式不再只有文字:

19e4f6944eb538b9c8d995429af12c6a.png

GPT-4在之前的演示中,也展示了根据图片生成代码和网页的能力(这个能力现在没有正式发布,让大家使用),但是钉钉已经可以直接生成可以运行的低代码应用,比如常见的工单管理系统、门店巡检系统、客户信息管理系统都可以交给AI去帮我们开发出来,这实在是太棒了。 

如果自动生成的应用程序不满足要求,也可以通过继续对话让AI帮你修改应用,添加选项、删除字段。

58b6d3a57647dad5df4a35f29df8fe32.gif

拍照生成应用这个微软也可以做到,但我发现钉钉还剧透了一个很棒的能力,就是智能推荐选项字段,帮你补全。这个能力虽然看起来简单,但是技术上实现起来难度应该很大,需要给大模型输入大量的行业know how。

钉钉把自家宜搭低代码的应用模板给大模型学习,就等于是把各行各业(制造、医疗、建筑等)及各类高频业务场景(人事行政、财务报销、生产制造等)都喂给了AI,构建了丰富的领域业务数据。

有了领域业务知识,大模型在生成应用时,对业务人员提出的需求理解就会更加准确,生成的应用也更加精准。

这种能力对于不懂代码的业务人员是非常便利、非常友好的,他们不需要再依赖程序员去实现类似的需求,自己分分钟就可以把应用开发出来。

这类拍照或者自然语言生成的应用,结合我去年给大家介绍过的钉钉酷应用能力,还可以实现一键把应用部署在群聊里。通过动态卡片的方式,让业务人员在一个群里就能完成人机交互,聊着天就把事儿给办了。

看到这里,你肯定会有这个疑问:AI都支持自然语言编程了,这么强大了,它能完全替代程序员吗?

对于初级程序员来说,如果只会做CRUD,AI的威胁非常大,因为明确的、有规则的需求对于AI来说是小菜一碟,分分钟搞定。

对于高级程序员来说,在编程中也少不了增删改查,这时候AI就是一个非常好的帮手,因为对于繁琐的、重复的代码工作,都可以交给AI来完成。在这个过程中,高级程序员只要去“指导”它,“引领”它就可以了,减少了无效的时间浪费。

高级程序员可以把自己的精力放在更需要创造力的工作上来,对于现在的AI来说,让它直接生成巨型的复杂系统,它还是力不从心的。

比如我们告诉AI: 

我要创建一个电子商务系统,包括用户管理,商品管理,订单管理,仓储管理等常见的功能,需要支持秒杀活动,优惠券,积分系统等功能,帮我把代码都写出来。 

AI是绝对不可能给你实现的,因为这样的需求太模糊,如果用流程图,界面图,Use Case等把这些大系统的需求描述出来,没有几百页是不可能的。即使你把这几百页文档都灌给AI,它也不可能给你完整地实现了。

高级程序员需要出马,把大型系统进行分解,形成各个模块,然后让AI介入生成代码,生成应用。

可以看出,自然语言编程已经发展到了一个非常高的层面,可以成为程序员提升效率的巨大助力。

在未来,没有纯粹的码农,每个人都需要深入理解自己所面临的挑战,并通过智能化的生产力工具去快速解决问题。

钉钉发布会的几个场景演示,虽然只是工作智能化的一小步,却展示出了远超“通过聊天生成代码的能力”,可以直接创建、部署,在群里运行应用,真是非常方便。

工具的价值就在于能否更好地服务于人,用机器提升人的生产力。

我们可以畅想,随之智能化的进一步发展,开发应用的能力会不会就像用Word一样,变成一种普遍的能力呢?这是一件特别有想象力的事情,谁都难以预料,只能交给时间来证明了。

相关文章:

ChatGPT时代,我们可能站到了自然语言编程的大门口

ChatGPT大火,我现在有种感觉:我们可能站到了自然语言编程的门口,一脚下去,也许能把门踹开。 当然,也可能会踢到一块铁板。 回顾我们的编程之路,基本上就是一个编程门槛不断降低的历史。 最早的一批前辈们…...

深入理解AMQP协议

一.AMQP 是什么 AMQP(Advanced Message Queuing Protocol, 高级消息队列协议)是一个提供统一消息服务的 应用层标准高级 消息队列协议,是 应用层协议的一个 开放标准,为面向消息的中间件设计,是一个进程间传递 异步消息…...

大型体检管理系统源码:适用于大中型医院或独立体检中心

一套专业的体检管理系统源码,是医院、体检中心等单位开展体检业务的得力助手。它将以往人工操作的健康体检过程所得到信息转换成全信息化的电脑管理,使体检过程更为流畅、更有条理,更加便于管理,从而实现体检业务管理的自动化、信…...

ACM 1000 | 简单的a+b

文章目录 0x00 前言 0x01 题目描述 0x02 问题分析 0x03 代码设计 0x04 完整代码 0x05 运行效果 0x06 参考文献 0x07 总结 0x00 前言 C 语言网不仅提供 C 语言,还包括 C 、 java 、算法与数据结构等课程在内的各种入门教程、视频录像、编程经验、编译器教程及…...

系统分析师选择题笔记

目录 1、知识产权与标准化 1.1 保护范围与对象(★★★★) 1.2 保护期限(★) 1.3 知识产权人确定(★★★) 1.4 侵权判断(★★★) 1.5 标准的分类(★) 1.6 标准代号的识别(★) 2、系统配置与性能评价 2.1 系统性能概述 2.2 系统性能(性能指标)(★…...

MySQL隐式类型转换

当运算符与不同类型的操作数一起使用时,会发生类型转换以使操作数兼容。有些转换是隐式发生的。例如,MySQL会根据需要自动将字符串转换为数字,反之亦然。 转换规则 如果一个或两个参数都为NULL,则比较结果为NULL 。但是相等比较…...

IT知识百科:什么是SSID?

一、什么是SSID SSID(Service Set Identifier)是无线网络中的一个重要概念,它是一个用于标识无线局域网(WLAN)的名称。SSID可以看作是无线网络的名称,类似于有线网络中的网络名称或者路由器的名称。在无线…...

OpenAI-ChatGPT最新官方接口《从0到1生产最佳实例》全网最详细中英文实用指南和教程,助你零基础快速轻松掌握全新技术(十一)(附源码)

Production Best Practices 生产最佳实例 前言Introduction 导言Setting up your organization 设置您的组织Managing billing limits 管理计费限额API keys API密钥Staging accounts 演示账户 Building your prototype 构建您的原型Additional tips 其它技巧 Techniques for i…...

2023 IT市场权威榜单|美创数据库防火墙斩获“新一代信息技术创新产品”

4月20日,由赛迪顾问主办的“2023 IT市场权威榜单”评选结果正式发布,美创数据库防火墙斩获新一代信息技术创新产品! 美创数据库防火墙是一款抵御并消除由于应用程序业务逻辑漏洞或者缺陷所导致的数据库安全问题的专业级数据库安全产品&#x…...

30个超级有用的JavaScript单行代码

在这篇文章中,我列出了一个系列的 30 个 JavaScript 单行代码,它们在使用 vanilla js(≥ ES6)进行开发时非常有用。它们也是使用该语言在最新版本中为我们提供的所有功能来解决问题的优雅方式。 我将它们分为以下5大类&#xff1…...

【GitLab私有仓库】在Linux上用Gitlab搭建自己的私有库并配置cpolar内网穿透

前言 GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的Web服务。 Gitlab是被广泛使用的基于git的开源代码管理平台, 基于Ruby on Rails构建, 主要针对软件开发过程中产生的代码和文档进行管理, Gitlab主要针对…...

诊断CAPL自动化(1)—— CANoe自带的诊断工程分析

🍅 我是蚂蚁小兵,专注于车载诊断领域,尤其擅长于对CANoe工具的使用🍅 寻找组织 ,答疑解惑,摸鱼聊天,博客源码,点击加入👉【相亲相爱一家人】🍅 玩转CANoe,博客目录大全,点击跳转👉 📘前言 🍅 学习CANoe,官方的实例工程就是最好的学习模板,对于初学者,…...

【dp】最长递增子序列

文章目录 方法一:动态规划方法二:贪心 二分查找构造最长递增子序列 方法一:动态规划 dp[i]:末尾元素为arr[i]的最长子序列的长度 从0遍历到i - 1,若遍历到的元素小于当前值arr[i],表示当前值arr[i]可以和…...

docker容器:Docker-Compose

目录 一、Docker-Compose 1、Docker-Compose使用场景 2、Docker-Compose简介 3、Docker-Compose安装部署 4、YML文件编写注意事项 5、Compose配置常用字段 6、 Docker Compose 常用命令 7、Docker Compose 文件结构 8、docker Compose撰写nginx 镜像 9、docker Compos…...

如何使用DNS实现融合CDN功能

将托管DNS解决方案与CDN配对可为您的网站提供额外的性能、可靠性和灵活性。 域名系统(DNS)是一种用于计算机、服务或连接到Internet或专用网络的任何资源的分层分布式命名系统,它将各种信息与分配给每个参与实体的域名相关联,它基…...

有关实现深拷贝的四种方法

深拷贝与浅拷贝: 在开始之前我们需要先了解一下什么是浅拷贝和深拷贝,其实深拷贝和浅拷贝都是针对的引用类型,JS中的变量类型分为值类型(基本类型)和引用类型;对值类型进行复制操作会对值进行一份拷贝,而对…...

Mysql 高可用部署实践

mysql主从是如何备份的? 在MySQL主从复制架构下,备份通常需要在主库和从库上分别进行。 主库备份: 在主库上进行备份时,可以使用mysqldump等命令生成SQL文件,并将其保存到本地或者远程服务器上。备份过程中需要注意以下几点&a…...

IEEE-TMI:张孝勇团队开发小鼠精细脑结构自动分割的深度学习算法

近日,复旦大学类脑智能科学与技术研究院青年研究员张孝勇课题组联合德国亥姆霍兹慕尼黑研究中心,在医学图像处理领域顶尖期刊《IEEE医学影像汇刊》(IEEE Transactions on Medical Imaging,TMI) 发表了题为《MouseGAN:用于小鼠大脑…...

八股文之面向对象和面向过程的区别

面向对象(Object-Oriented)和面向过程(Procedural)是两种不同的编程思想。 面向过程是以任务为中心,将程序分解成一系列步骤,在每个步骤中定义一个函数来完成特定的任务。它主要关注程序执行的过程和如何组…...

SpringBoot使用Redis实现分布式缓存

✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…...

【Python】 -- 趣味代码 - 小恐龙游戏

文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...

Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例

使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件,常用于在两个集合之间进行数据转移,如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model:绑定右侧列表的值&…...

Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件

今天呢,博主的学习进度也是步入了Java Mybatis 框架,目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学,希望能对大家有所帮助,也特别欢迎大家指点不足之处,小生很乐意接受正确的建议&…...

从零实现STL哈希容器:unordered_map/unordered_set封装详解

本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说&#xff0c;直接开始吧&#xff01; 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...

MySQL 8.0 OCP 英文题库解析(十三)

Oracle 为庆祝 MySQL 30 周年&#xff0c;截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始&#xff0c;将英文题库免费公布出来&#xff0c;并进行解析&#xff0c;帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...

dify打造数据可视化图表

一、概述 在日常工作和学习中&#xff0c;我们经常需要和数据打交道。无论是分析报告、项目展示&#xff0c;还是简单的数据洞察&#xff0c;一个清晰直观的图表&#xff0c;往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server&#xff0c;由蚂蚁集团 AntV 团队…...

高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数

高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数 在软件开发中,单例模式(Singleton Pattern)是一种常见的设计模式,确保一个类仅有一个实例,并提供一个全局访问点。在多线程环境下,实现单例模式时需要注意线程安全问题,以防止多个线程同时创建实例,导致…...

MySQL 知识小结(一)

一、my.cnf配置详解 我们知道安装MySQL有两种方式来安装咱们的MySQL数据库&#xff0c;分别是二进制安装编译数据库或者使用三方yum来进行安装,第三方yum的安装相对于二进制压缩包的安装更快捷&#xff0c;但是文件存放起来数据比较冗余&#xff0c;用二进制能够更好管理咱们M…...

CRMEB 中 PHP 短信扩展开发:涵盖一号通、阿里云、腾讯云、创蓝

目前已有一号通短信、阿里云短信、腾讯云短信扩展 扩展入口文件 文件目录 crmeb\services\sms\Sms.php 默认驱动类型为&#xff1a;一号通 namespace crmeb\services\sms;use crmeb\basic\BaseManager; use crmeb\services\AccessTokenServeService; use crmeb\services\sms\…...

上位机开发过程中的设计模式体会(1):工厂方法模式、单例模式和生成器模式

简介 在我的 QT/C 开发工作中&#xff0c;合理运用设计模式极大地提高了代码的可维护性和可扩展性。本文将分享我在实际项目中应用的三种创造型模式&#xff1a;工厂方法模式、单例模式和生成器模式。 1. 工厂模式 (Factory Pattern) 应用场景 在我的 QT 项目中曾经有一个需…...