「飛哥你變了!」程序員
「沒想到你這個濃眉大眼的,也叛變了革命……」面試
這就是我在講《數據結構和算法》的時候,腦子裏浮現出來的臺詞。算法
熟悉個人同窗都知道,我是一個「實戰派」,數據庫
一直在強調學編程要儘快「上手」,作出東西來,看到效果,得到正反饋和自激勵……而《計算機組成和原理》《編譯原理》《數據結構和算法》之類的,是能排在多後面,就排在多後面的東西。編程
但爲何源棧一開課就講數據機構,次日就寫「二分查找」呢?(對了,附上當天羣聊天記錄若干……) 數據結構
這特麼的就是傳說中的「人工」智能啊! 框架
固然,以上爲搞笑版。 數據結構和算法
事實上同窗們最後都寫出來了。寫出來以後回頭看看,「其實也沒有那麼難嘛!」 函數
^_^,你肯定? 學習
其實,講《數據機構和算法》,最大最大的緣由,就是「面向就業」編程的須要。有很是大的機率,你面試的時候,面試官就讓你寫一個「冒泡排序法」,你一臉懵逼,寫個:
int[] numbers = new int[] { 3, 1, 8, 12, 7, 9, 10 }; var result = numbers.AsEnumerable().OrderBy(m => m); foreach (var item in result) { Console.WriteLine(item); }
那就比較尷尬了。
這不一看就是培訓班出來的嘛!
雖說飛哥對培訓班的同窗毫無偏見,但其餘人不這麼想啊,因此我也沒有辦法——至少目前是沒有辦法的。只能是但願經過咱們全部人鍥而不捨的不懈努力,逐漸的改變這種歧視和偏見。在此以前,你們仍是委曲求全,憋說是「源棧」培訓出來的,就是是本身「自學」的吧……
除此之外的理由,應該就是本身說服本身,硬找的了。按靠譜程度,依次排列:
教學須要。你說,剛學會變量賦值,if...else和for循環的孩子,你能給他佈置一個什麼做業呢?就只有這些排序啊查找啊需求簡單,不涉及任何類庫框架,剛恰好。其實這也是面試新人時愛用簡單算法的緣由。就面試那點時間,總不能講需求就講半個小時吧?!
向其中所凝聚的人類智慧致敬。這是真心的,反正我在準備軟考,博覽羣書的時候,是被震撼到了的。做爲一個文科生,我真心好奇這些人的腦子是怎麼構造的,能想出這麼多匪夷所思的辦法出來?其實有不少東西,不必定是要有用才須要學,那些美好瑰麗的東西,只是看一看,都是一種享受。
我說了爲何教,可能同窗們更關心的是怎麼學。
其實我一直反對的,是「數據結構和算法」至上論(一樣我反對的,還有「學歷」至上論),注意「至上」這兩個字。好比那種說法,「不學數據結構和算法,一生都是碼畜」,我就很是討厭。真的是很是討厭,哪怕我本身好歹學了點。知識,是沒有高低貴賤之分的。
總有些人,以爲有什麼缺了它就不行的「核心」技術——但我告訴你,作成一件事,其實缺了哪一門技術都不行。好比造汽車,你們都以爲發動機是核心是關鍵,但其實一款汽車在市場上賣得好賣得很差,難道就是由於她的發動機好或者很差?用大拇指想一想也知道是不可能的!可能一款車大賣,靠的就是最不核心最不核心的技術:好看。這個世界仍是看臉的,好比說飛哥,明明就能夠靠顏值……唉喲!哪裏來的臭雞蛋?唉喲,又是一個,嫉妒,赤果果的嫉妒啊!
好了好了,說正事,若是你由於衆多車型由於外觀熱賣,就說「外觀設計」就說汽車工業的核心,那就又犯了一樣的錯誤。難道發動機制動就不重要了麼?沒有發動機,跑都跑不起來,還賣個屁!
因此,其實不管是一件事,或者一我的的成功,都是綜合因素的結果。只是咱們看問題的時候,有意無心的,忽略了不少不少方面,按咱們的想象,把成功簡單的歸結於某一點。
好像又有一點跑題。長話短說,數據結構和算法,怎麼學,看你的興趣。實際上,學無止境,只要盡力了,能學到哪裏就到哪裏,沒有什麼問題。計算機發展到今天,其實已經大量封裝高度抽象啦,咱們作程序員,不必定個個都得造輪子。其實能把別人的輪子用好,能作一個所謂的好碼農,都已經很了不得了。定義稍稍嚴格一點,不少不少的程序猿,連「合格」都夠不上。
固然,你說,我對這玩意兒特別感興趣……那不要緊啊,盤他!是否是?可是呢,給個小建議,別盤出什麼優越感來了。不必,還拉仇恨值,關鍵的關鍵,這頗有可能讓你變得狹隘,侷限你的視野:除了數據結構和算法,本來還有不少不少頗有意思頗有挑戰性的東西。
最後的最後,給沒時間看我視頻的同窗簡單總結兩條:
不少教材,講數據結構就「鏈表」「二叉樹」的講數據結構,數據結構是什麼樣子的,怎麼插入怎麼刪除怎麼查找,什麼都講了,但爲何須要這樣的數據結構?不講!或者一筆帶過……這是很是很是不負責任的!飛哥那時候學數據結構,這一點是把我坑死了的。很後來很後來,也不知道是哪裏東看一句西撿一段,「哦,鏈表是爲了內存管理!」「棧,是方便函數調用」「二叉樹就是數據庫的索引」……這樣點點滴滴的才把這些東西串起來,數據結構的世界才豁然開朗。
學習,你必定要知道學習的目的,學習的意義,你才能更好的堅持下去。就像走路,蒙着你的眼睛,讓旁邊人告訴你「往前三步,左轉兩步,再右轉走十步」,你想一想,這種模式,有幾我的能撐到下去?還不如一開始就告訴他,「今天咱們去哪裏,跟着我走!」