準大二生的暑期自學安排

【來信】
  我是一名準大二生,信息安全(網絡安全)專業。想利用暑假時間學一些知識,但是不知道該學些什麼,該怎麼學。我大一學了c語言和c++,上大學之前沒有接觸過編程,也不瞭解計算機專業。經過一年時間的學習,我發現僅僅靠學校教的課來學習是遠遠不夠的,我發現身邊有很多同學初中就開始接觸編程,現在已經會幾種語言並且會做一些項目,我感覺到差距很大,所以我想利用暑假好好提升自己的編程實踐能力。但是在我大一學習過程中,我感覺到編程很難,要記很多語法和規則,常常忘記,興趣也不大,可能因爲受挫的原因或者沒有領會到計算機專業的精髓。所以想向老師請教幾個問題:
  1.大學應該如何利用課餘時間提高自身編程算法能力和動手實踐能力;
  2.應該從哪學起,比如Java和python,應該先學哪個?通過什麼途徑或者有效方法去學習;
  3.應該用什麼編譯器去編程,或者說是根據編程語言不同而不同;(因爲我一直都是用dev-C++)
  4.大學課程中那些課比較重要,比如計算機組成系統、原理、數據結構、彙編語言、Linux系統等,我是不是應該先了解計算機再學習效果會更好;
  在CSDN社區上看到老師經常爲同學解惑,於是想諮詢您一些困惑,如果老師能在百忙之中抽出一點時間爲我解惑,將不勝感激,謝謝老師!

【回覆】
  針對你所談的,我說說我的看法。
  “僅僅靠學校教的課來學習是遠遠不夠的”,我想更正一下是,學這些課還是差不多夠的,但學到期末考試要求的那個程度,是不夠。箇中原因不多說,需要能醒悟的學生做的是,每門課要自己加實踐,學到能實踐的程度。你想把暑假充分利用好,就是一個好想法。至於其他同學大學前有基礎,於你而言不必驚慌,你把學法調對了,很快能趕上,這是一個馬拉松項目,一步不停,但也不用着急。
  你感覺編程難,還常忘記,我大概猜着你的問題,就是實踐不夠。實踐夠的話,這些東西無須記,自然就記住了。當你能不斷地通過實踐,運行出程序來,興趣也自然會來。興趣需要通過投入去培養。
  綜合你提供的信息和提出的問題,給你下面的建議:
  1. 暑假優先用學過的C和C++做實踐。你跟着老師上課時實踐量不夠,假期補上。題目來源可以自己找習題集,也可以用我前幾年給我的學生用過的方案,見https://blog.csdn.net/sxhelijian/article/details/8001601
  2. 計算機組成系統、數據結構、彙編語言、Linux系統等課程以後會開課的,到時候自己隨老師教的進度學,同步自主學習,學更深些,真正理解原理,再保證老老實實多做實踐,會有收穫。反而是,當下不把編簡單程序的問題解決好,將來學這些課會很難受。
  3. 如果有精力,實在想再學點什麼,Java、python、數據結構三者均可,不必追求出手就學好,淺嘗亦可,作爲高年級正式學習之前的體驗。可以利用各種站點中的視頻資源、MOOC學,但一定要同步地配上自己的實踐。
  4. 不必糾結開發環境,用多了這些不是大問題。帶着玩的心態,可以體會各種環境,但狀態好時,以能多做些編程題爲首要保證的事。
  欣賞你能有假期自主學習的意識,也祝你學習順利!

【再來信】
  真的非常感謝您的回信,讓我在迷茫中抓住了方向,倍受感動。我其實來自天津理工大學19級計算機科學與工程學院信息安全專業。
  我昨晚上查了一些資料,發現對於Java和python來說,我會選擇學習Java,因爲它和C++一樣都是面向對象編程,可能在我學習Java的過程中也能對C++加深理解和應用,同時Java的應用非常廣,也相當重要。然後我本來就打算暑假跟着B站的Java視頻學習,而不打算再深入學習C++了,因爲我聽說C和C++一般應用在後端,且因爲其代碼繁瑣,所以應用不廣。
  但是我是現在纔看到您的回信,真的非常抱歉這麼晚回覆您。看了您的建議之後,真的非常非常感謝老師,於我而言是非常難得的,因爲我現在還是挺不知所措的,不知道應該去學什麼,如何學得有用。所以我現在陷於到底繼續學習c++還是開始學習Java,希望老師您能答覆我一下。
  然後關於實踐,感謝老師給的建議。我反思了一下自己,也許真的缺乏耐心,同時實踐也不多,平時一般只有通過上機課做實驗和老師佈置的課後習題來鞏固知識。我本來是想加入老師團隊一起去做項目的,結果落選了。所以目前我覺得還是得先把自己所學的知識運用起來;
  關於數據結構這些課,我會按照老師的建議來,真的非常感謝您!
  祝您生活愉快,工作順利!

【再回復】
  在你的選擇“障礙”中,主要的標準是“有用”。成年人,包括你當前在法律意義上已經是成年人,而認知也接近成年的階段而言,學習一定是要滿足當下“用”的需求,這是一個正常且值得堅持的原則。
  我提一個問題:在若干年後,C++和Java都可能退出歷史舞臺,前端、後端這樣的體系都可能會發生變化。到那個時候,你再回頭時,如何評價當下在C++和Java方面的糾結?到那個時候,你會隨着技術變化學習到新的技術,甚至你就是新技術的創造者,你如何評價現在要費時耗神學習的C++和Java?
  就從知識外在形態看,現在所學的一切,都會過時,都會沒用的。學了能用多長時間?現在已經不只是IT圈變化這麼快了,幾乎所有專業所學,不足以支持學習者度過職業生涯。
  在大學這個階段,任何一門課的學習,在現時的“實用”成份,但其“基礎”成份更有意義。越是基礎的,如數學、物理、算法,越覺得無從把握,越覺得用不上,其“用”的週期會越長,效力也會越大,日後你會知道,而語言、具體的技術,現在就能看清其實用的,則是在技術進步中快速更新。
  那當下學習的意義何在?C++也好,Java也好,都是學得專業的思維方式,學得做專業之事的業內規則的載體。不管選擇學什麼,都是“櫝”,你要的思維之“珠”因爲不可“言傳”,如果不是經過實踐的檢驗,甚至沒有“意會”的機會。語言、平臺都是當前學習過程中的一個載體,實在不必糾結。
  至於選哪一個,無所謂了。就選當下更符合你的口味的。你也將終發現,過3個月你會說“學會C++”了,和3年後,10年後說出的“學會C++”的內涵完全不同——不管學什麼,不管什麼人學,初時甚至很多事情都沒有感知到的能力。所以,不管你學哪一個,都不會有“學完”的時候。隨着時間,會在應用需求的推動下,不斷地再回首,一層一層地剝去外殼,逐漸接近核心的珍珠。
  關鍵不是選哪個,關鍵是,選了以後怎麼學。怎麼學?學習、實踐緊密交織,學活的知識,用實踐開道去學,你在我博客中會找到很多指導。
  如果我有傾向,會傾向於你優先在C++再投入一些。Java你在後面會學的,可能會多次回頭看。因爲C++更底層,有不少學Java中體會不到的東西,很值得深入一下。
  就說這些,相信你會安排好。

【再來信】
  讀完之後深受益處。我可能太過着急或者太焦慮了,也許我應該重視的是如何喫透一門語言,而不應該糾結學多少門有用的語言。我相信,如果有學會一門語言的邏輯基礎,其他語言也會學得很快。我應該去學會如何學懂學好每一門語言的方法,就比如寫數學題一樣。
  感謝老師,我會利用您的博客裏的資源在暑假裏進行學習的。同時也感謝老師的點撥,大學課程裏看似基礎“沒用”的東西,其實都在“默默”發揮作用。
  最後,再一次感謝老師您在百忙之中抽空回覆我!
  祝您生活愉快!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章