為什麼我的編程一直沒法入門?
@依雲 我是一個學生,從小對遊戲軟體編程這方面感興趣而已,希望以後能做一位獨立遊戲開發人。還沒有進大學,但是我希望在大學之前就開始學習,這樣我大學會有更多的時間去深入編程。積累了經驗,將來往這方面的工作就會順心一點。
我是兩年前開始學習編程的。當時在書店買了一本21天學會C語言的書。花了一年多的時間啃完了。最後一部分是做一個學生成績登記項目,分為6塊。我跟著講解做了3塊,沒有繼續做。因為我是在課餘的時候抽空做的,所有的代碼都寫在紙上,因為上學的時候沒有電腦。
後來又在網易公開課中看了6集的編程方法學,講的是java,卻沒有繼續看下去。因為是斯坦福大學的,英文就算有字幕看起來也不順,視頻中的編譯器是斯坦福大學的,所以我也沒法下載。雖說後面用了eclipse,但是java太冗長,總寫不出來什麼東西。
又在無意間發現了codecademy。然後在上面完成了Ruby課程的學習。
但是我一直做不出來什麼項目,因為當學完了基礎過後,根本就不知道幹嘛,畢竟沒人給我說下一步到底學什麼。
現在我會的恐怕就只有循環,數組,函數的簡單應用。至於如何從系統中調用什麼,然後什麼抓取,什麼執行什麼操作,我根本一點概念都沒有,根本就不知道從哪下手。
我看了很多的關於說編程如何入門的問題和答案,有些人說應該先學C,有些人說應該從腳本語言學走。
現在我想深入的就是Ruby,我買了一本松本行弘的程序世界,但是上面就是講Ruby的一些構造,對於一個菜鳥來說,很難從上面提取到什麼有用的地方用於實踐。
還有我下載了一本關於ROR的書,上面的知識總要牽扯到SQL等資料庫方面,那我還要去學習了資料庫才能繼續學習么?
於是我不知道我接下來該怎麼辦了。
希望大牛指導。==============================================================
我來補充下提出的意思:基礎語法都通了,不管什麼語言都大同小異。問題在於不知道怎麼把學習到的語法的東西變成項目。我思考的是,,編程實踐少,對各種函數庫,對應功能不懂,所以編不出來。那麼要如何克服這點?
典型的學而不用則罔。
你看了很多教材,很雜,沒有重點。從你的描述中我也看不到你有多少實踐。我學 C++/C 根本沒看什麼教材(學校那個當然不能算),特別是《21天學會XXX》的太浮躁了,扔掉吧。你看了這麼多,也不需要再找多好的教材了。多實踐,編程能力只會在實踐中提升。
至於 Java 的編程方法,你還看視頻。不得不說,你能看下六集我已經很佩服了。我現在連教材都看不下去,因為它太太太啰嗦了,大量代碼不是干實事,而是為了克服 Java 語言的不靈活性、所謂的「設計模式」而寫。
Ruby 是好東西哇,不過語法新奇好用卻並不簡單。更要命的是,你 Ruby 本身還沒學好呢就開始上 RoR 了。直接學 RoR 對於很多人也沒什麼問題,但是你基礎不行啊,SQL 沒入門吧?還有 HTML/CSS/JavaScript 的基礎、HTTP 的基礎……
不知道你為什麼要學編程。既然沒說的話,我建議你還是從自己可以用的小的程序開始。比如按自己希望的奇怪的規則重命名文件啦、統計點數據啦、抓點網頁啦什麼的,把你要做但是手工做很枯燥的重複性任務給自動化了。《伴隨我成長的編程書》 《關於編程的胡扯》 po主可以看一下我以前寫的博客,感受一下學習方法的重要性。
別看書,先玩起來再說,比如,找個好玩的遊戲,破解一下,搞個作弊金手指什麼的。。於是你就上癮了,想不學會都難。
現在我想深入的就是Ruby,我買了一本松本行弘的程序世界,但是上面就是講Ruby的一些構造,對於一個菜鳥來說,很難從上面提取到什麼有用的地方用於實踐。
就圍繞這個點來做個答吧。
程序語言是什麼? 程序語言是人類用於和計算機對話,控制計算機的語言。 從機器語言發展到高級語言,最終目標是讓我們更加符合人類的思維去操作計算機。 這個過程中誕生了面向對象、函數式編程等各種思想。
每門計算機語言背後,都難以擺脫的是語言作者對於計算機世界的抽象與表達。 而《松本行弘的程序世界》一書, 正好讓你有機會從Ruby之父那裡真正了解到Ruby這門語言的由來及其設計思想。
那麼讀這本書會對你有什麼樣的幫助呢?
1 有助於你理解Ruby的對象模型。 Ruby雖然也是面向對象思想,而且也吸取了很多其他語言的思想,初學者一看Ruby,會有種,很像python,很像perl之類的想法, 從Java轉過來的朋友,尤其會用Java的思想來學習Ruby, 其實這些都是Ruby學習路上的阻力。 而看這本書,會幫你化解這些受其他語言影響的困惑。
2 有助於你理解Ruby中包含的函數式編程思想。 Ruby不僅僅是個面向對象語言,更包含了函數式編程思想,Ruby可以算是Lisp的一種方言, 是Matz對Lisp編程模型的實踐。
3 有助於你理解Ruby的元編程。其實當你理解了Ruby的對象模型,那麼元編程也差不多了。
這本書至少得讀三遍。
回到樓主的問題,為什麼你編程沒有入門? 答案就是兩年的時間,在編程之道這條路上,根本不算什麼, 我編程8年,感覺去年才剛入編程之門。
至於Ruby on Rails, 那更涉及到整個Web開發編程知識, 資料庫的知識是必學的。
當你走上程序員這條路 , 就應該有無限學習的意識,不用問那麼多了, 學吧。
至於學習方式, 可以自己用Rails做個自己想做的站點, 邊做邊學就行了。 路是一步步走的,水是一口一口喝的, 感覺你還有個問題就是太心急了點。 一口吃不成胖子,還是先靜下心吧。我覺得最好的學習方法是想做什麼學什麼……
什麼學習編程先C語言,21天學懂C語言……
都是扯淡。
樓上排名第一的說得很靠譜,對於你最新的疑問嘛,剛好符合我最開始的說法,要用到的SQL所以就得去學。
做一個軟體所涉及的內容,遠遠比寫代碼要多。比如:你使用什麼構建器?軟體的文件布局是怎麼樣的(各種資源都放在哪)?軟體的整體架構是什麼樣的?這些都要具體去做才能提高。
你先做幾個完整的簡單應用,比如計算器、記事本什麼的。然後如果你依然對遊戲感興趣,你可以看看SDL一類的設施庫,Ogre一類的引擎。另外D3D或者OpenGL一定要掌握。
等有了一些使用經驗,看看講軟體模式的書,去了解一些抽象的整體概念。
推薦你《遊戲編程精粹》系列(game programming gems),涉及了遊戲編程的各個方面的新進展。內容涵蓋了基礎設施(線程、內存管理)、圖形、聲音、物理、AI、內容製作等等。我看過7,現在好像出到9了。
編程是個需要實踐的工作,帶著目的性做幾個練手的項目,很快就入門了。
一般來說,需要有強烈的興趣和明確的目的性,如果沒有很強的興趣,就是隨便看看,希望能達到目的,基本上學不會。就像看游泳的視頻和文章再多也無法學會游泳一樣。
如果確實毫無頭緒,可以找一些有趣的少兒編程語言如Scratch等,先培養興趣,做些項目提高信心。然後從Python等語言入手,做些小函數,小工具。如果想以編程為職業,那麼就多打基礎,像HTML,SQL,建網站神馬的都可以扔一邊去,等你明白了基礎,這些東西就是看兩天語法的事情,不值得現在花大力氣學習。The Elements of Computing Systems / Nisan Schocken 這種知識才是根本。
我也初學ror,看了樓主的描述,個人認為,如果你linux、css、html 一點都不懂,那你根本就學不了ror,而且你看的書(松本行弘的程序世界)也不行。。。。Programming Ruby、ruby on rails 這兩本才是可以能入門的 好吧!
首先問問自己學編程是為了什麼,學了那麼久,能實現自己的目的了么?
當初我的老師說過,你的技術水平與你所寫代碼行數成正比
看你描述,看書,看視頻,沒看到你說寫代碼啊??
代碼不寫怎麼提高?怎麼可能做出來項目???
學而不思 是表象,學而不用 才是根源。
只要自己嘗試去寫代碼了,自然就會出現很多問題,解決問題就會思考。
買了「21天學C語言」(一直討厭這種書名),每章節後有沒有練習題?自己練習了沒有??
看公開課視頻,老師講完每節課都有課後作業,去做了沒有??
codecademy倒確實是個練習的網站,但是練習的時候有沒有思考,為什麼這樣用?還能怎樣用?
另外,用,並不但只是給出的練習。自己當初學習編程是為什麼?
先現在想學ROR,那麼假定目的是學習建站?
- 給自己定一個建站的目標(定需求)
- 看書學習,在學習的過程中不斷的完善自己的網站
- 遇到不懂的問題去學習相關知識
- 重複 2、3、
從學習建設網站的角度來看,(個人認為)最佳的學習曲線是這樣的。
- 學習HTML,能夠在本地建立顯示內容的HTML文檔(手寫HTML,不要用工具建立)
- 學習CSS,能夠自己控制網站顯示的樣式(同樣手寫)
- 學習javascript,學會做簡單的本地動態交互
- 認識一下網站伺服器,IIS或者Apache或者支持ROR的什麼別的東西,學會發布網站
- 學習網站後台框架,初步建設一個能夠進行伺服器交互的網站
- 學習一個資料庫,了解SQL,基本的SQL操作能力
- 學習編程語言與資料庫交互的方式,把網站與資料庫銜接
- 學習ajax,優化網站的交互邏輯。
這樣,建站所需的基本知識都有了,可以把一切做的網站推倒重來一遍。
期間有什麼知識忘記了就複習一下。
推薦個一篇文章:程序員技術練級攻略
學Windows API或者Linux API以及OpenGL和遊戲演算法,寫一些自己想要的遊戲程序,學C和C++就夠了。
不懂你想要遊戲編程為什麼要學Ruby,你學習的目的性感覺很不夠,太盲目。經darasion提醒,ruby可以做遊戲腳本,但對於你來說這根本是還沒學會走就想跑了。你看書方法很有問題,C語言21天的書你居然用一年看完。一般我建議你要麼不看,要麼就在集中的一個周、一個月內看完。
另外你高三的話還是先好好學理科和數學(不知道你理科成績如何?邏輯思維如何?),考上大學的計算機系有同學老師指導再入門也不遲。
樓主不要氣餒,年輕就是本錢,我進大學才開始學編程。
樓主書看了很多,但不得要領。編程不光是對語言的熟悉,更重要的是一種對問題處理的一種抽象思維方式,習慣了這種思維方式,用什麼語言都是不重要的。沒有一定程度的編程積累,以及系統地學習基礎理論,這種思維方式是不能一夜間建立起來的,樓主一定要不斷寫,不斷學。
稱為獨立遊戲製作人的最快方式目前可能就是寫手機遊戲放到app store去賣了。不過遊戲製作本身可遠遠不止編程,美工,關卡設計,音效等等都得懂或者能找到合作者。
直接說,你對編程並沒有太大興趣,只是一直在逼著自己學而已,為了學習而學習。編程只是個工具和手段,你並沒有使用工具的慾望,所以效率低下。漫無目的的學兩年頂不過別人有目的地學兩個禮拜。
問自己為何無法入門,不如先問自己為何要學習編程?那是你對函數沒興趣。看到一個有趣的函數,把它用起來。實現一個新功能的程序。我知道大多數人看到那麼多函數,就好像記單詞一樣。難記~~~但是我們記單詞也是在現實中理解的圖像。只有在程序中思考函數的作用,才能記得多。我就是每天叫你背誦那麼多類,那麼多函數,你不去用,完全感受不到它的真實作用。也許是你需求不多,寫不出什麼項目。但是,當你學到一個新的函數的時候,試著寫一個小功能的程序。就好像我們學語文,學會了單詞,還得造句。造句會了,還要練習寫文章。這是一個複雜的過程。很多人覺得這個過程很複雜。難以堅持。
但是,為什麼作家能夠寫出這麼多優秀的作品?不是因為寫文章很容易。而是寫文章很有趣,它能表達自己的觀點,它能讓自己的思想傳播給人類。它能讓秘密公開於眾。它能讓知識普及。所以,編程也是一樣的。
不是硬要逼著自己寫一個軟體,寫一個能賺錢的軟體。我告訴你,賺錢的軟體不實用。實用的軟體不賺錢。
你知道推箱子,超級瑪麗,飛機大戰,五子棋,象棋,怎麼實現嗎?
你知道搜索引擎,操作系統,人工智慧怎麼實現嗎?
你知道輸入法,瀏覽器,編譯器,程序語言怎麼實現嗎?
你知道cpu,內存,顯卡,怎麼實現嗎?
你知道微機工作原理嗎?
你知道人類開源計劃嗎?
你知道安卓,linux嗎?
你知道蘋果嗎?
眼界要開闊,每天拿著windows不知道能幹嘛,不就是玩個遊戲,做個設計,寫個java。
其實,在你這個年紀的時候,國外的孩子在寫自己的編程語言。
在你這個年紀的時候,國外的孩子在組裝自己的電腦,而你還在紙上寫程序。
在你這個年紀的時候,國外的孩子在運營自己的網站,是CEO。
在你這個年紀的時候,國外的孩子在開發自己的遊戲,而你在玩英雄聯盟。
親,今天的落後,不是智商的落後。是行動的落後。
開始行動吧。動手去實現吧。雖然你什麼都不懂,但是,你需要懂所有。什麼都不懂怎麼改變世界。
那我如何開始呢?當然,不是喊口號。拿起教程,慢慢來,慢慢寫。多思考。多創新。不要想十天學會程序設計。十天,你連吃個海鮮都學不會。
對,編程需要大量的時間。大量的時間練習。大量的練習,大量的練習,大量的練習。大量的練習。直到搞懂。
我知道有的人學起來很慢,對一些單詞都記不住。沒有關係,還有中文。你只要知道它實現的功能,它在哪裡。用的時候,真不記得,就去複製過來。
2000年開始就有易語言了,當你現在去學易語言的時候,你發現,不用背單詞,不用寫單詞,不用排版。最後,你發現,這樣還是很難。是更難了。因為你從來不鍛煉。不鍛煉英文編程。
易語言實現一些功能的方法很奇怪。寫起來很繞口。也就是為什麼不方便。大冗雜。沒有效率。為什麼效率低,還報毒。就是因為給不會編程的人做了優化。導致中文編程越來越垃圾。
不會就要學啊。我們不能說不會就去搬磚啊。搬磚和編程不是一回事啊。在搬磚的過程中學會編程。你覺得搞笑么。
我讓你搬一千年磚,一千年後,你還是只會搬磚,不會編程。
所以,放下手中的工作,踏實的去編程。不要說我今天在工廠上班,我在努力學編程。
要學就要拿出所有的時間。不要想在工廠邊掙錢,還學會了編程。這是矛盾的。
去干吧。喜歡就去做吧。大不了浪費十年。十年之後,你不會後悔。因為,你很成功。
學而時習之,不亦說乎?
題主缺少的是練習,你應該直接做起你想做的事情,做一些好玩的事情。
什麼你沒有想做的事?那你學編程是為了什麼?
如果單純是以「學習編程找一份技術工作」的心態來學習,是很難學得下去的,建議還是找一些好玩有趣的東西來玩玩,不要局限於某個狹窄的領域。
如果你不知道有哪些好玩有趣的東西,可以看看hacker new,Hacker News,也可以看看v2ex的"創意"和「好玩」兩個節點,http://www.v2ex.com/?tab=creative,http://www.v2ex.com/?tab=play
你這種浮躁的人,不適合從語言基礎學起,先學習使用,回過頭來學基礎,先做一些自己感興趣的東西,直接做,別管原理,不會就google,動起來,最重要!
覺得你已經很好了,算有計劃,找到興趣點。
至於一年看完《21天學會XXX》,其實可以理解為那書難看。看了忘了就算了。
很多人一年也不是沒看完《C++ Primer》么。
如果是高三,那這些可以放一放了。或者算是複習累了的休息,一周看一兩個小時。
對獨立遊戲製作或開發感興趣,你路還很長,現在打基礎就行了。
1.看看《獨立遊戲大電影》
2.努力學習,上好的學校
3.平時多玩不同種類的不同遊戲
大學好好學遊戲開發。
大學好好學學圖形學,學學演算法,
大學可以看看Lua源代碼,看看雲風的書。
大學可以好好學不同平台的遊戲開發。
大學可以好好學學C/C++/C#/JS/HTML5/Lua/Python.....
大學可以好好學學遊戲策劃
大學可以好好學學當一個策劃
大學可以好好進入一個團隊當製作人
大學可以好好參加幾次大賽
大學可以好好玩遊戲
大學可以找個傳媒妹紙一起做遊戲。
大學可以找到志同道合的人一起做遊戲
大學可以安心做遊戲而不必加班
大學可以嘗試很多遊戲的方式
現在你要做的就是堅持。加油吧,少年。
PS: 希望堅持獨立遊戲,傳統的遊戲開發和獨立遊戲真是對立的。以上算是我的吐槽。看到題主換了好幾門語言,程序員雖然的確應該會好幾門語言,但是在初期最好是先精通一門,這是其一。
再就是關於題主不知道學會了語言的語法之後該做什麼。其實這時候已經是入門了,下一步就是進階,最好的辦法就是自己做一個項目,項目不一定要很大。
舉個最簡單的例子,如果你學習的是一門用於開發web應用的語言,那麼你可以去做一個很簡單的論壇,在製作過程中就會學到很多新的東西。論壇需要資料庫吧,這樣就學到了資料庫的東西,前端是不是要好看點,那樣css+js+div是不是又學會了?
《21天學會xx》這類書害了多少人,如果真的可以,我一年可以學多少門語言,那麼計算機還會有那麼多人學?
推薦閱讀:
※為什麼很多人不建議使用駝峰命名法,有什麼弊端么?
※一個主修語言學的女生想要學一些計算機語言和編程,學什麼比較好?
※設計RPC框架時,客戶端調用出錯是直接拋出異常好,還是返回errcode好?
※我國的 IT 培訓機構是否坑?
※程序員所積累的編程知識在十年後將有多少變得沒用?
TAG:編程語言 | Ruby | RubyonRails | 編程 | 編程入門 |