1. 新手如何學習編程
熟悉以下關鍵東西,可以邊學邊做,定期訓練,經常思考,長期積累:
1、語法。
2、基礎理論(數學、數據結構、演算法等)。
3、設計方法(編程原則、設計模式、框架設計等)。
4、庫(核心、基礎、UI、擴展、游戲引擎等)。
6、領域知識(游戲設計、網站設計等)。
7、開發工具(編輯器、IDE、自動部署等)。
8、項目管理(進度管理、分工協作、Bug管理、版本控制等)。
最普遍也是最重要的能力:創造力。努力分析並理解好做什麼以及怎麼做。要知道上面那些東西一開始都是不存在的。
具體方法包括:
1、快速閱讀入門教程和書籍,適合學習語言和基礎庫。比如我學java讀的《Java編程思想》,練習題做過一點,然後學ActionScript就沒讀過書,只讀過Adobe官方文檔《ActionScript 3.0編程》。
2、閱讀庫的文檔、實例、源碼。比如Flash、Flex開發,熟悉官方API很重要,很多細節要具體使用時才注意到,這時候最好做個筆記,雖然我從沒看過我的筆記。
3、做一個自己感興趣或熟悉的小項目,比如我就以黑白棋游戲作為多個語言的試水項目,一樣的邏輯,便於把關注點放在語言特點上。
4、自己動手豐衣足食。廚師有菜譜,程序員可沒菜譜。比如我做游戲,最關鍵的游戲編程知識全部是動手學出來的,很少有專門針對某個業務領域(如游戲)的編程書籍,要麼是入門書,要麼是模式書(如演算法)、理論書(圖形學),很少有書籍教你如何開發一個45度角地圖系統加編輯器的,全靠自己思考,以及看前人的代碼,需要時找些網路資料。關鍵是,可以培養最重要的創造力。
對於演算法和設計模式,可以研讀下,但是關鍵還是靠平時如何使用了。新手勉強不來的。
項目管理方面的,就得靠工作經驗了,多思考多提意見不要只走流程。
2. 如何快速掌握所有編程語言
一般來說應對這種挑戰有兩種態度:
其一,粗粗看看語法,就開始練習,邊查資料邊學習;
其二是花很多時間完整地把整個語言學習一遍,做到胸有成竹,然後再開始做實際工作。然而這兩種方法都有弊病。
第二種方法的問題當然很明顯,不僅浪費了時間,偏離了目標,而且學習效率不高。因為沒有實際問題驅動的語言學習通常是不牢固不深入的。有的人學著學著成了語言專家,反而忘了自己原本是要解決問題來的。
第一種路子也有問題,在對於這種語言的脾氣秉性還沒有了解的情況下大刀闊斧地拼湊代碼,寫出來的東西肯定不入流。說穿新鞋走老路,新瓶裝舊酒,那都是小問題,真正嚴重的是這樣的程序員可以在短時間內堆積大量充滿缺陷的垃圾代碼。
由於通常開發階段的測試完備程度有限,這些垃圾代碼往往能通過這個階段,從而潛伏下來,在後期成為整個項目的毒瘤,反反復復讓後來的維護者陷入西西弗斯困境。
實際上語言學習有一定規律可循,對於已經掌握一門語言的開發者來說,對於一般的語言,完全可以以最快的速度,在幾天至一周之內掌握其最常用的50%,而且保證路子基本正宗,沒有出偏的弊病。其實真正寫程序不怕完全不會,最怕一知半解的去攢解決方案。
因為完全不會,就自然會去認真查書學習,如果學習能力好的話,寫出來的代碼質量不會差。而一知半解,自己動手土法煉鋼,那搞出來的基本上都是廢銅爛鐵。比如錯誤處理和序列化,很多人不去了解「正路子」,而是憑借自己的一知半解去攢野路子,這是最危險的。
因此,即使時間再緊張,這些內容也是必須首先完整了解一遍的。掌握這些內容之後進入實際開發,即使有問題,也基本不會傷及項目大體。而開發者本人則可以安步當車,慢慢在實踐中提高自己。
以下列出一個學習提綱,主要針對的是有經驗的人,初學者不合適。這個提綱只能用於一般的庸俗編程語言學習,目前在流行編程語言排行榜上排前20的基本上都是庸俗語言。如果要學的是LISP之類非庸俗語言,或是某個軟體中的二次開發語言,這里的建議未必合適。還是那句話,僅供參考。
1. 首先了解該語言的基本數據類型,基本語法和主要語言構造,主要數學運算符和print函數的使用,達到能夠寫譚浩強程序設計書課後數學習題的程度;
2. 其次掌握數組和其他集合類的使用,有基礎的話可以理解一下泛型,如果理解不了也問題不大,後面可以補;
3. 簡單字元串處理。所謂簡單,就是Regex和Parser以下的內容,什麼查找替換,截斷去字串之類的。不過這個階段有一個難點,就是字元編碼問題。如果理解不了,可以先跳過,否則的話最好在這時候把這個問題搞定,免留後患;
4. 基本面向對象或者函數式編程的特徵,無非是什麼繼承、多態、Lambda函數之類的,如果有經驗的話很快就明白了;
5. 異常、錯誤處理、斷言、日誌和調試支持,對單元測試的支持。你不一定要用TDD,但是在這個時候應該掌握在這個語言里做TDD的基本技能;
6. 程序代碼和可執行代碼的組織機制,運行時模塊載入、符號查找機制,這是初學時的一個難點,因為大部分書都不太注意介紹這個極為重要的內容;
7. 基本輸入輸出和文件處理,輸入輸出流類的組織,這通常是比較繁瑣的一部分,可以提綱挈領學一下,搞清楚概念,用到的時候查就是了。到這個階段可以寫大部分控制台應用了;
8. 該語言如何進行callback方法調用,如何支持事件驅動編程模型。在現代編程環境下,這個問題是涉及開發思想的一個核心問題,幾乎每種語言在這里都會用足功夫,.NET的delegate,Java的anonymous inner class,Java 7的closure,C++OX的 tr1::function/bind,五花八門。如果能徹底理解這個問題,不但程序就不至於寫得太走樣,而且對該語言的設計思路也能有比較好的認識;
9. 如果有必要,可在這時研究regex和XML處理問題,如無必要可跳過;
10. 序列化和反序列化,掌握一下預設的機制就可以了;
11. 如果必要,可了解一下線程、並發和非同步調用機制,主要是為了讀懂別人的代碼,如果自己要寫這類代碼,必須專門花時間嚴肅認真系統地學習,嚴禁半桶水上陣;
12. 動態編程,反射和元數據編程,數據和程序之間的相互轉化機制,運行時編譯和執行的機制,有抱負的開發者在這塊可以多下些功夫,能夠使你對語言的認識高出一個層面;
13. 如果有必要,可研究一下該語言對於泛型的支持,不必花太多時間,只要能使用現成的泛型集合和泛型函數就可以了,可在以後閑暇時抽時間系統學習。需要注意的是,泛型技術跟多線程技術一樣,用不好就成為萬惡之源,必須系統學習,謹慎使用,否則不如不學不用;
14. 如果還有時間,最好咨詢一下有經驗的人,看看這個語言較常用的特色features是什麼,如果之前沒學過,應當補一下。比如Ruby的block interator, Java的dynamic proxy,C# 3的LINQ和extension method。沒時間的話,也可以邊做邊學,沒有大問題。
15. 有必要的話,在工作的閑暇時間,可以著重考察兩個問題,第一,這個語言有哪些慣用法和模式,第二,這個語言的編譯/解釋執行機制。
至此語言的基本部分就可以說掌握了,之後是做資料庫、網路還是做圖形,可以根據具體需求去搞,找相應的成熟框架或庫,邊做邊學,加深理解。對於一個庸俗語言,我自己把上面的內容走一遍大概要花2-3周時間,不能算很快,但也耽誤不了太多事情,畢竟不是每個月都學新語言。
掌握了以上的內容,就給練武術打好了基本功,雖然不見得有多優秀,但是肯定是根正苗紅,將來不必繞大彎子。就算是臨時使用的語言,把上面這個提綱精簡一下,大致能在幾天到一周內搞定,不算是太耗時,而且寫出來的代碼不會太不靠譜。
3. 編程怎樣自學
自學編程的步驟
一、確定編程方向
確定編程學習的方向。編程語言有多種:C++,C,C#,JAVA,Python等,每種語言都有不同的優缺點,可以根據自己的興趣方向選擇一門編程語言作為自己的學習目標。
二、基礎階段的語法學習
學習任何一門編程語言,都需要掌握其編程的語法規則,可以通過閱讀一些編程書籍,了解一些編程中的概念思想和基本語法。這對於後續的編程學習十分重要。
三、上機實戰
學習編程最重要就是需要多上機練習,所以電腦上需要安裝所學語言對應的編譯軟體,多看書,多敲代碼,實踐出真知。
四、多向他人學習
編程的學習離不開借鑒模仿,初學編程可以多看看厲害的人的編碼,多總結他人代碼的優缺點,反思自己如何能夠從哪些方面改進代碼,優化代碼。
編程入門先要學的內容
1、如果你能夠熟練的使用Windows的話,你就已經可以開始你的程序生涯了,打怪升級走起來!(PHP網站開發在線培訓課程)
2、首先從C語言開始。有的朋友可能認為C語言太難了,應該從VB開始。雖然,對於一個初學者來說,用一些控制項堆砌成一個小軟體會有一些成就感,但是,基礎才是最重要的!C語言對於數據類型的描敘,遠比VB更全面、明白,而這些正是編程中的根本!
3、學C語言,從數據類型,基本表達式,再到條件語句,循環語句,然後學習函數,再加上一些簡單的數組知識,足矣。到現在為止,你只要理解結構化程序設計的思想也就夠了!
4、有了以上的基礎,就要開始學匯編了。匯編剛開始學的時候很難,那些各種各樣的寄存器,分段的內存地址,很難理解,可是這些知識理解了以後,後面的內容就簡單了。到此,你會對計算機有更深一層的理解!
4. 如何快速學好編程
這邊是互聯網來it學校,源初中起步入學的
對於沒有編程基礎的人來說,要想高效的學習編程語言,需要做好以下幾個方面的事情:
第一:注重概念的理解。學習編程語言要從上到下對編程語言有一個整體上的認知,然後再自下而上逐漸掌握各種概念的作用。對於面向對象編程來說,最重要的概念就是類、對象、屬性、方法、封裝、繼承、多態、集合、異常處理、多線程等概念,掌握了這些概念基本上就對編程語言有了一個整體上的了解。
第二:注重實驗。實驗是驗證想法最直接的途徑,實驗也是鍛煉動手能力的重要途徑,尤其在學習的初期更應該看重實驗的作用,通過實驗可以建立概念的畫面感。編程語言本質上來說就是一種工具,只有多用才能越來越熟練,所以一定要注重實驗,理論上來說,實驗做的越多越好。
第三:注重交流。學習編程語言一定要注重交流的作用,如果在學習的過程中能與專業人士進行交流一定會節省不少時間,如果有人指導也會少走不少彎路。
第四:參加實習。在掌握了基本的編程語言知識之後,接下來應該找一個項目組參加實習,實習在學習編程語言的過程中會起到非常重要的作用,因為在實習的過程中會接觸到真實的項目,會快速的幫助程序員成長。
5. 如何更加有效的學習一門編程語言
在了解到,如何寫一個軟體或者程序後,想要深入的了解的話,那麼你就要補課了,什麼是數據結構,什麼是計算機網路,什麼是操作系統,只有了解這些之後,你才會發現,原來是這樣,為什麼介面是這樣的,演算法這么寫才更簡便呀。
快速有效的學一門編程語言,不是找一個視頻課跟著學,而是在學習的過程中,自己上手來敲一遍,這樣才能快速有效的掌握。
6. 電腦程序員怎麼學
程序員的崗位需求很多,例如大型網路公司、軟體開發公司等等都需要程序員。
程序員需要學習:
1、掌握數據及其轉換、數據的機內表示、算術和邏輯運算,以及相關的應用數學基礎知識;
2、理解計算機的組成以及各主要部件的性能指標;
3、掌握操作系統、程序設計語言的基礎知識;
4、熟練掌握計算機常用辦公軟體的基本操作方法;
5、熟練掌握基本數據結構和常用演算法;
6、熟練掌握C程序設計語言,以及C++、Java、Visual Basic中的一種程序設計語言;
7、熟悉資料庫、網路和多媒體的基礎知識;
8、掌握軟體工程的基礎知識,了解軟體過程基本知識、軟體開發項目管理的常識;
9、了解常用信息技術標准、安全性,以及有關法律、法規的基本知識;
10、了解信息化、計算機應用的基礎知識;
11、正確閱讀和理解計算機領域的簡單英文資料。
程序員必備技能:
1、熟練開發工具
做為一名程序員至少熟練掌握兩到三種開發工具的使用,這是程序員的立身之本,其中C/C++和JAVA是重點推薦的開發工具,C/C++以其高效率和高度的靈活性成為開發工具中的利器,很多系統級的軟體還是用C/C++編寫。
而JAVA的跨平台和與WEB很好的結合是JAVA的優勢所在,而JAVA即其相關的技術集JAVAOne很可能會成為未來的主流開發工具之一。
其次,能掌握一種簡便的可視化開發工具,如VB,PowerBuilder,Delphi,CBuilder,則更好,這些開發工具減小了開發難度,並能夠強化程序員對象模型的概念。
另外,需要掌握基本的腳本語言,如shell,perl等,至少能讀懂這些腳本代碼。
2、熟知資料庫
作為程序員,他們自然有自己的理由:很多應用程序都是以資料庫的數據為中心,而資料庫的產品也有不少,其中關系型資料庫仍是主流形式,所以程序員至少熟練掌握一兩種資料庫,對關系型資料庫的關鍵元素要非常清楚,要熟練掌握SQL的基本語法。
雖然很多資料庫產品提供了可視化的資料庫管理工具,但SQL是基礎,是通用的資料庫操作方法。如果沒有機會接觸商業資料庫系統,可以使用免費的資料庫產品是一個不錯的選擇,如mySQL,Postgres等。
3、了解操作系統
當前主流的操作系統是Windows,Linux/Unix,熟練地使用這些操作系統是必須的,但只有這些還遠遠不夠。
要想成為一個真正的編程高手,需要深入了解操作系統,了解它的內存管理機制、進程/線程調度、信號、內核對象、系統調用、協議棧實現等。
Linux作為開發源碼的操作系統,是一個很好的學習平台,Linux幾乎具備了所有現代操作系統的特徵。雖然Windows系統的內核實現機制的資料較少,但通過互聯網還是能獲取不少資料。懂得網路協議TCP/IP。
在互聯網如此普及的今天,如果您還沒有對互聯網的支撐協議TCP/IP協議棧有很好的掌握,就需要迅速補上這一課,網路技術已改變了軟體運行的模式。
從最早的客戶/伺服器結構,到今天的WEBServices,再到未來的網格計算,這一切都離不開以TCP/IP協議棧為基礎的網路協議支持,深入掌握TCP/IP協議是非常必要的。
至少,需要了解ISO七層協議模型,IP/UDP/TCP/HTTP等常用協議的原理和三次握手機制。
4、明白DCOM/CORBA/XML/WEBServices存在的意義
隨著技術的發展,軟體與網路的無縫結合是必然趨勢,軟體系統的位置無關性是未來計算模式的重要特徵之一,DCOM/CORBA是當前兩大主流的分布計算的中間平台,DCOM是微軟COM(組件對象模型)的擴展,而CORBA是OMG支持的規范。
XML/WebServices重要性不言而喻,XML以其結構化的表示方法和超強的表達能力被喻為互聯網上的「世界語」,是分布式計算的基石之一。
5、不要將軟體工程與CMM分開
大型軟體系統的開發中,工程化的開發控製取代個人英雄主義,成為軟體系統成功的保證,一個編程高手並不一定是一個優秀的程序員。
一個優秀的程序員是將出色的編程能力和開發技巧同嚴格的軟體工程思想有機結合,編程只是軟體生命周期中的其中一環,優秀的程序員應該掌握軟體開發各個階段的基本技能。
如市場分析,可行性分析,需求分析,結構設計,詳細設計,軟體測試等。
6、需求理解能力
程序員要能正確理解任務單中描述的需求。在這里要明確一點,程序員不僅僅要注意到軟體的功能需求,還應注意軟體的性能需求。
要能正確評估自己的模塊對整個項目中的影響及潛在的威脅,如果有著兩到三年項目經驗的熟練程序員對這一點沒有體會的話,只能說明他或許是認真工作過,但是沒有用心工作。
7、模塊化思維能力
作為一個優秀的程序員,他的思想不能局限在當前的工作任務裡面,要想想看自己寫的模塊是否可以脫離當前系統存在,通過簡單的封裝在其他系統中或其他模塊中直接使用。
這樣做可以使代碼能重復利用,減少重復的勞動,也能使系統結構越趨合理。模塊化思維能力的提高是一個程序員的技術水平提高的一項重要指標。
7. 作為一個程序員,至少需要掌握哪幾種編程語言
1、 C語言
C語言有多基礎在這就不做更多的描述了,現在勢頭很猛的幾種語言的底層都是C語言搞定,重要性不言而喻。作為最基礎的底層語言,對於有志於做系統工程師或者有架構師夢想的程序員來說,了解底層如何實現的,C語言是必備的。
2、Java語言
Java語言目前在應用范圍實在太廣,不得不選擇來學習,無論從手機App,還是到後天的雲端,還是在大數據方向,都java存在的影子,java相對入門還不是那麼難。
做過很多年java的幾乎都有這種感覺,java語言入門容易但是真要成為頂級高手真的很難,高級語言就存在這種特性,入手容易成為高手很難。
3、Python語言
Python目前在很多領域都在涉獵,而且在成幾何倍數增長的速度,py最初以爬蟲而聞名,現在在人工智慧以及大數據上都開始搶占自己的地盤,以至於很多主流的人工智慧框架很多都是以py切入的,而且越來越多,py是這三種語言裡面最簡單易學入門最簡單的語言。
注意事項:
當然從眾多語言之中選擇三門語言其實是件很糾結的事情。C++在某些方面比Java語言更加適合做底層的框架,是很多架構的最愛,也是程序員推崇的博大精深語言的代表。
從應用角度也在各個領域都有不同程度的涉獵。還有別的語言比如php,ruby,go等等都有自身鮮明的特性。不可能把所有的語言都有學到為,精力有限只能選擇最該學的去搞。
8. 怎麼學好編程語言
對於編程語言的初學者來說,如果想全面掌握一門編程語言,需要從兩個方面入手,一方面要掌握編程語言自身的語法,另一方面要掌握該編程語言的編譯過程,而這個過程需要掌握大量的計算機基礎知識,也涉及到數據結構和演算法設計的內容。
以Java編程語言為例,初學者首先可以從Java的基本編程語法開始學起,此時的重點在於建立Java的面向對象編程思想,搞清楚Java的編程過程。初期學習Java時要搞清楚各種抽象概念,這個過程需要通過大量的實驗來完成。由於Java語言的抽象程度比較高,所以學習的初期還是具有一定難度的。
在掌握了Java語言的基本語法之後,下一步需要從Java虛擬機入手(JVM),來進一步了解Java編程語言的解析規則,這對於提升對於Java語言的理解有非常直接的幫助。要想搞清楚JVM的機制,還需要具有一定的編譯原理基礎,這個過程也涉及到對於操作系統的了解。另外,在學習編譯原理的期間還會同時了解操作系統的體系結構,以及與解析效率關系密切的數據結構知識和演算法設計知識。
編程語言本質上只是一種工具,所以要想搞清楚整個編程語言的運行機制和自身特點,一定要多做實驗,通過實驗來建立各種概念的畫面感,同時也會驗證很多「猜想」。另外,在學習編程語言的過程中,還需要有一個大的學習方向,圍繞這個大方向來組織自身的知識結構,這對於提升就業能力有比較直接的影響。