自學編程的難度如何?
題主來自武漢某985計算機系,但是了解到學校系統教的編程語言只有c,其他只會很粗淺地教,那我想成為優秀的程序員肯定就要自學了。那請問自學的難度有多大?我現在大一,大學之前未有編程基礎,大一上自學c++,大一下學校才有編程課。
不知樓主玩遊戲不?我記得第一次玩war3的時候,被裡面繁雜的科技,單位,操作命令弄得生不如死,可又是拚命的想玩,想成為高手。於是從戰役篇開始學習單位的屬性,編隊,走位,慢慢地開始了解到了各種機制。當我第一次擊敗 Crazy 難度的電腦時,我發現一切是那麼自然,沒有任何難度。
學習編程也是一樣,不要想著它有多難,要想它能幫你做什麼事,你編程的目的是什麼。然後找到一本難度適中的教材,認真理解,完成課後習題(就像認識遊戲里的基本規則一樣)。當你覺得有能力寫一個完整的程序時,開始給自己一點小項目玩(就像遊戲中找一個對手一樣)。我大一開始學c++,學概率論的時候發現條件概率這個知識點我可以用來找出一本小說中的人物和特殊物品的名字,於是擼起袖子寫了一個程序來找小說特殊名詞。用c++寫的,大約寫了4天,識別率可以達到70-80,錯誤率約為10,不過速度奇慢,1M左右的小說要跑30分鐘。後面大二對c++了解更多了,於是改了下當時的程序,發現只用10s就可以跑完了。那時候開始正式步入程序的殿堂,隨後自己照著google上搜到的教程,寫了一個小型的遊戲框架,越來越覺得難度這東西,是自己給自己設置的。
你必須跨出第一步,不然怎麼走出一萬里?
--------------------------------------------------------------------------------------------------------
既然大家都想知道那個條件概率的梗,我就說說吧:
當時老師在講一道題,講的是不同顏色的球,抽出的概率(我不是講題啊,大概說說我是怎麼想到的),而我當時沉迷於一本小說,我想知道一號主人公在整本小說中被描述了多少次,二號主人公又出現了幾次。想著想著,我突然發現,中文的一個字不就代表一個不同顏色的球嗎?在一本小說中出現的名字,是特有的!
也就意味著,楊力驍這三個不同的球只有在我的這本小說里條件概率特別大,而其他文本里幾乎不會出現,條件概率幾乎為零。
思路有了,剩下的挽起袖子寫代碼吧。
你需要收集大量的參考文檔,我當時下了5個G的各類文檔作為參考。
看你數理邏輯怎麼樣,如果你數學一塌糊塗,理科勉勉強強,邏輯混亂不堪。那就說明你更適合別的職業。
我25歲時轉行做軟體開發,當時看《The C Programming Language》,看了一個星期,開始投簡歷,然後不斷筆試、被鄙視,然後三四個月之後找到了工作。再然後,干到了37歲,所有遇到的語言、技術框架、演算法,都是自學。
自學,是走軟體開發這條路最重要的基礎能力,只要發現自己的學習模式,多練練,慢慢就會發現,自學是很HIGH的,沒什麼難的。所以,從現在開始,找一門學校不教的語言,先學學看,練練看。
++++沒想到這麼多人點贊,更新一下,2017.02.19++++我在另一個問題的回答里提到了當時這段找工作的經歷,以及一些經驗,感興趣的可以參考:自學編程的人,都是怎麼找到第一份軟體開發工作的? - foruok 的回答 - 知乎先簡單介紹一下自己,本人高中文科,高考數學69分(150滿分),大學國際金融專業,微積分2次重修才勉強及格,計算機課只是教一些word、excel的使用方法,可以說完全沒有編程基礎、數學基礎。大一開始自學C、數據結構,畢業後就進入一家軟體開發公司做編程,國內項目、對日項目、對歐美項目都有經驗,從基層的程序員到項目經理都擔任過,到今年有11年了,其間有一年轉行開了個店做點小生意,但最終還是失敗,最後回歸老本行。所以我想告訴答主,自學編程是沒有問題的,軟體開發中大部分工作靠自學的成果都能勝任,但如果想成為大牛,就要看你自己是否夠刻苦、夠努力、夠幸運、悟性夠高了,自學的優點是有很強的自我驅動力去學習研究,缺點是理論基礎不夠紮實,畢竟沒有系統化的學習過。但答主你有很好的優勢,本身就是計算機系的,就更沒問題了。
能考上985計算機系的學生,智商不會差到哪去。況且編程難度並不高,除個別領域外也不需要多高深的數學功底,題主無需擔心。
計算機的基礎理論務必學紮實,另外注意多編程序,如果有機會參與商業項目或者大的開源項目更好。
編程需要同時考慮很多事情,新手會覺得這好難!其實只是因為練得少。編多了,很多需要考慮的東西都變成下意識了,負擔就會輕很多。祝好運其實只是想要會編程不難,但是編程後面的理論知識自學很難領悟。自學編程往往只注意到程序的運行結果,就像黑盒一樣,但是程序是否最優很容易被忽略。
我遇到的自學編程的和科班出身的程序員有以下差別:
1.格式。科班出身的程序員在老師的監督下會被強行規範格式和注釋。而自學者不一定會意識到格式統一的重要性。2.程序優化度。自學的程序員往往不會關心計算機運行時硬體、系統資源的最優分配。3.debug效率。對於程序的邏輯性和敏感性一般會弱於科班出生的程序員。
當然學編程的作用是用來實現各種計算機演算法或者用計算機實現一些自己的想法。在不同環境下要求也是不一樣的。如果不是搞計算機高精尖端的研究或者程序製作,自學編程足以解決大部分問題了。
以上只是個人觀點,歡迎大家補充和糾正。如果你剛接觸編程那就推薦你先學C語言吧。這個你可以自己學,也可以通過其他方法比如去IT學校。如果自己學的話,你可以通過網路(網上教程),或者買書(C primer plus),但是別太依賴網上教程,因為不清楚+聲音小+錯誤百出+地方方言你聽不懂。C語言是基於系統的,和系統底層打交道的牛逼東西,如果你能掌握C語言的話,做個簡單的軟體是不成問題的。還有就是學編程最好只學同類,如果你學C語言,然後又學VB,那麼兩種語言你很容易弄混的,弄混的代碼電腦是不會支持的
沒聽說過編程難得,反而只要學會一門語言類似C這種,其他新語言入門的話也就最多半個月,所以編程往往是工作中最簡單的,甚至低於寫個技術文檔的難度,編程背後的行業內業務知識,才是你最難啃的骨頭,當然也看行業,互聯網也許不同,我是在軍工行業,要求會的語言就那幾門,C、C++、verilog、matlab,近幾年python越來越多用在機器學習上,軍工產品裡面已經開始流行。另外GIT版本管理也越來越流行。現在軍工從業人員,也打破了過去研究所那種更新換代慢的風氣,時刻關注著當下流行的趨勢。雖然還經常能看見tubro C這種控制台程序(逃
你關心的不應該的自學編程難度如何吧?你應該關心如何自學編程吧?你到底想知道些什麼?
以你的智商肯定不難,而且也能找個不錯的收入。問題在於你是否喜歡這個職業。加班,傻逼的領導和產品經理,無休止的雞湯和大餅,無腦的績效指標,隨時隨地的bug,無窮無盡的架構優化,演算法優化你真的喜歡這些嗎?
喜歡半夜被通知要改程序嗎?
主要還是要看你自己的方向, 假如你的目標是進微軟、谷歌、IBM之類的跨國大企,那你所需要掌握的計算機技術學習起來自然是有難度的。 就拿知乎上最有名氣的輪子哥做為參照標準, 編譯原理、各種演算法、圖形學什麼的自然都需要會的, 而且還要精通C++。 我走的不是這個方向, 也指導不了你什麼。
但是你如果只想做個行業內普普通通的程序員,畢業後能去阿里騰訊上班什麼的,那學習一些與工作相對應的編程技術是沒有什麼難度的。 我也是自學的, 而且題主的情況明顯比我的好,才大一就開始有這個意識要學習了, 我是到畢業以後找不好工作才明白過來, 然後才開始找方向學習的,而且那時候我對於這個領域完全一無所知, html中tr和td是啥都不知道。
剛開始學習的時候肯定會有一段陣痛的時候,我大概是花了差不多半年不到的時間才渡過那段對於編程概念迷糊的痛苦階段,之後雖然還是很菜,但至少已經模到了大致的方向,而且還產生了巨大的興趣, 知道該朝哪個方向去發力了, 換句話說就是知道了只要這麼去做,肯定會變的牛逼, 時間問題而已。
所以按我來說, 編程可以難也可以不難, 關鍵是看你走哪個方向, 如果只是找一個普普通通程序員工作, 以你上985的智商, 再加上些許努力 , 輕輕鬆鬆就能跨過那個門檻。
你現在大一, 正是最好的學習時光,切記, 千萬不要在大學裡浪費時光。
對我來說,答案是:不會很難。
畢業做了幾個月的運營實習,自己不叼,工資太低,漲薪太難,看到隔壁代碼啪啪啪敲得飛起好過癮的樣子,轉戰程序猿。
辭了運營工作,在家閉關自學編程,學習資料都網上找,也借過書,後面發現找來的視頻資料看得很過癮,就側重視頻資料的獵取了。白天學到晚上,一個多月後開始找工作,找了兩星期,然後我就加入了啪啪啪的隊列了,開心。
心得分享一下:- 能給你找到一門計算機語言的入門學習資料,真的都不難,無非就是看一遍還是兩遍的問題。
- 關於入門之後,如何提高自己啪啪啪水平,我的方法是,去招聘網站看看,公司企業都招需要有什麼技術棧程序員,對應去學習咯,感覺是最快最有效的擴充自己技術棧的方式。
- 學習階段少用那些叼叼的IDE,少用teb鍵啥的啥的,目的就是記單詞咯,哈
- 學習的時候,多做筆記,過段時間要回去翻一翻看一看,你會發現,,,媽的這東西怎麼弱雞那麼簡單,,,增加自己學習信心。
- 速成的程序猿,學習跟葯一樣是不能停的,因為你一直來拖科班出身的程序猿的後腿,可能這麼說不太恰當,反正意思就是說不能停下學習。
- 結交一個基友,碰到問題可以問一問或者討論啥的,遠比一個人苦戰好,說不定還可以解決單身問題,,,
- 別人說難,不一定就難,對你都是未知的事物,擼起袖子親自嘗試了實踐過了,遠比看那麼多別人的回答,體驗來得深刻,,,別看了,趕緊滾去學習,捂臉
- 買了個機械鍵盤輔助學習,敲得賊帶勁,增加幸福感,別吐槽,我就是那麼裝逼,捂臉
突然想起來當初小有所成的時候,利用周末時間做了個小爬蟲,跟足彩有關吧。貼出來看看能不能騙幾個贊。
這是爬來的比賽結果,各大聯賽都有,外加野雞聯賽也有。
每一場都爬了個大zhuang家的歐賠,但是有沒有被動過手腳的我就不太清楚啦。然後根據自己研究來的亂七八糟看盤經驗寫的兩個演算法,一個是滾球一個是初盤的,然後篩選比賽然後推送到手機。
上面兩張是滾球大球推送的紅黑結果。
這爬蟲跑了幾個月,有收米收到飛起的時候,也有黑到血崩的時候,年初就停了,原因估計也不用多說,真愛錢包,遠離黃賭毒,畢竟不是專業搞這個的,就當是練習的小項目吧。哈哈哈哈
反正編程的樂趣跟最有成就感的那一刻就是,當你的項目跑起來的那一刻。
加油,自己學起來吧……我大一的專業是那種包羅萬象的大專業(大二分流)( ̄▽ ̄")
當時和舍友一起奠定了去計算機系的決心,因為我們都覺得編程特有意思我記得大一的時候,舍友經常去圖書館借與編程有關的書,什麼javascript,c sharp等等他都有涉獵然後去網上看了各種視頻,用不了多久他就設計了俄羅斯方塊和打飛機遊戲(╯‵□′)╯︵┻━┻ 當時真的好佩服,因為我當時只學了C,做的遊戲都很基礎
咳咳回到正題。如果你有編程基礎的話,再學一門新的語言難度就會降低很多(我大二嘗試自學JAVA,發現與C++有挺多共同點的,遇到的障礙不大)
但是如果你是自學編程語言,並且之前沒有基礎,那麼我覺得不是一件簡單的事。編程語言有很多條條框框,新手一時半會無法理解,上IDE調試可能會遇到各種bug(建議多向編程大佬請教,要不調試可能會浪費很多時間)
搞清楚如何調試之後,多看看書上的代碼,再做做課後習題足矣(我當時練習的挺多的,經常自己給自己設計遊戲)˙▽˙ 說到底還是那句話 世上無難事,只怕有心人不難,寫幾個小項目,攢個四五萬行代碼就可以去找工作了。
本來是一名HR,2015年初突然頓悟拋棄了之前下班以後就沒日沒夜打遊戲的生活,靜下心來自學編程。當時想做一名android開發工程師,查找各種資料,買了一堆書,都沒什麼起色。記得後來是在網上看了黑馬的java入門視頻,然後讀了郭霖大神的《第一行代碼》慢慢有點感覺了,後來按照自己的想法陸陸續續做了幾個demo,也積累了一些成就感:
1.耐得住寂寞很重要!
2.毅力,自制力有其中一項強於常人的話,當個程序員小羅羅還是沒問題的!
3."天才是百分之一的靈感,加百分之九十九的汗水,但是百分之一的靈感遠遠比百分之九十九的汗水重要的多"你的目標如果僅僅是年薪10萬,可以忽略這點!
4.喜歡問這種問題的,好多都是虎頭蛇尾,一分鐘熱度!沒回答的動力了,湊合看吧!來,讓我們一起回顧一下 小馬過河 的故事 (逃
自學編程其實並不是一件難事,只要你對編程很感興趣,興趣是入門的關鍵之一(不是有句話叫興趣是最好的老師么)。但還有一點就是你是否具備良好的自控能力,初學編程是相當枯燥的,而且難度也很大(當然沒有土木工程那些各種力學難),你每天都在面對一個破黑窗口,學了半年都有可能什麼都做不出來,這些都是很正常的,再有就是一點別懶,要敲代碼,每天敲,不停的敲,千萬不要吾日三省吾身,只要你挺過這一時期,你會發現自己寫代碼就像開了掛一樣!
還有一點就是題主學過c嗎,c是入門的關鍵點,相信大多數人入門都是學的c吧,沒有學過c就搞c++感覺有點懸啊!c++很多理論知識都是c的。c++建議還是學完c以及數據結構再學。那時候再學c++會很上手。優秀的程序員也分很多個方向的呀,首先應該是選擇方向。比如前端工程師,軟體工程師等。那麼問題來了,你是想做那個方向的呢?
不難,我這種非211,985的軟工垃圾都靠的是自學編程,教材沒翻過,gayhub, stackoverflow,cnblogs,msdn,,mdn,bing,http://z.cn助我神力
推薦閱讀:
※go語言介面的優勢?
※LintCode,hihoCoder,LeetCode有什麼區別?
※是什麼原因導致國內計算機教育不教 vim/emacs 這類編輯器的使用?
※有沒有人怎麼都學不會演算法?
※有沒有什麼操作方便的非圖形操作系統?