《人工智能 AI:ChatGPT 时代程序员的生存之道.docx》由会员分享,可在线阅读,更多相关《人工智能 AI:ChatGPT 时代程序员的生存之道.docx(13页珍藏版)》请在第一文库网上搜索。
1、ChatGPT时代,程序员的生存之道I人工智能AIChatGPT近期炙手可热,仿佛没有什么问题是它不能解决的。出于对ChatGPT的好奇,我们决定探索下它对于前端开发人员来讲,是作为辅助工具多一些,还是主力工具更多一些?2D能力测试我们就挑选一个著名的递归回溯问题一一“八皇后”,看看ChatGPT的表现如何。什么是“八皇后”首先,我们先让它完整介绍下“八皇后”问题。让我们拭目以待ChatGPT会给出什么样的答案,沟通如下图所示:GPT4完整介下八后问题八吟同覆(EightQueenspuZZie)是一个鳏兵的回避您(backtracking)求解问显.这个问同早由国际St横横手马克斯贝Si尔(
2、MaXBeZZeI)于1848年提出.何总的核心是:在一个8x8的国际根根盘上放置8个皇后,要求这8个唐之胡互不攻击.根揖OD际象根的或Q。JBJe可以攻击同一行、同一列以及两条对角线上的任何搐子.为了K决这个问B1我们譬要找到所有可住的解(S)所有满足条件的根鱼布局),并计JI解的总畋.八府问题可Cur廉成N皇后同园,即在Nm的横鱼上放置N个叁后,使得它们互不攻击.I1决方法八皇后问题通常使用回需法进行求解.回避法是一种深度优先段案(DFS)VM.通过送归穷学所有可Ie的解.以下是求X八皇后问题的基本步:1 .从第一行开的,在每一行放置一个皇后.对于每一行,遍历所有列,检宣当前位置是否可以成
3、皇后.如果可以,则在当晌位置放置皇后,并继续处理下一行.2 .如果在某一行找不到可以放置皇后的位置,那么回濡到上一行,移动上一行的皇后列下一个可行位置.如果上一行的MS巳经在后一个可行位置,则姬姨回地制再上一行.3当故无所有8个宝昭时,找到了一个然后回蠲,Ie续寻找K他用IE的舞.4 复以上步秀,到遍历完所有可能的解.检后是否可以放的方法为了恰StJK个位置是否可以放置后.我们需要保当前位与巳放的后之间互不攻击.I1体来说,我们需要检宣IU下三个方向:1 .同一列:检*当前列上是否已经有皇后.2 .对角线1:检宣从当前位置的左上角到右下角的对角线上是否已IS有奥后.3 .对南线2:楼从当前位的
4、右上角到左下角的时角线上是否巳发有后.如果这三个方向上都没有皇后,那么当IR位置就可以放置皇后.八皇后问题有92个不同的“(不包括废转和对称解).将向届r展到N皇后问JH时.X决方法依然有效,但求I1过程的时间短狭度会I9N的增加而显著增加.只是要求介绍一下“八皇后”问题,它竟然连解题思路也如此清晰地一并给出。编程能力既然如此,那就来考考编程能力。先要求它使用JavaScript求解“八皇后”问题的所有解。为了方便查看最终效果,又要求它使用Canvas将结果绘制出来。具体问答如图所示:8后间一个收0第国我逮姆%.Bra供一个月JmScnpt片*BJB伺耽耽方富.IM.M供一个使M5MAHW的函
5、R.决方看:Vtt.IIf1ttNIcenMMttVMft.”,在XTM1文件中5天窗:传下泉,在JMSCn(X文件中加Da下AWIMIcJf1ba这个JMSe3代VmasM元膜上Gi套.这累7一个次方UASKKdrCs0oord(so1utions);中内拿明墓方塞.目不转睛地注视着屏幕中的ChatGPT,它一行一行僻里啪啦地给出答案,且代码编写地如此整洁,不禁由衷赞叹。虽然还不确定这些代码能否真的运行起来,得到我们想要的效果,但是从生成代码的结构和逻辑性来看,已经足够令人震撼。接下来,我们来验证一下代码是否真的可以顺利运行。复制粘贴ChatGPT给出的答案,在未更改一行代码的情况下,页面的
6、确运行了。一起看看运行效果:看着实现出来的效果,我的内心开始忐忑不安。脑海里疯狂计算着这样一个问题:我需要花费多长时间才能解决以上问题?反正肯定无法像ChatGPT这样,不到30S就给出结果。输出所有解再回过头来看答案,却发现只打印出一个结果,所以它能否将所有的结果都打印出来呢?我们接着提出需求,答案如图所示:4f2UIIWt“&Y5MStwHr8M发方,个g万一个舄鼻.M1tJA左1ie.McMW1WI.Unbe1ievab1e,竟然真的可以,立即复制粘贴操作,检验运行效果:仔细数了下,发现只输出了16个解,但是开头提到总共是有92个解。通过仔细查阅代码,发现一个小格子被定义为40个像素,而
7、整个Canvas的大小是1280像素,所以这个Canvas最多只能画16个棋盘。在此输出中,棋盘和棋盘之间没有点间隔,很难辨别棋盘边界,观看起来有些费力。问题相对简单,只需调整几个参数即可解决,我们选择手动调整,调整后的drawChessboards方法。综上所述通过对ChatGPT在2D能力检验可知,ChatGPT在生成Canvas绘制逻辑代码的能力以及解决问题逻辑处理能力上,已然与一位程序员没什么区别了,甚至可能它所具备的能力或远超普通的程序员。3D渲染测试提升维度,让ChatGPT将结果用3D的渲染方式输出看看。如图所示:是否可以把上面8后的一组单,用WebG1+3D的方式呈现横里,而不
8、是用CanVaS20,WS(IrawChessboard成3D版本BJ以使用WebG1和ThrMjS序实现一个30根鱼来寰示8皇后问E的鲜.以下是一个本的实视方法:1.首先要引入Thfeej6.在HTM1文件中添加以下代码:HIrtCwetoChorset-wUTF-1*/rw*vfport*contntMtdth-dvi30NM*Sbody(orgin:;overf1ow:hidden;)convs(disp1ay:b1ock;)2.按在main.js文件中实现3D横盘和8皇后的舞:*ow*OCew/-itCWtStn-neTXK.ScnO;/假窿一个相机co*tCgra-TM1EE.Prs
9、pctiVtCanerX751andM.irmridth/window.tnrHight91,1W0);cmi.position.z12;/tMt一个“必1COmtrndrrnewTHREE.WbC1Rndrr();renderer.setSizenieridth.Mow.toneCIefght);docent.body.opendChiirndrr.d(MC1aent);/3-个眸0constOabient1ight-newTMR(.Abicnt1ight(0xffffff,0.S);scene.add(wbnt1ight);/IU1ra阳IComtPOint1ight-nmTHtEE,Sn
10、USght(”“.5);POtnt1ight.postttan.set(10.19t19);scene.Odd(POtnt1ight);/nMconstboordSize-8;constti1Size1;constti1Co1or1-nTMtEE.MeshStondorM0tria1(co1or:0ffffff);COftstftIeCo1orZ-ETWtEE.MeShStondardMoterta1(co1or:以333333);comtQueenCo1or-eTmE.MeshSSn*HMma1“co1or:9xffWe):for(Itti;iboar4Siz;i)for(1tj-;Jboa
11、rdSi”;j*)constti1e0Betry-DeRTHREE.BoxGeoaetryti1tSizcv6.1vti1Size);constti1eMotcrio1(ij)M27tiIeCo1or1:ti1Co1or2;constti1t-newTHREE.Me(U1eCMetry.ttIiMatQria1);ti1e.position.Mt(i-boordSize/Z.St,j-boordSizeZ20.5);scne.OdXtiU);)/f8后但的constso1ution-e4,7.5t2.6.1,3;/XUCf11BWHI.for(1etcot-9;co1boarx;coir)co
12、nstrow-So1Stcnco1J;ccnstqunGMMtry-fmEE.Cy1inderGMMtryMCo1or);queen.position.strow-boardSiz/20.S96.Stco1-boatSiz/20.S);scene,odd*c(3copy/创建一个埸事constscene-newTHREE.Scene();他建一个相机constcmro-newIHRfE.PerspcctiveCa*ero(75.Rindcm.innerWidth/WtndowAnnerHeightt.1t10);canera.position.set(e12.12);canera.1ookAt(newTHREE.Vector3(,0.0);他建一个WebG1MUconstrenderer-newTHREE.WebC1RendererO;rfM