我們首先需要弄明白“程序”究竟是什么。(此文轉(zhuǎn)載自樂(lè)字節(jié))
原理很簡(jiǎn)單:計(jì)算機(jī)是一種能夠在一秒鐘內(nèi)做出數(shù)十億道算術(shù)題的設(shè)備;程序員可以通過(guò)與或非三種邏輯判斷影響計(jì)算機(jī)的做題順序赤赊,這種順序可歸結(jié)為順序、分支煞赢、循環(huán)三種抛计。
程序員的工作,就是抽取萬(wàn)事萬(wàn)物的數(shù)學(xué)骨架照筑,把一切一切都?xì)w結(jié)到一大堆數(shù)學(xué)題上爷辱;然后讓計(jì)算機(jī)通過(guò)計(jì)算這些題目录豺,在“數(shù)學(xué)空間”把我們想要的任何東西模擬出來(lái)朦肘。
有很多東西需要根據(jù)情況隨機(jī)應(yīng)變饭弓,這個(gè)“隨機(jī)應(yīng)變”就對(duì)應(yīng)于“分支”——情況A這樣處理,情況B那樣處理媒抠,這就是分支弟断。
有很多東西是對(duì)海量實(shí)體套同一個(gè)模子,這個(gè)“套模子”就對(duì)應(yīng)于“循環(huán)”——反復(fù)用同一段代碼對(duì)排著隊(duì)的不同實(shí)體做同一套操作趴生,這就是循環(huán)阀趴。
圖靈證明,只要有這么個(gè)支持苍匆,一切可抽象為計(jì)算的過(guò)程都可以用功能極其有限的一臺(tái)機(jī)器執(zhí)行刘急。這種機(jī)器被稱為“圖靈機(jī)”。
當(dāng)我們?cè)凇皵?shù)學(xué)空間”把任務(wù)處理完之后浸踩,我們還需要操縱“外設(shè)”叔汁,比如顯示器打印機(jī)音箱等等,把結(jié)果展示出來(lái)——這同樣需要先做一套數(shù)學(xué)變換检碗,然后通過(guò)IO口輸出信號(hào)据块,就好像扳動(dòng)了無(wú)形的“操縱桿”一樣,控制各種外設(shè)和人類完成交互折剃。
所謂“程序”另假,就是程序員們預(yù)先安排好的一堆指令;當(dāng)計(jì)算機(jī)執(zhí)行這些指令時(shí)怕犁,你需要的音樂(lè)軟件边篮、記事本、ppt等等奏甫,就先在數(shù)字安排好一切戈轿、然后再通過(guò)鍵盤鼠標(biāo)顯示器等等外設(shè)和你交互。
被存儲(chǔ)在某處的那組指令就是程序扶檐;程序每次被CPU執(zhí)行凶杖,就叫一個(gè)“進(jìn)程”。
明白了這個(gè)款筑,那么我們就知道了:
1智蝠、程序員需要抽取任何現(xiàn)實(shí)需求的數(shù)學(xué)骨架(或者說(shuō),理解一切需求內(nèi)部的數(shù)學(xué)規(guī)律)
2奈梳、程序員需要把數(shù)學(xué)骨架翻譯成計(jì)算機(jī)可以理解的指令
3杈湾、程序員需要用指令控制外設(shè),把虛無(wú)縹緲的“用戶界面”實(shí)實(shí)在在展示在用戶面前攘须、或者控制機(jī)器完成各種動(dòng)作
其中的2漆撞、3屬于基本技能,做不到就吃不了程序員這碗飯;但這個(gè)技能的上限也非常非常高浮驳,高到優(yōu)秀程序員的工作效率可以輕易超過(guò)庸手十倍以上的程度悍汛。
為什么會(huì)有這么大差別呢?
差距主要就在1上至会。
優(yōu)秀程序員深刻理解了計(jì)算機(jī)原理离咐,因此從思路到實(shí)現(xiàn)毫無(wú)障礙。
優(yōu)秀程序員規(guī)劃能力極強(qiáng)奉件,可以把很復(fù)雜的工作安排的井井有條宵蛀、有能力把它分成很多簡(jiǎn)單單元逐一解決。
優(yōu)秀程序員理解力極佳县貌,可以透徹理解用戶需求术陶,透徹理解萬(wàn)事萬(wàn)物內(nèi)部隱藏著的數(shù)學(xué)規(guī)律——因此,他們不僅知道自己要做什么煤痕、怎樣做梧宫、為什么,還可以觸類旁通杭攻,化一切規(guī)律為我所用祟敛。
當(dāng)庸手出苦力一行行碼代碼時(shí),高手早已洞悉了其中的秘密兆解,于是用自行設(shè)計(jì)的一套算法讓計(jì)算機(jī)自己尋找出路——甚至還可以證明這個(gè)算法一定能以最高效率完成工作馆铁。這差距,是不是一下子就拉開(kāi)了锅睛?
舉例來(lái)說(shuō)埠巨,很多低級(jí)程序員喜歡吐槽“總是寫(xiě)重復(fù)的業(yè)務(wù)代碼”团甲;但是另一位程序員是這么做的……
例如我在樂(lè)字節(jié)的同事他找了份報(bào)社的工作全陨,每天的任務(wù)就是把新聞報(bào)道整理一下發(fā)布到網(wǎng)站上。這顯然是個(gè)毫無(wú)前途的工作璧函,因?yàn)槟阒灰刻炷_打后腦勺的把稿件拷貝到html頁(yè)面上就完了印蔬。毫無(wú)技術(shù)含量勋桶,只能拼體力出苦力,每天996侥猬、007例驹,但總有海量的稿件等著你……而你,甚至都沒(méi)有權(quán)力去改變稿件中的某個(gè)錯(cuò)別字退唠!
這工作鹃锈,到街上找個(gè)二傻子都干的了吧?
這人瞧预,這輩子屎债,完了仅政。
但是這條咸魚(yú)還是想掙扎下。
他發(fā)現(xiàn)盆驹,所有的稿件都由幾個(gè)部分構(gòu)成圆丹,標(biāo)題、作者召娜、正文运褪、引用,偶爾還有題圖/插圖玖瘸。
嗯,標(biāo)題得居中檀咙,用大號(hào)黑體字雅倒,不能傾斜,不能加下劃線弧可;作者用5號(hào)字蔑匣,同樣居中……
好嘛,盡是繁文縟節(jié)棕诵。做多了成了熟練工裁良,一天也用不著干別的了……
但是,等等校套,重復(fù)勞動(dòng)不應(yīng)該讓電腦做嗎价脾?你干嘛要自己做?你的編程學(xué)狗肚子里了笛匙?
于是侨把,這條咸魚(yú)搞了個(gè)“模板”,用{{title}}標(biāo)記html中應(yīng)該填標(biāo)題的地方妹孙,用{{author}}標(biāo)記html中應(yīng)該填作者的地方……
那么秋柄,現(xiàn)在他只要找個(gè)地方保存這個(gè)“標(biāo)準(zhǔn)html”,然后用程序自動(dòng)從數(shù)據(jù)庫(kù)讀取文章標(biāo)題蠢正、作者等內(nèi)容骇笔,把{{title}}代換掉……
你看,現(xiàn)在這條咸魚(yú)徹底閑了:報(bào)社的同事們只要把文章上傳數(shù)據(jù)庫(kù)嚣崭,他跑一下他的批處理——?jiǎng)e說(shuō)一天的工作笨触,一年的工作他也能用幾秒鐘時(shí)間搞定。
畢竟他只需要敲敲鍵盤啟動(dòng)程序有鹿,剩下的苦活累活全是電腦的事旭旭,不是嗎。
閑了的咸魚(yú)開(kāi)始琢磨葱跋。他把他這套模板系統(tǒng)進(jìn)一步擴(kuò)寫(xiě)持寄、完善源梭,然后作為開(kāi)源軟件發(fā)布。
最終稍味,這個(gè)系統(tǒng)一炮打響废麻。它就是著名的Django:?
https://baike.baidu.com/item/django/61531
讓我們繼續(xù)對(duì)你的驚嚇之旅 ^_^
最近有朋友考駕照,特別怕科目三的直線行駛模庐,一走就歪烛愧。
怎么辦呢?
我告訴他掂碱,你往遠(yuǎn)處看怜姿,越遠(yuǎn)越好。比如直路上你可以看遠(yuǎn)方的地平線疼燥。
好了沧卢,問(wèn)題解決。
你是不是要懵了:這都哪跟哪白碚摺但狭?江湖騙子吧?
放心撬即。我還可以讓你更懵:這立磁,可都是三角函數(shù)的基本應(yīng)用啊。你初中咋學(xué)的剥槐?
抓狂不唱歧?
聽(tīng)我解釋。
當(dāng)你操縱的汽車和道路之間存在一個(gè)夾角時(shí)才沧,車子自然會(huì)在行駛一段距離后和道路越分越遠(yuǎn)迈喉;然后你著急一打方向,掛科温圆。
那么挨摸,正確的做法是什么呢?
沒(méi)錯(cuò)岁歉,那就是:從一開(kāi)始就不要讓車子行駛方向和道路形成夾角得运。
問(wèn)題是,人的感覺(jué)是極不精確的锅移。你怎么知道車子行駛方向和道路有無(wú)夾角熔掺?
所以,你只有緊盯邊線非剃,哎呀似乎靠左邊了我打點(diǎn)方向……一打就多置逻,一多就要從右邊出線。趕緊再打备绽,哎呀券坞,左邊又多了……車子喝醉酒一樣來(lái)回一搖鬓催,掛科。
可是恨锚,你的“傳感器”就這么不精確啊宇驾。怎么辦呢?
并不是開(kāi)車會(huì)走直線的都是天賦異稟的神仙猴伶。
還記得初中學(xué)過(guò)的三角函數(shù)嗎课舍?從一個(gè)頂點(diǎn)出發(fā)、相互存在一個(gè)很小夾角的兩條射線他挎,會(huì)隨著距離……怎么樣?
越分越遠(yuǎn)筝尾。直到這個(gè)距離遠(yuǎn)大于道路的寬度。
好雇盖,道路是一條直線忿等,你的視線是另一條直線;而你端端正正坐在駕駛室里崔挖,正常情況下,你的視線和車行方向平行——告訴我庵寞,往遠(yuǎn)處看狸相,當(dāng)你發(fā)現(xiàn)車行方向不正時(shí),你會(huì)發(fā)現(xiàn)什么捐川?
沒(méi)錯(cuò)脓鹃,人的感覺(jué)極不精確;尤其道路那么寬古沥,坐在車?yán)飼r(shí)哪里看得見(jiàn)兩條線的交叉點(diǎn)瘸右?哪里感覺(jué)得到這個(gè)角度?所以我們無(wú)法發(fā)現(xiàn)車行方向和道路方向存在夾角岩齿。
但往遠(yuǎn)處看太颤,借助距離,近處的誤差就被抹平盹沈,而視線和道路不在同一條線上時(shí)就會(huì)有明顯的偏差龄章,于是你是不是一下子就發(fā)覺(jué)了?
很好乞封,打點(diǎn)方向糾正做裙。
你看,借助距離肃晚,我們就加強(qiáng)了我們的感官精確度锚贱。
類似的,做自動(dòng)控制关串,機(jī)器人用的傳感器也沒(méi)那么精確拧廊。怎么辦监徘?
很簡(jiǎn)單,“錨定”一個(gè)遠(yuǎn)期目標(biāo)卦绣,不要硬測(cè)硬算耐量。
如果列出誤差傳遞公式,很容易發(fā)現(xiàn)里面會(huì)有個(gè)類似的項(xiàng)——這些項(xiàng)決定了若干個(gè)周期后滤港,誤差會(huì)放大到夸張的地步廊蜒。
你要“錨”的近了,誤差就會(huì)累積溅漾,就會(huì)引起震蕩山叮,就會(huì)造成項(xiàng)目失敗添履;“錨”的遠(yuǎn)一點(diǎn)屁倔,那么誤差的累積就很容易發(fā)現(xiàn),就可以更快的回到正軌暮胧。
歸根結(jié)底锐借,這還是能歸結(jié)到“∠A的兩條邊在距頂點(diǎn)R處的兩個(gè)點(diǎn)之間的距離”上,歸結(jié)到“兩條直線的圖像”上往衷。
只不過(guò)钞翔,當(dāng)年你是死記硬背、混過(guò)考試席舍,還是把概念徹底吃透布轿、然后又學(xué)出來(lái)學(xué)到生活中,那么在遇到問(wèn)題時(shí)来颤,你和別人就有了質(zhì)的差距汰扭。
別以為這東西很無(wú)聊。知道當(dāng)年海軍測(cè)距用的合象式測(cè)距儀嗎福铅?當(dāng)年有這玩意兒的英軍打的清政府覺(jué)得洋人會(huì)妖法萝毛!
你,能把知識(shí)用的如此天馬行空本讥、信手拈來(lái)嗎珊泳?
請(qǐng)注意,這個(gè)“信手拈來(lái)”可不是“隨口就能解釋清楚合像式測(cè)距儀”的工作原理拷沸,而是:隨便需要一個(gè)什么樣的需求色查,你都應(yīng)該馬上就能想到對(duì)應(yīng)的數(shù)學(xué)原理、然后馬上發(fā)明一種東西來(lái)實(shí)現(xiàn)這個(gè)需求撞芍。
必須注意:發(fā)明可比解釋難多了秧了。
仍以合像式測(cè)距儀為例——它恰恰正是從“專業(yè)知識(shí)”到“傻瓜式界面”的一個(gè)典型案例。
最初序无,你得到的需求可能是:設(shè)計(jì)一款測(cè)距儀器验毡,要求皮實(shí)耐操衡创、使用簡(jiǎn)便,要求戰(zhàn)場(chǎng)上那些文化程度不高晶通、驚慌失措的大頭兵也能本能的用對(duì)璃氢。
面對(duì)這樣一個(gè)需求狮辽,你怎樣才能讓甲方滿意呢一也?
僅從知識(shí)儲(chǔ)備上說(shuō),你需要:
深刻理解三角形測(cè)距原理喉脖,能夠反向思考——什么測(cè)角度椰苟?什么千分尺?大兵們有那么鎮(zhèn)定树叽、有那么清晰的頭腦嗎舆蝴?能夠在戰(zhàn)火紛飛的戰(zhàn)場(chǎng)上完成一道三角函數(shù)題?還必須精確到小數(shù)點(diǎn)后XX位题诵?
顯然洁仗,在此之前,你必須深刻理解千分尺(螺旋測(cè)微器)工作原理性锭,這才能把它和望遠(yuǎn)鏡有機(jī)結(jié)合京痢,從而直接把“擰旋鈕對(duì)準(zhǔn)某個(gè)目標(biāo)”對(duì)應(yīng)到“測(cè)量”——然后旋鈕對(duì)應(yīng)的讀數(shù)就是最終距離。
但要做到這點(diǎn)篷店,談何容易。
你能讓大兵跑這頭擰擰鏡頭臭家、把刻度對(duì)準(zhǔn)船上某個(gè)定點(diǎn)疲陕;然后再跑那頭擰另一個(gè)鏡頭,把刻度對(duì)準(zhǔn)另一個(gè)定點(diǎn)嗎钉赁?這段過(guò)程中蹄殃,你自己的船轉(zhuǎn)彎了呢?風(fēng)吹著走了弧線了呢你踩?對(duì)方轉(zhuǎn)彎诅岩、看不到之前的標(biāo)志物了呢?
因此带膜,你必須設(shè)計(jì)一個(gè)機(jī)構(gòu)吩谦,使得大兵可以在一個(gè)位置同時(shí)控制兩個(gè)鏡頭、讓它們對(duì)準(zhǔn)同一個(gè)標(biāo)志物膝藕。
然后式廷,你還得根據(jù)兩端測(cè)到的不同角度,計(jì)算距離……
你看芭挽,這難度高出天際了吧滑废?
而“合像”這個(gè)思路就是個(gè)天才的設(shè)計(jì)蝗肪。
它的思路是,兩端兩個(gè)鏡頭聯(lián)動(dòng)蠕趁,使得當(dāng)目標(biāo)在視場(chǎng)中間時(shí)薛闪,測(cè)距基線的垂線恰好對(duì)準(zhǔn)目標(biāo)——于是兩個(gè)鏡頭到目標(biāo)的連線再加上基線恰巧構(gòu)成個(gè)等腰三角形。這就使得最終只需考慮單獨(dú)一個(gè)角就能算出距離俺陋,從而大幅降低了計(jì)算復(fù)雜度豁延。
同時(shí),借助“潛望鏡”原理(看到?jīng)]倔韭?又一個(gè)原理J趵恕),把基線兩端的兩個(gè)鏡頭的視野同時(shí)呈現(xiàn)在觀察者面前——然后又是一個(gè)天才設(shè)計(jì):不需要你一個(gè)個(gè)鏡頭對(duì)準(zhǔn)目標(biāo)上的同一個(gè)標(biāo)志物寿酌,而是把兩個(gè)鏡頭的視場(chǎng)各截一半胰苏;那么當(dāng)你通過(guò)中間的目鏡,把左右兩邊鏡頭視場(chǎng)對(duì)應(yīng)的醇疼、同一目標(biāo)的上下半拉嚴(yán)絲合縫的對(duì)到一起時(shí)硕并,你已經(jīng)完成了這個(gè)“對(duì)正目標(biāo)”的操作。
復(fù)雜操作就這樣被傻瓜化了秧荆。
現(xiàn)在倔毙,只剩最后一步:怎么把“角度”和“距離”聯(lián)系起來(lái)。
注意這里是利用等腰三角形的底邊長(zhǎng)和底角角度算三角形中垂線的長(zhǎng)度乙濒;因此調(diào)節(jié)旋鈕轉(zhuǎn)過(guò)的角度并不和垂線長(zhǎng)度成正比陕赃。所以你不可能用擰一圈100米擰10圈1000米這種簡(jiǎn)單機(jī)構(gòu)。你需要設(shè)計(jì)一套指示機(jī)構(gòu)颁股,并做一些稍微復(fù)雜的標(biāo)定——最好還能把它“塞”進(jìn)視場(chǎng)里去么库。
不過(guò),相對(duì)于其他甘有,這已經(jīng)是簡(jiǎn)單的體力活了诉儒。
這里面用到了哪些知識(shí)呢?
三角形性質(zhì)亏掀,三角函數(shù)忱反;輪軸/螺旋;齒輪的嚙合滤愕;杠桿轉(zhuǎn)動(dòng)角度如何與螺旋測(cè)微器聯(lián)動(dòng)温算;平面鏡成像;凸透鏡成像(光路分析:“上下視場(chǎng)對(duì)齊”是怎么和“角度測(cè)量”聯(lián)系起來(lái)的)……
還有無(wú)法直觀看到该互、但卻必不可少的:機(jī)械加工精度米者、裝配精度、溫度補(bǔ)償、戰(zhàn)艦本身各種震動(dòng)的消除(補(bǔ)償)蔓搞、潤(rùn)滑胰丁、抗(海水/汗液)腐蝕……
看到了嗎?
你的幾何代數(shù)物理化學(xué)……只要有任何短板喂分,你做的了這個(gè)嗎锦庸?
想做這個(gè),你必須全能蒲祈。
別說(shuō)什么課本沒(méi)寫(xiě)老師沒(méi)講甘萧。學(xué)以致用,這就是用梆掸。這就是要你在掌握了書(shū)本知識(shí)之后扬卷、自己在實(shí)踐中推廣的。
這東西太多太雜酸钦,而且會(huì)因地制宜怪得、以各種匪夷所思的方式利用任何原理的任何細(xì)枝末節(jié)——或者說(shuō),各種概念的內(nèi)涵外延你全都必須完全掌握卑硫,不允許有任何死角徒恋。
而要做到這一點(diǎn),死記硬背毫無(wú)意義欢伏;你必須自己學(xué)會(huì)悟入挣、學(xué)會(huì)推廣——自己會(huì)走,才能想去哪就去哪硝拧。
——當(dāng)然径筏,我在這里選了一個(gè)物理設(shè)備舉例。因?yàn)樗吹靡?jiàn)摸得著障陶,沒(méi)有接觸過(guò)相關(guān)領(lǐng)域的讀者多少也能有個(gè)感性認(rèn)識(shí)匠璧。
如你所見(jiàn),所謂“工程師”咸这,就是理解很多很多學(xué)科的基本原理、能夠在實(shí)踐中恰到好處利用的人魔眨。軟件工程師也不例外——如果你想要自己“優(yōu)秀”的話媳维。
拿我們熟悉、同時(shí)又總是看不起的美圖秀秀來(lái)說(shuō)吧遏暴。
我們知道侄刽,美圖秀秀是個(gè)Photoshop的“抄襲品”,它做不了專業(yè)軟件朋凉,只好把專業(yè)軟件的功能拷貝下來(lái)實(shí)現(xiàn)個(gè)劣化版州丹、然后主打小白市場(chǎng)……嗯,你看,不加掩飾的濃濃鄙夷墓毒。
不過(guò)……跟著鄙夷之前吓揪,你有沒(méi)有問(wèn)過(guò)自己——美圖秀秀的原理是什么?哪本書(shū)講過(guò)所计?你寫(xiě)得出來(lái)嗎柠辞?
我想,如果問(wèn)過(guò)自己主胧,恐怕大多數(shù)人都不敢鄙夷了叭首。
為什么呢?
因?yàn)槟呐履憔褪菍W(xué)計(jì)算機(jī)圖形圖像的踪栋,課本里也沒(méi)教過(guò)你什么叫“肌膚遮瑕”“睫毛濃黑”……
而且……這倆不恰好是相反的嗎焙格?一個(gè)要去掉皮膚上細(xì)微的瑕疵,另一個(gè)反而要把皮膚上的黑色絲狀物凸出……
所以你還必須繼續(xù)“活用知識(shí)”夷都。比如說(shuō)眷唉,書(shū)上教過(guò)你“邊緣捕捉”,教過(guò)你“大面積著色”损肛,教過(guò)你“模式識(shí)別”……
你必須活用這些知識(shí)厢破、用到你那些只會(huì)死記硬背的同學(xué)目瞪口呆的程度,再結(jié)合皮膚/美妝方面的常識(shí)治拿,你才能在“濃黑睫毛”的同時(shí)摩泪,幫小姑娘們把臉上的黑痣自動(dòng)點(diǎn)掉。
你看劫谅,雖說(shuō)是“五毛錢特效”见坑,可你照樣得是個(gè)“萬(wàn)事通”——不然哪怕想“抄算法”,你都不知道該抄什么捏检。
——Photoshop當(dāng)然沒(méi)開(kāi)源荞驴;但gimp可是開(kāi)源的,隨便你抄贯城。你抄的出美圖秀秀嗎熊楼?
可見(jiàn),在軟件設(shè)計(jì)中能犯,類似的東西同樣會(huì)貫穿始終鲫骗,這才能把復(fù)雜繁難的專業(yè)技術(shù)對(duì)應(yīng)到傻瓜都能掌握的“傻瓜界面”上去。
這就是為什么同樣看了C程序設(shè)計(jì)教程踩晶,有的人馬上就能上手做一些奇奇怪怪的東西执泰、而另一些人一片茫然的原因。
而這種茫然渡蜻,在你工作之后术吝,會(huì)更加的普遍计济、更加的具有壓迫力——當(dāng)你的同事可以因地制宜信手拈來(lái)一堆解決方案之時(shí),你不僅不知道他們“從哪學(xué)來(lái)的這些古怪知識(shí)”排苍,甚至就連理解他們的思路都極為困難沦寂。以致于……就好像我見(jiàn)過(guò)的很多同事一樣:你別和我說(shuō)原理!要我做什么纪岁,你直接說(shuō)凑队!
——所以我不僅經(jīng)常給電腦寫(xiě)程序,我還經(jīng)常給人寫(xiě)程序:
要部署我這個(gè)軟件幔翰,你要:
1漩氨、安裝debian 9.10
2、登錄debian遗增,執(zhí)行apt-get install sshd 安裝配置ssh服務(wù)
3叫惊、……
沒(méi)錯(cuò)。沒(méi)有我寫(xiě)的一二三四做修,很多人連安裝部署都不會(huì)霍狰;而且連debian的哪個(gè)版本都必須精確到小版本號(hào)。不然……他們可沒(méi)能力隨機(jī)應(yīng)變(哪怕這個(gè)項(xiàng)目是跨平臺(tái)設(shè)計(jì)饰及,但你仍然必須逐個(gè)平臺(tái)指定版本號(hào)寫(xiě)一二三四的部署流程:給人寫(xiě)程序比給電腦寫(xiě)程序更麻煩蔗坯,因?yàn)槟悴荒茏屗麄冏鎏鄰?fù)雜判斷、不能給他們太多太復(fù)雜的步驟燎含。因?yàn)槿丝赡芸创斜霰簦娔X不會(huì))。
那么屏箍,你猜绘梦,如果你學(xué)成了這樣……還有可能進(jìn)步嗎?
何況赴魁,從“提醒一下還是能回憶起學(xué)過(guò)的知識(shí)”到“勉強(qiáng)能明白別人的思路”再到“勉強(qiáng)能跟上別人的思路”再到“可以不費(fèi)力的跟上別人思路”再到“能和思維跳脫的同事一起縱橫捭闔无埃、相互補(bǔ)充相互促進(jìn)烂叔、把一個(gè)設(shè)計(jì)真正做到完美”——這里面昆庇,要走的路嘲更,可長(zhǎng)的很呢。
仍以合象式測(cè)距儀舉例:我壓根沒(méi)看過(guò)它的設(shè)計(jì)圖潘拱、原理圖秉继;以上大段文字,都是我看到“合像”二字后腦子里一下子涌出來(lái)的泽铛。但我敢說(shuō),我畫(huà)出來(lái)的原理圖一定和實(shí)物圖相差無(wú)幾辑鲤。
如果你將來(lái)能進(jìn)入一個(gè)不錯(cuò)的公司盔腔,你就會(huì)發(fā)現(xiàn),那些優(yōu)秀的同事都可以輕易做到這些。
甚至弛随,你想了很久瓢喉、絞盡腦汁想出來(lái)一個(gè)方案(很可能比這個(gè)測(cè)距儀要復(fù)雜曲折的多);結(jié)果到了會(huì)議上舀透,你才吐露一個(gè)詞栓票,人家馬上就能把你的整個(gè)方案徹底領(lǐng)會(huì)貫通、甚至還能當(dāng)即提出一些直擊要害的問(wèn)題來(lái)愕够。
如果你也有這種能力的話走贪,和這種同事的交流一定是非常輕松愉快的;和他合作惑芭,做任何事都可以很輕松:你稍微一提坠狡,他能把任何細(xì)節(jié)都考慮到,直接給你個(gè)成品出來(lái)遂跟。
而另一些同事逃沿,你苦口婆心一遍遍的給他們解釋,他們也領(lǐng)會(huì)不了這種明明很簡(jiǎn)單的問(wèn)題幻锁。好不容易把每個(gè)要點(diǎn)都提到了凯亮,他還能給你做的差三落四,甚至連最最基本的核心功能都沒(méi)做對(duì)哄尔。
而實(shí)際工作中假消,“編程水平”恰恰就體現(xiàn)在這里:能夠長(zhǎng)期、穩(wěn)定究飞、高效的實(shí)現(xiàn)某個(gè)具體功能只是個(gè)基本要求置谦;更重要的,是能給團(tuán)隊(duì)指明方向亿傅,讓他們知道怎么走才能搶到競(jìng)爭(zhēng)對(duì)手前面媒峡、把別人不曾做到也不知道該怎么做的東西帶到現(xiàn)實(shí)。
你看葵擎,當(dāng)年的每一口夾生飯谅阿,你都要在實(shí)踐中付出代價(jià)。
這些東西酬滤,會(huì)在編程實(shí)踐中成為常識(shí)——理解計(jì)算機(jī)體系結(jié)構(gòu)签餐、打通數(shù)字世界和現(xiàn)實(shí)世界的藩籬,這是個(gè)很不簡(jiǎn)單的任務(wù)盯串,它把很多很多人攔在了編程門外氯檐;但打通了之后,你能往數(shù)字世界搬進(jìn)去什么呢体捏?
很顯然冠摄,你真正理解糯崎、掌握的知識(shí)越多,那么你就越是有更多東西可以搬進(jìn)數(shù)字世界河泳。相反沃呢,你的夾生飯?jiān)蕉唷獙W(xué)了杠桿輪軸你懂不了變速箱玩不轉(zhuǎn)發(fā)動(dòng)機(jī)、學(xué)了電路你不知道收音機(jī)電視機(jī)如何工作——那么你就越是摸不著頭腦拆挥。
如前面我舉那個(gè)三角函數(shù)的例子薄霜。這東西太基礎(chǔ)了,以致于對(duì)很多很多人——那些真正理解了知識(shí)而不是死記硬背的人——來(lái)說(shuō)纸兔,這都是本能惰瓜。
但是,如果你只會(huì)做題食拜,如果你從未圍繞著你學(xué)過(guò)的概念有過(guò)任何思考鸵熟,那么別人的每一句話,對(duì)你都是天書(shū)负甸。
——如果我不解釋流强,恐怕大部分人都會(huì)覺(jué)得“看遠(yuǎn)點(diǎn)就能解決開(kāi)車走不了直線問(wèn)題”和跳大神一樣呢。
那么呻待,有沒(méi)有想過(guò)打月,其實(shí)你我都學(xué)過(guò)的每一個(gè)知識(shí)點(diǎn),別人都可能掌握到了這種程度呢蚕捉?
那么奏篙,有沒(méi)有想過(guò),當(dāng)會(huì)議上迫淹,別人在每一個(gè)話題上都如此天馬行空秘通、讓你目不暇接時(shí),你會(huì)是什么體驗(yàn)敛熬?
你壓根就跟不上他們的思路肺稀。
在他們看來(lái),壓根就沒(méi)有難題应民,隨隨便便一個(gè)方案接一個(gè)方案就提出來(lái)了话原,隨隨便便就能想出特殊場(chǎng)景來(lái)對(duì)不同方案做出挑戰(zhàn)、完成取舍诲锹。
但哪怕他們掰開(kāi)了揉碎了給你講繁仁,你都怎么也轉(zhuǎn)不過(guò)彎來(lái)。
你壓根想不到自己學(xué)過(guò)的知識(shí)還能這樣用归园;他們則理解不了人人都學(xué)過(guò)的那么點(diǎn)簡(jiǎn)單知識(shí)黄虱,居然……只是死記硬背?庸诱!
綜上捻浦,優(yōu)秀的程序員已經(jīng)不僅僅是比拼對(duì)計(jì)算機(jī)系統(tǒng)本身的了解了——那只是基礎(chǔ)盐捷。
他們真正比拼的,是對(duì)這個(gè)世界認(rèn)識(shí)的深刻程度默勾;是因地制宜的把腦中雜七雜八的知識(shí)拿來(lái)、解決實(shí)際問(wèn)題的能力聚谁。
這種東西是怎么訓(xùn)練出來(lái)的呢母剥?
很簡(jiǎn)單,從小就要多動(dòng)腦形导,要真正把任何知識(shí)理解了环疼、活用了;千萬(wàn)不要通過(guò)死記硬背這類手段逃課朵耕。
人生是個(gè)馬拉松炫隶。
你在小學(xué)手工課上耗費(fèi)的時(shí)間并沒(méi)有白費(fèi);你好奇的拆開(kāi)玩具阎曹、擺弄鐘表收音機(jī)所付出的努力成為了你的積淀伪阶;你“不務(wù)正業(yè)”的胡思亂想、對(duì)科普對(duì)科幻的癡迷使得你更早的接觸了本質(zhì)……
現(xiàn)在处嫌,它們終于體現(xiàn)出價(jià)值來(lái)了栅贴。
給大家推薦個(gè)很不錯(cuò)的免費(fèi)自學(xué)課程,java全套1056集入門到進(jìn)階必看B站:BV14h411U75p