A. 如何學習編程
最近有幾個朋友私信問我如何學編程。我上知乎基本就是隨便寫點代碼來著,這種誤人子弟的問題我真的不敢亂說。也罷,找個問題隨便談談吧,聊勝於無。千萬不要當真。
我覺得SICP作為第一本編程書非常合適。SICP可以讓我們從零開始建立起整個對於程序語言和程序語言如何被解釋的粗淺認識。
知道什麼是數據,數據結構如何用一個小小的cons組織起來,什麼是過程,過程可以接受過程做參數並且返回過程,還有和解釋器息息相關的囿變數、自由變數、環境,等等這些重要的概念。
然後我們需要接觸機器相關的知識了。我建議學匯編。8086匯編就行了(硬核的話,或許可以學PDP-6匯編)。注意一開始從最基礎的move,add,lea開始。
然後引入棧的push和pop指令,有了棧就可以很方便的復用過程了。棧一定要好好理解,這是過程在機器裡面如何抽象的關鍵。然後引入call和ret兩個語法糖。學會匯編寫二叉樹就夠了。
因為用匯編寫二叉樹,一大堆dword,lea,肯定迷糊死了。這個時候可以上C語言了。看TCPL就行,簡單了解C語法就夠了。
C語言有指針和int等基礎類型,用C寫一遍二叉樹,明顯能體會到類型的好處。另外,C是匯編語言的又一層抽象,這里可以結合SICP里的數據抽象和過程抽象好好理解,C到底是怎麼抽象匯編的。
寫過一些C之後,了解類型的好處了。這個時候可以看TAPL。結合SICP就知道scheme基本上就是λNB的少糖形式。TAPL也是SICP這種從零開始逐漸復雜的結構,非常適合萌新看。完全弄懂λ cube和subtype就夠了。TAPL裡面還有很多細節,萌新看的時候可以忽略。
到這,編程基本上就入門了。對機器底層感興趣的去學體系結構;對數據結構和演算法感興趣的去打ACM;對PLT感興趣的繼續看ATTAPL,SF;對錢感興趣的忍著自己對C++語法的惡心去學C++;對John McCarthy感興趣的去學ML,等等。安排的明明白白。
B. 如何自學編程
自學編程對很多萌新來說是一件很難的事,但我們應該要克服這個困難。畢竟學習從來都不是一馬平川的坦途,等著別人來教,那就意味著自己會永遠被限制在一個小圈子裡。
關於如何自學編程,我們首先要有一個明確的目標。很多萌新在初學編程的時候都喜歡想東想西,看到黑客很酷就想學滲透搞信息安全,看到別人做的 游戲 很炫,就想去學 游戲 開發。殊不知,學習一道,最忌三心二意。在初學之時,我們一定要明確自己的目標,然後朝著它前進。東搞一下,西搞一下,到頭註定是竹籃打水一場空。
明確好自己的目標後,就要對自己所選擇的方向做一個大概了解。如常用開發語言、主流技術這些。再對自己的學習路線進行合理的規劃,為什麼要制定一個學習路線規劃了?一是能讓你對未來的學習有一個明確的大概認知,腦袋裡面想的始終不如落實到的紙面上;二是能在學習之初給你帶來一定的信心提升,而且每實現一個目標都能給自己帶來一定成就感和更多的信心,以此來提高繼續學習的動力,避免學著學著就不想學了的情況;三是起到一個督促作用,計劃既然已經做出來了,那就要去落實,沒落實的話一般人心理或多或少都會想著這個事,心裡空落落的以此逼迫自己去學習。
講完了做計劃的用處,再來講講做計劃時常入的誤區。很多萌新總是計劃的很好,排的滿滿的,想的很多很好,卻忽略了實際情況,以至於執行總是不能到位,挫敗感不斷積多導致放棄學習。所以我們一定要注意,在制定學習計劃的時候一定要考慮自身因素,如自己的學習能力、自己的管控能力等。其次是對於做計劃這件事,我們最好是自己來做,別人的計劃頂多隻能用來參考,直接生搬硬套很容易導致不符合自身的情況出現。每個人都有每個人的學習方法與方式,可借鑒可參考,一味死磕註定路會越走越窄。從自身出發,去尋找最根本的解決。
在制定計劃的時候我們可以搭配一些腦圖工具來讓計劃更快的制定好且條理清晰,如筆者想要學習Web前端,就先了解Web前端的基礎知識是哪些,進行記錄並安排好學習順序。後期的進階知識,項目實踐都可以用上面的方法實現。
這個部分是讓大家對自己的學習路線進行梳理並簡單了解自己所要學習的知識,破除對學習的恐懼和迷茫。
製作腦圖的工具大家可以自行選擇,常用的如XMind、幕布、網路腦圖、ZhiMap等(排名不分先後順序,選擇自己用的順手的即可。網路腦圖、ZhiMap為在線腦圖工具)。
定完了計劃,做好了腦圖,就到了執行的時候了,我們在這一步可以使用番茄鍾類的工具來進行提高己身執行力,如番茄ToDo、番茄土豆等。在這里我們需要注意的是,工具終究只是外物,是外力是靠不住的,過分依賴外力的後果就是被外力所束縛;工具所起的作用只是輔助和提醒,關鍵還是要靠我們自己去執行。學習一事是自己的事,是於自己有益的事,我們如果有拖延症、懶癌那我們一定要克服它們,在心裡在腦海中反復提醒自己不要被拖延和懶惰吞噬,不要被一時的歡娛而引誘,自律很痛苦,但沒有自律的人生會更痛苦。
學習過程中,切忌好高騖遠,學著眼前的,想著後面的,更不可一口氣吃成個胖子,學習一道還是要一步一個腳印為好,當前所學最好是要融會貫通,不濟也得要明白學的是個什麼東西,一味追求效率豈不落了下乘?萬丈高樓平地起,基石是重中之重。
遇到問題,我們不要直接去問別人。一定要自己先思考而後實踐,閱資料翻看文檔,尋求自己的解決方法,萬般未果之後再去尋求他人的幫助。在獲取到他人幫助時,我們也不要一味接受,可以將他人的方法與自己先前思考實踐所得來的成果進行互相印證,尋找自己錯在哪,還有哪些不足。吃了一塹,那就要長一智,不要為了解決問題而去解決問題。
我們生在了一個很好的時代,這個時代有互聯網,使得我們獲取知識相對再簡單了很多。在互聯網上獲取各種資源我們必不可少的要用到搜索引擎,最常見的是網路搜索,但做為學計算機的我們還應該知道"傳說"中的Google搜索,小眾的必應搜索和秘跡搜索。為什麼要知道這些了?首先我們要明白,網路搜索雖然本土化做的相對較好,但有時候並不是那麼靠的住,這個時候就需要其它搜索引擎上場了,如果你在網路搜索上沒有找到自己想要的答案和資源,何不試試其它搜索引擎了?
了解完搜索引擎我們再來了解一些比較常用的學習資源獲取網站和平台。首先我們要提到CSDN(Chinese Software Developer Network)中國專業IT社區,也是中國最大的IT社區,有著非常多(混雜)的學習資源,是萌新學習時必會接觸到的一個社區網站。
其後是博客園,作為開發者的知識分享社區和純凈技術交流社區,博客園相比CSDN"簡陋"了許多,但相應的也簡潔不少,也有著不少的開發者進行經驗和資源分享。
上面提到的都是社區類型的網站,但我們的學習光靠社區還是不夠的。社區雖然資源多,但大多不夠系統和優質,萌新學習起來很容易懵圈,而且萌新階段學習過程中必不可少要接觸一些文字教程和視頻教程,這時候就要輪到那些專門做相關方面的網站顯身手了。
文字教程,可以去菜鳥教程上面尋找,菜鳥教程上的文字教程相對來說全面。萌新前期學習的知識基本都能找到。如果菜鳥教程上的資源不夠滿意,還可以去自己想學習的技術社區尋找,基本上一門技術和編程語言都有自己相應的社區。再以Web前端為例,學習Web前端,就可以去W3School教程(全球最大的中文 Web 技術教程)上尋找學習資源。當然,除了上述的尋找方法我們還可以依靠搜索引擎和自己上電商網站購買書籍來獲取文字教程和資料。
視頻教程資源的獲取就要比文字教程資源的獲取要多很多了。國內的諸如中國大學慕課、慕課網、優達學城、網易雲課堂、網易公開課、騰訊課堂等一些列視頻教程網站(中間有些是付費課程,個人按需選擇並分辨即可)。
擁有了學習資源,我們在自學過程中難免會遇到一些自己甚至身邊的同學朋友及老師也解決不了的問題,這個時候我們除了可以去社區發帖提問還可以去專門的問答平台提問,國外有個叫StackOverFlow的網站就是一個IT技術問答網站,不過它要轉比較久的圈圈才能打開,而且使用體驗對萌新來說可能並不是很好。我們可以去SegmentFault(思否,以StackOverFlow為原型的技術問答網站)看看,說不定就會有令我們滿意的答案。
對於一些學習能力比較強的同學來說,除了在學習之餘做些小項目之外難免想要自己動 手參與到真正的項目中去,那可以去Github上找一找有沒有適合自己的項目。作為世界最大的開源中心及有軟體項目託管平台,上面一定會有你的"真愛"。
文末,附上一些未介紹的網站,有興趣的同學可以自己去發掘一下。
V2EX、掘金——社區類
InfoQ——知識拓展
程序員的工具箱——在線工具箱
Office-converter——在線文件轉換器
FirefoxSend——在線臨時網盤
Bigjpg——AI人工智慧圖片無損放大
宜配屋——國內外公開課下載
IT eBooks——電子書下載
牛客網——刷題
codingground——在線使用的免費 IDE 和終端工具
Speedtest測速網——在線網速測試
道阻且長,仍需努力。縱有疾風起,人生不言棄。
C. 游戲編程怎麼學
可以選擇去機構學,也可以自己找資料自學。自學的話,要先規劃好自己要學哪些知識,從哪裡入手,有困難如何解決。機構學的話,就要選一個靠譜的機構。
主要學的內容如下:
1.游戲程序設計:C++程序設計入門;基本數據類型和輸入輸出;流程式控制制語句;數組、指針和引用、函數;程序結構和書寫規;范結構體和聯合體、類;繼承與多態;異常處理與程序調試。
2.演算法與數據結構:演算法分析;數據結構;基本演算法;STL的概念與使用;靜態庫與動態庫;XML庫的使用。
3.Win32程序設計:Windows程序入門;Windows消息;GDI繪圖游戲工具與MFC;網路編程基礎。
4.游戲數學和智能應用:游戲中的坐標系;矢量、矩陣;幾何碰撞;物理模擬;人工智慧與尋路演算法。
5.2D游戲技術與應用:2D游戲技術概論;游戲地圖系統;GUI系統;戰斗系統設計;任務系統;優秀的聲音引擎BASS;Cocos2D-X引擎;Box2D物理引擎。
互聯網行業目前還是最熱門的行業,學習IT技能之後足夠優秀是有機會進入騰訊、阿里、網易等互聯網大廠高薪就業的,發展前景非常好,普通人也可以學習。
想要系統學習,你可以考察對比一下開設有IT專業的熱門學校,好的學校擁有根據當下企業需求自主研發課程的能力,南京北大青鳥、中博軟體學院、南京課工場等都是不錯的選擇,建議實地考察對比一下。
祝你學有所成,望採納。
D. 如何自學編程
自學編程要做到將編程作為自己的愛好、對自己的電腦了解、確定自己的編程語言、多看書,具體介紹如下:
1、要想真正學習一門知識,就要先盡量保持將其保持為一種愛好,才能一步一步的學習,還要保持耐心,不能為了成果跳躍學習。這兩句話很重要,請在任何時候都要記住,無論那一門課。
2、要對自己家的電腦有一個充分的了解,包括他的位數(64位,32位),內存,型號,和版本,如果要編程的話,一定要對電腦的各個功能有詳細的了解
3、先確定自己要學的編程語言,將其語言環境和編程工具准備好。入門最好使用c-free,或Java(要准備語言環境)入門或是深入都可以使用eclipse,python(要准備語言環境)可以使用editplus。
4、多在當地書城或是網上購買一些所學習的語言的書,可以輕松自學,當然如果你認為僅僅是文字並不夠生動,可以看看一些優秀的教學視頻,但千萬不要放棄書本。
注意事項:
1、明確學習目的 學習編程對大多數IT業人員來說都是非常有用的。
2、邏輯思維能力的培養,學程序設計要有一定的邏輯思維能力,「邏思力」的培養要長時間的實踐鍛煉。要想成為一名優秀的程序員,最重要的是掌握編程思想。
E. 如何自己編程做游戲
自己編程做游戲方法如下:
1、基礎語言階段:常用的編程語言有,C,C++,JAVA,其中最廣泛被使用的就是C++,C++語言是一切游戲程序的基礎,換而言之,一個優秀的游戲程序員,必須非常熟練掌握並應用C++。
2、數據結構:在掌握C++之後,需要進行數據結構的學習,形象的講,就是那麼一大堆數據,如何去有序的排列其結構。通過對數據結構的學習,便能夠開始閱讀他人編寫的代碼,嘗試開發簡單的程序,可以實現一些編程者自己的構想,是每個程序員必須掌握的技巧。
3、「庫」的學習及應用:最常用的有MFC(微軟公司類庫),GUI(圖形界面庫),當然「庫」的知識及功能非常龐大,通常來說,熟練掌握一部分經常涉畢敗燃及的知識即可。4、游戲程序對於硬體的操縱。比如,內存,CPU,顯卡,這將會涉及到一些數學知識,比如立體幾何,線性代數等,但是也不用驚慌,並不是非常困難。通過對硬體的熟練操縱,才能將手虛游戲的畫面,流暢度等等充分給予表達。
5、對於相關知識的學習。包括物理,腳本,美術等等。不需要深入了解,但相關知識的豐富對於將來做游戲程序會有直接幫助。
6、對於游戲引擎的熟悉及使用。游戲引擎一般包括渲染器,內存管理器,組織管理幾部分。對游戲的畫面做出渲染,高效使用內存以及如何控制動畫播放等功能。熟悉引擎的使用,也將對於游戲程序員有直觀的幫枯缺助。