首頁/ 汽車/ 正文

我的程式設計能力從什麼時候開始突飛猛進?

作者:扶余城裡小老二

連結:https://www。zhihu。com/question/356351510/answer/1595886454

這可能是一個長篇。會陸續更新30天。先上圖,證明自己學過程式設計。

我的程式設計能力從什麼時候開始突飛猛進?

陪伴我20年的顯示器

我的程式設計能力從什麼時候開始突飛猛進?

20年了,還沒壞。sun公司都倒閉了。當年我也是java的迷弟。只不過後來,我轉了全棧。專心搞c++了。我是看《java未眠夜》,入了java的。後來買了這臺顯示器。好傢伙21寸,1600x1200。現在都夠用。

正題:先說一下學習歷程,再講突飛猛進的點

1 20世紀八十年代,我爺開了一個超市,裡面有個合作伙伴,上了一臺雅達利遊戲機

我的程式設計能力從什麼時候開始突飛猛進?

當時,我是茶飯不思,等機器沒人玩的時候,我就玩玩《釣魚》這款遊戲。爸爸跟我說,你想不想將來長大了也做一款? 我當時就暗下決心將來要做遊戲。

2 我媽在某行工作(保密),有供員工學習的80486電腦,我每當有機會,就去跟班上的程式設計師學習。那個時候,他用debug除錯+basic程式設計,還有cobol語言。我就跟他學如何用basic做數學題,畫幾何圖形。

3 後來pascal來了,turbo c也來了。一路買書跟上。特意買了本強哥寫的《c語言程式設計》。

我的程式設計能力從什麼時候開始突飛猛進?

4再後來windows3。11來了,3。2也來了。我就開始學習word和excel了。當然wps也一起學了。

我的程式設計能力從什麼時候開始突飛猛進?

5然後win95來了,3d max也來了。特意買來學習。那個時候,我是全校最靚的仔。

我的程式設計能力從什麼時候開始突飛猛進?

6 win98來了,vc6來了,delphi,c++builder也陸續進入眼簾,

我的程式設計能力從什麼時候開始突飛猛進?

我的程式設計能力從什麼時候開始突飛猛進?

太震撼了,

我的程式設計能力從什麼時候開始突飛猛進?

最終,我在mfc和bcb6裡,選擇了bcb的拖拽元件。寫程式碼。

你問我那個時候靠什麼掙錢?

我的程式設計能力從什麼時候開始突飛猛進?

我的程式設計能力從什麼時候開始突飛猛進?

7 網際網路來了,qt來了,lua也來了。 java,js ajax 都來了。連php也來了。php,js ajax 還有java都是走馬觀花,在圖書館裡,看了半年,都沒看進去,繼續堅定走c++和lua配合路線。

8網路遊戲來了,大名鼎鼎的《傳奇》《千年》《紅月》等等。。看雪論壇也出現了,我們討論的當然是怎麼透過 ollydbg 來了解 網遊的構造的。(別多想,純技術學習)

9《天龍八部》來了,這個對我影響巨大,此時,圈內的技術討論已經日益成熟,各種應用庫雨後春筍般出現,只要想學技術,大約20w就能學會,就能過當時所有的驅動。很顯然我沒有去學(錯過了幾個億)。這個遊戲,有個附加程式叫《天龍掃地僧》,是用lua指令碼寫指令碼。顯然,天龍也是lua和c++,我就在這個時期學習使用lua指令碼。

我的程式設計能力從什麼時候開始突飛猛進?

我的程式設計能力從什麼時候開始突飛猛進?

我的程式設計能力從什麼時候開始突飛猛進?

原始檔

我的程式設計能力從什麼時候開始突飛猛進?

這是一個很好的學習寶庫

10 pal5來了。不知道哪位大哥,還把它的lua原始碼給匯出來了。又給我好好地上了一課

我的程式設計能力從什麼時候開始突飛猛進?

瞬間明白,當時的單機遊戲的流程控制。

11 區塊鏈來了 ,當時,我笑話那個,拿30萬區塊的人買一個漢堡。

12 人皇sky走了, 手游來了,錯過了。雖然,育碧 tx wy的前員工出來辦班,大肆宣揚手遊時代來臨,我還是當了耳旁風,繼續在寫pc端的程式。

13 區塊鏈開始如日中天,各個群的人都開始討論,一些執行力強的人,甚至找我參與改個hash演算法,也發行這玩意。(現在想想,如果那個時候就切入,我可能早已經改變命運了,可惜只是改演算法而已。)

14 我來到了知乎。我不想再沉淪下去,錯過太多了,想要乾點什麼。於是開始重構sdlpal(仙劍1民間c原始碼),先是做了lua版本,然後又用c++(古典)重構。。重構完畢很是沮喪,因為感覺就像個沒有靈魂的翻譯。

15 開啟cpp英文官網和b站的搬運c++ 11,14,17的影片教程。把sdlpal的c++重構版升級17。結果還是很不開心,因為還是那個老架構。新瓶裝舊酒而已。

16 引入了boost coroutine2 將所有層級架構打散,透過協程的思想,來重構整個框架。最終達到完全解耦的目的。換句話就是說,不論 圖形sdl,sdl2,qt,ue4,cocos 怎麼換,只需修改代理介面即可,跟其他模組沒有任何關聯。指令碼也是,不論是用js指令碼,還是lua指令碼,還是python腳本系統,也僅僅是更換個代理介面而已,聲音引擎也是一樣。

17 sdlpal將架構元件 理論化。(目前正在)

18 透過重構得來的模組化架構和排程經驗,去復刻一款 懷舊遊戲(github尚沒有懷舊版本的原始碼)。(下一步)

19 做遊戲的怪 自動升級,打裝備,搶玩家裝備。(目前所有遊戲都欠缺的內容,錢途無量)(下二步)

20 躺著掙錢。。(理想)

瓶頸1: 從0開始接觸dos

dos作業系統,全是命令列,我那個時候,就翻書學會了dir cd cd。。 這樣,翻閱各個目錄,找exe和com檔案。這個階段很快就過去了。(其實是遍地找遊戲。)

我的程式設計能力從什麼時候開始突飛猛進?

瓶頸2:從0 開始程式設計,

小學1年級,班級老師新學期要排座,同學們都充滿了各種想法,都想讓自己排到心儀的座位。這個時候,就開始各種不和諧出現了,我那個時候,暗下決心等2年級排座的時候,能貢獻一份力,證明自己。於是,在程式設計師老師的建議下,開始畫流程圖。當然了,都是很簡單的。

我的程式設計能力從什麼時候開始突飛猛進?

然後寫成basic程式碼,又看了更復雜的,一些,就這樣,練了1百個不到那麼多流程圖。

我的程式設計能力從什麼時候開始突飛猛進?

既然是排序,就找了最簡單的 冒泡法。看著流程圖的圖形,就嘗試自己寫程式碼,然後測試。用檔案做快取,每個sub函式操作完就儲存到檔案中,然後再用另外一個sub函式讀取出來,並操作。

我的程式設計能力從什麼時候開始突飛猛進?

我的程式設計能力從什麼時候開始突飛猛進?

使用edit檔案 編輯文字。把同學的學號,身高,男女,都放入進去。經過氣泡排序之後,就可以了。然後將運算結果到檔案中,開啟檔案就看到排好的序號了。就這樣,再接再厲,寫了 學生課程表,學生成績查詢。等軟體。就這樣,學生相關的微型軟體和流程圖,用了1年的時間,才能夠流暢先寫需求,再畫圖,再寫程式碼,再修改,再畫流程圖。。。然後完成。一直都沒有圖形化,很是悲傷。

我的程式設計能力從什麼時候開始突飛猛進?

理想中,排座。可當時我的basic能力不足。

我的程式設計能力從什麼時候開始突飛猛進?

那個時候想做這樣的遊戲,可是一直沒有辦法。因為只要做出這樣的,同學們才會認可我。

瓶頸三 試圖做第一款遊戲

求程式設計師老師,給我畫了張流程圖。因為這種難度的專案自己還是很難想想的。

我的程式設計能力從什麼時候開始突飛猛進?

想從basic開始做。於是,就從最基礎的畫線開始學習

①LINE(10,10)-(50,50)

②LINE(25,25)-(60,60),,B

③LINE(100,100)-(120,120),,BF

④LINE-STEP(20,20)

⑤LINESTEP(30,10)-STEP(60,10)

使用一個函式 畫一種形狀,這樣一個一個打造函式,最後的成果類似於下圖。

我的程式設計能力從什麼時候開始突飛猛進?

不是當時的成品圖,在網路上找的類似的。

具體跟這個流程很像,命令列俄羅斯方塊_精神與時間-CSDN部落格

第四點。就這樣,一直沉淪了好久,小學6年內,幾乎沒有什麼像樣的進展。大量時間,都在正常學習,玩遊戲,抽卡,以及小姐姐的視聽光碟度過之中。這些東西簡直就是攔路虎。可能就是需要消化掉這些東西才行,或者說basic還是太簡單了。能見到的關於basic的書,都太膚淺了。第一次就準備轉行了,我跟程式設計師老師說:“我比別人提前學了6年的電腦程式設計,為什麼,我的水平跟他們差不多?”老師語重心長地說:“小朋友,程式設計是需要過程的,小學6年級,沒怎麼讓你做專案,是因為學業很重,畢竟一年52周,咱們在一起學習實踐也就每年52天。你能學到多少呢?”我非常生氣地說:“不行,我比他們提前6年學電腦,我要有一個態度,咱不能讓他們隨便就超過我啊?”。老師就說:“好吧,那就捲起來吧!!”於是給我一段話,讓我把文字上升到圖形。

我的程式設計能力從什麼時候開始突飛猛進?

就這張圖,理解了一週時間。我問老師,什麼叫抽象啊?不太懂。於是就有了下圖

我的程式設計能力從什麼時候開始突飛猛進?

又過了一週,我基本搞明白了,從此以後,我不僅僅會畫流程圖了,還會畫群組關係圖了。

我的程式設計能力從什麼時候開始突飛猛進?

在這之後,我每每遇到看不懂的內容,就用群組關係圖,來表達一些複雜的分支結構。然後不斷進行細化,層層分級,最終落實到葉節點。

再比如,當時為了閱讀一本厚書,畫過類似的圖

我的程式設計能力從什麼時候開始突飛猛進?

第五點,突破 ifelse難題。

程式做不大,主要是我對流程控制和資料轉發的不理解。於是,我很氣,氣自己這麼不聰明,明明就是9年義務教育出來的人,為什麼,他們就行,我就不行呢。後來,走投無路了,我就用編輯器,做了一個ifelse軟體

我的程式設計能力從什麼時候開始突飛猛進?

自從做了這個軟體,ifelse 和switchcase,就是拖拽實現了,每當有看不懂的邏輯,就讓小精靈sprite來演示。每一個方塊裡,都是一個數據包,這些資料包由lua來安裝初始化。就這樣,慢慢地我的ifelse邏輯越來越好了,寫的程式碼邏輯bug少了很多。當然了,光是這樣,也不能挨個點每個方格看啊,於是,就做出來記憶體表

我的程式設計能力從什麼時候開始突飛猛進?

這個就好很多了,邏輯變換,一目瞭然,記憶體資料也一目瞭然,隨時暫停。觀看資料組,反正32g記憶體,大到,根本用不完。

這個軟體就是c++做的,可以看得出來c++操作記憶體的功力特別雄厚。

第六點:記憶體變數視覺化,破解盲人摸象誤區

我的程式設計能力從什麼時候開始突飛猛進?

再後來,連表格都不用了,直接在背景裡畫資料。這麼龐大的資料量,其實就是使用指標關聯的。這樣的話,哪個npc動了,朝向。座標,觸發事件id,擁有的物品。。等等,都一目瞭然。就是因為這樣,所有參與者的資料,在第一時間內,都瞭解到了,對整個程式設計環境的變化就有了直觀的感知,所有的演算法和資料結構,能用遊戲內容來表示,就堅決使用。不僅僅自己看得懂,朋友們也看得懂,還有趣。

我的程式設計能力從什麼時候開始突飛猛進?

然後,配合命令列,找觸發的內容

我的程式設計能力從什麼時候開始突飛猛進?

就這樣,很快就把遊戲的執行流程,和資料流通,以及觸發機制,搞明白了。

我的程式設計能力從什麼時候開始突飛猛進?

為以後的,模組分離做好了堅實的基礎。比如這個是sdl版的pal。將來要做成qt版的pal呢?

我的程式設計能力從什麼時候開始突飛猛進?

第七點:如何讓自己脫離沉迷遊戲的誤區。這個學會了,絕對突飛猛進。而且是火箭發射。

我的程式設計能力從什麼時候開始突飛猛進?

這是好多年前做的了,都忘記了什麼遊戲了,這個就是研究路該怎麼走的。你想想,astar是可以的,navmesh也是可以的。總之有了 走路,就可以節省很多時間了。然後就是 找怪,看血,看藍,分析怪的等級,然後查表,選擇打還是跑。再做的就是撿包啊。這些滿滿的都是資料結構和演算法,指標 還有彙編的應用,走的是演算法崗。當然還有另外一個途徑,那就是看圖找色。綠色安全,走圖形學路線。

我的程式設計能力從什麼時候開始突飛猛進?

這種實戰,絕對是成就感爆棚,可做多了,就是千篇一律,毫無挑戰,畢竟這些遊戲就是做給青少年的,他們的智力也就那樣了。所以技術會了,就趕緊繼續前進。停留的話,過幾年,你發現,你落伍了,時代變了,你的競爭對手也變了。因為後面,還有opencl和cuda,以及各種多執行緒演算法在等著我們去挑戰。反正就是,會搞這個了,基本上,對各種遊戲都是,喜歡了,做一套工具,然後就不在玩了,繼續學習新技術去挑戰了。

大家都知道,程式設計是需要可持續性的,也就是說,要不斷地學習和實踐。第一次突飛猛進的點就是接觸了思維導圖,可以一張圖涵蓋一門程式語言的所有的知識點,這張圖該怎麼畫呢?很顯然,最初的時候卻只能看大佬們的作品,可大佬們的作品該如何落地,被我們進行拆解,然後再進行重組,變成自己的理解方式。這就是事一門學問。對於任何一個程式設計人士來講,越早接觸,越容易,建立起一套屬於自己的知識樹體系。邊學習,邊構思思維導圖,

我的程式設計能力從什麼時候開始突飛猛進?

然後再建立起卡片式記憶法。各種抽象知識點圖示化。

想要學習這套方法的同好,可以在關注夜曲程式設計之後,回覆“免費教程”,就可以領取一份為期20天左右的互動式教程。

要知其然,更要知其所以然。這雖然是一套免費教程,可內容的構思極其精妙。把原本正常的教材裡枯燥又孤立的知識點,於是初高中學英語的卡片式相結合,更加符合既有的學生思維模式。構築技巧。以及拆解技巧。

關注我,帶你學習更多程式設計技巧。

相關文章

頂部