如何學(xué)習(xí)編程

讀張越的《如何學(xué)編程?》

什么是編程辖佣?

現(xiàn)代計算機的起點是萊布尼茨的一個夢想霹抛,將理性還原為計算,用強大的機器執(zhí)行這些計算卷谈。//讓我想起來一句話“這不是情懷杯拐,不是素養(yǎng),而是冷冰冰的計算”
這需要兩個前提世蔗,一切都可以計算端逼,可以執(zhí)行一切計算的機器。

為了達到這個目的污淋,17世紀以來的數(shù)學(xué)家和哲學(xué)家就圍繞上面兩個問題展開了自己的研究顶滩。數(shù)學(xué)領(lǐng)域人類發(fā)明出來了一套統(tǒng)一符號來處理代數(shù)表達式,并不斷嘗試用符號來表征全世界所有的概念和事物寸爆。//事實證明這樣做的結(jié)果是礁鲁,符號比較混亂,不能統(tǒng)一起來赁豆。常常是一個x代表的好幾個意思救氯。
像笛卡爾,飛馬通過論證講集合通過某種方式轉(zhuǎn)換成了代數(shù)歌憨,那個時代的頂尖數(shù)學(xué)叫嘗試做下面的事情:1將全世界的只是歸納起來着憨,2針對上述的全集用一套符號體系進行表征,3用萊布尼茨所述的“推理演算“對這些符號進行運算务嫡。

在那個偉大的時代產(chǎn)生了大量的優(yōu)秀人才和成果甲抖,希爾伯特、康托爾心铃、哥德爾等人都作出了重大的貢獻准谚。其中布爾在《思維的法則》中證明了邏輯問題可以演變?yōu)閿?shù)學(xué)問題,從而奠定了現(xiàn)代編程語言的運算邏輯去扣。而現(xiàn)代編程學(xué)語言的概念就源自佛雷格在《該你那文字》所描述的:所有演繹推理都可以歸納在一個邏輯體系內(nèi)柱衔。

這段時間,哲學(xué)家也為編程語言和計算機的產(chǎn)生做出了重大貢獻:維特根斯坦在《邏輯哲學(xué)論》中為現(xiàn)代編程語言的面向?qū)ο笏枷氲於思碌幕A(chǔ):

”“對象包含了事物的全部狀態(tài)的可能性愉棱,......唆铐,這種固定不變的模式有對象組成。

在數(shù)學(xué)家和哲學(xué)家講一切均可計算的夢想逐漸實現(xiàn)的時候奔滑,圖靈描述了一種通用的計算機模型艾岂,圖靈機由此誕生。馮諾依曼等人用電子管實現(xiàn)了這種模型朋其,”可以執(zhí)行計算的機器“發(fā)明出來了

直到今天王浴,現(xiàn)代編程語言依然沿著當(dāng)年的套路發(fā)展脆炎,而硬件形態(tài)不管變化多大,圖靈機的基本原理和夢諾依曼體系始終沒有本質(zhì)變化氓辣。
因此簡單說秒裕,現(xiàn)代編程語言(更準確的說法是,一種”圖靈完備“編程語言)钞啸,應(yīng)該能夠完整的描述某一個現(xiàn)實領(lǐng)域的問題簇爆,并通過運算規(guī)則,操作計算設(shè)備獲得分析過程和結(jié)果爽撒。

所謂學(xué)習(xí)編程,就是學(xué)習(xí)使用一種特定的語言响蓉,來描述現(xiàn)實世界的一個問題硕勿,再將這個問題用過計算機的運算,給出分析和解答枫甲。

進入程序的思維邏輯

編程難是因為沒有具備”編程思維“源武。變成四位,需要用一種新的語言形式來描述世界想幻。
那個著名的笑話:

老婆給當(dāng)程序員的老公打電話:”下班順路買一斤豹子帶回來粱栖,如果看到賣西瓜的,買一個脏毯∧志浚“
當(dāng)晚,程序員老公手捧著一個豹子進了家門......老婆怒道:”你怎么就買了一個豹子食店?渣淤!“
老公答曰:”因為看到了賣西瓜的〖郏“

這個笑話充分表達了程序思維和生活思維的不同价认,這里的差異在于:
人類常用表達方式和邏輯習(xí)慣是不吻合的,很多信息存在模棱兩可的描述中自娩,而編程語言是完備和精確的用踩,機器的代碼一個符號都不能錯。
第二忙迁,”圖靈機“的思維模式是一種機械的脐彩,線性邏輯。它符合機械流程姊扔。而人類的邏輯丁屎,本質(zhì)上是一個非線性的反饋系統(tǒng),所以思維決策模型上的差異導(dǎo)致編程的邏輯過程必然與人腦思維過程不同旱眯。

因此晨川,學(xué)習(xí)編程需要讓自己養(yǎng)成線性思維证九,或者說是理性的反饋系統(tǒng)。//其實大自然的很多事情都不是線性的共虑,更多是非線性的愧怜,我要注意的是這兩種思維之間的轉(zhuǎn)換。

只有這樣才能從所學(xué)知識中舉一反三妈拌,建立自己的只是系統(tǒng)拥坛。因此學(xué)習(xí)時,經(jīng)常畫流程圖尘分,和時間順序圖猜惋,是一個號的習(xí)慣,用圖表將自己的思維表達清楚能有助于用機械邏輯來表述自然思維培愁。另一個方式是寫偽代碼著摔。

了解你所寫的代碼

只有了解你所寫的代碼,你才能漸變成一個專家級程序員定续。
比如隨便最簡單的移行代碼:

var a = 1;

如果你只是一個普通的程序員谍咆,你應(yīng)該知道這行代碼解決了什么問題,但如果你是專家級程序員私股,你應(yīng)該知道:
1系統(tǒng)是如何執(zhí)行這行代買的摹察?
2系統(tǒng)因為執(zhí)行了這行大媽,發(fā)生了那些改變倡鲸?
要做到這兩點供嚎,你需要對一下內(nèi)容有比較深刻的理解:
1深刻掌握你所使用的編程語言;
2了解和掌握你的程序所運行的操作系統(tǒng)峭状;
3在某些情況下查坪,需要了解硬件的一些特性和限制,以及操作系統(tǒng)在這些硬件上的影響宁炫。
因為你寫的代碼偿曙,作用與一臺圖靈機(可以執(zhí)行計算的機器),中間需要有操作系統(tǒng)羔巢,可能還有你所使用的編程語言所使用的運行時(如:Java Runtime)望忆。

如果你立志成為一名優(yōu)秀的程序員,你需要從一行程序出發(fā)竿秆,一步步的追蹤到硬件的執(zhí)行启摄。這時候,你會發(fā)現(xiàn)很多隱藏在程序之下的東西幽钢。

優(yōu)雅的控制機器

很多不懂程序的人歉备,都會發(fā)現(xiàn)一個現(xiàn)象:凡是會寫代碼的,都會修電腦匪燕,修手機蕾羊,修一切的電子產(chǎn)品......

寫程序與修電腦之間有什么必然聯(lián)系嗎喧笔?
真的有聯(lián)系。修手機的能力龟再,來源于對手機的理解和對手機的控制力书闸。這種控制力,包括輸入輸出的各種設(shè)備(攝像頭利凑,傳感器浆劲,藍牙),包括操作系統(tǒng)哀澈,包括工具類的應(yīng)用軟件牌借。

一個程序員希望自己的代碼能夠在一臺設(shè)備上運行良好。他確實要關(guān)注以上這些東西割按,一個程序是否可以合理的使用外設(shè)膨报,是否在操作系統(tǒng)中兼容性良好,是否與駐留軟件不沖突哲虾,都是一個程序員需要考慮的問題。

因此择示,一個合格的程序員束凑,確實要習(xí)慣性的稻谷自己的手機、自己的電腦栅盲。

一個幸福的事實是汪诉,現(xiàn)在的可穿戴設(shè)備和只能加劇設(shè)備的逐步普及,更多的傳統(tǒng)設(shè)備配備了操作系統(tǒng)谈秫,成了可編程的涉筆扒寄。

比如,一個程序員懂得Android開發(fā)拟烫,口可以使用程序控制電視定時播放该编,智能手表表針的顯示樣式,空調(diào)的出風(fēng)溫度硕淑,手機和門禁鏈接课竣,在汽車中年中控臺上部署一個程序和手機共享音樂等等

長靴長信,吐故納新

技術(shù)日新月異置媳,永無止境于樟。

所有高階程序員呢,具備的一個基本能力和素質(zhì)拇囊,就是不斷的嘗試新鮮事物迂曲,不斷閱讀新的項目代碼。也會主動改進之前做過的項目寥袭,哪怕他們當(dāng)前運行良好路捧。

每一個新技術(shù)的掌握关霸,都建立在對現(xiàn)有技術(shù)的充分理解智商,因此鬓长,學(xué)好當(dāng)下谒拴,恰恰是掌握未來的最佳方式。

以用帶學(xué)

設(shè)立一個學(xué)習(xí)的目標涉波,比如學(xué)習(xí)JS可以建一個自己的博客英上。
有一個明確的目標,就會有明確的學(xué)習(xí)路徑啤覆,解決問題時苍日,就不容易發(fā)散。更有助于提升效率窗声,衡量學(xué)習(xí)效果相恃。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市笨觅,隨后出現(xiàn)的幾起案子拦耐,更是在濱河造成了極大的恐慌,老刑警劉巖见剩,帶你破解...
    沈念sama閱讀 217,907評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件杀糯,死亡現(xiàn)場離奇詭異,居然都是意外死亡苍苞,警方通過查閱死者的電腦和手機固翰,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來羹呵,“玉大人骂际,你說我怎么就攤上這事「曰叮” “怎么了歉铝?”我有些...
    開封第一講書人閱讀 164,298評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長凑耻。 經(jīng)常有香客問我犯戏,道長,這世上最難降的妖魔是什么拳话? 我笑而不...
    開封第一講書人閱讀 58,586評論 1 293
  • 正文 為了忘掉前任先匪,我火速辦了婚禮,結(jié)果婚禮上弃衍,老公的妹妹穿的比我還像新娘呀非。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,633評論 6 392
  • 文/花漫 我一把揭開白布岸裙。 她就那樣靜靜地躺著猖败,像睡著了一般。 火紅的嫁衣襯著肌膚如雪降允。 梳的紋絲不亂的頭發(fā)上恩闻,一...
    開封第一講書人閱讀 51,488評論 1 302
  • 那天,我揣著相機與錄音剧董,去河邊找鬼幢尚。 笑死,一個胖子當(dāng)著我的面吹牛翅楼,可吹牛的內(nèi)容都是我干的尉剩。 我是一名探鬼主播,決...
    沈念sama閱讀 40,275評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼毅臊,長吁一口氣:“原來是場噩夢啊……” “哼理茎!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起管嬉,我...
    開封第一講書人閱讀 39,176評論 0 276
  • 序言:老撾萬榮一對情侶失蹤皂林,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后蚯撩,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體础倍,經(jīng)...
    沈念sama閱讀 45,619評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,819評論 3 336
  • 正文 我和宋清朗相戀三年求厕,在試婚紗的時候發(fā)現(xiàn)自己被綠了著隆。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片扰楼。...
    茶點故事閱讀 39,932評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡呀癣,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出弦赖,到底是詐尸還是另有隱情项栏,我是刑警寧澤,帶...
    沈念sama閱讀 35,655評論 5 346
  • 正文 年R本政府宣布蹬竖,位于F島的核電站沼沈,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏币厕。R本人自食惡果不足惜列另,卻給世界環(huán)境...
    茶點故事閱讀 41,265評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望旦装。 院中可真熱鬧页衙,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至眨八,卻和暖如春腺兴,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背廉侧。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評論 1 269
  • 我被黑心中介騙來泰國打工页响, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人伏穆。 一個月前我還...
    沈念sama閱讀 48,095評論 3 370
  • 正文 我出身青樓拘泞,卻偏偏與公主長得像,于是被迫代替她去往敵國和親枕扫。 傳聞我的和親對象是個殘疾皇子陪腌,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,884評論 2 354

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

  • 如果你想知道如何學(xué)習(xí)編程和轉(zhuǎn)行,那么你不是在單騎作戰(zhàn)烟瞧。隨著科技熱潮對軟件工程師和計算機科學(xué)家需求的增加诗鸭,很多專業(yè)人...
    fuyou2324閱讀 1,056評論 9 6
  • 現(xiàn)在,計算機已經(jīng)融入到了我們生活的方方面面参滴,手機强岸、電腦、智能家居等砾赔。在計算機變得如此普遍的今天蝌箍,是不是每個人都應(yīng)該...
    acherie閱讀 1,597評論 6 21
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,129評論 25 707
  • (版權(quán)所有,抄襲必究暴心,未經(jīng)作者同意妓盲,請勿轉(zhuǎn)載) 從十多年前喜歡上音樂劇的那一刻起,就不可自拔的喜歡上了愛爾蘭歌手C...
    空谷百合閱讀 3,202評論 3 3
  • 和朋友聊天专普,談起許多女人為了錢依附某個男人悯衬。我的看法:“沒有感情,只為了錢檀夹,太下賤筋粗,也太惡心;如果真的彼此相...
    水做的鏡子閱讀 338評論 0 1