AI支持的自然语言编程

2023-11-10

——由开发新编程语言的讨论而突然想到的一些想法

今天在微信上看到了CSDN主办的一个讨论,是魏永明和许式伟两位老总谈新的编程语言,他们两人都是为数极少的中国创造的编程语言的创始人。难得!可贵!在听他们的讨论时,一个想法突然冒了出来。感觉这个想法有些意思,也可能有些用处,因此,在这里写一个小文,把这个想法和一些相关的想法表达出来,并且借微信公众号传播一下,希望有人感兴趣,希望有些用处。

先把主要点直接表达出来:既然要开发新编程语言,为什么不把人工智能用上,开发一个由人工智能支持的、用自然语言来编程的系统?我认为,这样可以极大提高编程效率,提升整体生产力,并且形成全新的茁壮的信息产业生态,进而形成一个强有力的新经济生长点。

那么这是什么东西呢?可以先看一个例子。假设我们要编一个最简单的程序,世界你好,就需要写出如下的源程序:

class HelloWorld {

public static void main(String[] args) {

System.out.println("世界你好!");

}

}

然后再编译,再执行。这是用Java编程语言来做。如果用C语言来做,就是:

#include <stdio.h>

int main() {

printf("世界你好!");

return 0;

}

C语言的程序也需要编译。如果是要用自然编程语言来做,就简单很多了:

打印“世界你好!”。

这就是用自然编程语言写的程序了。当然,仅这样还不够,还需要把这段程序提交给人工智能的翻译器,翻译器把这段程序翻译成可执行文件,并且返回可执行文件。简单说,就是用自然语言来编程(当然是用自然语言中的一个子集,而且遵循一定的规则),然后再借助人工智能的帮助来形成计算机可执行的文件。

自然会因此产生这些问题:1)有什么好处?2)可能做到吗?3)要怎么样才能做到?

首先谈好处。最直接的好处就是极大地提高了编程的效率。举例来说,如果是这样的工具得以普及,那么,曾经引起某城市的核酸检测爆炸的低级程序设计错误就根本不会出现。有了这样的工具,编程的门槛就极大降低了,生产率就极大提高了。不过,我这里就不对好处再多说什么,我相信有非常多的聪明人会在这方面发挥想象力。

其次,需要谈是否可能做到。就我目前的了解,世界上应该还没有这样一种技术产品,使得可以做自然语言编程。但是,这方面的讨论并不少。例如下面这个链接:

https://thenextweb.com/news/programming-natural-language-syndication

其标题是:Programming in ‘natural’ language is coming sooner than you think(用自然语言编程会来得比你想的快)。

既然世界上还没有(虽然有人讨论,恐怕也有人已经在做),而我们要做,那就是为天下先,那就需要思考技术上是否行得通。

说到底,自然语言和编程语言都是语言,都是交流的工具。理解自然语言的主体是人,理解编程语言的主体是机器。编程语言有非常严格的规定,不容许歧义,而自然语言就灵活很多,也强大很多,但是非常容易产生歧义等等不好的作用。编程语言只有经过严格和长期训练的人才能使用,而自然语言则人人都可以熟练使用。因此,如果要用自然语言来编程,就必须有一个翻译器在中间,先把自然语言翻译成编程语言,然后再把编程语言编译为机器可执行文件。因此,是否可行这个问题就转化为两个问题:1)是否有一个很好的编程语言可以来担当这个中间的角色?2)是否有一个翻译器可以把自然语言编程的程序翻译成编程语言的程序?我认为,这两者可行。

1)完全可以设计一个优秀的编程语言来胜任此中间角色。可以指出,因为并不需要人来用这个语言编写程序,这个编程语言就可以具备现行的各种编程语言(如CJava)不具备的优点,因为现行的语言的设计必然要照顾编程人员的特点,就会带来很多妥协,就会影响效率。因此,可以期望使得生成的目标程序有高效率,以及各种高品质。

2)这是一个人工智能做自然语言处理的问题,即在两个语言间做翻译。举例来讲,英语翻译为其他语言,如西班牙语,汉语等。根据现有的资料,对相对规整的语言,如西班牙语,机器翻译的准确率已经可以高达95%以上,而对规整程度低一些的语言,如汉语,机器翻译的准确率就低一些。但是,我们要做的是两个高度规整的语言之间的翻译,一个是具备一定规范的自然语言(因为我们将对语言的使用做一定的规范),另一个是完全规整的编程语言。这样看,做一个翻译器,使之到达100%的准确率,是完全可以做到的。

因此,我认为技术上是可行的,确切无疑可行。

再看要做些什么才能实现。具体的实现,当然是一个艰苦的历程,需要集合一个高效的团队来实现。这个团队起码应该有:1)有人来设计优秀的编程语言。这些人是计算机编程语言专家。2)语言学家,特别是中文语言学家,来设计一个语言使用规范,使得根据此规范,就容易编程。3)一个AI团队来建造人工智能的翻译器。在开发的过程中,肯定会有更多的困难出现。不过从目前的情况开始设想,有了这3个方面的人才集合起来,就可以开动工作了,就可以期望第一版产品问世。

最后,我们可以设想一下,如果这样的工具做出来了,整个信息工业的生态将极大改变。举例来说,手机上都有一个日历APP,其中可以设定各种闹铃来提醒用户做各种事情。但是,这样的APP,因为要适应全体用户,就并不好用。如果有了我们前面说的工具,用户完全可以用中文写如下的程序:

每日8时贝多芬闹铃,周日无闹铃,周三1730二胡闹铃,屏幕提示“准备跳舞”,设置控制界面,用于控制临时闹铃

然后提交这段程序到翻译器,翻译器则返回可执行程序(apk文件),这样用户就有了自己的APP,完全是个人定制化的。大家可以放开设想一下,当人们可以广泛使用这样的工具后,会有什么样的发展情况?如果全体专业人员都可以轻松容易地实现自然语言编程,那么他们知识,经验,数据可以获得什么样的发挥?整个社会生产力会有什么样的提高?

也容易想到,如果有一家公司,或者几家(只可能是很少几家),把这件事情做起来了,那么这些公司,就一定会成为执信息工业的牛耳的龙头公司。如果有中国公司,而不是美国公司来把这件事做起来了,那是什么情况?这是一个巨大的好机会。以前做不到,因为没有AI技术,现在恰好当时。

如果我还年轻许多岁,我不会写这些文字的。在想到这些想法后,我会立即考虑如何组建团队,如何筹集资金,如何申请专利,来具体地做这个事情。但是我已经不可能做这些事情了。我非常愿意看到这个方向的发展,特别是中国有人来把这个事情做成,因此,我把这些想法写出来。希望对有心人能够产生一些小作用。如果真能如此,幸甚!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AI支持的自然语言编程 的相关文章

  • 从关卡堆栈中获取相对比例的数学

    为这个可怕的标题道歉 我花了 10 分钟试图用一句话来解释这一点 但失败了 虽然提示这个问题的应用程序是用Java Android 编写的 但我认为它非常通用并且适用于任何语言 欢迎使用伪代码 或简单的英语 回复 我不确定是否应该标记所有通
  • 使用 python 脚本更改 shell 中的工作目录

    我想实现一个用户态命令 它将采用其参数之一 路径 并将目录更改为该目录 程序完成后 我希望 shell 位于该目录中 所以我想实施cd命令 但需要外部程序 可以在 python 脚本中完成还是我必须编写 bash 包装器 Example t
  • 在 django 中导入设置时出现奇怪的错误

    我有很多项目在 ubuntu 中使用 python2 7 和 virtualenv virtualenvwrapper 工作 在我的工作中 一些开发人员使用 macosx 和 windows 通常我像往常一样创建项目 django admi
  • 如何制作无限的jscrollpane?

    我之前已经实现过拖动滚动 但是创建无限滚动窗格的最佳方法是什么 当然不会有任何滚动条 我将实现拖动滚动 我想做的是在无限表面上实现动态加载 EDIT 当然 它实际上不会是无限的 我想问如何伪造它 您可以执行以下操作 AdjustmentCl
  • pandas groupby 操作缺少数据

    在 pandas 数据框中 我有一列如下所示 0 M 1 E 2 L 3 M 1 4 M 2 5 M 3 6 E 1 7 E 2 8 E 3 9 E 4 10 L 1 11 L 2 12 M 1 a 13 M 1 b 14 M 1 c 15
  • Eclipse/PyDev 中未使用导入警告,尽管已使用

    我正在我的文件中导入一个绘图包 如下所示 import matplotlib pyplot as plt 稍后我会在我的代码中成功使用此导入 fig plt figure figsize 16 10 然而 Eclipse 告诉我 未使用的导
  • 将图与热图(可能是对数)配对?

    How to create a pair plot in Python like the following but with heat maps instead of points or instead of a hex bin plot
  • 如何通过selenium中弹出的身份验证?

    我正在尝试使用带有 Selenium 的 Python 脚本加载需要身份验证的网页 options webdriver ChromeOptions prefs download default directory r download de
  • 获取多个同名请求参数

    我的问题是给定的代码 from flask import Flask request app Flask name app route def hello return str request values get param None a
  • Java ConcurrentModificationException [重复]

    这个问题在这里已经有答案了 当删除倒数第二个元素时 没有 ConcurrentModificationException List
  • 战争库中的罐子爆炸

    我们可以将分解的 jar 文件放入 war web inf 库中吗 它在 JBOSS 4 2 中对我不起作用 我收到以下错误并且无法部署应用程序 Caused by javax management RuntimeOperationsExc
  • 如何在引发异常时将变量传递给异常并在异常时检索它?

    现在我只有一个空白的异常类 我想知道如何在引发变量时给它一个变量 然后在 try except 中处理它时检索该变量 class ExampleException Exception pass 为其构造函数提供一个参数 将其存储为属性 然后
  • 无法映射 ftl 文件中的 jsonRequest 属性

    我想在 FTL 文件中映射下面的 json 文件市场和子市场字段 但是当我尝试下面的代码时 它没有映射 有人可以帮助我吗 我从 2 天开始就无法映射它 Json请求 ProcessOrderRequest prevalidationMode
  • tf.print() vs Python print vs tensor.eval()

    看来在Tensorflow中 至少有三种方法可以打印出张量的值 我一直在读here https www freecodecamp org news debugging tensorflow a starter e6668ce72617 an
  • AWS 将 MQTT 消息存储到 DynamoDB

    我构建了一个定期发送 MQTT 消息的 python 脚本 这是发送到后端的 JSON 字符串 Id 1234 Ut 1488395951 Temp 22 86 Rh 48 24 在后端 我想将 MQTT 消息存储到 DynamoDB 表中
  • Selenium - 等待网络流量

    我们将 Selenium 与 Java API 和一些 Javascript 用户扩展一起使用 我们在应用程序中使用了大量 AJAX 调用 我们的许多测试随机失败 因为有时 AJAX 调用完成得比其他时候慢 因此页面未完全加载 我们通过等待
  • H2 - (相当)长的 INSERT 失败,错误 42000

    H2 内存中 插入 错误 42000 尝试过版本 1 4 196 1 4 197 1 4 199 我还尝试在 H2 服务器 本地 上执行 INSERT 也失败 给出错误的行 抱歉 但出于安全原因 我无法生成更多 INSERT INTO tb
  • py2exe ImportError:没有名为 的模块

    我已经实现了一个名为 myUtils 的包 它由文件夹 myUtils 文件 组成 init py 和许多名称为 myUtils 的 py 文件 该包包含在 myOtherProject py 中 当我从 Eclipse 运行它们时可以找到
  • JMockit - 初始化问题

    当我使用以下测试时 我收到警告 警告 JMockit 是按需初始化的 这可能会导致某些测试失败 请检查文档以获取更好的初始化方法 这是我的测试实现 package test import static mockit Mockit impor
  • Integer.parseInt 引发的 NumberFormatException

    嘿 我在学校上编码课 但老师没有很好地解释 所以我们必须在网上查找我所做的信息 但我无法找到代码中的错误 你能帮我吗 char end s do System out println Tipo de boleto char boleto c

随机推荐

  • AcWing 172. 立体推箱子 BFS+状态表示

    题 代码参考了书上的 判断是否合法的函数写的好精简 这题理解了 就能很好的理解BFS 状态表示的理解 lie 0 立着 lie 1 横着躺着 lie 2 竖着躺着 j 0123分别表示左右上下 nextx i j 代表lie i时x往j方向
  • C++进阶:继承

    继承 面向对象的三大特性 封装 继承 多态 继承在实际中用的也不是太多 但必须能熟练使用 1 继承的概念 继承机制是面向对象思想中复用代码的一种手段 它能够在原有类的特性的基础上进行扩展 由此产生新的类 称为派生类 原有类称作基类 继承体现
  • mybatis 中的<![CDATA[ ]]>用法及说明

    作用 在mybatis ibatis等书写SQL的xml中比较常见 是一种XML语法 他的作用是 可以忽略xml的转义 在该标签中的语句和字符原本是什么样的 在拼接成SQL后还是什么样的 使用 select from user where
  • 如何自定义设置虚拟机的的IP地址

    如何自定义设置虚拟机的的IP地址 之前我们装虚拟机的时候是选择使用DHCP服务器帮我们自动分配 现在我们想固定一个IP给虚拟机 方便以后使用 1 首先我们需要知道虚拟机可用的网段是哪一段 在VMware的主页点击编辑 然后点击里面的虚拟网络
  • 【区块链】(四)之常见的加密算法

    我们经常在谍战片里看到 我军传递情报用电报发送 但敌人也可以截取电报 这就需要对电报发送的内容进行加密 当时常用的加密方式是通过一段密文 对情报进行加密 比如说是当天的日报 这种属于对称加密 差不多是DES加密算法 这里简单介绍几种 主要介
  • 对话生成模型中的条件变分自编码器(CVAE)

    废话不多说直接上模型 这是一个非常经典的对话生成模型 叫做HRED Hierarchical RNN Enconder Decoder 思路很简单 就是用一个RNN来建模前 j 1 j 1 j 1句话 再用一个RNN来建模第 j j j句话
  • 实验3:C++多态编程——实验任务五

    实验任务五 人 学生和教师 设计一个类people 有保护数据成员 age 年龄 整型 name 姓名 string 行为成员 两个构造函数 一个默认 另一个有参数 默认析构函数 void setValue int m string str
  • (七)nodejs写http服务

    1 加载http模块 var http require http 2 创建http服务对象 var server http createServer 3 监听request请求事件 server on request function re
  • c语言作业:一帮一

    一帮一学习小组 是中小学中常见的学习组织方式 老师把学习成绩靠前的学生跟学习成绩靠后的学生排在一组 本题就请你编写程序帮助老师自动完成这个分配工作 即在得到全班学生的排名后 在当前尚未分组的学生中 将名次最靠前的学生与名次最靠后的异性学生分
  • Java课题笔记~ SpringMVC的四种跳转方式

    默认的跳转是请求转发 直接跳转到jsp页面展示 还可以使用框架提供的关键字redirect 进行一个重定向操作 包括重定向页面和重定向action 使用框架提供的关键字forward 进行服务器内部转发操作 包括转发页面和转发action
  • opencv(C++) 视频处理,通过三通道像素值平均 将视频分辨率缩小为原来的一半

    项目要求 将一个 1920 1080 的视频压缩为 960 540 的视频 帧率不变 将每个 2 2 相邻像素点的像素值求平均 变成一个新的像素点 即 2 2 的平均池化 程序中很多代码都来源于 OpenCv 4 快速入门 方法一 分别取出
  • vs2019中 当前上下文中不存在名称“ViewBag”和不存在“model”的解决思路

    如果你已经改了Web config的相关配置 还是没有解决这个问题 你可以尝试保存并退出当前的vs 然后重新启动你的项目 本人通过许多途径找解决的办法 结果还是没有解决 最后还是通过重新启动项目解决的
  • 金融和大模型的“两层皮”问题

    几年前 我采访一位产业专家 他提到了一个高科技到产业落地的主要困惑 两层皮 一些特别牛的技术成果在论文上发表了 这是一层皮 企业的技术人员 将这些成果产品化 商品化的时候 可能出于工程化的原因 会做一些简化 这是另一层皮 两层皮之间 是有g
  • mvc html类的作用域,SpringMVC使用session保存数据以及applicationContext作用域

    使用session保存数据 session是一次会话 里面可以有多次请求 1 HttpSession session 1 1 index jsp Hello World 1 2 success jsp Created by IntelliJ
  • 机器人地面站-[QGroundControl源码解析]-[10]-[Comm]

    前言 因为项目进度排期较紧 并且觉得之前在代码中添加注释的方法有些生硬用处不大 所以从本片开始 着重介绍类的内容和功能 只对重要代码进行粘贴 Comm文件夹下有众多的类 一 LinkConfiguration 这个类处理链路的配置 查看属性
  • 机器学习之PCA算法

    目录 PCA算法 PCA目标 PCA原理推导 基于最大可分性推导 基于最近重构误差推导 PCA算法流程 PCA优点 PCA缺点 基于PCA的人脸识别 PCA算法 PCA 即主成分分析 Principal Component Analysis
  • 校招——2021多益网络软件开发笔试和面试

    多益网络软件开发笔试和面试 要毕业了 临到五月才开始才开始找工作 一方面由于前期做毕设和搞论文拖到现在 期间在二月份就开始有点压力迫切想找工作 越到后面反而平静了好多 所谓破罐子破摔 一开始没想投多益的 是刚好身边有朋友进了多益 他是从三月
  • 代码随想录刷题day13

    239 滑动窗口最大值 给你一个整数数组 nums 有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧 你只可以看到在滑动窗口内的 k 个数字 滑动窗口每次只向右移动一位 返回 滑动窗口中的最大值 示例 输入 nums 1 3 1
  • angularJS 转换UTC时间及DateFormat问题

    filter date milliSec yyyy MM dd HH mm ss 在angularJS 中 date filter会把时间转换为本地时间 即会按照电脑右下角的时间设置的时区来转换 dateObject getFullYear
  • AI支持的自然语言编程

    由开发新编程语言的讨论而突然想到的一些想法 今天在微信上看到了CSDN主办的一个讨论 是魏永明和许式伟两位老总谈新的编程语言 他们两人都是为数极少的中国创造的编程语言的创始人 难得 可贵 在听他们的讨论时 一个想法突然冒了出来 感觉这个想法