知乎整理:寫程序的初心是什么?
作者:液漏醬
第一次接觸“編程”,是小學(xué)六年級(jí)。那天上完數(shù)學(xué)課回家途中買了一本CS攻略一類的書,書的最后一頁記錄了幾個(gè)一件買槍腳本。冥冥之中我感覺到有一股不可抗拒的力量在引導(dǎo)我把這個(gè)腳本輸入到cs的console里(我已經(jīng)不記得是直接輸入到console還是先敲到記事本里再導(dǎo)入了)。錄好腳本后,我按下那個(gè)鍵,果然系統(tǒng)自動(dòng)幫我買好了B41 O2 O4 O5。以后經(jīng)常在我那幫傻逼隊(duì)友還在購物的時(shí)候,我已經(jīng)沖出去被爆頭了。
如果僅僅是機(jī)緣巧合抄了一個(gè)腳本,我大概不會(huì)愛上編程。接下來我觀察了一下腳本,發(fā)現(xiàn)里面有個(gè)值是用來定義買AK47。但是像我這種儒雅的男人,肯定不會(huì)用AK這種粗魯?shù)奈淦?。于是我從書中另外幾個(gè)腳本找到的MP5的代碼替換掉AK47,再按一下,我擦,居然真就買到這把了。
現(xiàn)在看起來這件事似乎沒什么大不了。但是對(duì)于我六年級(jí)那個(gè)智商,我的想法就是:我連我媽下午給我多少錢都沒法控制,卻能靠輸入幾個(gè)字改變游戲的行為,簡直屌爆了!
這件事只讓我踏上了這條道路的引子,至于走上了就義無反顧的原因,也是越長大才越能體會(huì)到。
不知道大家有沒有跟我相似的想法,我總覺得身邊充滿了太多無能為力沒法掌控的東西。大到人的生老病死,小到打車會(huì)不會(huì)被堵。從醫(yī)生竭盡全力卻沒法挽救病人,到你掏心掏肺卻沒法換得暗戀之人的親睞。
總之在充滿變數(shù)的世界里,你的能力總歸會(huì)有很多力所不及的地方,很多事情你用盡了120%的努力,但就是會(huì)失敗,而且沒人告訴你為什么。
但是在程序的世界里,there is no magic。同樣的輸入總歸是有同樣的輸出,0和1永遠(yuǎn)不會(huì)坑你。所以理論上來講,你在編程中遇到的問題,都是你自己疏忽或者錯(cuò)誤造成的,但這些疏忽和錯(cuò)誤都是有跡可循,你可以靠自己把他們?nèi)冀鉀Q。
再往大點(diǎn)說,你可以在程序世界里創(chuàng)造你想到的任何東西,再慢慢將它進(jìn)化,將他改造。不需要看別人臉色,不需要去琢磨別人想些什么。這才是真正一碼一世界的境界。
有點(diǎn)詞不達(dá)意,但是無論如何,這就是我寫程序的初心吧。
作者:林習(xí)習(xí)
QAQ 吾等渣渣先來嘗試著回答下這個(gè)問題。(其實(shí)是剛剛好在寫一篇題目差不多的essay)所以同時(shí)邀請(qǐng)了 @Cheny Dimpurr 菊苣來回答這個(gè)問題。
-----------------(ゝ∀・)笑------------------------------
作為一直在小學(xué)的時(shí)候就接觸了VB的程(xiong)序(hai)員(zi), 真正對(duì)于程序的初心應(yīng)該是源于一種 cool 的感覺,這是一種獨(dú)特的滿足感并且會(huì)由外部與內(nèi)部一同達(dá)到。我想這也許是挺多程序員的初心,已經(jīng)很多現(xiàn)在程序員不斷追求的東西。那就是“cool” ,排除一切其他考量,我們要做一個(gè)很酷的事情,做一個(gè)很棒的項(xiàng)目,讓別人看到這個(gè)項(xiàng)目的時(shí)候會(huì)說“哇,這個(gè)太棒了!”,然后自己就可以享有著一種Geek的感覺俯瞰眾生。如果用通俗一點(diǎn)的話來說就是可以“在別人面前裝逼而被羨慕與崇拜”然后靦腆一笑說出“這沒什么的”留下一個(gè)高尚大的印象。這種感覺可謂是撇開程序員本身,作為一個(gè)社會(huì)中一份子,所能得到的一種滿足感。而成為一個(gè)程序員,這是一條相對(duì)可能達(dá)到的道路。此乃由外界而產(chǎn)生的初心。
而另外的一部分初心來源于內(nèi)部。就如隔壁答案中說的一般“粗鄙如吾等,也可作為創(chuàng)造者,而賦予他物以靈魂”。 這是一種來源于'創(chuàng)造'的滿足感。懷揣著一種,也許有一天,我做出的程序也可以有如此優(yōu)雅的UI設(shè)計(jì),或者是精妙的后端設(shè)計(jì)。那種精妙的設(shè)計(jì)感會(huì)給予所見到的人一種無法用語言描述的震撼力,甚至于“神造”這種充滿著非現(xiàn)實(shí)色彩的詞語才能描述。記得自己第一次寫通快排的時(shí)候的暢快一定不亞于當(dāng)年證明費(fèi)馬大定理的人。我們?nèi)缤囆g(shù)家一樣,運(yùn)用著手中的工具,作為這個(gè)數(shù)字世界的手工藝人,創(chuàng)造著虛擬的大陸,并且重構(gòu)真實(shí)的世界。
-----(ゝ∀・)笑------
初心的部分在上面算是已經(jīng)結(jié)束,但是我認(rèn)為,驅(qū)動(dòng)我們繼續(xù)寫程序的不僅僅是“初心”,而是一種不斷演化的認(rèn)知。就好像《黑客與畫家》里面說的,“一個(gè)好的設(shè)計(jì)者,看到壞的設(shè)計(jì)時(shí),會(huì)有一種將他修正的沖動(dòng)”,而程序員正好地就干著這樣的工作。當(dāng)我們看見日常中的設(shè)計(jì)的時(shí)候,“也許這件事情,程序可以干的更好“,然后行動(dòng),coding。這就是一個(gè)通過程序改變生活的例子,在這個(gè)數(shù)字化的世界,因?yàn)槿藗兒艽蟪潭壬瞎蚕斫?jīng)歷,所以幾乎零成本的軟件傳播,成為了使生活更加便捷的最好方式。這也是我到前一段時(shí)間為什么會(huì)繼續(xù)學(xué)習(xí)編程的道理,我希望通過編程,我能將我所處于的世界變得更加方便,不會(huì)再因?yàn)楹芏嗦闊┑那闆r所耽擱,而同時(shí)這也可以解決別人同樣存在的問題。我們那么多日常的”效率“應(yīng)用,不就是源于這樣的觀點(diǎn)而產(chǎn)生的么。
-----(ゝ∀・)下面是重度中二?。ㄐ?-----
作為一個(gè)愛玩的人,特別是愛玩電腦游戲的人,很大一部分程度上,我的初心,源于一個(gè)遙遠(yuǎn)的夢(mèng)想。希望自己能和小說,動(dòng)漫中的人物一樣,進(jìn)入一個(gè)”劍與魔法的世界“,突破平日無聊而又勞累的生活,與想好的伙伴一切,探索未知而又偉大的世界。
和DnD一樣的三層模式(數(shù)學(xué)規(guī)則,數(shù)據(jù)與設(shè)定,故事與背景),我把廣義上的程序,分為地球的三個(gè)部分。內(nèi)層(core),是數(shù)學(xué)與邏輯,程序最基礎(chǔ)的做法集合,包含數(shù)據(jù)結(jié)構(gòu)與算法。這里是programming屬于數(shù)學(xué)的一部分,它作為核心給予整個(gè)構(gòu)架支持。在這里,出現(xiàn)過的各種大神探討著不同的算法,加密解密與運(yùn)作。給予計(jì)算機(jī)運(yùn)算所達(dá)到的,數(shù)學(xué)的優(yōu)雅在這里體現(xiàn)著。喜歡帶在這里的數(shù)學(xué)家們,小心論證著自己的算法(CHA著別人的算法),期望給出更加高效的答案。第二層則是中層(mantle),這里是編程與世界結(jié)合的地方,前端的布局,新式的設(shè)備(Oculus賽高?。?,更加強(qiáng)大的引擎在這里存在著。我們用這些事物給予所有的用戶一個(gè)更加逼真的體驗(yàn),而同時(shí)又給予極大的拓展,使使用者做到存在于這個(gè)世界無法企及的事情。而第三層(shell),是由前兩層物體所造就的容器,存放著無數(shù)的內(nèi)容,與人們幻想到的實(shí)現(xiàn)或者還未實(shí)現(xiàn)的虛擬世界。在”地表“,我們通過自己的想象力,從虛無之中創(chuàng)造新的世界(新的位面)。而夢(mèng)想中劍與魔法的虛擬的世界通過core與mantle連接這我們的真實(shí)世界。所以我希望自己可以游走于mantle中,盡一己之力打通這兩端的鏈接。
以上
作者:在好
一.記敘
一開始我是拒絕的!因?yàn)槲腋揪筒幌矚g寫程序。
打高中數(shù)理化就不好,什么排列組合、圓錐曲線、電磁場中一帶電粒子、水溶液中的水解電離,困擾我有如夢(mèng)魘。
高考時(shí),祖墳上冒出一縷青煙,數(shù)學(xué)創(chuàng)歷史新高考了88,理綜破有史記錄考了200,數(shù)據(jù)不僅太美太感人,而且大吉大利、元亨利貞!終于,我以總分522分考上了一所夢(mèng)寐以求的2本就讀于計(jì)算機(jī)科學(xué)與技術(shù)1202班——命中犯2!
可是對(duì)于編程其實(shí)我是拒絕的——大一花了一年的時(shí)間來研究心理學(xué),大二花了一年的時(shí)間來研究哲學(xué),大三花了一年的時(shí)間來研究中醫(yī)——結(jié)果,《離散數(shù)學(xué)》掛了,《數(shù)字邏輯》掛了,《數(shù)據(jù)結(jié)構(gòu)》掛了,《編譯原理》掛了——恨不得自掛東南枝!
人在做天在看,出來混總是要還的!曾堅(jiān)信“天生我才必有用”,“我輩豈是蓬蒿人”;曾篤定“心所愿力畢至”,“有志者事竟成”;曾夙愿“天授其賦必賜其福”,“好風(fēng)憑借力,送我上青云”。可是,一個(gè)冷峻若紫電青霜的問題劈面而來:不寫程序又能干嘛呢?
然而我根本就不會(huì)寫程序!試想,一個(gè)打字只能用到右手食指、左手食指和左手無名指的人,敲代碼時(shí)是多么捉急!試想,一個(gè)高數(shù)補(bǔ)考考了19分,滿腦子宏大敘事的理科弱智,寫程序時(shí)是多么腦洞大開!
后來去公司實(shí)習(xí),遇到的第一個(gè)項(xiàng)目就是要使用
ESFramework
通信框架,當(dāng)我第一眼看到了開發(fā)手冊(cè)上的如下句子時(shí),我就知道,春天不會(huì)再來了!
客戶端通過調(diào)用ESPlus.Application.pasic.Passive.IpasicOutter接口對(duì)應(yīng)的方法以及預(yù)定其相關(guān)的事件,就可以完成基礎(chǔ)功能或得到相關(guān)狀態(tài)改變通知。我們可以從 ESPlus.Rapid.IRapidPassiveEngine暴露的pasicOutter屬性來獲取IpasicOutter引用。
接口、預(yù)定、事件、暴露、屬性、引用,你們一個(gè)一個(gè)來,我還大概能明白,你們?nèi)浩鸲ブ?,我便委地如泥了?/p>
重載的Query方法(帶有CallpackHandler參數(shù)的)在發(fā)送請(qǐng)求信息后,不會(huì)阻塞而繼續(xù)向下執(zhí)行,而框架在收到對(duì)應(yīng)的回復(fù)信息時(shí),會(huì)回調(diào)CallpackHandler委托指向的方法。由于調(diào)用線程與回復(fù)回調(diào)的線程不是同一個(gè)線程,所以稱這種機(jī)制為回復(fù)異步調(diào)用。
再當(dāng)我看到“重載”、看到“阻塞”時(shí),我徹底憤怒了!而緊接著映入眼簾的“委托”、“回調(diào)”更使我出離憤怒!最后“線程”、“異步”更令我萬念俱滅,心如死灰!
從此,我便以一種菜得摳腳的姿態(tài)狼狽不堪地行走在險(xiǎn)象環(huán)生的程序世界里。莫非是寒更雨歇,葬花天氣,獵獵北風(fēng)襲單衣;荒原寂寂,遠(yuǎn)聽猿啼,近看寒鴉起;鬼影幢幢,步步驚心,不知今夕何夕。
好多次我都想,別瞎費(fèi)勁了,你不是寫程序的料!真正適合寫程序的人根本就不可能是這個(gè)樣子!
于是乎放棄。可是不寫程序又能干嘛呢?好歹讀了四年大學(xué),何況拉弓沒有回頭箭。還是要頂風(fēng)逆水雄心在,不負(fù)人民養(yǎng)育情!
終于,苦水的浸泡痛徹了肌膚,磨練了身心,同時(shí)也澆灌出了涅槃之花!
某天我突然發(fā)現(xiàn),那些原本看來佶屈聱牙的技術(shù)文檔如今看來卻直白如話,那些原本晦澀難懂的語法如今卻能夠熟練運(yùn)用,那些原本看都看不懂的源碼如今也能夠在自己指下流淌,實(shí)習(xí)之前我連循環(huán)語句都寫不對(duì),如今卻也能用ESFramework和OMCS等框架開發(fā)出像樣的網(wǎng)絡(luò)通信應(yīng)用。
二.議論
更重要的是,從當(dāng)初的不喜歡、不擅長、不自信,到而今能夠懷揣著一顆歡喜之心來寫程序,能夠以樂在其中的心緒來開啟自己的程序人生,這不僅是我收獲到的莫大財(cái)富,更是我把握住的莫大幸福!
胡適先生的名言:“怕什么真理無窮,進(jìn)一寸有一寸的歡喜。”真理無窮并不可怕,因?yàn)槲覀冊(cè)诿恳淮绲那斑M(jìn)中始終獲得歡喜。編程之路并非坦途,我們也并非天賦異稟,然而那個(gè)最幸福的人,并非是玩轉(zhuǎn)代碼的編程高手,也并非是億萬家資的IT精英,而是那個(gè)在流年中始終以歡喜之心書寫代碼,又通過書寫代碼恒久再獲歡喜之人!
常言道:“男怕入錯(cuò)行,女怕嫁錯(cuò)郎”。嫁郎要嫁有情郎——有情飲水飽,無情龍肉都無味!入行也是一樣。入了所愛之行,舉手投足皆得歡喜;入了所憎之行,坐臥立行盡是苦悲!嫁郎的幸福不在于嫁郎所獲得的富貴榮華,其根本在于郎本身。那些通過嫁郎以獲取外在利益的女子,她們充其量只是獲得了生意上的成功,而根本沒有獲得婚姻本身的幸福,而這何嘗不是一種買櫝還珠?同樣,那些以工作作為純粹手段的人,他們也從來沒有獲得過工作本身的幸??鞓?。
由此看來,我想恐怕對(duì)于絕大多數(shù)的程序員而言——你不是真正的快樂!
所有程序員恐怕可以粗略的劃分為這五種狀態(tài):
1.不愛,但是迫于生計(jì)
2.無感,反正亦步亦趨
3.熱愛,但卻身心俱疲
4.狂熱,打了雞血一般
5.歡喜,畢竟樂在其中
你是屬于哪一種呢?
如果要我來選,我一定會(huì)選5,因?yàn)槲ㄆ淙绱瞬拍塬@得程序人生的個(gè)中真昧,才能擁有彼此交融的內(nèi)在完滿。而其他的幾種狀態(tài)在不同程度上都是殘缺的。
也許我們寫程序總是不可避免的為了各種外在的目的,但是寫程序時(shí)的那份小確幸的歡喜,卻始終是我們精神飛鳥的棲息地。 正如孔子贊顏回——子曰∶“賢哉回也,一簞食,一瓢飲,在陋巷,人不堪其憂,回也不改其樂 。賢哉回也!”
罷筆時(shí)風(fēng)煙俱凈,但愿自己剛剛開啟的程序人生能夠無關(guān)風(fēng)月,寂靜歡喜。