最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

GPT4又把程序員取代了?(上)

2023-03-22 10:22 作者:pathologyenigma  | 我要投稿

最近又開始了一波GPT4的散播焦慮活動,而實際上,ai并不能在特別精細的地方替代人類,例如一個基于GPT4的工具——cursor,它可以用來生成代碼,但如果代碼涉及一些特別麻煩的東西,那指定還是不行的,比如我在試用該工具的時候讓它編寫的c代碼(經(jīng)過我修改了不妨類型和指針轉(zhuǎn)換后勉強可以通過編譯,但會segmentation fault):

這里我一步步的要求它編寫了一個只有很小一部分功能的ecs,從一個allocator(我猜錯誤多半發(fā)生在這個allocator,但我沒有仔細研究)開始,編寫一些數(shù)據(jù)結(jié)構(gòu),然后用這些數(shù)據(jù)結(jié)構(gòu)構(gòu)建一個簡單的ecs的數(shù)據(jù)部分

這里我們來復(fù)現(xiàn)一下這個過程,看看是否為之前操作不當

之所以創(chuàng)建.c而不是.h是因為會被當成c++

然后我們得到這樣的代碼,顯然和分頁不能說是完全符合,只能說是毫無關(guān)系

于是我們要求它修改

很神奇的是,這次它居然知道用mmap(這里我們先不管對不對,先讓它寫著)

然后自然是需要處理回收內(nèi)存的邏輯

于是,就獲得了一個回收的函數(shù)

這里我們不自己檢查代碼,讓它來檢查

這次我們選擇的是chat
它說是對的,那我們就繼續(xù)加?xùn)|西了
加點需求

它似乎沒有理解到位

這里,只是做了基于頁的內(nèi)存綁定,但我們需要這個類型同時還幫我們處理指針的內(nèi)存分配和回收,于是我們這樣告訴他:

然后它就把這個類型變成專門管理某一個指針內(nèi)存的類型了

于是,我們問它:

它給出了解決方案和一些解釋

但我們顯然不滿意,我們著是page allocator,限制其的一個是內(nèi)存,而不是指針的數(shù)量

告訴它
它依舊沒有明白指針的數(shù)量可以是不定的
于是我們告訴它我們只是需要分頁式的內(nèi)存塊,然后可以分配給指針

當然,這里會不會有內(nèi)存錯誤我們是沒有確認的,讓它提供一個例子我們來試試:

編譯沒有問題
跑起來貌似也ok

那么我們先暫時這樣,開始下一步:

看起來不錯的樣子

但是只能存整數(shù)有點一般

這里,它只是把int替換成了void*,就不貼上全部的代碼了,老規(guī)矩讓它提供一個使用例:

其實,這里就已經(jīng)有錯了,因為并沒有提供回收內(nèi)存的邏輯,只是簡單的整個釋放,而它卻出現(xiàn)了這樣的調(diào)用:page_free(&list->allocator, current);需要讓它自行修復(fù),果然刪除了第二個參數(shù)

看看,什么來了

于是我們直接提錯誤給它:

呃,其實還是不對的

我們剛才就說了,這里的free其實一次性釋放了所有依托于該allocator的內(nèi)存,所有多次調(diào)用必然會崩,其實這樣就行(其實看到這里就知道ai其實還是替代不了程序員,至少目前還不能替代我)

而且,當前實現(xiàn)的問題其實已經(jīng)很明顯的暴露出來了,只能一次性開所有內(nèi)存,也只能一次性回收所有內(nèi)存,沒有回收單個指針的內(nèi)存的解決方案,由于沒有考慮獲取到的內(nèi)存是分頁的,可能還存在跨頁內(nèi)存的問題,我倒要看看這個ai怎么解決,先告訴它一點小毛病

我看它是完全不懂哦

強調(diào)一下:

它終于懂了

那么,我們剛才說的問題都得解決對不對,我們一項一項來

先安排它解決單個指針的內(nèi)存回收問題:

它在干什么呢?

看來得給出更明確的說法:

臥槽,你別,你這樣不是把自己的內(nèi)存釋放了,但卻記錄的是別人的地址

血壓已經(jīng)上來了,可能是我英文不好?試試中文和它說?

它給加了一個鏈表在里面,而且每個指針都是單獨的使用mmap來分配內(nèi)存

那我們先accept,待會兒再看有沒有bug再讓它改,那么當務(wù)之急時讓它修改鏈表的邏輯來適應(yīng)新的allocator

看著還不錯

但是有一個問題,那就是該鏈表使用了這個allocator,但不代表它具有該allocator的所有權(quán),你鏈表釋放關(guān)我allocator什么事,你把我內(nèi)存全釋放了干嘛

貌似有點不對勁

讓它自己檢查一下:

加了一個頭文件以使用memcpy
node被移除了
使用了正確的回收函數(shù)

實際上,當前的問題已經(jīng)多到我一時半會不知道怎么解決的地步了,我讓它自己解釋一下它在寫什么吧:

他說它寫的這個是鏈表

問題是,我們要的是一個分頁管理內(nèi)存的allocator啊,這種方式顯然是不合理的

那么,如果我們寫好聲明,讓它來實現(xiàn)呢?

好像有問題,但又不知道怎么說
它很奇怪的認為page_allocate函數(shù)還在
等等,它直接把mmap的結(jié)果轉(zhuǎn)成這個類型了?

你猜怎么著,能用:

那我們就先加功能:

看似沒有問題,但是還是有點問題的:

讓它檢查一下,自己修復(fù)
改完以后編譯肯定是能通過的
老朋友segmentation fault回來了
直接跟它反饋
ai總是喜歡過度釋放內(nèi)存

那么,這里我們肯定不能讓bst釋放內(nèi)存的時候直接把內(nèi)存管理器的內(nèi)存全釋放了,畢竟我們不只是為這一個類型準備的

它是不是理解錯了
苦口婆心的勸說它一下
繃不住了,你遍歷一下樹,然后逐個刪除不行嗎?
手把手教它
這不對吧?
看看它知不知道
你知道錯了,但是你還是沒有改啊

刪除節(jié)點應(yīng)該是試用中序遍歷比較方便吧

這不是挺好的嘛

這樣就不會和allocator沖突了,然而到這里已經(jīng)花了兩個小時時間了,自己寫雖然不一定更好,但我想應(yīng)該還是能快點兒

那么我繼續(xù)讓它優(yōu)化代碼

那么,問題來了,寫這個bst和ecs有沒有關(guān)系呢?其實未必,畢竟可以使用的數(shù)據(jù)結(jié)構(gòu)很多,倒也不必非得使用樹,但樹比較容易暴露管理內(nèi)存的問題,等等,它這樹好像不平衡

讓它平衡一下

加了一個高度
一些用于保持平衡的函數(shù)
計算高度差,然后通過旋轉(zhuǎn)來保持平衡
刪除某個節(jié)點后也需要保持平衡

然后我們需要來創(chuàng)建一個hashmap,由于要求比較復(fù)雜,考慮到個人英文水平,這里還是用中文吧:

到一半就沒了

那么我們試試分布實現(xiàn)要求吧

看起來貌似沒有問題

然后問問它有沒有優(yōu)化方案:

它還真的有方案

那么,老規(guī)矩,讓它寫點例子試用一下:

居然沒有錯誤,可以的啊

然后我們來加點要求:

只加了一個參數(shù)有點草率啊

這里直接問它有沒有更好的辦法:

這里它給了一種辦法,但還不夠,我們需要確認用戶自己實現(xiàn)的hash算法函數(shù)是否符合要求

這里我給這個類型加了一個函數(shù)指針,然后讓它更新代碼:

然后,我們需要它提供一種默認的hash實現(xiàn):

默認的實現(xiàn)真的離大譜,直接強轉(zhuǎn)uint32_t

接下來就需要它編寫一些常用的hash函數(shù)了

要么是類型強轉(zhuǎn),要么是xorshift(對于數(shù)據(jù)結(jié)構(gòu)學到不好的小朋友可能不明所以,只需要知道該方法不好即可),同時這里它假定了uint32_t是32位,而double是64位(其實有的平臺不是這樣的)

那么,基于我們以上的問題,我們來要求它修改:

沒錯,它是使用了我要求的算法,但是它自己沒有實現(xiàn),這是等著我來實現(xiàn)嗎?
必須實現(xiàn)
看起來沒有什么問題

修改了這么多,得再試試看能不能用(老實說,由于不是我自己寫的,我現(xiàn)在有點太長了不看的想法):

一些重復(fù)定義錯誤
去掉此處的代碼即可
謝天謝地沒有見到老朋友

老實說,到現(xiàn)在已經(jīng)感覺比我自己寫代碼更累了(一直在看別人寫的代碼有沒有毛病,還只提供修改意見,代碼審核了屬于是)

但是,有一點需要注意的是,我們現(xiàn)在才剛剛擁有兩個基本的數(shù)據(jù)結(jié)構(gòu)而已(還不一定對)

廢話不多說,我們繼續(xù)

這是啥啊你這是

看起來有點樣子了
初具雛形了

繼續(xù)

老規(guī)矩,試試看:

然后bug就來了:

由于專欄圖片數(shù)量限制,我把改專欄拆分成了兩份,并非有意而為之


GPT4又把程序員取代了?(上)的評論 (共 條)

分享到微博請遵守國家法律
黑龙江省| 炉霍县| 旌德县| 宁化县| 嫩江县| 红桥区| 托克逊县| 拉萨市| 滁州市| 石家庄市| 察雅县| 怀化市| 鄄城县| 故城县| 龙海市| 天祝| 河南省| 化隆| 蓬溪县| 尚志市| 临泉县| 通海县| 太和县| 许昌县| 阿图什市| 濉溪县| 双柏县| 鸡西市| 梁平县| 买车| 丹江口市| 苗栗县| 辽阳县| 红安县| 蓝田县| 共和县| 成武县| 宁南县| 青龙| 高邮市| 婺源县|