Cursor小白速通:成为赤脚程序员
Cursor小白速通:成为赤脚程序员
Cursor小白速通:成为赤脚程序员 Cursor小白速通:成为赤脚程序员 Modified October 16, 2024 🌟 Cursor主打的三个功能:代码库参考、代码补全、对话编程 2、为什么要编程 我们现在的日常已经离不开各种电子产品、应用等等,随着技术的发展,编程不会只是程序员的专属,而是一种解决问题的方式和个人技能。面向庞大用户、复杂功能的软件,仍是需要专业程序员,但是意味着用户个性化需求、安全隐私无法被完全满足,但是个人开发或家酿软件(home cooked apps)就可以满足,个人编程技能也不用专业程序员那么高,赤脚程序员(barefoot developers)的水平就行。推荐一个Maggie Appleton的演讲视频,很好解释了家酿软件和赤脚程序员的概念。 🌟 👩💻 赤脚程序员:不是专业的开发者,为周围的人提供简易编程服务 • 赤脚程序员是那些利用简易编程工具为周围人服务的人,他们并不是专业开发者。类似于赤脚医生,他们了解周围人的需求,能够提供“基本软件关怀”,这种类型的开发者并不需要高深的编程知识,只需具备基本的技术能力、合适的工具即可。 🧩 大语言模型的作用:赋能赤脚程序员 • 大语言模型能够将自然语言描述转化为工作代码,降低了编程门槛,只需掌握简单的原理,去提问获得代码、应用、调试,不断循环直到解决问题就行了。 赤脚医生是一个非常成功的项目,提供了基础医疗保障,延长了人均寿命。 赤脚程序员介于普通用户和专业程序员之间。 3、Cursor实践 3.1、下载和安装 打开Cursor的官网:https://www.cursor.com,点击download进行下载和安装。亲测,不用魔法上网也可以访问。 3.2、实现简单需求 安装之后,打开之后发现和其他的编程IDE页面很像,这个时候我们可以通过commd + L调起AI对话,输入你的需求或想实现的效果。 整体的页面构成是 左侧是代码文件、右侧是提示对话框。我们可以提前创建一个文件, 这样就可以点击对话框的代码块旁的”Apply“、”Accept“将代码保存在左侧文件里。如果不知道如何运行它,也不用担心,一般对话框里都会明确告诉使用方法,不清楚或报错了继续追问就行。 在最右侧的图我们看到,这个浏览器插件的功能已经成功了。我们还可以在这个基础上继续修改,比如希望可以拖动,颜色更美观、显示分钟等,只要在对话框里表达你的需求,然后对着生成的代码块点击“Apply” → “Accept”、保存文件、验证测试就行了。 3.3、Tips小结 完成了一个小需求,我们来做个小结。 🌅 • 在对话框里不断追问,一步一步完善需求;比如这个展示页面时长的插件,先看到展示,再对展示的样式等进行优化 • 对话时,可以@本地代码文件 进行问答,可以得到更精准的回答 • 可以本地存一份需求说明文档(这个也可以让它帮你生成),在迭代过程中,可以随时让它查阅 • 遇到任何报错、不理解的地方,都可以截图或复制后在对话框里丢给它,可以要求它对细节操作进行解答,直到验证成功为止 • 不要有面对代码的恐惧,代码只是工具,可以从非常简单的小需求开始练手,使用熟悉之后会和它配合越来越顺畅 3.4、实现进阶需求 📍 肝了2个半天的周末,实现了从Notion获取时间消费记录,自动同步到苹果日历中。这是来自我个人的需求,一个典型的”家酿软件“,诉求很简单。 • Notion数据库中承载时间消费记录,用于数据存档和总结。 • 时间记录以日历形式同步在苹果日历上,不同类型展示不同日历颜色。 • 从Notion中单向同步到日历,只要有Notion数据新增、更新、删除,在日历中都变化。 • 定时自动同步数据。 为了实现以上的效果,尝试过Notion日历、同步插件等各种方式,也想过自己写一个脚本,但是开发无门,毕竟我是一个执行Python脚本时文件路径会打错、看着终端报错一堆头疼的小白。在用Cursor实现了浏览器插件后,开始写这个需求。 虽然这依然是个小需求,但是比浏览器插件要复杂很多,涉及到API调用、脚本执行、日志等。因为略微复杂了一些,在一些报错上(比如日历每次重复同步、自动同步)卡了很久,也总结了一些坑。 3.4.1、把需求文档写清楚 强烈建议在开始时,写好需求文档,就让Cursor按照这个文档开发。可以通过反问Cursor的对话形式,不断细化这个文档,如果文档不够细的话,在开发过程中会浪费一些时间。你会发现代码给出的效果,不是你想要的。在这个过程中也有点惭愧,在实际工作中有时给产研提的一些需求也不够明确。 ⛱️ 举例:在给Cursor对话中,提到说日历数据要自动同步,但是没有给出具体的要求。比如报错了如何处理、要不要报错日志等,都是要考虑的,毕竟这个小需求,业务方是你、产品是你、研发还是你。 3.4.2、一步步迭代,先实现最基础的 🌟 举例:分阶段实现,效率更高,只考虑本阶段需求即可。这个日历同步需求中,我分成了4个阶段 • 数据能同步,API调用成功 • 数据同步不重复,且新增、更新、删除都同步 • 分类同步到不同日历中 • 定时自动同步 3.4.3、主动思考,大语言模型也有局限性 🥖 大语言模型的缺陷,上下文窗口限制、幻觉,在Cursor里也有体现,虽然可以通过@文件、Claude3.5 sonnet模型等方式缓解。比如数据同步的时候,总是每次脚本执行后,数据重复同步到日历。排查对比了很久,发现是唯一ID的问题,但是使用Cursor报错排查的时候,总是给我指引说是唯一ID没有问题都存在。这个时候就需要人工强介入,不断思考问题到底能出在哪。 3.4.4、细节操作要注意 🏖️ • 每次修改完代码要保存,再去运行,我好几次报错都是因为这个原因。 • 整体修改慎用,改好了这个bug可能带来新bug。 • 新增其他功能的时候,可以新开一个对话,要不然之前的上下文比较影响新代码生成和调试。 • 每个项目都新建一个文件夹,相关文件都放在里面,执行的时候方便相对路径。 • 代码中尽可能多带日志,报错的时候方便调试。 4、Cursor总结 Cursor的优点,不仅是它是个对话式的编程工具,它更像一个在线编程学习机,它集代码编写、报错调试、运行于一体。这些都可以在一个页面里丝滑实现,而且还是对话的方式,有什么不懂的,都可以丢过去,完全消除了学习代码的恐惧感。比如我就是在Notion这个小项目的过程中,学会了环境变量、脚本日志的一些知识。 Cursor很好,让小白可以无压力入门代码,成功解决实际问题,也可以让专业程序员大大提高效率,但我们对它也不能过于乐观。至少在目前,AI编程替代专业程序员,还是一个伪命题。Cursor比较适合简单、原型类的项目,当应用比较复杂和商业化时,就会比较困难,需要考虑长期维护、用户场景和稳定性等因素。而且,代码编写只是开发中的一环,程序员的工作还包括需求评估沟通、架构设计、调试部署、背锅(划掉,不是),等多个模块,而且大语言模型面对复杂项目可能面临改好一个bug,产生一个新bug的情况。 所以又回到了,人是主体,专业或高手程序员不可替代,技术的发展对分工和行业的影响,也不一定是非黑即白替换的方式,可能是一种人工和智能混合的工作模式。但是在目前,我们能做的是积极拥抱,从需求出发,解决实际问题,毕竟让小白也有了编程可能。 Maggie Appleton 的演讲视频 🌟 Cursor主打的三个功能:代码库参考、代码补全、对话编程 Cursor主打的三个功能:代码库参考、代码补全、对话编程 2、为什么要编程 我们现在的日常已经离不开各种电子产品、应用等等,随着技术的发展,编程不会只是程序员的专属,而是一种解决问题的方式和个人技能。面向庞大用户、复杂功能的软件,仍是需要专业程序员,但是意味着用户个性化需求、安全隐私无法被完全满足,但是个人开发或家酿软件(home cooked apps)就可以满足,个人编程技能也不用专业程序员那么高,赤脚程序员(barefoot developers)的水平就行。推荐一个Maggie Appleton的演讲视频,很好解释了家酿软件和赤脚程序员的概念。 Maggie Appleton 的演讲视频 🌟 👩💻 赤脚程序员:不是专业的开发者,为周围的人提供简易编程服务 • 赤脚程序员是那些利用简易编程工具为周围人服务的人,他们并不是专业开发者。类似于赤脚医生,他们了解周围人的需求,能够提供“基本软件关怀”,这种类型的开发者并不需要高深的编程知识,只需具备基本的技术能力、合适的工具即可。 🧩 大语言模型的作用:赋能赤脚程序员 • 大语言模型能够将自然语言描述转化为工作代码,降低了编程门槛,只需掌握简单的原理,去提问获得代码、应用、调试,不断循环直到解决问题就行了。 👩💻 赤脚程序员:不是专业的开发者,为周围的人提供简易编程服务 • 赤脚程序员是那些利用简易编程工具为周围人服务的人,他们并不是专业开发者。类似于赤脚医生,他们了解周围人的需求,能够提供“基本软件关怀”,这种类型的开发者并不需要高深的编程知识,只需具备基本的技术能力、合适的工具即可。 🧩 大语言模型的作用:赋能赤脚程序员 • 大语言模型能够将自然语言描述转化为工作代码,降低了编程门槛,只需掌握简单的原理,去提问获得代码、应用、调试,不断循环直到解决问题就行了。 赤脚医生是一个非常成功的项目,提供了基础医疗保障,延长了人均寿命。 赤脚程序员介于普通用户和专业程序员之间。 赤脚医生是一个非常成功的项目,提供了基础医疗保障,延长了人均寿命。 赤脚医生是一个非常成功的项目,提供了基础医疗保障,延长了人均寿命。 赤脚程序员介于普通用户和专业程序员之间。 赤脚程序员介于普通用户和专业程序员之间。 3、Cursor实践 3.1、下载和安装 打开Cursor的官网:https://www.cursor.com,点击download进行下载和安装。亲测,不用魔法上网也可以访问。 3.2、实现简单需求 安装之后,打开之后发现和其他的编程IDE页面很像,这个时候我们可以通过commd + L调起AI对话,输入你的需求或想实现的效果。 整体的页面构成是 左侧是代码文件、右侧是提示对话框。我们可以提前创建一个文件, 这样就可以点击对话框的代码块旁的”Apply“、”Accept“将代码保存在左侧文件里。如果不知道如何运行它,也不用担心,一般对话框里都会明确告诉使用方法,不清楚或报错了继续追问就行。 在最右侧的图我们看到,这个浏览器插件的功能已经成功了。我们还可以在这个基础上继续修改,比如希望可以拖动,颜色更美观、显示分钟等,只要在对话框里表达你的需求,然后对着生成的代码块点击“Apply” → “Accept”、保存文件、验证测试就行了。 3.3、Tips小结 完成了一个小需求,我们来做个小结。 🌅 • 在对话框里不断追问,一步一步完善需求;比如这个展示页面时长的插件,先看到展示,再对展示的样式等进行优化 • 对话时,可以@本地代码文件 进行问答,可以得到更精准的回答 • 可以本地存一份需求说明文档(这个也可以让它帮你生成),在迭代过程中,可以随时让它查阅 • 遇到任何报错、不理解的地方,都可以截图或复制后在对话框里丢给它,可以要求它对细节操作进行解答,直到验证成功为止 • 不要有面对代码的恐惧,代码只是工具,可以从非常简单的小需求开始练手,使用熟悉之后会和它配合越来越顺畅 • 在对话框里不断追问,一步一步完善需求;比如这个展示页面时长的插件,先看到展示,再对展示的样式等进行优化 • 对话时,可以@本地代码文件 进行问答,可以得到更精准的回答 • 可以本地存一份需求说明文档(这个也可以让它帮你生成),在迭代过程中,可以随时让它查阅 • 遇到任何报错、不理解的地方,都可以截图或复制后在对话框里丢给它,可以要求它对细节操作进行解答,直到验证成功为止 • 不要有面对代码的恐惧,代码只是工具,可以从非常简单的小需求开始练手,使用熟悉之后会和它配合越来越顺畅 3.4、实现进阶需求 📍 肝了2个半天的周末,实现了从Notion获取时间消费记录,自动同步到苹果日历中。这是来自我个人的需求,一个典型的”家酿软件“,诉求很简单。 • Notion数据库中承载时间消费记录,用于数据存档和总结。 • 时间记录以日历形式同步在苹果日历上,不同类型展示不同日历颜色。 • 从Notion中单向同步到日历,只要有Notion数据新增、更新、删除,在日历中都变化。 • 定时自动同步数据。 为了实现以上的效果,尝试过Notion日历、同步插件等各种方式,也想过自己写一个脚本,但是开发无门,毕竟我是一个执行Python脚本时文件路径会打错、看着终端报错一堆头疼的小白。在用Cursor实现了浏览器插件后,开始写这个需求。 肝了2个半天的周末,实现了从Notion获取时间消费记录,自动同步到苹果日历中。这是来自我个人的需求,一个典型的”家酿软件“,诉求很简单。 • Notion数据库中承载时间消费记录,用于数据存档和总结。 • 时间记录以日历形式同步在苹果日历上,不同类型展示不同日历颜色。 • 从Notion中单向同步到日历,只要有Notion数据新增、更新、删除,在日历中都变化。 • 定时自动同步数据。 为了实现以上的效果,尝试过Notion日历、同步插件等各种方式,也想过自己写一个脚本,但是开发无门,毕竟我是一个执行Python脚本时文件路径会打错、看着终端报错一堆头疼的小白。在用Cursor实现了浏览器插件后,开始写这个需求。 虽然这依然是个小需求,但是比浏览器插件要复杂很多,涉及到API调用、脚本执行、日志等。因为略微复杂了一些,在一些报错上(比如日历每次重复同步、自动同步)卡了很久,也总结了一些坑。 3.4.1、把需求文档写清楚 强烈建议在开始时,写好需求文档,就让Cursor按照这个文档开发。可以通过反问Cursor的对话形式,不断细化这个文档,如果文档不够细的话,在开发过程中会浪费一些时间。你会发现代码给出的效果,不是你想要的。在这个过程中也有点惭愧,在实际工作中有时给产研提的一些需求也不够明确。 ⛱️ 举例:在给Cursor对话中,提到说日历数据要自动同步,但是没有给出具体的要求。比如报错了如何处理、要不要报错日志等,都是要考虑的,毕竟这个小需求,业务方是你、产品是你、研发还是你。 ⛱️ 举例:在给Cursor对话中,提到说日历数据要自动同步,但是没有给出具体的要求。比如报错了如何处理、要不要报错日志等,都是要考虑的,毕竟这个小需求,业务方是你、产品是你、研发还是你。 ⛱️ 举例:在给Cursor对话中,提到说日历数据要自动同步,但是没有给出具体的要求。比如报错了如何处理、要不要报错日志等,都是要考虑的,毕竟这个小需求,业务方是你、产品是你、研发还是你。 举例:在给Cursor对话中,提到说日历数据要自动同步,但是没有给出具体的要求。比如报错了如何处理、要不要报错日志等,都是要考虑的,毕竟这个小需求,业务方是你、产品是你、研发还是你。 3.4.2、一步步迭代,先实现最基础的 🌟 举例:分阶段实现,效率更高,只考虑本阶段需求即可。这个日历同步需求中,我分成了4个阶段 • 数据能同步,API调用成功 • 数据同步不重复,且新增、更新、删除都同步 • 分类同步到不同日历中 • 定时自动同步 举例:分阶段实现,效率更高,只考虑本阶段需求即可。这个日历同步需求中,我分成了4个阶段 • 数据能同步,API调用成功 • 数据同步不重复,且新增、更新、删除都同步 • 分类同步到不同日历中 • 定时自动同步 3.4.3、主动思考,大语言模型也有局限性 🥖 大语言模型的缺陷,上下文窗口限制、幻觉,在Cursor里也有体现,虽然可以通过@文件、Claude3.5 sonnet模型等方式缓解。比如数据同步的时候,总是每次脚本执行后,数据重复同步到日历。排查对比了很久,发现是唯一ID的问题,但是使用Cursor报错排查的时候,总是给我指引说是唯一ID没有问题都存在。这个时候就需要人工强介入,不断思考问题到底能出在哪。 大语言模型的缺陷,上下文窗口限制、幻觉,在Cursor里也有体现,虽然可以通过@文件、Claude3.5 sonnet模型等方式缓解。比如数据同步的时候,总是每次脚本执行后,数据重复同步到日历。排查对比了很久,发现是唯一ID的问题,但是使用Cursor报错排查的时候,总是给我指引说是唯一ID没有问题都存在。这个时候就需要人工强介入,不断思考问题到底能出在哪。 3.4.4、细节操作要注意 🏖️ • 每次修改完代码要保存,再去运行,我好几次报错都是因为这个原因。 • 整体修改慎用,改好了这个bug可能带来新bug。 • 新增其他功能的时候,可以新开一个对话,要不然之前的上下文比较影响新代码生成和调试。 • 每个项目都新建一个文件夹,相关文件都放在里面,执行的时候方便相对路径。 • 代码中尽可能多带日志,报错的时候方便调试。 • 每次修改完代码要保存,再去运行,我好几次报错都是因为这个原因。 • 整体修改慎用,改好了这个bug可能带来新bug。 • 新增其他功能的时候,可以新开一个对话,要不然之前的上下文比较影响新代码生成和调试。 • 每个项目都新建一个文件夹,相关文件都放在里面,执行的时候方便相对路径。 • 代码中尽可能多带日志,报错的时候方便调试。 4、Cursor总结 Cursor的优点,不仅是它是个对话式的编程工具,它更像一个在线编程学习机,它集代码编写、报错调试、运行于一体。这些都可以在一个页面里丝滑实现,而且还是对话的方式,有什么不懂的,都可以丢过去,完全消除了学习代码的恐惧感。比如我就是在Notion这个小项目的过程中,学会了环境变量、脚本日志的一些知识。 Cursor很好,让小白可以无压力入门代码,成功解决实际问题,也可以让专业程序员大大提高效率,但我们对它也不能过于乐观。至少在目前,AI编程替代专业程序员,还是一个伪命题。Cursor比较适合简单、原型类的项目,当应用比较复杂和商业化时,就会比较困难,需要考虑长期维护、用户场景和稳定性等因素。而且,代码编写只是开发中的一环,程序员的工作还包括需求评估沟通、架构设计、调试部署、背锅(划掉,不是),等多个模块,而且大语言模型面对复杂项目可能面临改好一个bug,产生一个新bug的情况。 所以又回到了,人是主体,专业或高手程序员不可替代,技术的发展对分工和行业的影响,也不一定是非黑即白替换的方式,可能是一种人工和智能混合的工作模式。但是在目前,我们能做的是积极拥抱,从需求出发,解决实际问题,毕竟让小白也有了编程可能。 1、Cursor介绍 Cursor是一款结合了AI大语言能力的编程工具,最近在比较火的是8岁小女孩使用Cursor创建了一个聊天网页的视频。在即刻和推上关注的开发者都在使用、推荐Cursor,人工智能大佬AK甚至打趣说,未来编程不断摁tab键就行了。 8岁小女孩使用Cursor创建了一个聊天网页