网站搜索

为什么道德正成为人工智能最大的挑战


ChatGPT 可以使用 20 世纪 50 年代的语言或编写自己代码的语言之一进行编程吗?我们沿着记忆的小巷漫步寻找答案。

1968 年 10 月 4 日,波士顿拉丁学校的一名教师使用 IBM 1130 计算机向学生教授 Fortran。 

几周前,我尝试使用 ChatGPT 用十几种最流行的编程语言编写相同的例程。但作为一名编程语言极客,我想知道 ChatGPT 能走多远。它会用 20 世纪 50 年代的语言编程吗? 它会用使用自己的字符集的语言进行编程吗?它可以用编写其代码的语言之一来编写代码吗?

因此,我开始投入其中。我使用过许多我在这里重点介绍的语言,因此我将回顾一下我的记忆,并包括一些关于我使用过的语言的经历的故事。

虽然我还没有运行代码本身,但我已经通读了所有生成的程序。大多数看起来都是正确的,并显示适当的指标,告诉我们所呈现的语言是我要求的语言。

我告诉你这一点是因为所有屏幕截图上的标题都是错误的。大多数都列为 SQL。由于某种原因,BAL 显示为 VBNet,Prolog 被列为 Rust。 ChatGPT 上次没有出现此错误,但今天出现了,对于此处显示的所有语言。

接下来,让我们深入探讨一下。

福特兰语言

Fortran(或当时所描述的 FORTRAN)代表公式翻译。它主要是为科学和工程计算而开发的。尽管它的历史可以追溯到 20 世纪 50 年代,但它通常是 20 世纪 70 年代和 80 年代工程专业学生教授的第一语言。

对我来说,这是继 BASIC、PDP-8 汇编语言和 PDP-8 二进制语言之后的第四种编程语言(是的,我编写了二进制代码,这样我就可以在早期小型计算机的前面板上切换它)。我爸爸慷慨地开车送我去纽瓦克工程学院(现在的新泽西理工学院),这样我就可以在我还是高中二年级学生的时候参加他们一年级的编程课程。

Fortran 从来都不是最受欢迎的,尽管它可以完成大多数以计算为导向的工作。 Fortran 的一个变体至今仍在使用,但它相当局限于专业科学工作,因为许多其他现代语言都可以进行 Fortran 级别的分析,而且做得更好。

在这里,由于使用了 implicit 关键字,看起来 ChatGPT 正在描述用 Fortran-77 变体编写的代码。

尽管标签是错误的,但代码是 Fortran。

科博尔

我是一名十几岁的 COBOL 程序员。当时我并不了解 COBOL,但在 1980 年左右的某个时候,我在新泽西州丹维尔的国际纸业东北地区数据中心看到了一则招聘 COBOL 程序员的广告。距离我父母家大约 40 分钟路程,我需要一份暑期工作。我一安排好面试时间,就跑到当地的书店,花了一个周末的时间仔细阅读我能找到的所有 COBOL 阅读材料。

COBOL 旨在用于面向业务的处理。如今,同一类型的客户是 SAP 或 Salesforce 用户。但是,正如您从下面的 COBOL-88 代码中看到的那样,COBOL 是实用的,但它肯定不优雅。

事实证明,他们想要一名全职员工。但由于我在他们的测试中取得了好成绩(显然我周末的学习成绩超过了申请的专业人士的分数),他们决定让我在暑假工作。说存在文化不匹配是轻描淡写的。那是微型计算机的早期发展时期(想想个人电脑之前的时代),我对这些东西感到很自豪。与此同时,这些人都热衷于西装革履和巨型数据中心。我几乎立刻就得到了“麻烦”这个绰号。嘿嘿,我还是个孩子呢。

对我来说,决定性的时刻到来了,公司一位经验丰富的程序员把我拉到一边解释,我引用了这句话:“COBOL 就是生命。”我牢记了这个信息,并决定我不希望我的生活与 COBOL 有关。那年夏天是我最后一次用 COBOL 编程。

尽管标签是错误的,但代码是COBOL,可能是COBOL-88。

RPG(报告程序生成器)

不,这不是火箭推进式手榴弹或角色扮演游戏。 RPG 是一个用于创建报告的程序。您可以看到如下所示的两个版本之间语言(以及一般的计算机语言思维)的演变。 RPG II 的历史可以追溯到 20 世纪 50 年代末。 RPG IV 在 20 世纪 90 年代进行了更新,并且更加现代(但仍然绝对过时)。

在大学期间,我确实为 AS/400 编写了一些 RPG III 程序作为副业,但我从来没有密切关注过它。

两款角色扮演游戏,标签均不正确。

口齿不清

我对 Lisp 有着长期的热爱。 Lisp,以 LISt Processor 命名,有时被描述为“许多平淡无味的愚蠢括号”。出于某种原因,这些括号在我的脑海中响起。 Lisp 是我进入 AI 编程的入门药物,正如我们从 ChatGPT 的语言处理中了解到的那样,知识可以表示为字符串或列表。

早在 20 世纪 80 年代,我是基于 RISC 的 Common Lisp 实现的产品经理,并在其中编写了一段时间的代码。基于 ChatGPT 生成的 defungreetinglet 语法,下面的代码看起来也是 Common Lisp,是 John McCarthy 在 20 世纪 50 年代末实现的原始 Lisp 的后来变体。麦卡锡是人工智能研究的创始人之一,因此人工智能用他的语言编写是再合适不过的了。

标签错误。那所以不是SQL。这是 Lisp。

大陵五

ALGOL(ALGOthymic Language)走在了时代的前面。它允许将函数作为参数传递,并允许使用递归。这是现代编程的两个关键组成部分,在 Fortran 和 COBOL 等流行语言中是不存在的,而这些语言在 ALGOL 推出的同时也很流行。

如果说 Fortran、BASIC 和汇编语言教会了我自上而下的编程,那么 ALGOL 教会了我如何构建代码。它是一种基础语言,为我使用 C、Pascal、Java、JavaScript 以及我们今天使用的大多数现代结构化语言奠定了基础。

不,那不是 SQL。这是阿尔戈尔。

模拟

正如您可能想象的那样,Simula 是为模拟和建模而开发的。与 ALGOL 一样,Simula 也走在时代的前面,支持对象和类的使用。面向对象编程从此成为当今许多最有效的编程语言的基础。

关键字 OUTFIX 的使用告诉我 ChatGPT 可能在 Simula-67 中编写了以下代码。

根本不是 SQL,您正在查看一些 Simula。

BAL(IBM 360/370 汇编语言)

BAL 代表“基本汇编语言”,是 20 世纪 70 年代和 80 年代大型 IBM 机器的汇编语言。汇编语言被认为比“高级语言”更“低级”,这意味着各个指令和关键字映射到各个处理器指令。在高级语言中(就像我们今天使用的大多数语言一样),该语言通常与底层机器架构相距甚远,并且其设计更多是为了提高编程效率而不是有效使用硬件。

我在大学学习了一个学期的 BAL。很艰难。教授大部分时间都是背对着学生站着,一边单调地咕哝着讲课,一边在黑板上不停地写着字。我坐在后排,旁边坐着一个名叫劳拉的女孩。有一天,劳拉和我决定偷偷溜出后窗去喝咖啡。一旦我们拿到了java,我们就爬回了窗户。教授从来没有注意到。

我们中的任何一个人都通过了这真是一个奇迹,但也难怪我们几乎没有人选择 BAL 编程作为我们选择的编码武器。

这次,AI 给代码贴上了 VBNET 标签。当然不是。是巴尔。

APL

APL(即编程语言)是另一种编程语言。 APL 最引人注目的方面之一是它的某些运算符和编码使用非标准字符集。您可以在下图中看到这一点。这些小字形是 ChatGPT 能够从其使用的字体中提取出来的,但 APL 设计为使用 APL385 Unicode 字体,这是 APL 编程所独有的。

由于它具有简洁的语法,并且可以很好地管理大型数据集,因此它被用于相当多的科学、金融和分析项目。

这不是 SQL。它甚至不使用所有 ASCII 字符。这是 APL,它有自己的鼓手。

序言

Prolog(源自短语“逻辑编程”)是另一种专注于人工智能的语言。 Prolog 是一种声明性语言,列出规则和条件,然后对这些声明运行查询。根据 ChatGPT 的说法:

Prolog 是 ChatGPT 开发中使用的编程语言之一,专门用于生成文本。它用于 Prolog-to-English 模块,该模块将 Prolog 中的逻辑形式翻译成自然语言句子。

Prolog 是一种有趣的语言,但它不是 Rust。这是普罗格。

小话

Smalltalk 很特别。它是在 Xerox PARC 开发的,该研究实验室影响了鼠标和窗口环境的开发。它融合了 Simula 在面向对象编程方面的一些创新,并且更进一步。它也是最早积极使用基于 GUI 的交互式编程环境的语言之一。当今许多顶级语言,包括 Java、Python 和 Ruby,都深受 Smalltalk 的影响。

我只是涉足 Smalltalk,主要是为了了解它。当时我住在硅谷,认识了 Smaltalk 的设计者,他们后来将 ParcPlace Systems 分拆出来,试图在施乐公司的呆板之外将 Smalltalk 商业化。我对在帕洛阿尔托一家破旧的烧烤店边吃排骨和凉拌卷心菜边谈论编程理论有很多美好的回忆。

与我一起工作的计算机公司的一位副总裁试图说服我与他一起创办一家公司,将 Smalltalk 应用到企业市场,但我还没有被启动的缺陷所困扰。 Smalltalk 从未成为一个市场。尽管如此,尽管我对自己的人生道路感到高兴,但有时我也会想,如果我接受了他的提议,会发生什么。

最后,这也不是 SQL。这是小话。

我有想法

我没有运行此代码,而且由于我最近对这些语言的熟悉程度不如对 PHP 和 JavaScript 的熟悉程度,因此我无法确定我的视觉审查是否能保证上面显示的代码能够成功运行。正如我们本周早些时候在探索巴德的新编程技巧时所看到的那样,在代码不工作的情况下编写代码是可能的。

我们确实知道每个示例中至少存在一个错误:标头错误。因此,虽然人工智能用一堆相对晦涩的语言生成代码的能力令人难以置信,但不要假设它正确地完成了整个工作。

如果您决定将 ChatGPT 编程合并到您的工作流程中,您将需要检查、测试和调试它生成的代码,就像您雇用某人为您编写一些基本例程一样。

相关文章