如何自學成為程序猿?
和前面的幾位不同,我不建議你從「基礎」開始,尤其是什麼:C語言,數據結構,離散數學……之類的,那是把你逼瘋的節奏(感覺這是知乎學院派的風格)。如果你自覺是神人級別的,當我沒說。
其實軟體工程發展到今天,編程已經是一個很「職業化」的技能。業內自嘲「IT民工」,每天「搬磚」之類的,就是這種現象的反應。不扯遠了,總之一句話,基本上都是些是個人都能學會的技術,沒有什麼神秘的。某些培訓機構招一些高考失利的考生,培訓兩年就把他們往公司里送,他們也一樣能勝任工作。所以自學也不是件難事。但前提是,你走對了路。
如果你從二進位、編譯原理、數據結構……這些開始,我估計你陷在裡面就出不來了——除非有名師指點或者天賦異稟,再或者有大機緣?
不要急著做這些「學究」式的學習研究,就像學開車一樣,不需要你從發動機原理學起是一樣的。程序/語言是讓你用的,就像車是讓你開的,明白了這一點,你就可以立馬輕鬆100倍。
所以,先選一輛「好開「的車,迅速的跑起來,享受這種微風拂面的快感和刺激,才是最重要的。
由於你的問題過於簡單,我不知道你成為程序員是想幹什麼,所以無法給你具體的建議。大致的:
如果你是想做網站,可以向從靜態頁面(Html、CSS、javascript)入手,做一個漂漂亮亮的頁面出來,先;然後加上一些功能,比如可以發布一篇文章,自然就需要構建動態頁面的語言,我推薦http://ASP.NET,原因無它:好上手。當然,你還需要資料庫,我推薦MSSQL,原因無它:好上手……這樣一步步下來,你很快就能看到自己的成果,可以不斷的產生自激勵,你才能走得更遠。其他方面,我不是很了解。但大致思路查不多,你想學遊戲,就儘快弄出一個坦克大戰出來;你想學Android,就馬上整一個小APP出來;你想做嵌入式,就儘快弄個小機器人出來,呵呵。總之,要儘快做出東西來,丑也好俊也好,都要有個東西放在那裡。看著自己的作品一點點成型的快感是難以言喻的!
這就是我反對從數據結構,離散數學開始的原因,一是這些東西很難學,更重要的是,費了九牛二虎之力,學了你也就學了,你能用它幹什麼?學這些應該是你有了一定的基礎,需要進一步提高鑽研的時候,才應該考慮的東西。
+++++++++++++++++++++++++++++++
我的相關文章:如何轉行(自學/培訓)到IT/編程/互聯網/軟體開發/?程序員30過後程序員歧視培訓出身的(是不是這樣?),那麼同樣歧視自學出身的人嗎?【野生程序員】:優先招聘++++++++++++++++++
開設了:項目管理和架構之路 - 知乎專欄,歡迎光臨。
—— 2016年9月18日++++++++++++++++++畢業一年,大學學習的是材料化學專業,可以說是和計算機半毛錢關係都沒,現在是一名安卓工程師(10k),大學有演算法數據結構基礎,半年Java和安卓自學成功,沒什麼難的,有興趣就好~
首先是要學習一下計算機原理,會枯燥無聊,不過這是基礎,至少要知道一些很基礎重要的概念,否則後續學習中遇到很多名詞都得問度娘,這就有點扯了。就像打遊戲一樣,總歸要點激勵才容易繼續下去。所以可以開始學一門語言。選擇一個自己想發展方向的相關語言來學。學的過程就是動手的過程,從hello world開始,一段段小代碼編譯通過跑出正確的結果,這就是出生地打怪的掉落獎勵了。當興趣被調動到一定程度了,也許會發現有的地方會莫名卡殼,或者代碼跑起來可能沒什麼錯但是就是看起來很齪,閱讀困難邏輯混亂什麼的。這時候就是補基礎的時候了,各種看起來會枯燥的書,什麼數據結構,編譯原理,資料庫,網路……(太多啦,隨便找個大學看看計算機專業課程吧),根據當時的疑惑點,或者你當前目標的需求,去學習。是的,我的建議是保持激勵,需求驅動,這樣學習才容易持續下去,也更有效率。
一:數學基礎
其實入門階段需要用到的數學知識並不是很多,但還是建議首先學些離散數學的一些基本內容,其中最重要的是數理邏輯。對計算機的數據存儲,有簡單的了解。知道在計算機中整數實數是如何存儲的。二:編程基礎
很多計算機專業的學生都是從C語言開始學起的。其實從哪門語言開始入門並不是特別重要,但是個人不建議首先學習弱類型語言。因為弱類型語言靈活性比較高,初學者難以掌握。像C,C++, java都是強類型語言,都是比較合適的入門選擇。但是注意不要幾門語言同時學。尤其是C++和java在對象操作上有本質的區別。往往會把自己給繞糊塗了。
順便說一下,學習這些語言需要基本的英語基礎,至少知道編程語言預設的關鍵字什麼意思。有的學習者因為在英語方面沒有自信,轉而去學習易語言,其實完全沒有必要。程序設計語言的精髓是循環和遞歸,所以看一個學習者是不是對編程技術入門了,就看它運用和循環遞歸的能力怎樣。遞歸會比循環稍微難一些,建議先多花時間學循環。在學習循環的過程中,免不了會遇到數組的操作。這也是初學者比較頭疼的事情。沒有辦法,只能多練,熟能生巧。C和C++有指針的操作,這是整個C/C++學習過程中最難的一個內容。個人的學習建議是,選擇一些經典的場景重點訓練。比如,C語言用到指針的常見場景有鏈表,還有函數的指針類型參數。傳遞指針參數的主要目的有兩個,一是傳遞數組,二是希望在函數內部改變變數的值。如果熟悉了這些經典場景,就可以做到舉一反三了。關於函數調用方面,自己平時在練習的時候就應該養成習慣,發現在代碼中出現重複的代碼段,就應該考慮把它封裝成一個函數。時間久了自然就會養成定義函數的習慣。三:進階學習
可以自己編寫一些小的工具,例如:1,日曆。根據輸入的年份月份輸出整個月的日曆。2,簡單的計算器。可以計算加減乘除混合運算。類似的小工具還有很多,可以自己在網上搜。有時候先借鑒人家的代碼,也未嘗不可。但最好還是自己敲一遍才能發現問題。
有了上面的編程基礎之後,就可以開始學習數據結構了。學習數據結構的目的並不是為了以後用得上,而是可以幫助自己寫出簡潔優美的代碼。這在工作當中是非常重要的。因為如果沒有數據結構,能夠寫出來的程序往往非常簡單。四:繼續提高當你熟練掌握一門語言的時候,你會發現別的編程語言都是一通百通。學習一門新的語言,大概一個星期就可以入門,如果你很聰明的話只要看幾個示例代碼就知道怎麼回事兒了。所以,這個時候可以去接觸一些別的語言。尤其是一些弱類型的腳本語言。一個合格的程序員,需要具備綜合的編程能力。前端的web開發後端的伺服器開發,資料庫操作,底層的操作系統方面的編程,操作系統腳本的編程都需要會一些。總而言之,要當程序員只能多寫多練。祝,學習進步。我是自學的,中學是文科,大學也不是計算機專業。純自學,哈哈。
計算機專業上了兩年的純靠考試前自學、平時不聽課的學渣來說兩句吧_(:з」∠)_
個人認為基本按照大學課程來自學就好了。
因為我們這些學渣也都是自學的_(:з」∠)_個人認為枯燥,會相當枯燥,即使我喜歡計算機。感覺枯燥了就動手寫寫小程序神馬的吧,個人最喜歡的課就是各種課設了。實踐出真知嘛(? ??_??)?怎麼高興怎麼學,重點是釣起自己的求知慾,就像看見一個未知的世界一樣,原來這個是這樣的……
問題是要學全學精,然後熟練,進階要注意細節,細節能被你注意,你就入門了。
從基礎的開始看啊,C語言,數據結構,離散數學這些基礎的看。。網上這種一系列的視頻很多的。。關鍵在於你自習能不能堅持下去。。
首先,你得喜歡編程,這一點我希望你能明白。其次從基礎學起,基礎很枯燥,因此你需要結合一些項目去學習。當你擁有基礎了,就可以開始尋找一個剛興趣的領域切入,比如說搜索,然後選擇一個簡單的項目,吃透這個項目中所用到的技能。當你能對你所選擇地項目熟練後學習其它軟體技能就相對容易多了!加我微信 open_mind_wc 希望我能幫到你!
首先要熱愛這門科學,只有你喜歡它,你才會花時間精力去把它做好,才會有持之以恆的心去做好這件事,如果只是學兩天覺得不奈煩,那學什麼都學不好,至於如何學嗎?很簡單,網上找教程,從簡單的開始,把基礎的東西先學一遍,然後操作一遍,比如學習C語言,你學一句,操作一句,看執行的結果,操作環境什麼的,或則要裝什麼軟體之性的,教程里一般都會有,可以去自學網或網易公開課那樣的地方去學一些基礎的。
c java 選一個,學會一個,其他語言觸類旁通
1、先定義好自己想往哪方面學,找好方向2、對該方向進行搜索,做個大概的思維導圖,需要學習什麼3、找本入門到精通的書和搜索下視頻簡要看下4、前面只是簡單入門,計算機基礎還是很重要加強學習,找該方向比較有代表性的書籍進行學習5、深華部分:多看博客、多練項目Java工程師成神之路程序猿關注的微信公眾號和網站
考慮清楚了,學的一般不如不學,想好要學了就得使勁專研,成為大牛才能有所用!不然沒啥意思
按照知乎大神的看法,你首先要會英文,離散數學,然後從計算組成原理,編譯原理,數據結構,演算法,接下來就要會asm,c/c++才有前途,然而上面我都沒有學過
題主為何放棄治療,要選一條不歸路。我模擬面試的時候面試官直接勸我們班的女同學不要從事開發工作因為身體熬不住。。。如果要學的話建議從簡單的入手不要考慮那些有一大堆庫和各種配置各種版本的(真的會逼瘋人的)。也不要買那種很專業的像磚塊一樣的書,我才不會告訴你我買的think in java800多頁,我才看了20多頁,現在一直在角落吃灰。
興趣導向!
沒有如何,只在於你是否真的想學,是否真的對這個行業有了解並很感興趣~~~
首先需要看一些計算機基礎的書,其次最好選一門語言,找一本這個語言比較好的書看著並且敲一下代碼,還有就是你得學會谷歌和百度,查找問題和查找資料離不開這個。
有事問google
為毛當程序員,最苦逼的工作,都他媽媽的不想幹了
推薦閱讀:
※一線城市互聯網公司程序員如何安家落戶?
※請問機械鍵盤與靜電容鍵盤優缺點?
※程序猿真的可以那麼牛逼嗎?寫出一組程序,從而得到某人的全部聊天記錄、網頁瀏覽記錄嗎?
※為什麼知乎這麼多it高手,也沒人提出把手機知乎設計得更簡便,甚至連夜間模式都沒有?
※如何尋找熱愛編程而且有經驗的程序員?