解读动态:在生成代码、手写代码和关键细节之间导航

ChatGPT中文站

最近,许多生成代码的工具已进入我们的生活中。这些工具,包括API扩展和Web应用程序,不断增加其可访问性。Bob大叔(罗伯特·C·马丁)在他2008年的书《代码整洁之道》中,在“代码将会存在”一章中告诉我们这种情况。

实际上,一些人认为我们已经接近代码的终点了。很快,所有的代码将会自动生成而不是手写的。程序员将变得不再需要,因为商业人士将会从规格说明书中生成程序。

《Clean Code: 敏捷软件开发原则与模式》作者:Robert C. Martin

而叔叔鲍勃有一个名为“需求的细节”的论文。

我们永远无法摆脱代码,因为代码代表需求的细节。在某个层次上,这些细节无法被忽略或抽象化;它们必须被指定。而以机器可以执行的如此详细的方式指定需求就是编程。这样的规格说明就是代码。

《Clean Code: 敏捷软件工艺的手册》 罗伯特·C·马丁

根据Bob叔叔的说法,生成的或编写的代码是一种抽象层次和细节层次,真正的要点在于应用它呢?

在编写代码时,程序员会提供特定的命令,以适应代码的抽象级别。在这些细节中,他们考虑到可能的情况、业务需求和可能的错误。

另一方面,代码生成器如何调整这种抽象水平,以满足所提供的要求?他们遵循有多少详细要求?对于他们来说,被忽视的细节有什么重要性?

当涉及到代码生成时,重要的是要在抽象和细节之间取得平衡。代码生成器常常依赖于开发人员或业务用户提供的输入规范,这些规范指定了软件的期望行为。虽然一些规则生成器能够很好地处理高级要求,但是他们可能会在要求特定实现决策的细节上遇到困难。例如,代码生成器可以完美地处理基本的CRUD(创建、读取、更新、删除)操作,用于支持数据库的应用程序,但无法整合高级缓存技术或复杂的数据验证规则。

提示:创建一个REST API,以便用户可以创建、阅读、更新和删除博客文章。

from fastapi import FastAPI

app = FastAPI()

@app.post("/posts")
def create_post(post_data: dict):
# Code to create a new blog post
...

@app.get("/posts/{post_id}")
def read_post(post_id: int):
# Code to retrieve a specific blog post
...

@app.put("/posts/{post_id}")
def update_post(post_id: int, post_data: dict):
# Code to update an existing blog post
...

@app.delete("/posts/{post_id}")
def delete_post(post_id: int):
# Code to delete a blog post
...

以创建一个REST API为例,为博客应用程序启用用户对博客文章执行CRUD操作,提供的代码演示了代码生成器的使用。生成的代码有效地处理创建、读取、更新和删除博客文章的高级要求。但是,它可能没有考虑到需要更详细的实现的额外功能,例如认证、授权或高级验证规则。

因此,对于更先进的网络服务,提供身份验证、授权、验证和数据库集成等详细信息是必不可少的。虽然人工智能可以帮助生成除法等函数,但我们仍然需要指定处理由除零错误引起的机制。

如 Robert C. Martin 所述,代码将继续存在于未来,其生成将通过手动编写或生成方式实现。最终,我们的目标是拥有能够实现预期目的的代码。在这个过程中,我们对细节的关注始于我们的内心。以前,我们通过指定正确组合的所有必要细节来编写代码。现在,我们正在尝试将这些细节转移至人工智能,确保正确的语法和代码生成。从本质上讲,我们称之为“编写代码”的行为可以被看作是确定具体细节并将其转化为数字领域的行为。

最终,无论是生成代码还是编写代码,目标都是相同的——创建有效地实现其预期目的的代码。虽然编写代码的过程会随着人工智能的参与而发展,但理解和指定必要的细节的重要性仍然是至关重要的。作为软件开发人员,我们踏上了一段旅程,在这段旅程中,我们将把正确的细节与正确的抽象级别相结合的专业知识变得至关重要,从而塑造未来的数字领域。

2023-10-20 17:07:23 AI中文站翻译自原文