數據結構這門課沒掌握是不是不配進入IT行業?
本人專業信息與計算科學,大一隻學過C語言,過今年大三開始學習數據結構,剛開始幾天還好,作業能寫幾道。越到後面越感覺是天書啊,每天課後作業只能完成一道或者說最多能完成一道,什麼二叉樹,什麼圖的遍歷,什麼排序,查找,只會手算,代碼答案真心看不懂,這學期馬上要結束了,數據結構里的代碼掌握了2成,演算法掌握了9成有一段時間我想我是不是該告別未來程序員的我了了?
但是我的自尊心不容我放棄。同班同學為啥會編的那麼多,我感覺我最笨,麻蛋,我還有救嗎?
IT和其它專業圈子一樣,是有一定門檻的。IT工程師交流的時候,默認你知道甚至熟悉某些專業名詞。不學數據結構,有些專業對話直接傻掉,即使別人不嘲笑,你自己也會不好意思,更何況別人以為你會的,其實你不會。。。。
經理:小趙啊!那個優化程序里有個演算法是戴克斯特拉的改良版 ,現在有XXXX要求,你去改一下吧!
小趙:)*(#%…………%#……(#經理:小趙哪!我司那個用哈希表的程序效率不好,你看看裝載因子是不是不對勁,不行調整一下。
小趙:)*(#%…………%#……(#經理:小趙呢?
小趙:來了(怎麼又找我)經理:軟體基礎設施里的B+樹索引跑得有點慢,反正代碼都有,你去優化一下性能吧!小趙:)*(#%…………%#……(#經理:小趙呢?小王:小趙辭職了。。。數據結構里的代碼掌握了2成,演算法掌握了9成。
演算法跟代碼實現有時候是兩回事,你懂演算法了,卻未必知道怎麼實現,而且你實現演算法更取決於你對實現演算法的語言的熟悉。打個比方,你懂演算法,就好像你看得懂偽代碼,但你未必能通過照抄偽代碼來實現c語言程序,總會有一些偽代碼很容易說清楚c語言卻很難實現的地方。
如果題主希望認真學習演算法,我建議題主入手一本數據結構與演算法分析---c語言描述,這一本不僅給出了偽代碼思想,他還給出了真正的c語言代碼,比如其中的堆的c代碼,寫得非常好,當然看過之後不能僅僅是看過就完事,你可以通過做老師的作業,刷oj(POJ,codevs都行),來檢驗自己對演算法的理解。在看完這本書之後,如果你想進一步了解演算法,可以開始看演算法導論。最後,我希望題目如果知道自己已經懂得演算法,卻又不知道怎麼實現,就去網上看看別人寫的代碼,不要抱著一定要我自己親手實現這樣的無謂的自尊心浪費時間(當然能自己實現更好)。
看別人的代碼,反覆思考,再親手自己寫一遍,調試bug,記下自己出錯的地方,我覺得這樣子做就已經很好了。我覺得這是語言關沒過,你在練習的時候遇到問題大多數是語言的問題,要知道數據結構和演算法重要的是思想,所以可以換一門好上手的語言,比如python,或者lisp
不會影響你入行,但會影響技術深度。
最好學好數據結構和演算法,找工作有優勢,面試時,考啥,考項目經驗,剛畢業,沒有。當然考演算法啊!加油!
先匿名,怕被噴。
我是來回答問題的,沒有掌握也可以進入IT行業,哪怕你僅僅知道一個冒泡排序也沒問題。
客觀上來說,中小型非技術型公司,你基本接觸不到演算法。往往這類公司在互聯網行業佔比是最大的,因為技術不能賺錢,業務才能賺錢。小型技術型公司,也不會讓你接觸多少演算法。偏大型的有核心技術的公司,沒有演算法門都進不去(對於經驗多的老司機,演算法要求沒有那麼高)。全國計算機培訓機構每年向市場"產出"好多萬(我不知道數字)程序員(也可以叫碼農),這裡邊有相當大一部分不是科班的,根本就沒怎麼了解過數據結構,他們也照樣在這行業活的好好的,活的比熟悉基本演算法的人還要好很多。無意中黑了一下培訓機構。
說這些,只是要論證上述觀點。數據結構學得好,不一定能很掙錢,但是對你的發展肯定會很有好處,這應該是共識吧。
-------------一個acm出身的小公司實習生的一席之談o(︶︿︶)o代碼量應該和數據結構的學習深度成比例。代碼量少,敲個鏈表,寫個簡單隊列,了解還有樹和圖就夠了。代碼量上去了,敲過七八萬行後,再去回爐一下數據結構,可能就有感覺了,理解起來會流暢許多。等你又敲了幾年代碼,再回頭琢磨數據結構,看看知乎上整天數據結構數據結構,動不動就要讓人優雅地看完演算法導論的,你會疑惑,他們敲過幾行代碼,寫過幾個框架,真的懂數據結構么?
寫個程序就不能踏踏實實的敲么,沒有代碼量,沒有長時間的思維鍛煉,沒有在大項目中把思想運用起來,你把數據結構所有實現的demo倒背如流就是個好程序員?就能成為大牛,贏取白富美,走向人生巔峰?講真,不配
但是很多不配進入程序員行業的人進入了這個行業,拉低了整條街的智商不配和不能是兩個概念
學好了這本書收益終生,如果你想從事軟體方面的工作的話。作為一個從業10年的軟體程序員,唯一的遺憾就是大學的時候專業課沒仔細學,因為當時太心急,總想著直接學java然後做出什麼大項目之類,結果捨本逐末,倒行逆施。
學了最好,沒學的等你學好,黃花菜都涼了。
計算機專業三大基礎課,操作系統,數據結構,編程語言。
數據結構還是好好學吧,不說全部親自實現一遍,關鍵你得了解這個數據結構能夠對你的程序帶來多大的優化。比如一個經常進行UNION、INSERT操作的結構,最大堆實現比數組實現要好,斐波那契堆平均更快;在REDIS資料庫中,SORTED-SET就是用的是skiplist這個數據結構,來提高查找效率。一般程序員並不需要手擼各種數據結構,知道什麼場景下用什麼合適的數據結構就好,畢竟很多語言也對此有支持。 作為一門課程,數據結構還是有認真學的必要,但過多陷入細節中去讓自己迷失,建議每接觸一個數據結構,不要急於搞清楚背後原理,首先要知道這個結構有什麼作用,人們為什麼要設計它,如果是我我會怎麼實現它,然後你再去看原理就會好一點。一些簡單地數據結構,比如棧和樹,可以嘗試自己編程實現。
說明你需要多練,光做課後作業是不夠的。。。
數據結構很重要是很重要,不過沒有它也照樣可以做程序員,比如說幾乎所有的業務邏輯就不需要這些複雜的演算法。
數理邏輯有用嗎?
樓主還是別自暴自棄啦~說句實話,我剛入門數據結構也是那樣,可是等你慢慢去用起來,慢慢就領悟其中的奧秘啦~我經常跟直系學弟學妹說,數據結構剛開始學的時候肯定會很吃力,很暈乎,不過以後編程神馬的,到處都會看到數據結構的影子,見多啦,慢慢就有自己的理解啦~什麼東西,自己能理解啦,不也就學會啦
不會抓老鼠的貓是不是好貓?
話說web前端在數據結構上要求比較低,但必須得懂點。
也是這學期剛學完數據結構。估計咱們用的書也都是嚴蔚敏寫的那本,反正我們是。一開始這門課我是準備放棄的。老師講完前兩章還跟聽天書一樣,其實就沒聽。。。然後我就直接去寫程序了,然後越寫越興奮,越寫越想寫。所以不用怕,就算你不是太理解,寫出來一步步調試,一步步運行就知道數據結構是怎麼一回事了。
似乎覺得題主想偷懶,多了解數據結構和演算法的應用場合,就覺得好玩了。
從現實來看,大概不是。但是你會手算而不是完全不懂,那可能就比較危險了。
推薦閱讀: