掌握代碼背後的這種語言,讓你一招通吃天下!

全文共 3471字,預計學習時長 7分鐘

圖片來源:pexels.com/@pixabay程序員

在撰寫本文時,搜索引擎中「應該學習哪一種編程語言」這一問題已有5.17億個搜索結果。每一網頁都會闡述某種語言相對於其餘語言的優點,其中90%的網頁最終會推薦Python或JavaScript。面試

但其實,最應該首先學習的編程語言是邏輯。算法

學會如何編寫代碼已再也不夠用了。如今處處都是從培訓班出來的畢業生,這一市場已經飽和,「初級軟件開發工程師」這一職位已不復存在。在今天,要想取得成功,不只要學會該如何編碼,還要有邏輯思惟的助力。編程

第一節計算機科學課設計模式

圖片來源:David Calavera / Unsplash微信

筆者第一次接觸計算機科學是在十年級的選修課上。第一天上課時,看到面前有各式各樣的冰淇淋和聖代配料,真的好開心。在你們坐好後,老師說:session

「今天要作聖代。但有一個條件:每一個人都要寫一個清單,詳細寫出準備聖代所需的指令,老師會按照這些指令來作聖代。」數據結構

「沒問題,簡直小事一樁。」我花了不到一分鐘就草草寫出了一套完美的聖代製做指令:app

Scoop three scoops of blackraspberry ice cream into a bowl框架

Pour two tablespoons of hot fudge into said bowl

Put whipped cream into the bowl

Place sprinkles and a cherry on top of the sundae

而後,這位幽默地把本身比做電腦的老師,精確地按照指令,開始用最匪夷所思的方式製做聖代。她狠狠地戳冰淇淋盒,但盒蓋無缺無損,沒法戳透堅硬的外盒。

「好了,先把蓋子打開呀。」我說,想要趕忙吃到冰激凌。

「你沒有寫出這些指令,因此,很惋惜,製做聖代失敗,下一個!」

快進到第二次嘗試

Open the black raspberry ice cream by removing the lid

Scoop three scoops of black raspberry ice cream into a bowl

Open the hot fudge and pour two tablespoons into the bowl

Open the whipped cream and add some to the bowl

Place sprinkles and a cherry on top of the sundae

這一次,確定會成功。在把這些指令添加到清單前,我甚至上前去確認每一個盒子都被打開了。

老師打開蓋子,舀了三湯勺冰激凌,把它放進碗裏。聖代終於開始成形了。而後她打開熱軟糖,放了兩把湯勺在碗裏。注意了,這可不是兩湯勺熱軟糖,而是兩把實實在在的湯勺,沒有寫上熱軟糖,我此次又沒寫清楚。按照指令完成製做後,我收到一碗冰淇淋,上面放着兩個金屬湯勺、滿滿一罐生奶油和大約300片糖屑。

這時,一切終於明白了:計算機是徹底遵循邏輯的東西。它不會聯繫上下文,也不會自行假設,只對一套很是具體的指令作出迴應,並嚴格按照這些指令行動。

終極版的聖代製做指令簡直是災難,囉裏囉嗦,但只能如此:

If they are not already, open each of the following: Black Raspberry Ice Cream, Hot Fudge, Sprinkles, and Whipped Cream

Aquire a bowl from the stack and place it in front of you

Grab 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 done

Aquire 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 done

Turn the whipped cream upside down, press your finger against the nozzle over the bowl for 3 seconds, and return the bottle to its resting position

Sprinkle approximately 40 sprinkles over the bowl and return the shaker to its upright position when done

Fetch a single cherry from the cherry jar and place it delicately on top of the sundae

Hand the sundae to the student along with a spoon

最後一步很是重要,由於若是不這樣寫,老師就開始吃個人聖代了。

這就是計算機編程的現實情況,須要提供不少套詳細的指令。本質上來講,把編程語言分解來看就是——許多條指令。

軟件開發的職業道路

如今,軟件開發已經不能做爲一個行業來討論了,太寬泛了,就像軟件開發工程師同樣,這個職稱涵蓋的範圍太廣。就算兩名軟件開發工程師的技能組合徹底不一樣,他們卻都一樣具備市場競爭力,這意味着對軟件開發領域的職業來講,須要的不只僅是編碼的能力。除了編程外,熟練的軟件開發工程師都有一個共通的特性——富有邏輯。

最好的軟件開發工程師都是批判性思惟方面的專家。這很重要,由於大部分的軟件項目都沒有文檔記錄,零零散散的一團糟。這就須要一個批判性的思考者整合碎片信息,並在須要的時候補齊信息。那些稍顯落後的軟件開發工程師正是沒法鏈接這些信息點的工程師。

全部這些均可以用另外一句冒昧的話來歸納:計算機科學的基本原理,不論是如今仍是未來,對編程能力而言都是很是重要的。

流行的編程語言乘勢而來,順勢而去。框架結構被棄用,而公司經過混合技術來 應對 瞬息萬變的需求。那什麼永遠不會變呢?基本原理——這就是計算機科學的定義自己!

如何提升邏輯思惟

圖片來源:Cristofer Jeschke / Unsplash

對於那些沒法深刻思考的人來講,能夠考慮使用如下工具來提升編程的批判性思惟:

瞭解時間複雜度

也稱爲Big-O,程序的時間複雜度能夠表示爲:爲解決一個規模爲 n 的問題所花費的時間(或者所需步驟的數目)。第一步是在程序運行時保持永久選項卡。

瞭解數據結構

數據結構是每一個複雜程序的核心。知道該在什麼場景中使用哪一種結構,這自己就是一門藝術。數據結構與時間複雜度直接相關,由於選錯告終構可使程序陷入停頓。陣列查找法是O(n),這意味着若是使用陣列查找法,隨着問題規模的擴大,須要花費更多時間來解決問題。散列查找法(哈希函數)是O(1),因此無論哈希函數中有多少個關鍵字,查找哈希關鍵字的時間是不變的。

我曾經面試過一些候選人,他們認爲陣列的查找時間比散列更快。我就不會錄用這樣的人,由於瞭解數據結構是很必要的。

讀/看/聽

像Udemy、Pluralsight和CodeAcademy這些網站,都是學習新編程語言的好資源。要了解基本原理,請參閱有關通常工程概念、最佳實踐和編碼風格的書籍。要強烈推薦給工程師們的書有《設計模式》、《重構》、《代碼整潔之道》和《程序員修煉之道》,這只是幾個例子。最後,每一個工程師都應該有一本《算法導論》放在書桌裏妥善保存。

練習!

沒有大量練習,是沒法成爲專家的。

像HackerRank、CodeWars、CoderByte、TopCoder和LeetCode這樣的網站裏面有成千上萬道挑戰題目,用來測試對數據結構和算法的瞭解程度。我發現使用這些網站的最佳方法是本身動手解決問題,將解決方案放在Github上,而後查看該問題的最佳解決方案,看看其餘人是如何解決的。這就引出了最後一點:

參考別人的代碼

在軟件開發過程當中,最大的錯誤就是單幹。軟件開發在很大程度上是一項衆包工做。咱們一塊兒創建標準,一塊兒犯錯,並隨着時間的推移(經過屢次失敗)學習到什麼纔是有效的。花時間看看資深軟件開發工程師的代碼會大有裨益。但要確保參閱的代碼是好的。

最好的建議就是要不恥下問。上文提到,軟件開發是個很是龐大的行業,語言數量衆多,內容密集。想要弄懂這些語言須要花費大量的時間和精力,想要精通則要耗費更多,若想成爲大師更得爲此付出千百倍的時間和精力。

留言 點贊 關注
咱們一塊兒分享AI學習與發展的乾貨
歡迎關注全平臺AI垂類自媒體 「讀芯術」

(添加小編微信:dxsxbb,加入圈子,一塊兒討論最新鮮的人工智能科技哦~)

相關文章
相關標籤/搜索