Golang开发者是否将转向更高级或自然语言级别的编程语言?

Golang开发者是否将转向更高级或自然语言级别的编程语言? 您好,

《Java 编程教程》第九版中提到,程序员不再使用计算机能直接理解的数字串,而是开始使用类似英语的缩写来表示基本操作:

1.5 机器语言、汇编语言和高级语言

程序员使用各种编程语言编写指令,有些可直接被计算机理解,有些则需要中间翻译步骤。目前有数百种此类语言正在使用,它们可分为三种基本类型:

  1. 机器语言
  2. 汇编语言
  3. 高级语言

任何计算机都只能直接理解其自身的机器语言,这是由其硬件设计定义的。机器语言通常由数字串(最终简化为1和0)组成,这些数字串指示计算机一次执行其最基本的操作。机器语言是机器相关的(特定机器语言只能用于一种类型的计算机)。这样的语言对人类来说很繁琐。例如,下面是一个早期机器语言程序的片段,用于将加班工资加到基本工资中并将结果存储在总工资中:

+1300042774
+1400593419
+1200274027

对于大多数程序员来说,用机器语言编程实在太慢且乏味。程序员不再使用计算机能直接理解的数字串,而是开始使用类似英语的缩写来表示基本操作。这些缩写构成了汇编语言的基础。开发了称为汇编程序的翻译程序,以计算机速度将早期汇编语言程序转换为机器语言。以下汇编语言程序片段同样将加班工资加到基本工资中并将结果存储在总工资中:

load basepay
add overpay
store grosspay

尽管这样的代码对人类更清晰,但在翻译成机器语言之前,计算机是无法理解的。随着汇编语言的出现,计算机的使用迅速增加,但程序员仍然需要使用许多指令来完成即使是最简单的任务。为了加速编程过程,开发了高级语言,其中可以编写单个语句来完成实质性任务。称为编译器的翻译程序将高级语言程序转换为机器语言。高级语言允许您编写看起来几乎像日常英语并包含常用数学符号的指令。用高级语言编写的工资程序可能包含单个语句,例如:

grossPay = basePay + overTimePay

程序员是否会开始使用更高级的编程语言或人类语言级别的编程语言,而不是使用高级语言?

我可能会创建更高级的编程,换句话说,我可能会创建人类语言级别的编程。


更多关于Golang开发者是否将转向更高级或自然语言级别的编程语言?的实战教程也可以访问 https://www.itying.com/category-94-b0.html

9 回复

请原谅我要坐着等这件事发生。

更多关于Golang开发者是否将转向更高级或自然语言级别的编程语言?的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


人类语言的难题与魅力在于其相当模糊的特性。若要减少这种模糊性,就必须严格限定只允许使用某些明确定义的表达结构。我认为至少在不久的将来,计算机还无法根据规范或设计来生成程序。

在代数发明之前,人们确实用自然语言书写公式,但那样既难以理解又存在歧义。因此,自然语言并非总是最佳的沟通媒介。

以上只是我的个人浅见,若英语表达欠佳还望见谅。

正如你所说,机器在发现歧义时可以要求澄清,但对人类而言检测歧义并非易事,而我们编写程序的目的正是为了让人类能够阅读并改进它们。

编写机器能理解的程序非常简单,编程的复杂性在于编写出其他人类能够理解并轻松改进的程序。这正是人类语言的不足之处,因为它可能隐藏了人类甚至无法察觉的歧义。

我认为 Go 语言严格限制歧义性,仅包含 25 个关键字且没有宏和领域特定语言等特性,正是其最终实用价值所在。

考虑到任何代码都可以从程序规范或人工生成的设计中产生,我认为这会遇到与人工神经网络相同的问题。

人工神经网络在给定输入时能够并会产生输出(比如42?),但其中间过程在很大程度上是一个黑箱,无法解释。即使在训练计算机视觉分类模型达到相当准确的程度后,改变少量像素就可能导致模型将图像内容分类为其他事物。通过此类指令生成的程序在很大程度上仍将是一个黑箱,缺乏透明度,因此其应用场景将受到限制。

如何测试这样的系统?
如何调试这样的系统?
从系统中丢失的1000万美元该从哪里开始查找?
谁将为此负责?

人类语言的问题与魅力在于其相当模糊。要减少模糊性,就必须严格限定只允许使用某些明确定义的结构类型。我认为计算机至少在不远的将来还无法根据规范或设计来编写程序。

在代数发明之前,人们确实用自然语言书写公式,但这既难以理解又存在歧义。因此自然语言并非总是最佳的沟通方式。

以上只是个人浅见,英语表达不佳还请见谅。

@johandalabacka

当自然语言存在歧义时,机器可以主动要求澄清以确保正确理解指令含义。如果理解有误,它还能协助程序员改进指令的表述方式。

请参阅Plain English编程网站,您将看到一种近似自然语言的编程语言。这会让你认识到使用日常语言编写代码是完全可行的方式。

johandalabacka:

人类语言的问题与魅力在于其相当模糊的特性。若要减少这种模糊性,就必须严格限定只允许使用某些明确定义的结构类型。我认为计算机至少在不远的将来还无法根据规范或设计直接生成程序。

在代数发明之前,人们确实用自然语言书写公式,但这种方式既难以理解又存在歧义。因此自然语言并非总是最佳的沟通媒介。

以上是我的一点拙见,英语表达不流畅还请见谅。

编程语言最终会发展到越来越高的抽象层级,直至与自然语言趋于一致。将来终有一天,你可以完全使用英语、葡萄牙语或其他任何自然语言来编写程序,当然也可以根据实际需要,在认为更高效或更清晰时混用当今编程语言中的指令类型。

与你们正在讨论的内容类似,这段视频是每个渴望将人工智能策略应用于实际产品的人都应该至少熟悉的。

John Searle: "Consciousness in Artificial Intelligence" | Talks at Google

通过狭义人工智能,我们可以可靠地完成很多工作,甚至可能开发出帮助为特定领域设计专用软件的产品。

通用问题解决器需要高度复杂性,这要求多个狭义系统之间进行交叉通信,而目前我尚未见过能在不同专业领域之间建立决策层的设计方案。

此外,当这些系统出现错误时,谁来为输出结果负责?在今后很长一段时间里,更可能出现的情况仍然是由人类开发者使用代码库(包括常见的人工智能解决方案)为特定问题设计针对性解决方案,正如我们几十年来一直在做的那样。

具有创造性的工作将在很长时间内仍然是人类的领域。另一个值得思考的问题是:人们开发软件的初衷是为了解决人类的问题。机器无论多么精密,都难以对人类面临的问题产生真正的理解。

因此无论如何,我们在这方面永远比机器思维更具优势。

人类语言的问题与魅力在于其相当模糊不清。要减少这种模糊性,就必须严格限定只允许使用某些明确定义的表达结构。我认为至少在不久的将来,计算机还无法根据规范或设计来编写程序。

在代数发明之前,人们确实用自然语言书写公式,但那样既难以理解又存在歧义。所以自然语言并非总是最佳的沟通方式。

以上只是我的个人见解,英语表达不流畅还请见谅。

智能编译器会在出现歧义时要求澄清,并可能建议改进措辞以解决问题。编写程序最终将成为与智能机器的对话——即使对编程一无所知的人也能轻松应对,这将是一场与本身即为专业程序员的智能系统的协作。错误信息将以评论和问题的形式呈现,就像与人类程序员合作编写程序时获得的反馈一样。(“当您说’打印该部分结果’时,是指这段代码[高亮显示代码片段]吗?您希望输出到屏幕还是打印机?”)

这并不妨碍您在需要时插入C语言或其他编程语言的代码行,但大部分工作将直接通过自然语言完成,通常是在更高层次上进行,由编译器自行推导如何执行被要求的任务。最终用户也将成为程序员,通过自然语言告诉机器自己希望任务以何种方式执行,而机器将会遵从。这种交互几乎必然通过自然语言实现。

在 Go 语言(Golang)的上下文中,开发者是否会转向更高级或自然语言级别的编程语言,取决于实际需求和技术发展。Go 语言本身是一种高级语言,强调简洁性、并发性和性能,它在系统编程、微服务和云原生应用中广泛使用。尽管自然语言编程(如使用 AI 或 DSL)在某些领域有所探索,但 Go 语言的核心优势在于其静态类型、编译速度和工具链,这使得它在可预见的未来仍将是主流选择。

自然语言编程目前更多是辅助工具,例如通过 AI 生成代码片段,但尚未替代传统编程语言。在 Go 中,开发者可能使用领域特定语言(DSL)或库来简化任务,但这并不等同于完全转向人类语言级别的编程。以下是一个简单的 Go 代码示例,展示如何用高级语法处理计算任务,类似于您提到的工资计算:

package main

import "fmt"

func main() {
    basePay := 5000.0
    overTimePay := 1000.0
    grossPay := basePay + overTimePay // 高级语言语句,类似英语和数学符号
    fmt.Printf("总工资: %.2f\n", grossPay)
}

在这个例子中,grossPay = basePay + overTimePay 是一个高级语言语句,它直观且易于理解,但底层仍被编译为机器语言执行。Go 语言的编译器和工具链确保了高效性和可移植性,而自然语言编程目前主要用于代码生成或特定场景,如使用 GPT 模型生成 Go 代码片段,但不会完全取代 Go 的核心地位。

总之,Go 开发者可能会结合更高级的工具,但 Go 语言本身将继续作为高效编程的基础。

回到顶部