生成式人工智能:变革的催化剂还是历史遗忘(软件工程)
让我们关注人工智能如何改变我们进行软件工程的方式。
Google,StackOverflow和惹恼前辈都是任何资深工程师怀念的记忆。但今天的年轻人呢?我们是否沦为了被懒散引起的ChatGPT喂饱的人?我们是否忘记了如何正确地使用谷歌搜索,特别是:
https://www.google.com/search?q=Microsoft.ML.ModelBuilder.AutoMLService.Experiments.MultiClassificationExperiment.%3CExecuteAsync%3Ed__14.MoveNext()+in+%2F_%2Fsrc%2FMicrosoft.ML.ModelBuilder.AutoMLService%2FExperiments%2FMultiClassificationExperiment.cs%3Aline+140&oq=Microsoft.ML.ModelBuilder.AutoMLService.Experiments.MultiClassificationExperiment.%3CExecuteAsync%3Ed__14.MoveNext()+in+%2F_%2Fsrc%2FMicrosoft.ML.ModelBuilder.AutoMLService%2FExperiments%2FMultiClassificationExperiment.cs%3Aline+140&gs_lcrp=EgZjaHJvbWUyBggAEEUYOTIGCAEQRRg7MgYIAhAuGEDSAQcxNjlqMGo5qAIAsAIA&sourceid=chrome&ie=UTF-8
注意到我从Google获得的真正有帮助的结果。这其中有一门艺术,我担心年轻的工程师可能不会学到它。
在这里说一下,Chat GPT 是软件工程师的优秀工具。它可以高效地执行各种任务,从你的工作日中消除繁琐。你可以问一些“蠢”问题而不会被贬低。它开启了新的途径,打破了我认为不可能的界限。
但是回到重点。
由专家撰写的博客,解释一个概念几乎总比Chat GPT随意生成的内容更好。如果你多花2分钟上谷歌,你就可以找到那篇博客并学到更有价值的东西。
因此,我特别对你们年轻的工程师们说,要做好尽职调查。在获得快速回答之外,还要进行深入研究你所提出的问题。可以使用Chat GPT,但也要创建一个StackOverflow账户。问你的问题,可能会被踩,可能会在评论中争论,并寻找其他人面临相同问题的情况。你可能会向同行寻求帮助,阅读文档或搜索Github问题。你可能会学到一些东西。
这是事情的原委:
如果你在做错事,而且很可能是这样,Chat GPT将只会帮助你更好地做错事。
它将根据您的提示生成答案,而不使用正确的解释。
例如,扩大狗碗的孔径
我:我用于狗碗的混凝土上的洞不够大,请你帮忙改进一下。
ChatGPT:当然可以!如果你的混凝土狗碗孔不够大,你可以按照以下步骤进行改进:
所需材料:
适当的安全装备(手套、安全眼镜) 混凝土钻头(适合所需孔的大小)….
这个回答太糟糕了,如果在pets.stackexchange.com上回答的话,肯定会被严重踩低分。任何人都可以告诉你“拿一个碗。”
现在编码方面怎么办呢?有很多时候我们都在做错事,以下是一个例子:
EF 重命名表格问题
我:EF我已经生成了迁移并且它正在删除我的表而不是重命名它。
ChatGPT:...在配置中将AutomaticMigrationsEnabled设置为false以禁用自动迁移...确保你在迁移中明确使用RenameTable方法来重命名表,而不是依赖自动重命名。
我不会批准那个拉取请求,而且我觉得你的团队也不会太高兴。我以同样的短语“EF我已经生成了迁移并且它正在删除我的表而不是重命名它”在谷歌上搜索了同样的问题,读了几个不同的人类回答之后,我更喜欢我得到的答案。
这是一个由专家Mitchel Sellers撰写的优秀博客。
一种解决此问题的方法是暂时使用数据注释来指导实体框架进行操作。然后,在创建适当的迁移之后,您可以正确地重命名对象并创建一个空的迁移来完成更改。
这是一个受许多推崇的堆栈溢出回答,充满了评论和信息。
(1) 在重命名实体之前,请使用ToTable和HasColumnName方法或数据注释来 "重命名" 表和主键列。同样,对于引用该实体的外键列也进行相同操作。
(2)添加新的迁移。它将正确地重命名表、主键列、外键列和相关约束。
(3)删除注释/流畅配置,并进行实际的类/属性重命名:
如此,生成式人工智能是我们一直等待的范式转变,还是一种让我们无法得到正确答案的分散注意力的东西?我们是不是因为依赖一种简易途径而变得懒惰并养成了坏习惯?它打破了可能性的圆顶,已经来了并且是一个很好的帮助,但我们该如何使用它?我们要安全地使用它吗?
我希望能进行更多的研究,收集更多的数据,并撰写另一篇文章,将聊天GPT的回答与我在谷歌上找到的内容进行比较。
愉快编码 🤓
// Get your answer safely
string question = "Is a burger a sandwich?";
string answer = string.Empty;
if (TryGoogle(question, out answer) ||
TryStackOverflow(question, out answer) ||
TryDocumentation(question, out answer) ||
TryReadCode(question, out answer) ||
TryChatGpt(question, out answer) ||
TryTalkToYourSenior(question, out answer))
{
// You got an answer
}
else
{
// Go get some sleep and come back tomorrow.
}