英文原文:6 Life Habits That Programming Could Teach You Today
英文原文:6 Life Habits That Programming Could Teach You Today
成功人生所需要知道的一切重要事情,你都能從計算機編程中學到。不相信我?那就繼續(xù)往下看。
當我很小開始編程之時,還只是照搬電腦雜志上前瞻性的文字和符號,以便我和哥哥能夠讓帶有一個雙軟盤驅(qū)動器的舊?Franklin?64 播放一段小巧的數(shù)字曲調(diào)。當時我們還沒有太多生活經(jīng)驗去辨別那些神秘文本。
很多年后,在高中的 Pascal 課程中,事情看起來開始變得不同。了解 if 條件語句和 for 循環(huán),開始引發(fā)出沃爾特·惠特曼和羅伯特·弗羅斯特等人都引以為傲的哲學突觸聯(lián)系。好吧,我說的有點夸張,但是這些見解仍然很酷。
是的,我知道,它說起來是一件很令人厭煩的事情——但事實是,在代碼中,在 while 語句、數(shù)組、方法、對象等所有這些中,蘊含著很多智慧。事實上,我學到的很多駕馭生活的能力,通常都直接來源于我對多種編程語言的研究。
用流程圖簡化每件事情
許多程序員在開始編寫單行代碼之前很久就已經(jīng)開始使用流程圖。這樣做的原因是,有時試圖一下子編寫出整個程序的感覺真的是壓倒性的,尤其是當程序要完成一些非常復雜的任務(wù)時。
程序員將接受大的甚至巨大的軟件項目,然后將它們分解為更好管理的更小的部分——有點像造一輛汽車,需要通過事先做每個所需組件,然后再將它們組合在一起。每個部分都是一個(或幾個)具有特定輸入值或行為的集合、然后完成一些輸出任務(wù)的代碼塊。在該模塊內(nèi)部,程序員將使用流程圖描繪出從輸入到輸出的邏輯。
流程圖能夠幫助你以一種可視化形式跟隨這個邏輯,這遠比你試圖用文字把它寫出來或者想當然地狂寫代碼來解決這一問題更加容易理解。程序員沒有找出這樣的“動態(tài)”邏輯的原因是,后面的邏輯通常在很大程度上取決于你對如何處理程序中早前的邏輯做出的決定。早期決定錯了,你將會把自己編入死胡同。
生活中也是如此。當你正在做一個關(guān)于如何去還清債務(wù)、買房子,或者如何處理任何其他復雜的生活狀況,甚至如何管理工作中的一個項目的決策時。在你坐下落筆繪制出在這個過程或決策中每一步的創(chuàng)意流程圖時,所有那些看似不可逾越的任務(wù)都能夠得到更好的處理。這將幫助你在每一個階段為你所有可能的選擇作出決定,或者預(yù)測所有可能性然后追蹤各種情景。就像編程,了解早期的選擇會如何影響后面的結(jié)果將幫助你及早地做出更好的決策。
每件事物都有它的位置
每當你開始編寫一個腳本或程序時,第一步總是創(chuàng)建你的變量。在編程中,包含有很多不同類型的變量。有支持文本表示的字符串類型,支持非十進制數(shù)表示的整數(shù)型,用于處理更大數(shù)字的雙精度型或其變體,還有數(shù)組類型、結(jié)構(gòu)體類型等等。我們的想法是,定義一個適用于手頭任務(wù)的變量。例如,如果一個函數(shù)的輸出是一個人的名字,那么你需要的是一個字符串變量。
當你組織你的生活時也是如此,無論是你的房子還是辦公室,你根據(jù)要存儲事物所需空間的多少來選擇空間的大小。小而透明的塑料盒用于盛放干貨,一個貼好標簽的香料架盛放香料以節(jié)省空間。在辦公室,你會將日常工作文檔放在辦公桌抽屜里,而將敏感的商業(yè)文檔存放進一個鎖柜中。每件物品都有合適的容器,并且都有它適當?shù)奈恢谩@是組織良好生活的座右銘。
重用程序模塊以節(jié)省時間
任何一個優(yōu)秀的程序員最終都知道特定的代碼塊(或稱為“函數(shù)”)可以在多個程序中重用。例如,一個將華氏溫度轉(zhuǎn)換成攝氏溫度的函數(shù),它可以用于你創(chuàng)建的任何需要完成這一任務(wù)的程序中。這個函數(shù)是一個簡單的模塊,它以華氏溫度為輸入,然后輸出對應(yīng)的攝氏溫度。這個函數(shù)可以包括一定行的代碼,然而當你本可以將它們保存為一個程序模塊,然后再直接將其嵌入到未來任何需要它的程序中去時,你為什么非要為所編寫的每一個程序都重建這些代碼呢?
亨利·福特關(guān)于他著名的T型車曾經(jīng)說過,“任何顧客都可以擁有一輛他想要的任意顏色的汽車,只要它是黑色的。”
原因是福特已經(jīng)想出了如何組裝汽車,并且如果每制造一輛新車都能夠重用相同的設(shè)備(和相同的顏色漆)而無需重現(xiàn)該過程會讓它們更快地上市。這催生了流水作業(yè),它徹底改變了汽車工業(yè)。同樣的方式,你可以將這一原則應(yīng)用到你生活中需要重復性工作的各個領(lǐng)域。自動化是成功的關(guān)鍵,所以如果你能找到方法來自動化工作中需要重復完成的任務(wù),——你就可以使你的一天更有效率以節(jié)省時間。
首先,閱讀我們的網(wǎng)站自動化指導。
記錄每一件事
有時,對于一個程序員來說,只是飛速編寫代碼而不記錄單獨的事情是非常誘人的。之所以誘人是因為,任何時候你都準確地知道你想要程序做什么以及你想要怎樣去實現(xiàn)它。記錄一個程序需要時間。你必須描述每一步怎樣做以及為什么這樣做。這看似毫無意義,但幾個月后當你決定重用這段代碼或為另一用途修改它時,這就體現(xiàn)了奮力掙扎想起你的每一行代碼到底是在做什么,與迅速回退去了解你邏輯背后的整個意圖之間的區(qū)別。
這種細致的文檔在生活中的每個領(lǐng)域都有幫助,從跟蹤生日和紀念日,到保持日常商務(wù)交易日志以及進行這些交易的原因。隨著很多決策像風中的樹葉一樣來來去去,日常生活會變成每一個模糊的日子。只依靠記憶去記住你為什么出席某些會議或為什么做出某些購買的做法是幼稚且低效的。每日日記或日志對解放你的思想去做更重要的事情有很大幫助。
始終給自己留一條退路
一個業(yè)余程序員最常犯的錯誤之一是無限循環(huán)。這是一種打破循環(huán)所需的條件從未發(fā)生的情況,程序會留在循環(huán)里并且永遠不會結(jié)束——這占用 100% 的電腦 CPU 資源,幾乎相當于鎖定了電腦,直至你終止這一過程。
業(yè)余程序員需要從中學習的教訓是,每當你創(chuàng)建一個需要消耗大量 CPU 資源的循環(huán)來執(zhí)行某種任務(wù)時,引入各種各樣的跳出機制是非常重要的。換句話說,相比基于一個判斷你的計算結(jié)果是否超過一定值的 While 循環(huán)(在某些情況下它可能永遠不會達到),引入一個非常基本的循環(huán)計數(shù)然后添加一個次要終止條件的方法是更可取的。如果循環(huán)次數(shù)超過某個極大的數(shù)值,循環(huán)必須結(jié)束,而如果在一切正常的情況下,這個條件應(yīng)該是永遠不可能達到的。
這會如何應(yīng)用到現(xiàn)實生活中呢?它恰恰說明,即使你認為已經(jīng)有了完美的計劃,事情仍然可能出錯。一個例子可能是,計劃了為期一周的在最美麗、放松的熱帶天堂的家庭度假,不料竟會因為下了一整周的雨而結(jié)束它。生活中“退路”的理念就是,要考慮到“最壞情況”,然后想出如果它真的發(fā)生了你要如何避免或者如何盡量去利用好它。
生活并不總是可以預(yù)測的,即使一些你認為根本不可能會出錯的最周密的計劃,也可以很容易地被破壞。為最糟的意外事件做好計劃,這將能確保當意想不到的事情發(fā)生時你不會以徹底失敗而告終。
完成任務(wù)時要釋放內(nèi)存
從編程中得出的最后一個生活經(jīng)驗是,及時清理自己。在一個程序中,你將需要開放一個流到一個輸出文件,創(chuàng)建一個充滿數(shù)據(jù)點的大數(shù)組,以及其他一些占用計算機內(nèi)存和資源的事情。一個干凈的程序,是能夠及時關(guān)閉輸出流并清空已經(jīng)用完的數(shù)組的程序。這里的理念是,要避免寫出一個帶有被稱為內(nèi)存泄漏的常見問題的應(yīng)用程序。
例如,在一個簡單的 VB 應(yīng)用程序中,你會這樣刪除一個數(shù)組:
Erase ArrayDin
或像下面這樣關(guān)閉一個輸出文件流:
FileClose (1)
這聽起來像是你在更年輕的時候可能聽到媽媽說過的一些事情,對嗎?打掃你的房間,把你的衣服收好,洗凈你的碗。然而,更進一步,收拾好你完成手頭任務(wù)所使用的工具,不僅會使你的家和工作區(qū)整潔,它還能夠留下足夠的空間讓你更快地完成下一個項目。把東西隨意亂放只會浪費空間,而且當你之后找不到所需要的東西時還會浪費你的時間。
底線
事實上,你能從編程藝術(shù)中學到的生活經(jīng)驗并不只有這六個,還有更多。當涉及到組織、規(guī)劃、制定策略和節(jié)約資源時,計算機程序員已經(jīng)理解了它。你能夠從花費時間學習一門編程語言的過程中學到很多東西,而不僅僅是編程本身。事實上,這就是為什么每個孩子在學校都至少應(yīng)該學會一種編程語言,因為一旦你抓住了它的訣竅,那么它很快會變得明顯,你可以在你生活的其他領(lǐng)域使用這些訣竅。
你從編程的世界中發(fā)現(xiàn)了哪些其他類似的生活經(jīng)驗?zāi)?#xff1f;
圖片來源:本文所有圖片均來源于 Shutterstock 圖片庫。
原文鏈接: Ryan Dube???翻譯: 伯樂在線 - yixingqingkong
譯文鏈接: http://blog.jobbole.com/60816/
總結(jié)
以上是生活随笔為你收集整理的英文原文:6 Life Habits That Programming Could Teach You Today的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SSM项目-我爱我家(二)
- 下一篇: python 计算箱线图、中位数、上下四