最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

程序員丨學習編程需要攻克這 8 個壁壘,解決后編程能力顯著提升!

2020-04-01 16:20 作者:C語言編程__Plus  | 我要投稿

作為一個C/C++開發(fā)的一個過來人,我看到過很多新手程序員滿懷熱情投入到學習中來,卻總是處處碰壁。進行一番小小的觀察總結(jié)之后發(fā)現(xiàn),大多數(shù)學習者同樣碰到過相同的障礙,但是,一旦克服了這些壁壘,那么好處立馬就來:

  (1)更享受學習經(jīng)歷

 ?。?)進步更快

 ?。?)碰到難題更執(zhí)著,不輕言放棄

 ?。?)寫代碼時更獨立

那么,這些障礙究竟是什么呢,我們又該如何攻克它們?

1、不正確的學習動機

  在談及壁壘之前,我想先著重說明學習動機的重要性。不要只是為了編程而學編程,也不要因為聽說它很酷,很劃得來就來學編程。

  你得因為要解決問題而學習編程,你得因為想要自動化和改善生活而學習編程,你得因為想要構(gòu)建應(yīng)用程序以造福社會來學習編程。

  如果你只是喜歡編程,并希望以此作為職業(yè)的話,那么在之后的學習過程中,你可能會有一種強烈的沖動想要放棄。這通常發(fā)生在事情變得艱難,學習體驗變得痛苦的情況下。這時你會告訴自己,你不喜歡編程了,編程操作不適合你,覺得自己天生就成不了程序員。

  這就是為什么你應(yīng)該考慮圍繞著完成項目設(shè)置目標的原因。如果你的心里有計劃,或者你想要解決更高層次的問題,那么你可以對自己說:“這可能不是一次愉快的經(jīng)歷,但是我真的想要解決這個大問題,所以我一定要克服這個障礙?!?/p>

2、不知道從什么技術(shù)入手

  很多人會問:“我應(yīng)該先學什么編程語言?”之所以會提出這個問題,是因為他們不知道自己為什么要學習代碼。

  一旦你下定決心去完成一個特定的項目,那么從什么語言入手這個問題就變成一件很容易的事情:

  如果你想構(gòu)建iOS app,那么你需要學習Objective C或Swift。

  如果你想構(gòu)建Android app,那么你需要學習Java。

  如果你想構(gòu)建Web app,那么你需要學習JavaScript。

  其實現(xiàn)在我們可以學習C語言。在你不知道自己想要做什么項目的情況下,又想要學習編程,這時候我們從C語言來入門是非常好的,最為編程界的基石語言,學好了它,以后學什么都是十分有幫助的,這種語言非常值得學習。

  另外,知識都是相通的,所以,不要過于拘謹,選擇語言這一步驟幾乎沒什么風險。

3、不能學以致用,以及責備自己

  選擇好技術(shù)堆棧之后,剛開始學習理論總是很輕松的,而且網(wǎng)上也有許許多多免費和付費的在線課程。

  很快大多數(shù)學習者掌握了理論知識,甚至完全可以自己來解釋某個代碼片段的工作原理。理論只是概念的有限集合。任何人都可以在幾天之內(nèi)記住它,如果她/他真的想的話。那么,關(guān)鍵的問題是什么?

  學習者碰到的最大問題在于,實際應(yīng)用理論來解決問題并編寫新代碼的時候。這中間的差距實際上就是技能空白。

  比如說游泳。你可以閱讀大量的技術(shù)文章,然后解釋得就像一個專業(yè)教練。但是,要想實際應(yīng)用這些理論,就需要大量的實踐、斗爭和錯誤——你肯定會吞下大量的水!

  然而更糟糕的是你開始責備自己?;蛘哒J為自己不夠聰明,或者覺得自己沒有天賦。這其實跟聰明天賦沒有關(guān)系,你只是需要練習技能的過程:

  1.選擇一個復(fù)雜的項目。理想情況下,這項目得能夠激發(fā)你的興趣。

  2.將這個任務(wù)分割成既小又獨立的任務(wù)。例如,“實現(xiàn)登錄頁面”是一個很大的任務(wù)。解決一個任務(wù)不應(yīng)該超過20行左右的代碼。下面這些提示有助于成功做到這一點:

  如果你不能解決這個任務(wù),那么進一步將它分割成更小的任務(wù)。

  一個任務(wù)一次不應(yīng)該使用太多的理論概念。

  3.一次專注一項任務(wù),而不是并行解決多任務(wù)。不要跳到下一個任務(wù),除非你已經(jīng)徹底測試過當前任務(wù),并確信沒有問題。

  如果你不這么做,而此時應(yīng)用程序又出現(xiàn)了問題,那么你就不知道你正在并行解決的多任務(wù)中到底是哪個出了問題,尋找起來就麻煩多了。

  4.確保自己在開始任務(wù)之前知道所有必要的理論知識。有時候,你可能不知道需要學習什么理論,這很正常,所以你需要向他人尋求幫助:程序員朋友,導(dǎo)師,或類似StackOverflow的社區(qū)。

  5.最后,你解決了任務(wù)。在解決任務(wù)的過程中,你可能會碰到很多問題,你需要做的就是吸取教訓,這也是下面要說的要點:

4、不吸取解決任務(wù)中獲得的經(jīng)驗教訓

  最好的情況是,你解決了任務(wù)并且結(jié)果證明非常有效。此時,很多人往往就直接開展下一個任務(wù)。但是如果你這樣做的話,那么你浪費了一個絕佳的學習機會。

  希望你能夠用以下問題來挑戰(zhàn)自我,幫助自己成長:

  哪些邊界情況會導(dǎo)致我的代碼失?。考词宫F(xiàn)在還沒有失敗,有哪些應(yīng)用程序狀態(tài)可能會破壞代碼?

  我的代碼是否足夠整潔?對其他開發(fā)人員,甚至是自己而言,代碼是否易于理解和改變?因為以后可能需要修復(fù)隱藏在這段代碼中的問題,或者根據(jù)其他產(chǎn)品規(guī)格改變代碼。

  我的方法是最好的嗎?有沒有其他選項是我可以選擇使用的?各個方案的利弊?這任務(wù)是否值得用不同的方式解決?

  此模塊與其他模塊是如何交互的?是否會對其他模塊造成負面影響?是否容易被其他模塊影響?

  然而,很多時候,你會進退維谷。

5、你不知道如何處理一個任務(wù)

  你不知道從哪里開始?你可能會隨機地去嘗試,或者從其他地方復(fù)制一些你自己也不明白的代碼。但是,這是沒有幫助的。即使你復(fù)制來的代碼有效也沒用。因為當你今后再一次碰到類似的任務(wù),你依然不能解決。

  如果你想妥善解決任務(wù),那么首先你得知道你為什么卡殼。下面是一些可能的原因:

  1.沒有很好地掌握這些理論知識:

  語言語法

  庫或API的工作原理,某個具體方法或類的工作原理

  編程范式(例如:異步編程)

  系統(tǒng)運作(例如:HTTP請求是理解Web開發(fā)的關(guān)鍵)

  如果是上述情況,那么可以去復(fù)習理論知識,如果依然摸不著頭腦,也可以去找人尋求幫助。

  2.任務(wù)太大了,那就分解為一個個小任務(wù)。

  3.也有可能是因為你讀得太快,忽略了一些你以為熟悉其實似是而非的概念,所以無法理解任務(wù)要求。

6、你知道如何解決任務(wù),但解決方案不管用

  這是編程中最常見的情況,哪怕是那些經(jīng)驗豐富的資深程序員也是如此。你的解決方案之所以不起作用最大的可能是你的代碼中存在著bug。

  如何修復(fù)?方法是調(diào)試代碼。這也是作為一個程序員需要學習的最重要的技能之一。這不是可以隨便湊合的事,也不是玩幸運猜猜猜游戲。如何尋找bug是有具體步驟的。而且很多書中都有教這個技能。

  不幸的是,這是很多新手程序員失去動力選擇放棄的難關(guān)。很少有課程會說明調(diào)試的重要性。如果你不知道如何正確地調(diào)試,那么它就是不可戰(zhàn)勝無法攻克的難關(guān)。

  很多人擔心會花太多時間用于調(diào)試代碼。這是正常的,在你第一年的編程規(guī)劃中這是不可避免的。

  甚至,你還得學著去喜歡調(diào)試。不妨將此看成是一個機會,一個修復(fù)錯誤提高編程能力的機會。當你解決了一個bug,可以問問自己這個問題:“我為什么會犯這種錯誤?以后我該如何預(yù)防再犯?”

  還有一個好主意是將找到的bug寫成編程日記,方便你總結(jié)和學習。

7、不知道如何接受幫助

  當我們在學習代碼,或調(diào)試代碼時,可以咨詢很多材料:書籍、課程、教程、導(dǎo)師,開發(fā)者社區(qū)等等。

  在你學習這些資源時最常見的問題是,你并沒有完全了解幕后發(fā)生了什么事情,也不知道概念是如何融入到更大的藍圖中的。

  例如:你在某個問題上花了10小時,最后終于有人提供一個解決方案,你往往會采取“拿來主義”——采納解決方案之后就直接跳到一個任務(wù)中去。千萬別這樣做!相反:

  思考自己之前的思維過程。問問自己,做錯了什么,對于這個特定的解決方案有哪些是值得你先前的思路借鑒和改進的地方。

  詢問他人的思維過程。她/他是如何解決的呢?向?qū)Ψ綄W習,吸取經(jīng)驗。

  這也是在StackOverflow和谷歌上搜答案的一大缺點:你只知道解決方案,不知道幕后的思考過程。

8、不去應(yīng)用你學到的理論

  這篇文章也是理論知識,除非你能夠?qū)W以致用,否則它是不會發(fā)揮一絲一毫作用的——多多應(yīng)用,直到它變成潛意思的例行程序。

  編程其實就是通過形成良好的習慣來幫助你解決各種問題的過程。

學習C/C++編程知識,了解學習編程更多方法,歡迎關(guān)注UP一起來進步~

程序員丨學習編程需要攻克這 8 個壁壘,解決后編程能力顯著提升!的評論 (共 條)

分享到微博請遵守國家法律
渝北区| 泰宁县| 阳高县| 沁水县| 南城县| 惠来县| 黄龙县| 葵青区| 晋中市| 玉山县| 东山县| 进贤县| 上犹县| 孙吴县| 甘南县| 抚远县| 清徐县| 黑河市| 宁化县| 法库县| 三江| 托克逊县| 新河县| 铁力市| 克拉玛依市| 南阳市| 福安市| 长子县| 阿合奇县| 安岳县| 商水县| 朝阳县| 岳普湖县| 兴海县| 天门市| 襄垣县| 和政县| 柳州市| 石家庄市| 重庆市| 阜新市|