如何提高將任務(wù)/問題轉(zhuǎn)換為程序的技能(算法思維)?
這是最常見的問題之一。
一般的答案是:通過編寫大量程序。
但是,有一個簡單的練習(xí)可以幫助您建立該技能:
● 「選擇你每天都做的活動」 ,比如做早餐或類似的事情。這應(yīng)該不會太容易,但也不會太難。
● 「寫下您應(yīng)該為活動執(zhí)行的步驟」 ,但在與實(shí)際執(zhí)行活動不同的時間執(zhí)行。(寫下下午做早餐的步驟。)
● 下次您執(zhí)行該活動時, 「記下您的筆記并嘗試虔誠地遵循這些步驟」 。盡量不要偏離您寫下的步驟,如果必須,請記下差異。
● 「改進(jìn)你的算法,直到你滿意為止」 。
● 「嘗試不同的活動(算法)」 。任務(wù)變得越來越容易。
盡管聽起來很愚蠢,但它確實(shí)有效。以上方法已經(jīng)在許多學(xué)生身上進(jìn)行了嘗試,并證明可以產(chǎn)生顯著的進(jìn)步。
我無法為一個項(xiàng)目想出任何很酷的新想法。我只是缺乏創(chuàng)造力嗎?其他程序員是如何受到啟發(fā)的?
對于初學(xué)者來說,這是Chuck Close關(guān)于(不是)等待靈感的一句好話:
我喜歡給年輕藝術(shù)家或任何愿意聽我的人的建議是不要等待靈感。靈感是給業(yè)余愛好者的,我們其他人只是出現(xiàn)并開始工作。
如果你等著烏云散開,一道閃電擊中你的大腦,你就不會做很多工作。
「所有最好的想法都來自這個過程:他們來自工作本身」 。事情發(fā)生在你身上。如果你正坐在那里想出一個偉大的藝術(shù)創(chuàng)意,你可以坐在那里很長一段時間,然后才會發(fā)生任何事情。但是,如果你剛開始工作,你會想到一些事情,你會想到其他事情,而你拒絕的其他事情會將你推向另一個方向。
「靈感是絕對不必要的,而且在某種程度上具有欺騙性:你覺得你需要這個好主意才能開始工作?!?/strong>
只是坐在那里等待靈感的火花,你很少會得到想法。如果你繼續(xù)嘗試構(gòu)建一些東西(任何東西!),你的時間會花得更多,即使這個想法看起來有些愚蠢或已經(jīng)完成。
畢竟,這就是藝術(shù)家和音樂家所做的——他們不一定會從嘗試創(chuàng)作極具創(chuàng)意的繪畫或創(chuàng)作自己的音樂開始。相反,他們畫風(fēng)景或花瓶,或翻唱現(xiàn)有的歌曲。同樣,在提出項(xiàng)目創(chuàng)意時不要感到有義務(wù)。「重新實(shí)施現(xiàn)有程序是一項(xiàng)歷史悠久的傳統(tǒng)——看看你能走多遠(yuǎn)!」
但無論如何,這里有 「一些其他想法和技巧可以幫助您提出自己的靈感項(xiàng)目」 :
- 「嘗試重新實(shí)現(xiàn)現(xiàn)有項(xiàng)目」 。就像初學(xué)音樂家從翻唱其他人寫的歌曲開始一樣,從重新實(shí)現(xiàn)其他人制作的程序開始可能會很好。例如,2D 街機(jī)游戲是一種流行的選擇——像“Pong”或“Space Invaders”這樣的游戲?qū)Τ鯇W(xué)者來說非??尚?,并且仍然會教給你很多東西。常見問題解答包含指向更多項(xiàng)目想法的鏈接。
- 「嘗試將編程與另一個愛好聯(lián)系起來」 。編程是一項(xiàng)非常有用的技能,您可以將其應(yīng)用到各種領(lǐng)域,甚至是與計(jì)算機(jī)科學(xué)完全無關(guān)的領(lǐng)域。
例如,如果您對政治感興趣,您可以嘗試分析投票池和趨勢;如果您對音樂感興趣,您可以嘗試編寫數(shù)字音板;如果您對體育感興趣,您可以嘗試編寫夢幻足球追蹤器或預(yù)測器,如果你擁有一家企業(yè),你可以寫一些東西來幫助你跟蹤庫存...... 「在這里,對計(jì)算機(jī)科學(xué)以外的興趣很有用」 。
- 「試著記錄讓你惱火的事情」 。如果你在生活中發(fā)現(xiàn)任何你不喜歡做的事情或發(fā)現(xiàn)重復(fù)的事情,問問自己這是否是你可以自動化的事情。要了解計(jì)算機(jī)可以自動化哪些類型的事情,請參閱自動化無聊的東西。
本指南使用 Python,但您可以使用任何編程語言完成它提到的所有事情?;蛘撸苍S可以嘗試使用谷歌搜索“家庭自動化教程”以獲得更多物理解決方案。
我如何學(xué)習(xí)典型計(jì)算機(jī)科學(xué)學(xué)位所涵蓋的主題?
如果您對大學(xué)或?qū)W院級別的大多數(shù)標(biāo)準(zhǔn)計(jì)算機(jī)科學(xué)課程所涵蓋的自學(xué)材料感興趣,以下鏈接提供了一個很好的概述,以及指向其他學(xué)習(xí)資源的鏈接:
● 每個計(jì)算機(jī)科學(xué)專業(yè)的學(xué)生都應(yīng)該知道的事——馬特·梅特專注于提供不同領(lǐng)域的高級概述,更重要的是,它們?yōu)楹斡袃r值。還包含一些閱讀建議。
● 開源計(jì)算機(jī)科學(xué)學(xué)位 - 開源社會提供更多具體的路線圖,每個主題都包含大部分 Coursera 課程的鏈接。● 自學(xué) CS與之前的資源類似,除了它混合了對書籍和視頻講座的推薦。上層建議主要關(guān)注系統(tǒng)(例如操作系統(tǒng)、數(shù)據(jù)庫……)。
● 自學(xué)的現(xiàn)代計(jì)算機(jī)科學(xué)課程這個資源有點(diǎn)不合常規(guī),它推薦了一種更加數(shù)學(xué)的方法來學(xué)習(xí)計(jì)算機(jī)科學(xué),重點(diǎn)關(guān)注離散數(shù)學(xué)、函數(shù)式編程、軟件驗(yàn)證、證明、類型論和復(fù)雜性理論等主題。
請記住,高質(zhì)量的計(jì)算機(jī)科學(xué)學(xué)位往往非常嚴(yán)謹(jǐn)和苛刻。如果您有興趣走這條路,您可能需要幾年時間和大量的努力才能通過自學(xué)獲得類似水平的教育。
-
編程
+關(guān)注
關(guān)注
88文章
3689瀏覽量
95259 -
程序
+關(guān)注
關(guān)注
117文章
3826瀏覽量
82996
發(fā)布評論請先 登錄
評論