掌握代碼背后的這種語言,讓你一招通吃天下!
時間:2023-07-03 08:33:02 | 來源:網(wǎng)站運營
時間:2023-07-03 08:33:02 來源:網(wǎng)站運營
掌握代碼背后的這種語言,讓你一招通吃天下?。?blockquote data-first-child data-pid="EjJTHtqm">全文共
3471字,預(yù)計學(xué)習(xí)時長
7分鐘
圖片來源:pexels.com/@pixabay在撰寫本文時,搜索引擎中“應(yīng)該學(xué)習(xí)哪種編程語言”這一問題已有5.17億個搜索結(jié)果。每一網(wǎng)頁都會闡述某種語言相對于其他語言的優(yōu)勢,其中90%的網(wǎng)頁最終會推薦Python或JavaScript。
但其實,最應(yīng)該首先學(xué)習(xí)的編程語言是邏輯。
學(xué)會如何編寫代碼已不再夠用了?,F(xiàn)在到處都是從培訓(xùn)班出來的畢業(yè)生,這一市場已經(jīng)飽和,“初級軟件開發(fā)工程師”這一職位已不復(fù)存在。在今天,要想取得成功,不僅要學(xué)會該如何編碼,還要有邏輯思維的助力。
第一節(jié)計算機科學(xué)課圖片來源:David Calavera / Unsplash筆者第一次接觸計算機科學(xué)是在十年級的選修課上。第一天上課時,看到面前有各式各樣的冰淇淋和圣代配料,真的好開心。在大家坐好后,老師說:
“今天要做圣代。但有一個條件:每個人都要寫一個清單,詳細寫出準(zhǔn)備圣代所需的指令,老師會按照這些指令來做圣代?!?br>
“沒問題,簡直小事一樁?!蔽一瞬坏揭环昼娋筒莶輰懗隽艘惶淄昝赖氖ゴ谱髦噶?
Scoop three scoops of blackraspberry ice cream into a bowlPour two tablespoons of hot fudge into said bowlPut whipped cream into the bowlPlace sprinkles and a cherry on top of the sundae然后,這位幽默地把自己比作電腦的老師,精確地按照指令,開始用最匪夷所思的方式制作圣代。她狠狠地戳冰淇淋盒,但盒蓋完好無損,無法戳透堅硬的外盒。
“好了,先把蓋子打開呀?!蔽艺f,想要趕緊吃到冰激凌。
“你沒有寫出這些指令,所以,很可惜,制作圣代失敗,下一個!”
快進到第二次嘗試
Open the black raspberry ice cream by removing the lidScoop three scoops of black raspberry ice cream into a bowlOpen the hot fudge and pour two tablespoons into the bowlOpen the whipped cream and add some to the bowlPlace sprinkles and a cherry on top of the sundae這一次,肯定會成功。在把這些指令添加到清單前,我甚至上前去確認每個盒子都被打開了。
老師打開蓋子,舀了三湯匙冰激凌,把它放進碗里。圣代終于開始成形了。然后她打開熱軟糖,放了兩把湯匙在碗里。注意了,這可不是兩湯匙熱軟糖,而是兩把實實在在的湯匙,沒有寫上熱軟糖,我這次又沒寫清楚。按照指令完成制作后,我收到一碗冰淇淋,上面放著兩個金屬湯匙、滿滿一罐生奶油和大約300片糖屑。
這時,一切終于明白了:計算機是完全遵循邏輯的東西。它不會聯(lián)系上下文,也不會自行假設(shè),只對一套非常具體的指令做出回應(yīng),并嚴(yán)格按照這些指令行動。
終極版的圣代制作指令簡直是災(zāi)難,啰里啰嗦,但只能如此:
If they are not already, open each of the following: Black Raspberry Ice Cream, Hot Fudge, Sprinkles, and Whipped CreamAquire a bowl from the stack and place it in front of youGrab the ice cream scoop and, one at a time, scoop three scoops of black raspberry ice cream into the bowl. Place the scoop down when doneAquire the hot fudge spoon if not already in your possession, then fetch two tablespoons of hot fudge and place them into the bowl, one at a time, and put down the hot fudge when doneTurn the whipped cream upside down, press your finger against the nozzle over the bowl for 3 seconds, and return the bottle to its resting positionSprinkle approximately 40 sprinkles over the bowl and return the shaker to its upright position when doneFetch a single cherry from the cherry jar and place it delicately on top of the sundaeHand the sundae to the student along with a spoon最后一步非常重要,因為如果不這樣寫,老師就開始吃我的圣代了。
這就是計算機編程的現(xiàn)實狀況,需要提供很多套詳細的指令。本質(zhì)上來說,把編程語言分解來看就是——許多條指令。
軟件開發(fā)的職業(yè)道路現(xiàn)在,軟件開發(fā)已經(jīng)不能作為一個行業(yè)來討論了,太寬泛了,就像軟件開發(fā)工程師一樣,這個職稱涵蓋的范圍太廣。就算兩名軟件開發(fā)工程師的技能組合完全不同,他們卻都同樣具有市場競爭力,這意味著對軟件開發(fā)領(lǐng)域的職業(yè)來說,需要的不僅僅是編碼的能力。除了編程外,熟練的軟件開發(fā)工程師都有一個共通的特性——富有邏輯。
最好的軟件開發(fā)工程師都是批判性思維方面的專家。這很重要,因為大部分的軟件項目都沒有文檔記錄,零零散散的一團糟。這就需要一個批判性的思考者整合碎片信息,并在需要的時候補齊信息。那些稍顯落后的軟件開發(fā)工程師正是無法連接這些信息點的工程師。
所有這些都可以用另一句冒昧的話來概括:計算機科學(xué)的基本原理,不管是現(xiàn)在還是將來,對編程能力而言都是非常重要的。
流行的編程語言乘勢而來,順勢而去??蚣芙Y(jié)構(gòu)被棄用,而公司通過混合技術(shù)來 應(yīng)對 瞬息萬變的需求。那什么永遠不會變呢?基本原理——這就是計算機科學(xué)的定義本身!
如何提高邏輯思維圖片來源:Cristofer Jeschke / Unsplash對于那些無法深入思考的人來說,可以考慮使用以下工具來提高編程的批判性思維:
了解時間復(fù)雜度
也稱為Big-O,程序的時間復(fù)雜度可以表示為:為解決一個規(guī)模為 n 的問題所花費的時間(或者所需步驟的數(shù)目)。第一步是在程序運行時保持永久選項卡。
了解數(shù)據(jù)結(jié)構(gòu)
數(shù)據(jù)結(jié)構(gòu)是每個復(fù)雜程序的核心。知道該在什么場景中使用哪種結(jié)構(gòu),這本身就是一門藝術(shù)。數(shù)據(jù)結(jié)構(gòu)與時間復(fù)雜度直接相關(guān),因為選錯了結(jié)構(gòu)可以使程序陷入停頓。陣列查找法是O(n),這意味著如果使用陣列查找法,隨著問題規(guī)模的擴大,需要花費更多時間來解決問題。散列查找法(哈希函數(shù))是O(1),所以不管哈希函數(shù)中有多少個關(guān)鍵字,查找哈希關(guān)鍵字的時間是不變的。
我曾經(jīng)面試過一些候選人,他們認為陣列的查找時間比散列更快。我就不會錄用這樣的人,因為了解數(shù)據(jù)結(jié)構(gòu)是很必要的。
讀/看/聽
像Udemy、Pluralsight和CodeAcademy這些網(wǎng)站,都是學(xué)習(xí)新編程語言的好資源。要了解基本原理,請參閱有關(guān)一般工程概念、最佳實踐和編碼風(fēng)格的書籍。要強烈推薦給工程師們的書有《設(shè)計模式》、《重構(gòu)》、《代碼整潔之道》和《程序員修煉之道》,這只是幾個例子。最后,每個工程師都應(yīng)該有一本《算法導(dǎo)論》放在書桌里妥善保存。
練習(xí)!
沒有大量練習(xí),是無法成為專家的。
像HackerRank、CodeWars、CoderByte、TopCoder和LeetCode這樣的網(wǎng)站里面有成千上萬道挑戰(zhàn)題目,用來測試對數(shù)據(jù)結(jié)構(gòu)和算法的了解程度。我發(fā)現(xiàn)使用這些網(wǎng)站的最佳方法是自己動手解決問題,將解決方案放在Github上,然后查看該問題的最佳解決方案,看看其他人是如何解決的。這就引出了最后一點:
參考別人的代碼
在軟件開發(fā)過程中,最大的錯誤就是單干。軟件開發(fā)在很大程度上是一項眾包工作。我們一起建立標(biāo)準(zhǔn),一起犯錯,并隨著時間的推移(通過多次失敗)學(xué)習(xí)到什么才是有效的?;〞r間看看資深軟件開發(fā)工程師的代碼會大有裨益。但要確保參閱的代碼是好的。
最好的建議就是要不恥下問。上文提到,軟件開發(fā)是個非常龐大的行業(yè),語言數(shù)量眾多,內(nèi)容密集。想要弄懂這些語言需要花費大量的時間和精力,想要精通則要耗費更多,若想成為大師更得為此付出千百倍的時間和精力。
留言 點贊 關(guān)注我們一起分享AI學(xué)習(xí)與發(fā)展的干貨歡迎關(guān)注全平臺AI垂類自媒體 “讀芯術(shù)”