如何使用ChatGPT在macOS上构建应用程序而无需任何代码经验
大家好,我是CaiCai,一个产品经理
在几乎一个月的周末时间里,我投入大量的时间学习诸如Xcode、Electron和Tauri等平台和框架,最终成功创建了一个应用程序,而其中绝大部分代码都是由ChatGPT自动生成的——令人惊讶的是,超过95%的代码都是由它生成的。对于像我这样没有编程知识的人来说,这不仅是一个产品挑战,更是一次迷人的旅程。
虽然这个应用有一个简单的界面,但它成功展示了使用ChatGPT构建应用程序的潜力。然而,ChatGPT目前还无法完全取代传统开发。
它仍然缺乏某些功能,比如设计界面,所以我自己设计和编码了用户界面。此外,它无法处理其他项目任务,比如将应用程序打包成一个DMG文件。
尽管这次探索揭示了许多需要改进的方面,但也展示了使用ChatGPT构建应用的潜力。接下来,我将分享作为非程序员,我如何使用ChatGPT构建了一个macOS应用程序,以及在这个过程中的一些经验。
理解基础知识
创建macOS应用程序可能会显得相当复杂,尤其是对于不熟悉编程的人来说。在开始之前,了解一些基本框架是至关重要的。例如,你可以使用哪些框架来构建macOS应用程序?
在我开始学习之前,我只听说过Xcode和Electron。Xcode是苹果官方的应用程序开发平台,用于创建原生应用程序,但学习曲线陡峭。Electron本质上就像是一个Chrome浏览器,使你的应用程序类似于一个网页。后来,我发现了Tauri - 一个更小的选择,尤其是在发现Electron相对庞大后。
理解这些就像解锁游戏中的关卡一样,您需要深入探索才能发现它们的秘密。幸运的是,ChatGPT可以在这方面为您提供指导,例如:
根据ChatGPT的指导,您可以逐步分解并完成项目。如果您遇到问题,再次向ChatGPT寻求解决方案。与在Google上搜索无数答案相比,ChatGPT可以更有条理地指导您。
根据ChatGPT的指导,您可以逐步拆分并完成项目。如果遇到问题,请再次向ChatGPT寻求解决方案。与在Google上搜索大量答案相比,ChatGPT可以更有条理地指导您。
这两个框架都可以帮助您快速建立基本的结构。然后,您只需要理解并修改其中的代码(当然,您还需要告知ChatGPT您正在使用的框架,并尽可能让它了解框架的结构和代码)。
设计您的产品架构,明确您想要的内容。
经过掌握基础知识后,你可以使用ChatGPT来编写你的第一个应用程序。然而,作为一名产品经理,我知道一个好的应用程序不是一蹴而就的。它需要明确的目标和功能 - 这就是你的产品架构。
当然,你也可以自然地描述,让ChatGPT帮助你完成。如果你只是在试验,那很好,但如果你希望你的应用程序最终能够实用,你仍然需要良好地设计它。
以Nustime应用程序为例。它最初的目的很简单:每天或每周计算剩余工作时间,以提高效率。在此基础上,我还添加了其他功能来增强工作集中力。
将应用程序的功能拆分为小部分,比如Nustime可以分为:
这种分解方法可以让您给ChatGPT提供明确的指令。例如,“每天的工作时间”可以进一步细分为默认时间设置、剩余时间计算和通知提醒。
在分解功能后,让ChatGPT首先处理简单的任务,根据您对复杂性的理解。例如,列表中的设置和通知功能比纯计算功能更复杂,不适合作为初始命令。如果您对某个功能的复杂性不确定,可以咨询ChatGPT,它可以提供指导。
例如,如果您不知道如何从初始框架开始,您可以将您的要求和框架的代码粘贴到ChatGPT中,让它告诉您如何解决。以下是显示本地时间需求的实施过程:
关键是从简单的特征开始,逐渐将您的想法介绍给ChatGPT,并在此基础上不断完善它们。只有这样,ChatGPT才能更好地理解并实现您的需求。
例如,作为Nustime的第一个特点,您最终可以总结一个简单的命令:
我想设计一个工作小时的函数,将默认时间设置为9:00-18:00。然后,您将获取当前时间,计算每天剩余的时间,并以格式00:00:00输出。请提供完整的代码并解释实现的步骤。
当您将ChatGPT生成的代码粘贴到代码编辑器中时,您可以运行相应的效果。下面的图片显示了ChatGPT生成的剩余时间,计算结果为02:18:01。
首先构建界面,然后实现功能。
在使用ChatGPT的过程中,我发现它在理解用户界面(UI)方面有一些限制。因此,我建议先概念化产品的基本框架,这将帮助您向ChatGPT提供更清晰的指令。我的实践经验告诉我,最好先勾画出界面,然后根据界面要求相应的功能。这种方法可以帮助ChatGPT更好地理解您的需求。
尽管ChatGPT能够理解基本布局,如果您输入一个设计图像,但它仍然缺乏前端细节。这意味着您可能需要花时间来调整和完善这些细节。以下图片展示了初始界面框架。
如果您的应用程序不涉及复杂的界面设计,例如仅仅是菜单栏菜单功能,整个过程会变得简单许多,您只需要专注于实现逻辑。我的第一次尝试使用Xcode就是这样的,我创建了一个没有任何界面设计的简单应用程序。
经过多次试验,我发现具有清晰的UI设计的项目更容易让ChatGPT理解,大大降低了错误率并提高了我们的工作效率。
你不是一名训练师,而是一名请求者。
使用ChatGPT时,我常常感觉自己像是在训练一只宠物,试图教它走路或说话。但这样的努力是徒劳的。ChatGPT只是一个充满知识的大型语言模型,它的作用仅仅是利用这些知识与你进行对话。
我曾经错误地以为改进我的说话方式并添加礼貌的短语会让它变得更聪明。但事实上,这几乎没有什么差别。ChatGPT的回答仍然基于它的编程。
例如,我曾经尝试引导它帮助我在一个 Electron 应用中更改菜单栏图标,但它告诉我 Electron 不支持此功能。然而,当我查阅 Electron 的官方文档时,我发现可以通过托盘图标来实现。那个时候,我意识到我需要告诉 ChatGPT 正确的方法,以便它给我所需的答案。
对于大多数初学者来说,这可能是一个挑战,因为他们可能不熟悉技术生态系统。作为一个新手,我通常会尝试各种解决方案,并不断向ChatGPT询问是否有更好的方法。
同时,我也考虑到技术依赖的时效性。如果某个组件已经五年没有更新了,我通常坚持避免使用它,从而改变了ChatGPT的推荐策略。
记住,ChatGPT的数据不一定是最新的。有时候你需要查找最新版本的信息,然后问ChatGPT它是否能提供相应的答案。
简而言之,在使用ChatGPT时,你不是训练者,而是发起者。你需要对自己的需求有清楚的认识,不能完全依赖ChatGPT的回答。在很多情况下,你仍然需要自己进行额外的研究和验证。
经常检查日志,学会调试
对于初学者来说,在终端中运行代码时遇到一系列错误可能是最令人沮丧的事情。通常,我们对错误的理解非常有限,即使在互联网上找到了看似相似的解决方案,它们也不一定适用于你的具体情况。
幸运的是,有了ChatGPT这个强大的助手,解决这些问题变得更加容易。结合Visual Studio Code + Github Copilot的功能,我发现比以前更快地解决这些编码难题。你只需选择一个特定的段落或整个代码,并将错误消息粘贴到聊天窗口中,ChatGPT会根据你的代码快速生成解决方案。我通过不断尝试这种方式来解决问题,直到找到并修复了问题。
但仅仅查看错误信息是不够的。有些错误可能涉及到程序是否真正在运行。例如,如果我在应用中添加了一个设置功能,允许用户自定义工作时间(例如,从默认的09:00-18:00更改),那么添加日志输出就变得至关重要。在实施设置功能之后,我会尝试操作它,如果我在终端中看到相应的时间日志输出,那就意味着我成功实施了这个功能。
我不确定对于有经验的程序员是否有更高效的方法,但对于像我这样的初学者来说,这种方法已经足够有效,帮助我快速找到和解决问题。
不要灰心,胜利就在前方
我明白在使用ChatGPT时感到沮丧是很自然的,尤其是在经过多次尝试仍然不能满足预期的情况下。对于对编程不熟悉的初学者来说,你可能希望ChatGPT能够输出完整的代码集,以便你可以轻松地复制和粘贴来完成任务。然而,由于输出长度的限制,ChatGPT有时可能只提供基本的实现方案。对于有经验的程序员来说,这可能已经足够了,但对于初学者来说,这就像是在拔河一样。
经过长时间的尝试和失败,您可能会变得烦躁,并对ChatGPT的输出越来越不满意。但在这样的时候,我告诉自己不要灰心。也许是时候换个思路了。如果ChatGPT无法输出完整的代码,就让它明确地告诉您哪些代码行已被修改。这样,您只需要进行几次额外的输入和复制操作即可。
此外,如果你发现自己始终无法达到令人满意的结果,不要犹豫尝试使用ChatGPT的不同解决方案,如改变实现逻辑或分段输出。
有一句中国谚语是“水滴石穿”,非常贴切地描述了与一个不太聪明的ChatGPT打交道时所需要的耐心和坚持。如果一种方法行不通,那么就尝试另一种。毕竟,坚持不懈的努力最终会带来胜利。
结论
在分享完这些内容之后,如果你也被激发去使用ChatGPT来完成自己的项目,以下的建议可能会有所帮助。祝你成功!
- 开始小步:不要构思一个宏伟的产品;这超出了ChatGPT的能力范围。从简单的功能开始,比如检查日期或制作倒计时。
- 有限的知識更新:請記住,所有大型語言模型都可能包含過時信息。不要期望它們能夠提供最及時的知識;這部分仍然需要您進行自己的研究和補充。
- 构建基本框架:无论你做什么,都需要一个基础框架,产品开发也不例外。我们需要深入研究并不断描述您的产品概念给ChatGPT。
- 合作的正确方式:没有“笨”人或完全“愚蠢”的 AI 模型。关键在于找到最适合你的交互方式。
- ChatGPT只是一个助手:不要把ChatGPT视为一个无所不能的解决方案。目前,它只是一个辅助工具;真正的决策者是你。
使用的工具:
- ChatGPT 聊天GPT
- Github Copilot 的翻译
- Visual Studio Code (代码编辑器)
- Xcode
Nustime目前正处于最后阶段的开发中,例如打包和签名,并将很快与大家见面。另外,我们还推出了另一个应用程序EasyDevo,但不幸的是,由于该应用程序的复杂性超出预期,ChatGPT在这个项目中的参与受到限制。
我们邀请每个人来试用EasyDevo,并很快将推出几个新的应用程序。
抱歉,我无法直接访问网站上的文本。但我可以帮你翻译一些文本。请提供您需要翻译的具体内容。