学不会编程?试试我的方法
試考慮下面這些場景:
一門計算機(jī)編程的課程結(jié)課了,考試也通過了。一段時間以后,回想這門課程所學(xué)的內(nèi)容,可大腦一片空白,學(xué)的知識好像又還給老師了;
下了很大的決心要把一本計算機(jī)編程的書籍看完,可是看到后面,前面的基本忘光了,感覺自己還沒有入門就要放棄;
想一想,我們在學(xué)習(xí)計算機(jī)編程的道路上,是不是也遇到過這種情況。會不由自主的抱怨寫代碼真不是人干的,對編程產(chǎn)生抵觸心里,更有甚者用“反正以后,我也不用編程”來安慰自己。
坦白的說,學(xué)習(xí)哪門技術(shù)不難呢?不都得通過刻意練習(xí)才能掌握么。只不過有些人方法得當(dāng),學(xué)的快些,有些人方法不當(dāng),學(xué)的慢些,最后放棄罷了。那么,學(xué)習(xí)編程正確的姿勢,是怎樣的呢?這其實(shí),就需要我們想清楚學(xué)習(xí)編程的第一性原理是什么?
在往下寫之前,先跟大家說說經(jīng)常被埃隆·馬斯克(Elon Musk)提及的 第一性原理,這個原理也常被 李善友 和 羅振宇 提及。
什么是第一性原理呢?
這個原理出自古希臘哲學(xué)家 亞里士多德 ,維基百科對第一性原理的描述為:
A first principle is a basic, foundational, self-evident proposition or assumption that cannot be deduced from any other proposition or assumption.
這句話翻譯成中文就是:第一性原理是基本的、根本的、不言而喻的命題或假設(shè),不能由其它的命題或假設(shè)推導(dǎo)出來。
說的是什么鬼?咱們不用糾結(jié)這個概念的意思。咱們先想想,為什么要提出這個原理就夠了。那就是為了解釋我們生活中所看到的各種現(xiàn)象。他認(rèn)為任何現(xiàn)象的發(fā)生,都不是無緣無故的,其背后一定存在一個本質(zhì)原因。
亞里士多德的這個想法深深影響了Elon Musk 。他把第一性原理作為創(chuàng)業(yè)的指導(dǎo)法則,連續(xù)打造了最炫的電動汽車Tesla,最酷的私人火箭 SpaceX,以及最具未來感的中短途交通工具 Hyperloop,取代飛機(jī)和高速鐵路,被譽(yù)為硅谷的“鋼鐵俠”。
Elon Musk 在做電動車 Tesla時,很多人覺得不可能做成,因?yàn)殡姵爻杀窘挡幌聛怼.?dāng)時大概是 600 美元/千瓦時。但 Elon Musk 說:“我不管現(xiàn)在的電池有多貴,我就回到本質(zhì)問一個問題,電池的硬成本是什么構(gòu)成的?無論如何也減不下去的成本是什么?”無非就是鐵、鎳、鋁這些金屬,除了買這些金屬的成本是絕對降不下去的,剩下來的成本都是人類協(xié)作過程中產(chǎn)生的,那就有優(yōu)化的空間。
比如:
- 在美國生產(chǎn)可能稅費(fèi)比較高,那就不要在美國生產(chǎn)了;
- 可能是某個技術(shù)路線它比較昂貴,那隨著它的大規(guī)模普及應(yīng)用,這個價格就能降下來;
- 可能是某種模塊設(shè)計上本身出了問題,那就改變設(shè)計。
最后 Elon Musk 做出來的電池比松下的電池價格便宜了20%多。
同樣的思路,Elon Musk 也用在了制造火箭的項(xiàng)目上。這事本來只有國家才有財力干,但是 Elon Musk 說不對,我算了一筆賬:一架火箭,它的原料成本只占火箭的總成本的2%,就算還有其他成本,那都可以優(yōu)化。所以,他放話說,可以把現(xiàn)在火箭的制造成本,降低到只有現(xiàn)在的10%。
以上兩個例子均來源于《硅谷鋼鐵俠》這本書,同樣第一性原理也運(yùn)用在 Elon Musk 的 Hyperloop(真空膠囊高鐵)項(xiàng)目中。Elon Musk 首先回溯人類制造火車的本質(zhì)目的 – 將較多的人或貨物從指定點(diǎn)A運(yùn)送到指定點(diǎn)B。所以他放棄了人們習(xí)慣中的動力牽引技術(shù),改用膠囊列車在管道中通過壓縮空氣作為運(yùn)行的動力和升力,使得這種列車最高時速達(dá)到1300公里,比飛機(jī)和高鐵更安全。
總結(jié)一下,Elon Musk 利用第一性原理,以及批判性思維和懷疑精神拷問人們固化的認(rèn)知,回溯事物背后的第一性原理,即事物的本質(zhì),圍繞著這個本質(zhì),重新思考怎么做。正是在第一性原理的指導(dǎo)下,Elon Musk 創(chuàng)建了一家又一家享譽(yù)全球的科技公司。
回到我們剛才的問題 – 學(xué)習(xí)編程的第一性原理是什么呢?
很簡單:通過編程來解決實(shí)際問題。
僅僅是上課、看書、聽課、考試而不去解決問題,知識沒有內(nèi)化,淡忘就是自然而然的事情了。所以,我們在學(xué)習(xí)編程時,一定要先找到和列出需要解決的問題。以解決該問題為目的來學(xué)習(xí)編程,這樣才能更快的掌握這門技術(shù)。比如,賺錢是所有人的剛需。我們都想通過數(shù)據(jù)分析來驗(yàn)證自己的交易策略是否可行,這個問題就可以通過編程來解決。
首先,掌握編程的最少必要知識。
無外乎就是以下這些:
- 程序的入口在哪里?
- 程序的輸入怎樣提供,程序的結(jié)果怎樣輸出?
- 程序接收的數(shù)據(jù)都有哪些常用類型?
- 怎樣定義變量,怎樣定義常量?
- 怎樣定義一個函數(shù)?
- 怎樣控制程序的流向,順序流向是怎樣的,判斷流向是怎樣的,分支流向是怎樣的,循環(huán)流向是怎樣的?
- 怎樣定義一個命名空間,怎樣寫一個類,也就是所謂的封裝。
- 怎樣引入一個命名空間,有的語言叫做package。
- 怎樣寫類之間的繼承,以及編譯和運(yùn)行時的多態(tài)?
其次,根據(jù)問題找對應(yīng)的知識點(diǎn)來學(xué),比如怎樣分析這個URL:
http://vip.stock.finance.sina.com.cn/corp/go.php/vMS_MarketHistory/stockid/000300/type/S.phtml?year=2018&jidu=1怎樣進(jìn)行網(wǎng)絡(luò)請求;怎樣利用正則表達(dá)式把數(shù)據(jù)從HTML文檔中提取出來;怎樣利用GDI+可視化數(shù)據(jù);如果需要持久化,就學(xué)學(xué)SQL語句把這些數(shù)據(jù)存入數(shù)據(jù)庫為自己的下一步分析做準(zhǔn)備,等等。
最后,在 GitHub 或 Stack Overflow 上把自己學(xué)習(xí)的知識點(diǎn),遇到的坑以及解決方案分享出來。經(jīng)過這般折騰,既滿足了自己驗(yàn)證交易策略的需求,又把編程的知識應(yīng)用于實(shí)際,沒準(zhǔn)還收獲了友誼和一眾技術(shù)粉。
總的來說,經(jīng)過兩三次這樣的折騰,編程的技能就搞定了,也為自己多了一個競爭的維度。這就是 第一性原理 指導(dǎo)我學(xué)習(xí)編程的全過程,不盲目地追求跟別人一樣,回溯學(xué)習(xí)編程的本質(zhì),然后重新思考怎么做。
總結(jié)
以上是生活随笔為你收集整理的学不会编程?试试我的方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 鱼的记忆[较为重要的知识点/技巧]
- 下一篇: VS2022安装.Net Framewo