從C++到Python袋倔,我的人生如何被改變?一個(gè)游戲程序員的進(jìn)階之路

從C++到Python折柠,我的人生如何被改變宾娜?一個(gè)游戲程序員的進(jìn)階之路

Python 有那么神嗎?

我打算去了解一下 Python扇售,結(jié)果好像看到一個(gè)新世界了前塔, Python 在他們口中好像無(wú)所不能,編寫一些自動(dòng)化程序啊缘眶,黑別人網(wǎng)站啊嘱根,做游戲外掛之類的好像真的很牛逼,那么巷懈,Python 真的那么神奇嗎?

今天我們就來(lái)借這個(gè)問題看看Python的牛X之處慌洪。

Python升華了我顶燕,也將影響未來(lái)的我。

我的第一份工作是一加國(guó)內(nèi)知名游戲公司的邏輯程序員冈爹,必須技能是C++涌攻,但是一開始只是寫語(yǔ)法和C++很類似的一種腳本(后來(lái)知道是從一個(gè)開源腳本引擎AngelScript修改而成的)。學(xué)習(xí)游戲開發(fā)的流程频伤,填數(shù)據(jù)恳谎,用腳本定制各種任務(wù)、副本等等。第一年還很有興致因痛,第二年開始就意興闌珊了婚苹。

后來(lái)熟悉了整個(gè)系統(tǒng),介入到C++部分的代碼里鸵膏。涉及到道具膊升、任務(wù)等等邏輯。那時(shí)候覺得最難的部分谭企,是UI系統(tǒng)供屉。當(dāng)時(shí)的UI系統(tǒng)瓣颅,是用XML拼出界面,然后用類似C++的那種腳本來(lái)給它寫邏輯。從一開始被迫學(xué)習(xí)朽色,到最后使用的時(shí)候遇到各種問題,前后折騰了很久狗准。

寫程序的熱情毙玻,在實(shí)際工作中被一點(diǎn)點(diǎn)的磨滅。我想速和,很可能許許多多的程序員歹垫,都會(huì)遇到和我一樣的問題。因?yàn)閻酆枚呱线@條路颠放,卻被瑣碎的工作磨滅了最初的沖動(dòng)排惨。等到我成為一個(gè)獨(dú)當(dāng)一面的程序員的時(shí)候,我甚至有一種感覺碰凶,覺得自己似乎什么都會(huì)暮芭,但是除了項(xiàng)目任務(wù)以外的東西,什么都做不出來(lái)欲低。相比高中時(shí)候的自己辕宏,甚至有一些退步。

直到有一天砾莱,我看了一本書《黑客與畫家》瑞筐。

從C++到Python,我的人生如何被改變腊瑟?一個(gè)游戲程序員的進(jìn)階之路

在你迷茫的時(shí)候聚假,多吸收一些各方面的知識(shí),偶爾會(huì)突然打開一扇窗闰非。

《黑客與畫家》滿本書都透著濃濃的技術(shù)自信膘格,和充足的技術(shù)底蘊(yùn)。它就像是一個(gè)知識(shí)豐富的技術(shù)高手财松,迫不及待的將平生經(jīng)驗(yàn)一股腦傳授給你瘪贱,為你指明發(fā)展的方向。

它的字里行間透露著對(duì)傳統(tǒng)編程語(yǔ)言的鄙夷和對(duì)LISP的崇敬。它認(rèn)為精巧的語(yǔ)言菜秦,加上聰明程序員實(shí)現(xiàn)的高度抽象代碼甜害,會(huì)帶來(lái)極大的生產(chǎn)力提升,讓開發(fā)更快喷户、BUG更少唾那,讓一兩個(gè)開發(fā)人員也能撐起一個(gè)具有巨大經(jīng)濟(jì)效益的網(wǎng)站。

在Web界已經(jīng)是遍地動(dòng)態(tài)語(yǔ)言的今天褪尝,《黑客與畫家》里的判斷似乎已經(jīng)沒什么好討論的了(現(xiàn)在動(dòng)態(tài)語(yǔ)言在很多領(lǐng)域已經(jīng)成為了主流闹获,和作者當(dāng)年的情況已經(jīng)有了天壤之別)。但對(duì)于當(dāng)時(shí)的我來(lái)說河哑,就是大海里的一盞明燈避诽。

雖然書里對(duì)Python(作者當(dāng)年還是1.x版本)的看法很具有批判性,但是由于那時(shí)Python 2.x已經(jīng)有了長(zhǎng)足的發(fā)展璃谨,加上一個(gè)同事的推薦沙庐,我全身心投入到了Python的學(xué)習(xí)之中。

在寫了一些小練習(xí)程序之后佳吞,我在工作中找到了一個(gè)Python的用武之地——用Python實(shí)現(xiàn)一個(gè)數(shù)據(jù)表格分析程序拱雏,并檢查表格中的數(shù)據(jù)錯(cuò)誤、邏輯錯(cuò)誤底扳。這種表格處理工具在游戲中具有很大的作用铸抑,而且非常適合用腳本來(lái)靈活的擴(kuò)展功能。

第一個(gè)實(shí)現(xiàn)的簡(jiǎn)單版本衷模,使用起來(lái)大概是這樣:

從C++到Python鹊汛,我的人生如何被改變?一個(gè)游戲程序員的進(jìn)階之路

這個(gè)代碼主要問題在哪呢阱冶?在于讀取數(shù)據(jù)時(shí)刁憋,程序員自己要指定數(shù)據(jù)的類型。get_int木蹬,get_str至耻,get_float等等等等。

很不幸而又幸運(yùn)的届囚,當(dāng)時(shí)我用某某云盤保存自己的代碼有梆,有一次誤同步,導(dǎo)致在公司寫的很多代碼意系,在家里操作時(shí)覆蓋了。迫使我重寫幾乎整個(gè)程序饺汹。這次蛔添,在同事的參謀下,我實(shí)現(xiàn)了這種用法:

從C++到Python,我的人生如何被改變迎瞧?一個(gè)游戲程序員的進(jìn)階之路

這段代碼實(shí)現(xiàn)的功能與上面的完全一樣夸溶,但是有兩點(diǎn)變化:

1、用[]下標(biāo)操作符代替了get_xxx()函數(shù)調(diào)用凶硅,更簡(jiǎn)潔缝裁。

2、讀取時(shí)不需要指定類型足绅,執(zhí)行時(shí)捷绑,data1自然是整型,data2自然是字符串氢妈。

這種實(shí)現(xiàn)粹污,對(duì)于當(dāng)時(shí)的我來(lái)說,是一個(gè)理念上的重大突破首量!

為什么這么說呢壮吩?因?yàn)閺?qiáng)類型的問題。在Python中加缘,我用一些很簡(jiǎn)單的處理鸭叙,讓mb庫(kù)的底層自然的處理了類型。而你知道嗎拣宏?在C++中沈贝,做到這點(diǎn)難如登天!

C++常常為了推斷一個(gè)類型蚀浆,不惜使用模版技巧缀程,寫出天書一般的代碼。而且市俊,結(jié)果上杨凑,仍然不能做到動(dòng)態(tài)語(yǔ)言的這種用法。也就是說摆昧,顯式強(qiáng)類型特性撩满,并不僅僅是約束程序員減少BUG的工具,它同時(shí)也是實(shí)現(xiàn)高抽象系統(tǒng)的一個(gè)束縛绅你。這是個(gè)很有意思的事情伺帘,對(duì)我當(dāng)時(shí)的觸動(dòng)很大。不知讀者能否理解忌锯。

到了寫出這個(gè)表格分析庫(kù)之后伪嫁,我生命中的一扇門打開了。

我回到了可以自由寫代碼的時(shí)代偶垮,就像是我的高中時(shí)代张咳,而且比那個(gè)時(shí)代更為簡(jiǎn)潔帝洪,充滿了更多的可能。

我可以任意的寫代碼脚猾,幾行代碼就能實(shí)現(xiàn)對(duì)樹的操作葱峡、復(fù)雜的嵌套字典。我仿佛可以操作任意復(fù)雜的數(shù)據(jù)結(jié)構(gòu)龙助,或者復(fù)雜的遞歸砰奕,只要我想清楚了,根本不需要多少編碼時(shí)間提鸟。當(dāng)時(shí)自認(rèn)為掌握了葵花寶典军援,干勁十足,所以還找了一個(gè)Python學(xué)習(xí)網(wǎng)站沽一,沒事就到上面刷題盖溺。

寫了很多平時(shí)懶的寫的復(fù)雜算法,還看大神們寫的“一行Python”(其實(shí)是利用了列表解析等方式做的很簡(jiǎn)短但是有點(diǎn)難讀的代碼)铣缠,收獲了很多樂趣烘嘱。

后來(lái)

后來(lái)的我,仔細(xì)學(xué)習(xí)過wxPython庫(kù)蝗蛙,也實(shí)現(xiàn)過類似Web框架的游戲框架蝇庭,對(duì)Python的使用也不斷進(jìn)入新的階段。當(dāng)然也發(fā)現(xiàn)Python的很多弊端捡硅,并非語(yǔ)言層的哮内,大都是虛擬機(jī)層面的。

學(xué)習(xí)Python的過程中壮韭,我總結(jié)出項(xiàng)目開發(fā)的三大要點(diǎn)——開發(fā)速度北发,運(yùn)行速度,維護(hù)難度喷屋。軟件項(xiàng)目金三角琳拨。這個(gè)規(guī)則可以套用在所有的軟件項(xiàng)目上,作為看項(xiàng)目的一個(gè)可觀角度屯曹。而且有趣的是狱庇,這個(gè)三角形總是無(wú)法在三點(diǎn)上同時(shí)拿到高分。

也許大部分人都無(wú)法理解一門語(yǔ)言對(duì)一個(gè)程序員生涯的影響恶耽,所以特撰此文密任。

Python對(duì)我的影響是巨大的,Python升華了過去的我偷俭,也將持續(xù)影響未來(lái)的我浪讳。

從C++到Python,我的人生如何被改變涌萤?一個(gè)游戲程序員的進(jìn)階之路
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末驻债,一起剝皮案震驚了整個(gè)濱河市乳规,隨后出現(xiàn)的幾起案子形葬,更是在濱河造成了極大的恐慌合呐,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,734評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件笙以,死亡現(xiàn)場(chǎng)離奇詭異淌实,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)猖腕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門拆祈,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人倘感,你說我怎么就攤上這事放坏。” “怎么了老玛?”我有些...
    開封第一講書人閱讀 164,133評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵淤年,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我蜡豹,道長(zhǎng)麸粮,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,532評(píng)論 1 293
  • 正文 為了忘掉前任镜廉,我火速辦了婚禮弄诲,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘娇唯。我一直安慰自己齐遵,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,585評(píng)論 6 392
  • 文/花漫 我一把揭開白布塔插。 她就那樣靜靜地躺著梗摇,像睡著了一般。 火紅的嫁衣襯著肌膚如雪佑淀。 梳的紋絲不亂的頭發(fā)上留美,一...
    開封第一講書人閱讀 51,462評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音伸刃,去河邊找鬼谎砾。 笑死,一個(gè)胖子當(dāng)著我的面吹牛捧颅,可吹牛的內(nèi)容都是我干的景图。 我是一名探鬼主播,決...
    沈念sama閱讀 40,262評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼碉哑,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼挚币!你這毒婦竟也來(lái)了亮蒋?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,153評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤妆毕,失蹤者是張志新(化名)和其女友劉穎慎玖,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體笛粘,經(jīng)...
    沈念sama閱讀 45,587評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡趁怔,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,792評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了薪前。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片润努。...
    茶點(diǎn)故事閱讀 39,919評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖示括,靈堂內(nèi)的尸體忽然破棺而出铺浇,到底是詐尸還是另有隱情,我是刑警寧澤垛膝,帶...
    沈念sama閱讀 35,635評(píng)論 5 345
  • 正文 年R本政府宣布鳍侣,位于F島的核電站,受9級(jí)特大地震影響繁涂,放射性物質(zhì)發(fā)生泄漏拱她。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,237評(píng)論 3 329
  • 文/蒙蒙 一扔罪、第九天 我趴在偏房一處隱蔽的房頂上張望秉沼。 院中可真熱鬧,春花似錦矿酵、人聲如沸唬复。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)敞咧。三九已至,卻和暖如春辜腺,著一層夾襖步出監(jiān)牢的瞬間休建,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工评疗, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留测砂,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,048評(píng)論 3 370
  • 正文 我出身青樓百匆,卻偏偏與公主長(zhǎng)得像砌些,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,864評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 生 拂面的風(fēng)吹著雪 在夜里飄落天空 熟睡中的田野醒了 酥軟的表層 沙沙的響聲 那是綠色低沉的聲音 打翻了的調(diào)色板 ...
    達(dá)悟希閱讀 188評(píng)論 2 3
  • 半夜接到一個(gè)陌生電話說林夕仁和梁其元現(xiàn)在在酒吧喝酒存璃,現(xiàn)在已醉的不知東南西北仑荐。還砸碎了酒吧里剛從法國(guó)進(jìn)來(lái)的華洛施水晶...
    嚒嚒噠閱讀 209評(píng)論 0 0
  • 1.注釋排版不對(duì)、中文字體不一致 Window----->Preferences----->Appearance-...
    世界太吵心太亂閱讀 139評(píng)論 0 2