如何使用AI学习一门编程语言?

无论你是软件开发新手还是拥有几十年的丰富经验,总是需要学习新知识。TIOBE Index追踪50种最受欢迎的编程语言,许多生态系统为职业发展和横向转型提供了机会。鉴于现有技术具有的广度,抽空学习一项新技能并有效运用技能可能困难重重。

最近我一直在尝试学习Rust语言,这是一种注重性能、可靠性和生产力的类型安全语言。我在此过程中学到了使用AI编程助手的若干技巧,想与你分享,以改善你的学习体验。

文章最后列有几项基于AI的新技能,你可以在学习过程中运用起来,加快实现目标。我在本文所说的AI是指基于大语言模型(LLM)的AI驱动的编程助手,比如Amazon Q Developer(前身是CodeWhisperer)、GitHub Copilot和JetBrains AI Assistant。你可以将下面所有技巧运用到所选择的工具上。

对参数化知识持怀疑态度

“参数化知识”是训练过程中存储在模型中的信息。编码数据是AI通常能够快速响应、提供准确信息的原因。不过,AI有时候也会给出严重错误的答案。

这对我们用户来说意味着什么?虽然这些系统可能大有帮助,但它们受到收集数据和训练模型所需的时间和资源的限制。比如说,OpenAI使用截至2023年12月的信息训练ChatGPT 4 Turbo模型,数据集的内容是未知的。从用户的角度来看,任何特定的模型中是否存在“完整”的知识、为什么有时我们可能对其响应不感兴趣都是不确定的。

留意数据集的截止日期可以帮助你更好地理解和处理来自AI聊天会话的响应。作为一名物色和购买服务的消费者,研究提供商的数据收集实践和训练过程可以带来更令人满意的体验。

虽然AI通常会有所帮助,但在任何学习过程中,经过验证的人类知识来源仍将是最有价值的。这倒不是说AI系始终是错的,但你需要养成质疑自己使用的信息是否正确的习惯。另一个需要谨慎的原因是,这些系统的创建者将它们训练成乐于助人的助手。有时它们可能“太乐于助人”了,生成可能不存在的想法和概念,即幻觉现象。

总而言之,只有“真正的智能”才能理解AI何时犯错。

阅读代码和提示以解释

开源软件运动为每个学习编程的程序员提供了轻松访问生产级代码的途径。开源代码库提供了一个很好的机会,可以了解专业人员如何编写代码,并学习语言习惯用法和技巧等。但是如果没有基本的参考框架或基本的理解,阅读一门不熟悉的语言可能令人生畏、一头雾水。

我一直在使用的一种技术是在流行的代码共享网站GitHub上查找特定语言的代码,并将其粘贴到AI聊天会话中,一并粘贴的还有提示“请解释该代码”和“请列出该代码块中出现的重要语言概念”。

该提示的模板可能如下所示。

Please explain the following code


```rust

// rust code goes here

```
Also, list the important language concepts from the description in a bulleted list so I may do more research.

因此生成的主题列表是一种很好的方式,可以让我把学习的重点放在当下最重要的事项上,而不是试图一次吸收整个图书馆的信息。

JetBrains AI Assistant将允许你存储提示模板供重复使用,你在不同的项目之间跳转时这非常有用。

详细内嵌注释的提示

当你还没有完全掌握一门语言的语法或语义时,一大堆代码可能让人望而生畏。使用提示“为每行注释”是一种快速而简单的方法,可以大致了解应用程序可能在做什么。

借助JetBrains AI Assistant,你还可以在并排或统一视图中获得变更的Diff视图。视图允许你快速查看变更,并选择接受或拒绝变更。

尝试不同的选项

学习任何主题都涉及试验,更重要的是,涉及运用学到的概念。这对于找到一种切实有效的解决方案并理解何时尝试不同的方法至关重要。有了AI,尝试不同的实现方法从未像现在这样直观简单。

下面是我用来发现Rust语言中便于进行后续研究的功能特性的提示。

Given the following API, show me three different implementations


```rust

fn add(x: i32, y:i3) -> i:32 {

 // implementation goes here

}

```

记住,这事关学习,所以API不一定特别复杂。尝试想法让你得以发现AI聊天会话之外的不同学习路径。这种技术非常出色,特别是与传统的主题搜索相比;传统的主题搜索可能因你对特定主题的理解而受到限制。

Amazon Q Developer等一些工具提供内联选项,允许你在不离开编辑器上下文的情况下循环处理示例。按左右方向键可以让你在诸选项之间移动,直至找到一个你喜欢的选项。

更多的上下文始终更好

我在上面提到了LLM的嵌入信息限制。请记住,在这些服务可能缺乏信息的地方,能提供信息再好不过了,但你需要用正确的方式来提供。

在现代互联网搜索体验的训练下,我们已学会在文本框中提出基于关键字的问题。搜索式查询是我看到许多AI新手常犯的一个错误,这可能会让他们对结果感到失望。在使用AI助手时,将AI聊天会话视为“搜索”是一个坏习惯,因为LLM的创建者构建它们是为了预测用户可能想要什么。

进行更准确预测的最好方法是尽可能地详细和明确。

一个很有效的方法是基于示例的提示。你提供的示例越多,结果就越准确。这里有一个模板提示,可以帮助你在学习过程中发现新的想法。

Given the following three examples, what would an implementation for <X> look like?


example 1:

```

```

example 2:

```

```

example 3:

```

```

你在聊天会话中输入的数据提供了实现预期结果所需的上下文。别害怕纠正或添加更多的上下文。越多越好,因为模型有更多的信息作为响应的基础。

为了保持对话进行、增添聊天会话的上下文,Amazon Q Developer为你提供了一组自然的后续问题,确保你在学习过程中有积极性。

查看代码补全

大多数AI服务提供多行代码补全功能。虽然我忍不住会接受编辑器中呈现的所有选项,但这通常会阻碍我的学习过程。相反,我喜欢从创建表明目标的代码注释入手。

// TODO: create a match expression to process the different message variants

在下图中,我们看到GitHub Copilot主动表示可以补全我的语句。乍一看很不错,但我必须停下来细想这个选项,看看它是否符合我的意图。在按Tab键之前,我要停下来。想想为什么?

这么做的原因是为了检查我目前的技能是否能够阅读和处理代码。如果是,那我取得进展。如果不是,那么我应该花时间去了解我的知识短板在哪里。永远不要接受你并没有完全理解的代码、添加到代码库中。

注意,你可以配置该功能以减少干扰,只按需显示补全,以减轻在编写代码和读取代码之间切换的认知负担。

解释错误,找到解决办法

面对每个编程堆栈,你都会遇到编译和运行时错误,其中一些错误可能很隐晦。如果你在设法理解为什么你的应用程序失败,不妨使用AI助手聊天会话来解释这个问题,找到出现问题的地方,并提出解决方案。

What exactly is the problem here in my Rust backtrace? Reduce the response to the file and line and explanation of the error and propose a solution.


```

```

下面这个例子表明了使用这个提示来理解Rust回溯中发生了什么事情。

分享想法

虽然使用AI聊天从一个话题切换到另一个话题可能感觉很自然,但放缓节奏、将你新发现的知识与其他知识重新联系起来总是好事。一旦我学到了新概念,并创建了切实可用的示例,我会与其他学习者和专家分享,以获得宝贵的反馈。记住,AI只能对你的要求有所帮助,而其他人会用他们的实际经验加以丰富,预测你可能忽略的潜在陷阱。

社交媒体平台是分享截图、代码示例和想法并获得宝贵反馈的好地方,你可以将这些反馈纳入到未来的AI聊天会话中。

总结聊天

这里有一个建议送给那些不擅长记笔记,但可能想要回忆前一天工作的那些人。在长时间的学习结束后,不妨让当前的聊天会话总结你的所有问题,并为每个问题列出一句话的答案。

Given what we’ve chatted about, list all the questions and a single-sentence summary of each answer.

响应是出色的快速参考指南,供你的下一次学习会话参考。这也是一篇很好的博文,你可以练习与他人分享你的想法和学习经验。

用AI学得更快

我希望当你使用AI工具更快速、更有效地学习时,这些技巧对你有所帮助。这些工具旨在帮你实现为自己设定的目标。我发觉它们在形成新想法和探索我不知道的想法方面大有帮助。

最重要的是,它们让我与社区里的其他人建立了联系,这些人拓宽了我的知识面。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/762438.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux启动elasticsearch,提示权限不够

Linux启动elasticsearch&#xff0c;提示权限不够&#xff0c;如下图所示&#xff1a; 解决办法&#xff1a; 设置文件所有者&#xff0c;即使用户由权限访问文件 sudo chown -R 用户名[:新组] ./elasticsearch-8.10.4 //切换到elasticsearch-8.10.4目录同级 chown详细格式…

关于vue创建项目失败报错(镜像过期)的解决方案

在新建vue项目时出现以下错误&#xff1a; 原因&#xff1a; npm.taobao.org和registry.npm.taobao.org旧域名于2021年官方公告域名更换事件&#xff0c;已于2022年05月31日零时起停止服务&#xff0c;域名HTTPS证书于2024年1月22日正式到期&#xff0c;不可再用。 解决方案:…

昇思MindSpore学习总结七——模型训练

1、模型训练 模型训练一般分为四个步骤&#xff1a; 构建数据集。定义神经网络模型。定义超参、损失函数及优化器。输入数据集进行训练与评估。 现在我们有了数据集和模型后&#xff0c;可以进行模型的训练与评估。 2、构建数据集 首先从数据集 Dataset加载代码&#xff0…

gdb及其使用

gdb调试一&#xff1a; 首先进入gdb&#xff0c;确定好进程&#xff0c;输入进程号 确定要调试哪个文件&#xff0c;然后输入&#xff1a;&#xff08;b为打断点&#xff09; (gdb) b serialization_protobuffer.h:write<ros::serialization::OStream>(ros::serializat…

python自动化办公之shutil

目录 1复制文件&#xff0c;此时存在2份相同文件 2移动文件&#xff0c;此时仅有1份文件 3删除文件&#xff0c;此时0份文件 用到的库&#xff1a;shutil&#xff0c;os 实现的效果&#xff1a;复制文件&#xff0c;移动文件&#xff0c;删除文件 代码&#xff1a; 1复制…

【机器学习】FFmpeg+Whisper:二阶段法视频理解(video-to-text)大模型实战

目录 一、引言 二、FFmpeg工具介绍 2.1 什么是FFmpeg 2.2 FFmpeg核心原理 2.3 FFmpeg使用示例 三、FFmpegWhisper二阶段法视频理解实战 3.1 FFmpeg安装 3.2 Whisper模型下载 3.3 FFmpeg抽取视频的音频 3.3.1 方案一&#xff1a;命令行方式使用ffmpeg 3.3.2 方案二&a…

Error: A JNl error has occurred, please check your installation and try again.

Eclipse 运行main方法的时候报错&#xff1a;Error: A JNl error has occurred, please check your installation and try again. 一、问题分析 导致这个问题&#xff0c;主要原因&#xff0c;我认为是在新版本中&#xff0c;默认的JDK编译版本与我们配置的JDK版本不一致导致的…

【Linux】:命令行参数

朋友们、伙计们&#xff0c;我们又见面了&#xff0c;本期来给大家解读一下有关Linux命令行参数的相关知识点&#xff0c;如果看完之后对你有一定的启发&#xff0c;那么请留下你的三连&#xff0c;祝大家心想事成&#xff01; C 语 言 专 栏&#xff1a;C语言&#xff1a;从入…

代码随想录算法训练营第59天:动态[1]

代码随想录算法训练营第59天&#xff1a;动态 两个字符串的删除操作 力扣题目链接(opens new window) 给定两个单词 word1 和 word2&#xff0c;找到使得 word1 和 word2 相同所需的最小步数&#xff0c;每步可以删除任意一个字符串中的一个字符。 示例&#xff1a; 输入: …

JavaEE—什么是服务器?以及Tomcat安装到如何集成到IDEA中?

目录 ▐ 前言 ▐ JavaEE是指什么? ▐ 什么是服务器&#xff1f; ▐ Tomcat安装教程 * 修改服务端口号 ▐ 将Tomcat集成到IDEA中 ▐ 测试 ▐ 结语 ▐ 前言 至此&#xff0c;这半年来我已经完成了JavaSE&#xff0c;Mysql数据库&#xff0c;以及Web前端知识的学习了&am…

阅读这篇文章,彻底了解响应式网页设计

随着移动设备的普及&#xff0c;访问网站的方式发生了翻天覆地的变化。人们不再仅仅依靠桌面机来获取信息和享受在线服务。这给网页设计带来了巨大的挑战。如何构建一个能够在各种设备上流畅运行并提供一致用户体验的网站&#xff0c;已经成为每个网页设计师关心的问题。此时&a…

LLM大模型工程师面试经验宝典--基础版(2024.7月最新)

1.简单介绍一下大模型【LLMs】&#xff1f; 大模型&#xff1a;一般指1亿以上参数的模型&#xff0c;但是这个标准一直在升级&#xff0c;目前万亿参数以上的模型也有了。大语言模型&#xff08;Large Language Model&#xff0c;LLM&#xff09;是针对语言的大模型。 2.目前主…

Docker期末复习

云计算服务类型有: IaaS 基础设施及服务 PaaS 平台及服务 SaaS 软件及服务 服务类型辨析示例: IaaS 服务提供的云服务器软件到操作系统,具体应用软件自己安装,如腾讯云上申请的云服务器等;SaaS提供的服务就是具体的软件,例如微软的Office套件等。 云计算部署模式有: 私有云…

网上下载的PDF文件为何不能复制文字?该怎么办呢?

不知道大家有没有到过这种情况&#xff1f;在网上下载的PDF文件打开之后&#xff0c;发现选中文字之后无法复制。甚至其他功能也都无法使用&#xff0c;这是怎么回事&#xff1f;该怎么办&#xff1f; 首先&#xff0c;有可能PDF文件是扫描文件&#xff0c;是扫描文件的话&…

一文get懂kwai短视频助力巴西博弈slots游戏广告优势

一文get懂kwai短视频助力巴西博弈slots游戏广告优势 在数字化时代&#xff0c;短视频广告凭借其独特的魅力和高效的传播方式&#xff0c;成为了各大品牌进行营销推广的重要手段。特别是在巴西这个充满活力的国家&#xff0c;kwai短视频广告以其独特的方式&#xff0c;为博弈游…

windows下修改Jar包内容的两种方式

windows下修改Jar包内容的两种方式 背景第一种&#xff1a;解压工具第二种&#xff1a;Jar命令附Jar命令用法基本用法常见选项示例1&#xff1a;创建一个简单的 JAR 文件示例2&#xff1a;创建包含清单文件的 JAR 文件示例3&#xff1a;列出 JAR 文件的内容示例4&#xff1a;提…

面经-计算机基础

1.计算机⽹络 1.1 OSI与TCP/IP各层的结构与功能,都有哪些协议? 计算机网络体系结构 应⽤层 应⽤层 (application-layer &#xff09;的任务是通过应⽤进程间的交互来完成特定⽹络应⽤。 应⽤层协议定 义的是应⽤进程&#xff08;进程&#xff1a;主机中正在运⾏的程序&…

SpringBoot:SpringBoot中调用失败如何重试

一、引言 在实际的应用中&#xff0c;我们经常需要调用第三方API来获取数据或执行某些操作。然而&#xff0c;由于网络不稳定、第三方服务异常等原因&#xff0c;API调用可能会失败。为了提高系统的稳定性和可靠性&#xff0c;我们通常会考虑实现重试机制。 Spring Retry为Spri…

HarmonyOS Next开发学习手册——视频播放 (Video)

Video组件用于播放视频文件并控制其播放状态&#xff0c;常用于为短视频和应用内部视频的列表页面。当视频完整出现时会自动播放&#xff0c;用户点击视频区域则会暂停播放&#xff0c;同时显示播放进度条&#xff0c;通过拖动播放进度条指定视频播放到具体位置。具体用法请参考…

MATLAB|更改绘图窗口的大小和位置

MATLAB绘图 plot、plot3、cdfplot都适用 效果 如下图&#xff0c;运行程序后可以直接得到这两个绘图窗口。 右上角的Figure1是原始图片&#xff0c;右下角的Figure2是调整了位置和大小后的绘图窗口。 完整源代码 % 绘图大小和位置调整 % Evand©2024 % 2024-7-1/Ver1…