不会任何编程语言,不写一行代码,完全靠ChatGPT我做了个小程序

不会任何编程语言,不写一行代码,完全靠ChatGPT我做了个小程序

首页模拟经营代号模拟人生更新时间:2024-09-21

先介绍一下本人的“技术”背景,由于多年的互联网工作经验,虽然没有任何开发经验,但是对于技术方面的基础的逻辑有一些基本概念,也有一段时间看过一点python基础知识的书(大概1/4本),所以对参数、变量、函数这些基础概念有一定了解。但是始终还是没有掌握任何开发语言,也没有任何开发经验。

在这个小程序的开发过程中,我没写过一行代码,甚至连注册账号,填写信息、下载开发组件这些也都是ChatGPT教我的,在开发项目方面我和纯小白没有什么区别。全部过程里我几乎只负责提需求、执行ChatGPT的指令和反馈。但如果只是这样,我可能不会写下这篇文章,因为ChatGPT并不总是能解决所有问题,在好几个“关键”时刻,反而是由我给ChatGPT提供解决方案和思路,“帮助”它走出困境,“提示”它发现错误。在数据库的表结构方面,我还向程序员朋友请教了几个问题,帮我节约了很多时间,少走了些弯路。

这个项目让我对AI目前在编程方面的能力有了更深入的认知,我可以负责任的说,以目前的AI能力,提需求、给反馈然后全程无脑复制粘贴是完成不了开发的。整个开发过程更像是我和ChatGPT之间相互合作,相互补足,有时候它“无脑”输出,我就得负责发现问题。有时候我“无脑”复制粘贴,它负责发现问题。有时候我俩都犯错,然后一起找问题。随着我对它和代码越来越了解,我们之间也越来越默契,开发的体验也越来越好。

我总结了几个小白使用ChatGPT开发需要注意的点:

  1. ChatGPT4和3.5能力相差巨大,最明显的就是对过往聊天记录的关联(虽然4也不能做到像人一样把历史记录都记住并应用),如果只用3.5我想可能很难完成这个项目,所以如果真的要用ChatGPT开发一定要用4。我只在4的用量用完之后才用3.5顶一下。有一次我用3.5搞了半天的功能,交给4一下就解决了。
  2. 一定要抱着开放学习的心态进行开发,不要想着我不用学任何东西,完全靠AI。开发的速度其实还是取决于对“技术”的掌握程度,而ChatGPT仅仅只是降低了门槛。如果真的完全不想学,如果有足够的耐心和提问技巧,也许也能完成开发,但是我想那会是一个比多少学一点痛苦很多倍的过程。
  3. 要试图了解每一段代码的作用,至少做到大概知道。也要了解清楚代码之间的逻辑关系,这有助于找到问题所在。在这方面初期尽量多问ChatGPT。可以把整段代码贴给它修改,它修改后,要对调整的地方有一些了解。因为有时候整段代码贴回去后,会发现原来能用的功能都不能用了。如果不知道改了哪里,会有很大麻烦。
  4. 我遇到最频繁的问题,就是变量,参数,字段,页面等命名前后不一致产生的问题,由于我没有开发经验,初期都是复制粘贴ChatGPT给的代码,所以这些命名都是由ChatGPT完成的。到后面它经常会在需要同一个值时给出和之前不一样的值,比如有的地方用“bottleList”,有的地方用“newBottleList”或者“gameList”,有的地方返回“列表创建成功”,但是在接收的时候却需要判断“创建成功”。它只能根据当时的需求来给出代码,但是在这些方面不能做到前后一致。所以在开发初期和过程里,一定要提前把这些命名和值定下来,自己找个地方存起来。在开发的时候,要直接用这些命名告诉ChatGPT,而且不要图省事少打几个字母或者忽略大小写。因为对于小白来讲,不知道在哪就出问题了。
  5. 不要幻想把整个需求给ChatGPT(但是至少你得给一遍,让自己也对步骤有一些大概的了解),它就能告诉你所有的步骤要怎么做,以及下一步该怎么做。事实上,ChatGPT对于全局架构的能力是很差的,这一点需要由人来把控。比如要有几个页面,每个页面上实现什么功能,之间的关系是什么,哪些需要保存到数据库,以什么形式保存。
  6. 不要过于信任ChatGPT,在开发过程中会逐步摸到它的一些能力边界,所以也大概知道它会在什么地方犯错和忽略一些信息。比如ChatGPT在项目最开始就提过要把数据保存在云数据库中,我开始没仔细看或者给忘了。而当我提出要有地方保存数据时,ChatGPT又让我在本地建一个data文件夹并把数据保存在这个文件夹下的文件里(它也给忘了)。最后我费了好一番功夫才知道云数据库是怎么回事。有时候当一个需求在两个地方都提过,而它给出的方案和代码不一样的时候,就要小心了,最好问问它两者之间有什么区别。
  7. 每次只能解决一个点,描述越详细,ChatGPT解决的效率越高。每次问ChatGPT的问题越多越粗,它给的答案也是粗略的,往往无法推进进度。所以耐心就很重要,把需求一点点拆解,拆解到每一个细小的功能点,解决了一个问题再进行下一个问题。
  8. 非常重要,解决问题往往不是一个方法,有时候ChatGPT无法实现复杂的功能,需要我们想到别的解决办法。(具体的案例下面会提)

总结的部分基本就是这么多,以后想到了可能还会再写文补充。下面讲讲实际的开发历程和踩的几个大坑。

我开发的这个微信小程序名叫“喜好瓶子”,就是可以创建瓶子列表然后往瓶子里加水再分享记录的一个小程序,这个在程序员眼里可能是个小到不能再小的项目,从想法到上线花了1个多月的时间,由于是利用业余时间开发的,实际开发周期大概在两到三周左右。

项目开始于有一天我无意中在网上刷到一个“喜好瓶子”的帖子,发现一堆跟贴的网友在求原图,而且所谓的“原图”也已经明显被涂改了很多次。所以我就冒出个想法,要是有个小程序,既可以玩又可以分享还可以自定义瓶子不就能满足所有人需求了么,最好样子还能好看一点。而且这个小程序的功能应该并不复杂。

由于平时工作已经几乎离不开ChatGPT了,所以我自然想到如果完全由它来开发,以我的“技术”水平能不能把它做出来呢?然后我就开始了这个尝试,结果第一个礼拜过去,我就差点放弃了。

项目起步还是非常顺利的,除了我一开始就问ChatGPT能不能用python(我唯一有那么一点了解的语言)开发小程序,然后被告知要用JS、HTML、CSS这3个我只知道名字的语言。

我先是整理了我对整个项目的功能描述,了解了大概的开发步骤,在ChatGPT的指导下注册微信小程序,下载开发者工具,创建项目和文件。然后在第一个功能实现上,就卡死了。

我想实现用手指上下移动改变瓶子中水位的高低的效果,所以我先用keynote(我认为这是新手绘图神器)画了一个瓶子长这样:

用keynote画的瓶子

然后到了开发水位变化的效果,其实ChatGPT一开始就告诉我两种方案,用多张图片(我能理解)或者使用Canvas动态画出水位(完全不知道是什么东西,听着就很复杂)。

但是后面它又给出了用CSS模拟水位效果的代码,由于瓶子宽度在每一个高度上不同,无论我和ChatGPT怎么努力,我都无法实现完美的效果,要么可以上下移动宽度不变,要么宽度整体改变无法局部改变。

在这个功能点上,我和它死磕了3天,然后放弃了。我转念一想,虽然用CSS控制水位可以轻量化小程序,并且实现像素级的控制精度,但是这两点对于我的需求来讲似乎不是重点。用图片也有更多优势,比如水可以更漂亮。我也可以通过换图片来改变瓶子的形状而不用再重新写代码。

所以我就用midjourney画了个瓶子长这样:

然后又用keynote画了水位成了这样:

再用PS加了发光效果成了这样:

当我提出用图片方案替代CSS方案后,ChatGPT用了一段代码就解决了我们死磕了3天的问题。

第二个遇到的卡了很久的问题是在云函数上,我根据ChatGPT的指示创建了云函数也写好了代码,可是怎么也不工作。搞了半天之后,在一次回答中我发现它提到上传,我才知道这玩意还要上传到服务器才能工作(废话,不然能叫云函数),而且还要在本地安装什么node_modules(我到现在也不知道是什么东西),而且还是每一个云函数文件夹下都要安装(我第一次给装到了云函数根目录下)。这些步骤ChatGPT有时候会默认你是知道的,如果不是自己发现,可能会被卡死。

第三个坑就是在数据库上,除了上面提到的从本地改成云以外。在创建集合(表)时,每建一个新集合就得调整集合的权限,这个我完全没概念。出现问题时ChatGPT一直说查看数据库访问权限,我没意识到每一个表还单独有权限需要设置,后来还是去搜索引擎解决了问题。

然后就是字段问题,ChatGPT一方面跟我说用户的openid是敏感字段,不建议我保存,建议我为每一个用户单独创建一个随机ID。一方面在接下来的很多需求里,它又让我去用openid作为识别条件,把我搞的一团晕。每次问他就是来回来去的用哪个都行。最后我发现直接用openid就行了,不需要什么单独的userid。

想写的内容差不多就这些,本文应该不算是教程,只是做一些记录和心得。这个过程中我最大的感受就是,ChatGPT的能力在开发过程里是没有变化的,甚至随着聊天记录越来越长它的前后关联能力反而越来越差,而我的能力在提升,所以开发的过程越来越顺,最后能用ChatGPT做到什么程度其实取决于我的能力边界而不是它的。

所以接下来我还会继续探索使用ChatGPT开发项目,并且我不打算专门去学习任何一门编程语言,我要看看只和AI一起开发项目,是否也可以掌握编程语言(我隐隐觉得似乎可行,就好比把一个不会外语的人放到外国环境中,最后他可以学会他日常用的语言。)

查看全文
大家还看了
也许喜欢
更多游戏

Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved