為什么很多人都覺(jué)得編程難,難在哪里?
為什么很多人都覺(jué)得編程難,難在哪里?
?作為一名大二的信息安全學(xué)生,在兩年期間已經(jīng)接觸了c,c++,java等多種編程語(yǔ)言,也深感編程的困難。在我看來(lái),編程真正的難度不是那些語(yǔ)法,那些東西少則幾天多則幾個(gè)月總能理解。
真正難的是層出不窮的問(wèn)題和方法,所以我一直覺(jué)得,書(shū)上講的東西都不難,難的是你自己去實(shí)踐那些書(shū)上沒(méi)有的東西。
那為什么很多人都覺(jué)得上手編程很難呢?
一、沒(méi)有接受過(guò)解決問(wèn)題的訓(xùn)練
在初高中的時(shí)候,我們受到的教育都是應(yīng)試教育,許多知識(shí)點(diǎn)很多時(shí)候都是*記硬背,或者說(shuō)是去理解它們。
但編程不一樣,編程不是只靠記憶和套公式就能實(shí)現(xiàn)的。要知道編程的核心,不是語(yǔ)法,不是算法和數(shù)據(jù)結(jié)構(gòu),而是如何分解問(wèn)題——發(fā)現(xiàn)規(guī)律并且建立起解決問(wèn)題的模型,找到合適的數(shù)據(jù)結(jié)構(gòu)的算法,**寫程序?qū)崿F(xiàn)。
而我們特別是剛?cè)雽W(xué)的大學(xué)生,缺乏的恰恰是發(fā)現(xiàn)問(wèn)題、解決問(wèn)題的思維。
我剛開(kāi)始上手編程也很難,以為只靠*記硬背就可以學(xué)好,但學(xué)的只是一些基礎(chǔ)知識(shí),真正碰到靈活多變的問(wèn)題還是需要自己去拆解分析的。
二、沒(méi)有選擇合適的起點(diǎn)
每位同學(xué)都要根據(jù)自身的情況選擇最合適的學(xué)習(xí)方法,如果基礎(chǔ)沒(méi)有打好,卻要跟著課堂一起去學(xué)習(xí)高級(jí)語(yǔ)言的編程,肯定會(huì)覺(jué)得難于上青天。我對(duì)于新手目前的推薦是python,如果是計(jì)算機(jī)專業(yè)的學(xué)生,跟著老師學(xué)就行了,注意鞏固復(fù)習(xí)。
在編程的過(guò)程中,到底難在哪里?
一、難在你思路的構(gòu)建
你學(xué)了很多語(yǔ)法,很多API,但遇到不一樣的實(shí)際問(wèn)題,不是簡(jiǎn)單地羅列API就能完成,而是需要你對(duì)問(wèn)題進(jìn)行分析,通過(guò)各種算法、數(shù)據(jù)結(jié)構(gòu)等進(jìn)行編程實(shí)現(xiàn)。而這個(gè)過(guò)程肯定是需要試錯(cuò)和大量時(shí)間的(如果沒(méi)有熟練各種方法的話)。
二、做出來(lái)容易,做好難
雖然做出來(lái)這道題了,但你用的是不是**的方法呢?這就是所謂的做出來(lái)容易,做好難。
寫的程序能夠解決問(wèn)題而且沒(méi)有bug只是基本要求,這里的做好要求你寫的程序容易理解,能夠讓別的接手的程序員看懂為什么這么寫,因?yàn)橥ǔR粋€(gè)大項(xiàng)目不可能是你一個(gè)人完成的,你寫的東西很可能是別人的基礎(chǔ)模塊。
編程是一種溝通,用程序跨越時(shí)空之溝通則百科是一門程序員特有的藝術(shù)。 ——阿萊克西斯
接下來(lái)給一些我學(xué)習(xí)上的建議:
一、學(xué)好基礎(chǔ)知識(shí)
當(dāng)你學(xué)到一定程度,知道自己對(duì)哪個(gè)方向更感興趣的時(shí)候,就不要廣撒網(wǎng)了,一定要專注你所選擇的領(lǐng)域,做深做精。
看書(shū)的同時(shí)結(jié)合項(xiàng)目實(shí)踐,進(jìn)而對(duì)自己的掌握程度得到反饋。
二、多練多看,閱讀別人的代碼
我在學(xué)習(xí)編程的時(shí)候就喜歡多看別人的代碼,看一些程序員大佬寫的代碼,看一些標(biāo)準(zhǔn)庫(kù)的代碼,仔細(xì)思考他們的編程思維和編程方式。
此外,學(xué)習(xí)過(guò)程中結(jié)合項(xiàng)目做一些實(shí)踐,來(lái)明確自己的不足,給自己提供一些正反饋,讓自己也更有動(dòng)力繼續(xù)學(xué)習(xí)。
質(zhì)而言之,編程確實(shí)不是一件容易的事,但只要你持之以恒不斷精益求精,也肯定能獲得一定的成果。
編程很難學(xué)習(xí)?
編程難不難?那可不是鬧著玩的。不從事這一行的永遠(yuǎn)不知道這行的艱辛,還咋巴著小眼睛問(wèn)編程好不好學(xué)?不知道LZ看沒(méi)看過(guò)圣斗士星矢這部動(dòng)漫,首先你得問(wèn)問(wèn)自己,想學(xué)編程,你有沒(méi)有像星矢一樣持之以恒百折不撓一步一個(gè)腳印忍受常人無(wú)法想象的困難和痛苦的品質(zhì),沒(méi)有?你說(shuō)我開(kāi)玩笑逗你,那好,下面的不用看了,應(yīng)該你確實(shí)不適合學(xué)。
如果你只想著掙大錢,勸你別碰這行,一句話,別來(lái)找虐。
為什么?你看到的手機(jī)APP,各種應(yīng)用,要想開(kāi)發(fā)出來(lái),不知道需要多少種技術(shù)。拿最常見(jiàn)的網(wǎng)站開(kāi)發(fā),需要后臺(tái)數(shù)據(jù)庫(kù)mysql,數(shù)據(jù)格式j(luò)son,xml,各種**協(xié)議,還有網(wǎng)站開(kāi)發(fā)語(yǔ)言PHP, JSP,ASP.NET,等等不下十幾種技術(shù)。而每一種技術(shù)都是一本厚厚的五六百頁(yè)的書(shū),需要最少一年多時(shí)間掌握一門技術(shù)。最要命的,每種技術(shù)互不交叉還跨度很大,每種技術(shù)都有自己的設(shè)計(jì)理念和很多很多“天坑”在等著你攻克,你問(wèn)問(wèn)你自己,你有這個(gè)恒心和意志力天天捧著本大部頭的書(shū)天天看,天天上機(jī)操作學(xué)嗎?你說(shuō)有,那好,你看電視上那些富二代天天瀟灑地到處游玩泡妞基本于你無(wú)緣了,因?yàn)槟愀揪蜎](méi)時(shí)間,談個(gè)戀愛(ài)都困難,還想打網(wǎng)游玩**?那算了,你還是別碰這行了,別耽誤你玩游戲享受生活了。
程序員加班很恐怖,工作制通常是996,即早9晚9周六還要上班,晚9下班還是早的,一般到晚上十點(diǎn)。你想那時(shí)夜深人靜了人家都休息抱著老婆睡覺(jué)了,你還在工作中,是不是很崩潰?第2,程序員耗腦太嚴(yán)重。工作中需要十幾個(gè)小時(shí)大腦不停地運(yùn)轉(zhuǎn)。
需要設(shè)計(jì)算法,不斷地把代碼改來(lái)改去來(lái)適應(yīng)客戶**幾變的需求。很多功能沒(méi)有現(xiàn)成的解決方案,還經(jīng)常遇到一些天書(shū)一樣的疑難問(wèn)題,bug,實(shí)際工作中突發(fā)狀況千奇百怪,你可能見(jiàn)都沒(méi)見(jiàn)過(guò)的bug,崩潰,需要一點(diǎn)一點(diǎn)查幾萬(wàn)行的log日志。而且也需要百度,google,英文論壇尋求幫助,理解錯(cuò)誤信息是什么意思。
所以英文不好的沒(méi)耐心的還是算了吧,不適合這行。第3. 程序開(kāi)發(fā)首先是非常難學(xué)的,任何一門編程語(yǔ)言都有自己獨(dú)到的思想,概念設(shè)計(jì),很多情況下一門語(yǔ)言與另一門語(yǔ)言沒(méi)有多大關(guān)系,知識(shí)經(jīng)驗(yàn)無(wú)法串用。而且工作中你還不得不用到這些技術(shù)你不得不去學(xué)。
而且程序技術(shù)日新月異,新類庫(kù)新SDK每天都會(huì)推出,你需要日復(fù)一日不斷地學(xué)習(xí)新技術(shù)。如**視頻解碼技術(shù),游戲引擎等等,而這些新技術(shù)可是國(guó)內(nèi)沒(méi)有書(shū)和任何資料的,需要你到英文**網(wǎng)站去找實(shí)例看文檔去學(xué),更要命的,新的技術(shù)和老的還沒(méi)太大關(guān)聯(lián),你得重頭去學(xué)。而且老板急趕項(xiàng)目不會(huì)給你什么時(shí)間,一般三天就是極限了,你需要這么短的時(shí)間快速掌握一項(xiàng)新技術(shù)…綜上,你明白程序員為什么總要加班了吧,也知道這行不是人干的吧。為什么說(shuō)程序員干到三十干不動(dòng)。
學(xué)習(xí)編程究竟有多難?為什么人們一提起編程都覺(jué)得很難
學(xué)習(xí)編程的確是非常的困難,而且編程是越學(xué)越難的,可能入門相對(duì)來(lái)說(shuō)比較簡(jiǎn)單,但是學(xué)到關(guān)鍵之處的時(shí)候就很難懂了。因?yàn)榇蟛糠秩硕际强床欢绦騿T寫的代碼的,所以很多人潛意識(shí)當(dāng)中就覺(jué)得變成非常困難。
信每一個(gè)程序員談起自己學(xué)習(xí)編程的心路歷程都非常的心酸,編程在剛?cè)腴T的時(shí)候的確是非常簡(jiǎn)單,現(xiàn)在很多早教機(jī)構(gòu)都會(huì)開(kāi)設(shè)有關(guān)于編程的課程,會(huì)讓一些學(xué)齡前的小朋友去學(xué)習(xí)編程。
但這并不代表編程是一件簡(jiǎn)單的事情,相反編程非常的困難。那些早就經(jīng)過(guò)開(kāi)設(shè)的編程課,一般只針對(duì)于少兒,是非常簡(jiǎn)單,非?;A(chǔ)的一些課程。是是對(duì)于序員來(lái)說(shuō),他們所要面對(duì)的編程是非常復(fù)雜的,光是代碼就有很多種。變成是一門非常具有邏輯思維性的學(xué)科,所以有些人學(xué)起來(lái)會(huì)比較簡(jiǎn)單,但有些人學(xué)起來(lái)就非常的困難了。
大部分人都覺(jué)得變成很難,主要還是因?yàn)楹芏啻a都看不懂。而且在大學(xué)當(dāng)中所開(kāi)設(shè)的相關(guān)課程一般都是比較注重理論的,所以在上機(jī)實(shí)操的時(shí)候會(huì)覺(jué)得比較困難。而且編程所囊括的學(xué)科也有很多,比方說(shuō)像數(shù)字電路,匯編語(yǔ)言,c語(yǔ)言等。
因?yàn)槔碚撜n程太多,所以很多計(jì)算機(jī)專業(yè)的學(xué)生在完成大學(xué)學(xué)業(yè)之后,還是感覺(jué)自己就像是零基礎(chǔ)一樣,根本就沒(méi)有辦法獨(dú)立去寫程序。
雖然能夠看到自己的程序運(yùn)行是一件非常有用成就感的事情,但是在這之前也要經(jīng)歷很多次的修改和填不漏洞。很多人過(guò)程當(dāng)中就會(huì)漸漸的失去耐心,覺(jué)得編程是一件非??菰餆o(wú)聊的事情。
但每一件事情都是需要堅(jiān)持的,如果能夠堅(jiān)持下去,也能夠在編程當(dāng)中找到一定的規(guī)律。