0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

學(xué)習(xí)編程需要克服那些難關(guān)

Wildesbeast ? 來源:今日頭條 ? 作者:C語言編程學(xué)習(xí) ? 2020-02-04 12:32 ? 次閱讀

作為一個C/C++軟件開發(fā)的老程序員,我看到過很多新手程序員滿懷熱情投入到學(xué)習(xí)中來,卻總是處處碰壁。大多數(shù)學(xué)習(xí)者同樣碰到過相同的障礙,但是,一旦克服了這些壁壘,那么好處立馬就來:

(1)更享受學(xué)習(xí)經(jīng)歷

(2)進(jìn)步更快

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

(4)寫代碼時更獨(dú)立

那么,這些障礙究竟是什么呢,我們又該如何攻克它們?我們一起往下看:

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

很多人會問:“我應(yīng)該先學(xué)什么編程語言?”之所以會提出這個問題,是因?yàn)樗麄儾恢雷约簽槭裁匆獙W(xué)習(xí)代碼。

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

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

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

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

其實(shí)現(xiàn)在我們可以使用JavaScript來創(chuàng)建任何類型的項(xiàng)目——無論是簡單的web和移動app,還是高級的硬件項(xiàng)目。大多數(shù)行業(yè)中都有它的身影:音樂、醫(yī)療、游戲、時裝。這種語言非常值得學(xué)習(xí)。

如果你還是不能確定要選擇哪種語言,那么不妨咨詢下某個程序員的意見。只要你確定要構(gòu)建什么項(xiàng)目,那么他就能很快地為你推薦適合你使用的技術(shù)。

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

2、不正確的學(xué)習(xí)動機(jī)

在談及壁壘之前,我想先著重說明學(xué)習(xí)動機(jī)的重要性。不要只是為了編程而學(xué)編程,也不要因?yàn)槁犝f它很酷,很劃得來就來學(xué)編程。

你得因?yàn)橐鉀Q問題而學(xué)習(xí)編程,你得因?yàn)橄胍詣踊透纳粕疃鴮W(xué)習(xí)編程,你得因?yàn)橄胍獦?gòu)建應(yīng)用程序以造福社會來學(xué)習(xí)編程。

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

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

3、不能學(xué)以致用,以及責(zé)備自己

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

我的代碼是否足夠整潔?對其他開發(fā)人員,甚至是自己而言,代碼是否易于理解和改變?因?yàn)橐院罂赡苄枰迯?fù)隱藏在這段代碼中的問題,或者根據(jù)其他產(chǎn)品規(guī)格改變代碼。

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

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

然而,很多時候,你會進(jìn)退維谷。

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

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

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

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

語言語法

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

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

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

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

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

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

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

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

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

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

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

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

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

7、不知道如何接受幫助

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

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

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

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

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

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

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

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

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

所以說,想要在程序員生涯內(nèi)有更高的成就的話,最最重要的是盡可能的提升自己的編程能力,并且,與其想著怎么去提升,不如從現(xiàn)在開始動手動腦,如果對于C/C++感興趣的話,可以關(guān)注+私信小編【編程交流】有一些視頻希望可以幫助到你,學(xué)習(xí)不怕從零開始,就怕從不開始。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • Web
    Web
    +關(guān)注

    關(guān)注

    2

    文章

    1255

    瀏覽量

    69294
  • HTTP
    +關(guān)注

    關(guān)注

    0

    文章

    499

    瀏覽量

    30985
  • C++
    C++
    +關(guān)注

    關(guān)注

    21

    文章

    2102

    瀏覽量

    73453
收藏 人收藏

    評論

    相關(guān)推薦

    請問TLV320AIC3104通路配置需要修改那些寄存器?

    1:通路配置需要修改那些寄存器,目前我們是一路tdm進(jìn)來,輸出接的是LEFT_LOP、RIGHT_LOP和HPLOUT三路,我們tlv320aic31x.c驅(qū)動里注了很多snd_kcontrol,這些是否能利用起來,麻煩提供一些相關(guān)的測試示例。
    發(fā)表于 09-29 07:23

    克服設(shè)計難題-實(shí)現(xiàn)高性能接口

    電子發(fā)燒友網(wǎng)站提供《克服設(shè)計難題-實(shí)現(xiàn)高性能接口.pdf》資料免費(fèi)下載
    發(fā)表于 08-28 09:41 ?0次下載
    <b class='flag-5'>克服</b>設(shè)計難題-實(shí)現(xiàn)高性能接口

    按照這樣學(xué)習(xí)C語言,成為卷王不是夢!

    在計算機(jī)編程領(lǐng)域,C語言被譽(yù)為一種強(qiáng)大而靈活的編程語言,掌握好C語言不僅可以讓你輕松駕馭各種編程任務(wù),還能夠?yàn)槟愕穆殬I(yè)生涯打下堅實(shí)的基礎(chǔ)。但要成為C語言的“卷王”,需要一定的
    的頭像 發(fā)表于 07-06 08:04 ?277次閱讀
    按照這樣<b class='flag-5'>學(xué)習(xí)</b>C語言,成為卷王不是夢!

    客戶有哪些封裝案例,一句克服使用讓PCBA工廠淚流滿面

    客戶一句克服使用讓PCBA工廠淚流滿面,今天我們一起來盤點(diǎn)盤點(diǎn)客戶那些特殊的PCB設(shè)計和封裝建立,你都是否有經(jīng)歷過,或者正準(zhǔn)備這么做。
    的頭像 發(fā)表于 06-25 14:20 ?267次閱讀
    客戶有哪些封裝案例,一句<b class='flag-5'>克服</b>使用讓PCBA工廠淚流滿面

    學(xué)習(xí)串口屏需要了解哪些方面的知識

    學(xué)習(xí)串口屏需要掌握的知識主要包括以下幾個方面
    的頭像 發(fā)表于 06-05 09:41 ?385次閱讀
    <b class='flag-5'>學(xué)習(xí)</b>串口屏<b class='flag-5'>需要</b>了解哪些方面的知識

    如何為CYPD6227編程需要使用哪些工具?

    我想學(xué)習(xí)重新刷新筆記本電腦主板上的編程芯片 CYPD6227。 芯片編程需要使用哪些工具,還需要哪些資源? 如有任何幫助,我們將不勝感激。
    發(fā)表于 06-03 09:10

    fpga開發(fā)需要掌握哪些編程語言

    FPGA(現(xiàn)場可編程門陣列)開發(fā)涉及多種編程語言和技術(shù).
    的頭像 發(fā)表于 03-27 14:34 ?1325次閱讀

    fpga學(xué)習(xí)需要具備哪些課程

    FPGA(Field Programmable Gate Array)學(xué)習(xí)需要具備一系列的課程知識和實(shí)踐技能
    的頭像 發(fā)表于 03-14 15:51 ?1095次閱讀

    WiFi模塊助力少兒編程:創(chuàng)新學(xué)習(xí)與實(shí)踐體驗(yàn)

    隨著科技的飛速發(fā)展,少兒編程已經(jīng)成為培養(yǎng)孩子們創(chuàng)造力和問題解決能力的重要途徑之一。在這個過程中,WiFi模塊的應(yīng)用為少兒編程領(lǐng)域注入了新的活力,使得學(xué)習(xí)編程不再是單一的代碼教學(xué),而是一
    的頭像 發(fā)表于 03-08 16:35 ?340次閱讀

    TC397 SPI的初始化需要修改那些配置嗎?

    我想使用TC397芯片的SPI通訊功能,由于PCB設(shè)計原理圖使用的SPI通道所有自帶片選都被占用,因此需要使用GPIO功能模擬SPI的片選,遇到的問題是通訊偶爾出現(xiàn)接收數(shù)據(jù)全為F,我在使用SPI 的硬件片選時,SPI的初始化需要修改那些
    發(fā)表于 03-06 06:02

    學(xué)習(xí)鴻蒙背后的價值?星河版開放如何學(xué)習(xí)?

    需要有更多的鴻蒙人才;鴻蒙開發(fā)工程師也將會迎來爆發(fā)式的增長! 所以學(xué)習(xí)鴻蒙勢在必行,而大部分人都能適合學(xué)鴻蒙。人群可以包括: 那鴻蒙需要學(xué)習(xí)那些
    發(fā)表于 02-22 20:55

    那些杠鴻蒙的現(xiàn)在怎么樣了?

    開發(fā)者需要學(xué)習(xí)那些鴻蒙相關(guān)技術(shù)呢?下面分享出需要學(xué)到的技術(shù)板塊: 詳細(xì)的高清學(xué)習(xí)路線,可以在qr23.cn/AKFP8k或主頁保存,附帶相
    發(fā)表于 02-16 22:03

    #2024,立Flag了嘛? #學(xué)習(xí)spinal HDL還需要學(xué)習(xí)對應(yīng)的Scala語言

    學(xué)習(xí)spinal HDL還需要學(xué)習(xí)對應(yīng)的Scala語言,但是spinal HDL直接貼近硬件編程,不知道對于學(xué)習(xí)spinal HDL有什么好
    發(fā)表于 01-21 11:11

    PLC新手編程入門指南:從基礎(chǔ)到實(shí)踐的旅程

    在掌握了PLC的硬件接線后,您可以開始學(xué)習(xí)PLC的編程。首先,您需要了解一些基本的編程術(shù)語,如脈沖信號、時序圖、尋址方式等。接下來,您將學(xué)習(xí)
    的頭像 發(fā)表于 01-14 10:38 ?4103次閱讀
    PLC新手<b class='flag-5'>編程</b>入門指南:從基礎(chǔ)到實(shí)踐的旅程

    51單片機(jī)C語言編程入門學(xué)習(xí)資料

    電子發(fā)燒友網(wǎng)站提供《51單片機(jī)C語言編程入門學(xué)習(xí)資料.pdf》資料免費(fèi)下載
    發(fā)表于 11-18 11:04 ?14次下載
    51單片機(jī)C語言<b class='flag-5'>編程</b>入門<b class='flag-5'>學(xué)習(xí)</b>資料