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