首发于公众号 前端从进阶到入院,欢迎关注。
Hi,大家好我 ssh,自从 ChatGPT 火了以后,AI 对于编程方式的影响也逐渐成为了一个热门的话题。当然,目前这股热潮慢慢平静下来后,比较多的一部分工程师普遍的认知是,AI 不会夺走我们的工作,而是会协助我们提高生产力。
今天,我就正巧看见 logRocket 的一篇 Blog,推荐给大家几个用 AI 提高编码生产力的工具:6 AI tools for developers to help boost your productivity,接下来我来分享给你:
正文
在构建优质软件时,一个开发团队的存在是至关重要的,团队中的开发人员、设计师和项目经理都扮演着重要的角色。但是对于那些独自拥有一个应用想法或者希望改进现有应用的开发者来说,情况会有所不同。
对于没有完整团队的开发者来说,学习新功能或修复旧问题可能需要花费太多的时间,可能需要花几个小时来搜索、阅读文档和观看教学视频。幸运的是,人工智能的进步极大地加快了这个过程。
在人们提到人工智能的时候,ChatGPT 是一个相对通用的工具。然而,真正发挥人工智能优势的是专门解决开发领域特定问题的定制工具。
有很多满足这一描述的工具,下面我们将介绍六个工具,并了解它们的用途。快速导航:
- Phind
- Codeverter
- bloop.ai
- Codeium
- ColPat
- RegExGPT
在本文结尾,你可以看到总结表格,其中包含了所有这六个人工智能开发工具的用途,以帮助你更好地了解每个工具适应你的工作流程。
Phind
我们首先介绍的工具是 Phind,一个专为开发人员量身定制的搜索引擎。与更通用的工具如 ChatGPT 相比,Phind 更专注于开发人员的需求。
有趣的是,作为一个搜索引擎,Phind 的回答通常包含两个部分:
针对你具体问题的详细和有见地的回答
通过搜索检索到的相关链接
通常情况下,你会在向人工智能提问和浏览搜索结果之间来回切换,以找到你想要的答案。
使用人工智能解决编程问题的一个令人烦恼的事情是,当人工智能模型对答案不确定时,它可能会开始胡乱猜测。结果,它可能会给出似乎合理但实际上行不通的答案。
这令人沮丧,因为你可能会花费大量时间在本应该有效的解决方案上,但最终发现被人工智能误导了。对于你的生产力来说,追逐一个不可行的解决方案是非常糟糕的。
让我们尝试向 Phind 提问一个问题,例如如何在 Rust 中连接到 Windows 上的低功耗蓝牙(BLE)设备。这是一个有趣的问题,因为尽管蓝牙无处不在,但要找到关于如何搜索和连接到 BLE 设备的示例却相当困难。
通过将”在 Rust 中连接 Windows 的低功耗蓝牙设备”作为输入发送给 Phind,我们得到了以下结果:
在左侧,我们得到了一个使用 btleplug 包的代码示例,这正是我们应该使用的正确包。
在右侧,我们还获得了搜索结果,因此我们可以快速跳转到 btleplug 包的 Cargo 页面。这意味着我们可以在代码示例和文档之间快速切换。
相比之下,ChatGPT 给出的答案是使用 rumble 包,这个包比 btleplug 旧,并且不支持 Windows。因此,在这种情况下,显然 Phind 提供了更好的结果。
截至 2023 年 7 月,Phind 是免费的,没有订阅选项,这也太棒了。
总结一下,Phind 具有以下特点:
- 特别适合编码问题
- 搜索结果与生成的答案一起显示,提供了很好的上下文
- 似乎比 ChatGPT 提供更好的编码答案
- ✨ 免费 ✨
Codeverter
Codeverter 是另一个使用人工智能的开发工具,用于将代码从一种语言转换为另一种语言。要使用它,你需要提供来自 OpenAI 的 API 密钥。完成了这一步骤,就可以开始使用了。
Codeverter 的前提确实很有前景。不幸的是,在撰写本文时,所有转换代码的请求都返回了一个“Failed to contact OpenAI :(”的消息:
尽管如此,如果 Codeverter 重新恢复正常工作,拥有这样一个代码转换工具肯定会非常方便。
bloop.ai
有时候,我需要将 GitHub 上的各种存储库 clone 到我的计算机上。通常,我这样做的原因要么是为了尝试修复某个特定的错误,要么是为了学习给定存储库是如何解决某个问题的。
每当我这样做时,总会有一个开始阶段,我必须理解存储库的结构以及在哪里找到我感兴趣的代码。这个“入门”过程可能需要几分钟到几个小时的时间。
bloop.ai 旨在加快这个过程。你可以克隆整个 GitHub 项目,然后向 bloop.ai 提问有关存储库的问题。在这个例子中,我克隆了btleplug
存储库,并询问它如何在 Windows 设备上进行 BLE 扫描:
这实际上是一个非常困难的问题。所涉及的库支持四个不同的平台,因此 bloop.ai 必须找到特定于 Windows 的代码。
此外,由于btleplug
代码是通过接口抽象的——目的是在不同的平台上归一化 API 接口,bloop.ai 还必须找到实际的平台实现。
bloop.ai 也可以免费供个人使用。要使用它,你需要:
- 下载应用程序
- 安装
- 注册
- 将其与你的 GitHub 帐户连接
完成这些步骤后,你就可以随心所欲地克隆和检查存储库了。
bloop.ai 在开发者脱离组织的时候,提高开发效率方面的作用也很明显。
我曾经继承过其他开发人员专业知识产生的代码“遗产”,太难理解了。那时候如果能够将存储库加载到辅助 AI 工具中,然后提出问题,肯定会减少很多试错过程。
最后,这个桌面应用程序看起来很棒 ?。精妙的设计使得使用这个应用程序非常愉悦。
以下是 bloop.ai 为开发人员提供的主要优点总结:
- 短时间内理解现有的代码库
- 内联聊天,获取答案很容易
- 应用程序非常漂亮 ?
Codeium
你可能已经听说过其他的人工智能辅助编程工具,比如GitHub Copilot。Codeium 的工作方式与之类似,在你编写代码时为你的代码库提供上下文建议。非常让人震撼。
例如,如果你在 Rust 中编写一个名为calculate_fibonacci_sequence()
的函数,Codeium 插件会建议一个能够实现这个功能的函数:
在上面的示例中,我只是写了函数名,Codium 就建议了一个可以满足这个需求的函数。相比之下,ChatGPT 甚至是 Phind 可能需要几分钟才能提供一个答案,而 Codeium 只需要几秒钟就能提供一个在大多数情况下都能工作的函数。
Codeium 的建议并不总是完美的,但它通常比自己从头开始编写一个完整的函数要快。
它对你的生产力非常有帮助,因为你不必去寻找如何实现一个给定的函数。有时,只需要给出函数所要做的事情的名称,Codeium 就能帮你填写剩下的部分。
Codeium 真正出色的地方在于编辑器支持。虽然VS Code 是当前许多 Rust 开发人员的真爱,但我很高兴发现它原生支持 CLion 和许多其他 JetBrains 的 IDE。支持的编辑器列表太多啦,请看:
再加上 Codeium 团队的一个非常给力的消息,解释了为什么 Codeium 针对个人用户是免费的,并将继续保持免费,这个工具似乎是这个领域的一个很好的选择。
总而言之,Codeium 提供了以下功能:
- 实时、几乎即时的代码建议
- 极其广泛的 IDE 支持
ColPat(颜色调色板和设计工具)
你可以开发世界上最好用的应用程序,但是也会因为太丑而被拒绝。找到好看的互补色和主题需要设计师像素级的眼睛,或者需要大量的试错。
幸运的是,ColPat 提供了一种为你的网站或应用程序创建主题和颜色的简单方法:
ColPat 只有两个工具——用图像生成调色板和用颜色生成调色板——明确标识为使用人工智能来准备结果。在调研的时候,我感觉这软件的所有操作都是本地进行的;看源码的时候没发现 AI 在生成调色板的时候如何参与的,或者到底参没参与?
但,ColPat 仍然是一个很棒的工具,它绝对可以帮助你为你的网站或应用程序制定出一套互补的颜色方案。
总而言之,ColPat 具有以下特点:
- 可以帮助你快速确定你应用程序的设计色彩。
- 可能实际上并不是基于人工智能的,但仍然非常好用。
RegExGPT
在你的开发生涯中,你肯定会需要从一个较大的文本字符串中筛选出文本。可能的原因有很多——也许你正在尝试将数据从一种类型转换为另一种类型,或者你正在尝试自动化某些操作。
在你职业生涯的早期阶段,你可能会使用字符串分割来处理这些问题,玩弄各种字符串下标。但是最终,你还是会用正则表达式。
由于正则表达式的强大功能,它们在软件开发中无处不在。然而,它们的可读性并不是很高。
例如,谷歌提供了一些例子展示了一些实现特定目标的正则表达式,但它们并不容易理解。在像 StackOverflow 这样的网站上也有一些复杂的帖子,一些人发现正则表达式的语法非常晦涩难懂。
例如,这个正则表达式可以匹配以 yahoo
、hotmail
和 gmail
结尾的电子邮件地址:
(\\W|^)\[\\w.\\-\]{0,25}@(yahoo|hotmail|gmail)\\.com(\\W|$)
还有其他一些网站,比如 Regex 101,可以让你提供一些输入,然后通过调整正则表达式直到它达到你想要的效果。
以前,先提供输入并尝试构建查询语句,直到获得预期结果,是这么玩的。当然,这个过程中可能访问了 100 个 StackOverflow 的正则问题。耗尽时间了。
幸运的是,我们可以通过使用 RegExGPT 来大大加快这个过程。你不再需要猜测正则表达式,只需提供字符串以及你期望从中获取的值即可。
对于更复杂的查询,你还可以提供自然语言提示,比如“我想从逗号分隔的数组中获取第三个值”,RegExGPT 将生成一个完全符合你要求的正则表达式。
例如,冒着召唤 Zalgo 的风险,我可以使用正则表达式从 HTML 锚点标签中提取href
:
对此,RegExGPT 给出了这个有用的回复:
在 Chrome 开发者控制台中测试结果如下:
RegEx 从未如此简单!
总之,你可以使用 RegExGPT 来:
- 让人工智能为你编写晦涩的正则表达式
- 充分测试生成的表达式!一个错误的正则表达式查询可能会造成很大的损失
AI 开发工具的总结表格
那么,在面对具体问题时,你应该选择哪个工具呢?
工具 | 适用于… |
---|---|
Phind | 在比 ChatGPT 更详细的模式下,寻找与编码有关的问题的答案 |
Codeverter | 将任何类型的代码从一种语言翻译成另一种语言(等它正常工作吧) |
bloop.ai | 在你以前没有看到代码库的情况下理解它是如何工作的,以便你可以快速开始使用 |
Codeium | 在茫茫多的编码工具中,得到上下文提示和自动补全 |
ColPat | 为你的应用程序快速生成颜色调色板(即使它实际上不是基于人工智能的) |
RegExGPT | 为你选择的编程语言生成正则表达式查询 |
一点小小的警告
使用所有的 AI 辅助工具,解决开发问题变得更加容易。但是很多这些技术都是基于 GPT-3.5 或 GPT4。这些语言模型是一个巨大的飞跃,对各种应用非常有帮助。
然而,目前有时向 AI 模型提问可能会导致模型不知道如何回答。当发生这种情况时,模型通常会尝试虚张声势地回答,而不是告诉你它不知道。从技术上讲,这被称为幻觉(人工智障)。
这可能存在两个问题。首先,你可能会得到听起来合理但完全错误的信息。
其次,因为听起来合理,你可能会花费很多时间尝试让 AI 解决方案工作,直到意识到根本没用。这是对你的生产力的一种浪费,而我们的初衷是提高你的生产力。
如果你的 AI 解决方案对你不起作用,不要害怕快速失败并尝试其他提示。
其次,考虑一下当你在工作场所向某人询问如何修复某个问题时会发生什么。如果那个“解决方案”引入了一个更大的问题,你可以去问那人代码出了什么问题。但对于基于 GPT 的解决方案来说,情况并非如此。
例如,想象一下,你用一个 GPT 辅助的语言模型生成了一个正则表达式查询。如果那个正则表达式在小规模测试中可以运行,但在生产环境中在一个更大的数据集上失败了,那完全是你自己的责任。
没有一位高级开发人员会接受“但是 AI 建议使用那个特定的正则表达式查询!”作为一个像系统 break 这样的问题的借口。当然,为了修复由 AI 编写的代码可能引入的问题,部署 patch 也会对你的生产力产生负面影响。
最重要的是:无论是你自己编写代码还是 AI 帮助你编写代码,质量始终是重要的。使用单元测试和自动化测试来证明你的代码的正确性,比以往更加重要。
结论
对于开发人员来说,现在是一个很棒的时代,因为人工智能提供了许多解决多年来开发人员面临的问题的解决方案。无论你是编写新代码,尝试理解现有的代码库,还是想要一个新的颜色调色板,都有工具可供使用。
明智地使用这些工具将节省大量时间,毫无疑问,我们将继续看到这个领域的巨大变革。如果你发现了其他帮助你的人工智能工具,也欢迎告诉我!
首发于公众号 前端从进阶到入院,分享 Vue 源码 / React / TS / 浏览器 / 工程化等各个前端领域,我的文章帮助了很多小伙伴进入大厂,欢迎关注。