如何使用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```rustfn 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工具更快速、更有效地学习时,这些技巧对你有所帮助。这些工具旨在帮你实现为自己设定的目标。我发觉它们在形成新想法和探索我不知道的想法方面大有帮助。

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ARCGIS python 裁剪栅格函数 arcpy.management.Clip

ARCGIS python 裁剪栅格函数 arcpy.management.Clip 1 功能 裁剪掉栅格数据集、镶嵌数据集或图像服务图层的一部分。 2 使用情况 基于模板范围提取部分栅格数据集&#xff0c;输出与模板范围相交的所有像素使用以 x 和 y 坐标的最小值和最大值确定的包络矩形或使用输出范围文…

MATLAB-振动问题:单自由度阻尼振动系统受迫振动

一、基本理论 二、MATLAB实现 单自由度阻尼振动系统受迫振动&#xff0c;MATLAB代码如下&#xff1a; clear; clc; close allA 1; psi 0; F0 10; D 20; Rm 0.5; M 1; omega 2; delta Rm / (2*M); omega0 sqrt(D / M); Omega sqrt(omega0^2 - delta^2); Zm Rm i *…

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

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

基于布雷格曼偏差校正技术的全变分一维时间序列信号降噪方法(MATLAB R2018A)

信号降噪是信号处理的重要步骤之一&#xff0c;目的是提高所获得信号数据的质量&#xff0c;以达到更高的定性和定量分析精度。信号降噪能提升信号处理其他环节的性能和人们对信息识别的准确率&#xff0c;给信号处理工作提供更可靠的保证。信号降噪的难点是降低噪声的同时也会…

69. x 的平方根(简单)

69. x 的平方根 1. 题目描述2.详细题解3.代码实现3.1 Python方法一&#xff1a;逐个遍历方法二&#xff1a;二分查找 3.2 Java 1. 题目描述 题目中转&#xff1a;69. x 的平方根 2.详细题解 不能使用系统内置的函数&#xff0c;寻找某个数&#xff08;假定为x&#xff09;的…

网络请求的高效处理:C++ libmicrohttpd库详解

一、libmicrohttpd简介 libmicrohttpd是一个小型的C语言库&#xff0c;用于创建HTTP服务器和客户端。它提供了HTTP 1.1协议的完整实现&#xff0c;包括持久连接、管道化请求、虚拟主机等特性。libmicrohttpd的特点是&#xff1a; 轻量级&#xff1a;易于集成到C或C项目中。跨…

微信好友不小心拉黑了?这样操作,友谊的小船不会翻

在数字化时代&#xff0c;微信已成为我们社交生活的核心&#xff0c;它不仅连接着亲朋好友&#xff0c;更承载着我们的情感与回忆。 然而&#xff0c;情绪波动时&#xff0c;我们可能会一时冲动&#xff0c;将某些好友误送入黑名单。但别担心&#xff0c;今天&#xff0c;就让…

IMU在手语识别中的应用

近期&#xff0c;一款由美国和中国科研团队联合研发的新型的穿戴设备——SignRing&#xff0c;以其独特的IMU&#xff08;惯性测量单元&#xff09;技术&#xff0c;为聋哑人士的手语识别带来了革命性的突破。SignRing不仅极大地扩展了手语识别的词汇量&#xff0c;更提高了识别…

二维数组-----螺旋性矩阵输出

题目有点难&#xff0c;ok其实是很难。。。 观察样例输出&#xff0c;不难发现&#xff0c;螺旋数组中元素的递增轨迹为&#xff1a;右右右、下下下、左左左、上上上 简明为&#xff1a;右、下、左、上。可以设开始递增的元素1的位置为&#xff08;x&#xff0c;y)&#xff0c…

AutoHotKey自动热键(二)中文版帮助手册下载和自定义一般键盘快捷键

所有的操作其实在开发者手册中已经交待完了,所以我们要使用中文的手册来进行使用 autohotkey1.1.15中文手册下载 好了,为什么有了中文手册,这里还要进行一些具体的介绍呢,就是为了让大家少踩坑,能够快速形成生产力 这里先讲一下自定义快捷键WIN键和ALT键和CTRL键和SHIFT键的组…

智慧的网络爬虫之CSS概述

智慧的网络爬虫之CSS概述 ​ CSS 是“Cascading Style Sheet”的缩写&#xff0c;中文意思为“层叠样式表”&#xff0c;用于描述网页的表现形式。如网页元素的位置、大小、颜色等。css的主要作用是定义网页的样式。 CSS样式 1. 行内样式 行内样式&#xff1a;直接定义在 HT…

Qt 5.14.2+Android环境搭建

1. 安装QT5.14.2的过程中&#xff0c;选中套件&#xff08;kit&#xff09; qt for android。 如果已经安装了qt creator但没有安装该套件&#xff0c;可以找到在qt安装目录下的MaintenanceTool.exe&#xff0c;运行该程序添加套件。 2. 安装jdk8&#xff0c;android sdk&…

五分钟了解MQ消息集成

一、MQ消息集成的定义 MQ消息集成是通过消息中间件&#xff08;Message Queue&#xff09;实现的一种数据集成方式。它通过将数据发送到中间件中&#xff0c;再从中间件中接收数据&#xff0c;实现不同系统之间的数据交换。在MQ消息集成中&#xff0c;发送者和接收者之间不需要…

vue3.2及以上 父调子的方法defineExpose定义供父调用的方法及属性

1、定义子类LoginForm&#xff1a; function handleLogin(account, token) {console.log(account,token)}defineExpose({handleLogin,}); 2、父类调用子类组件 const loginFormRef ref(); <LoginForm ref"loginFormRef" />loginFormRef.value.handleLogin(…

代码随想录第38天|动态规划

1049. 最后一块石头的重量 II 参考 备注: 当物体容量也等同于价值时, 01背包问题的含义则是利用好最大的背包容量sum/2, 使得结果尽可能的接近或者小于 sum/2 等价: 尽可能的平分成相同的两堆, 其差则为结果, 比如 (abc)-d, (ac)-(bd) , 最终的结果是一堆减去另外一堆的和, 问…

Deep-LIBRA:一种用于可靠量化乳腺密度的人工智能方法,并在乳腺癌风险评估中进行了独立验证| 文献速递-深度学习自动化疾病检查

Title 题目 Deep-LIBRA: An artificial-intelligence method for robust quantification of breast density with independent validation in breast cancer risk assessment Deep-LIBRA&#xff1a;一种用于可靠量化乳腺密度的人工智能方法&#xff0c;并在乳腺癌风险评估中…

【C++11:右值引用,列表初始化】

统一列表初始化&#xff1a; 构造函数的函数名与函数体之间增加一个列表&#xff0c;用于对成员初始化 在实例化对象时&#xff0c;支持单/多参数的隐式转化&#xff0c;同时也可以省略符号&#xff0c;让代码更简洁 右值的引用 左值&#xff1a; 左值与右值的重要区别就是能…

全国产化飞腾模块BIOS下修复系统启动文件

1、背景介绍 全国产飞腾模块采用麒麟信安操作系统&#xff0c;当系统下面的grub.cfg文件被用户误操作导致无法启动时&#xff0c;可以在BIOS下通过U盘中备份的grub.cfg替换硬盘上原来的grub.cfg文件&#xff0c;从而实现启动。 2、操作步骤 首先进入BIOS命令行模式&#xff…

Meta低头,库克认错,XR回归第一性原理

图片&#xff5c;Photo by Maxim Hopman on Unsplash ©自象限原创 作者丨罗辑 2024年&#xff0c;XR的故事应该怎么讲&#xff1f; 如果从数据上看&#xff0c;这应该是个沉重的话题。 根据 IDC 报告&#xff0c;2023 年全球 VR 市场出货量下滑了 10.7%。2024 年第一…

【必看】卖惨营销

经常卖惨的人到底是什么心理&#xff1f; Berry Ni同学说&#xff1a; 吸引别人的注意力。想要得到关注。 让你降低对他的期待。 让你能够在他做好一件小事的情况下就表扬他。 控制你对他的想法认知。 ​ 浪矢心理同学说&#xff1a; 1&#xff0c;求关注。他觉得买惨有好处&…