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



























