目錄
方法1:網絡編程1、瞭解網絡編程的含義。2、瀏覽不同的網站,瞭解它們的外觀。3、學習至少一種頭腦風暴技術/方法,並學習一個用來實現頭腦風暴的軟件。4、熟悉網站結構。5、趕緊學一門圖形設計的課程。6、瞭解網絡下部構造的基本情況。7、學習HTML和CSS語言。8、學習XML及其相關技術,比如XSL和XPath(不是必需,僅作推薦)。9、先建立簡單的靜態網站,直至你熟悉並習慣HTML語言。10、學習客戶端腳本語言。11、熟悉你所學的客戶端腳本語言。12、學習至少一種服務器端腳本語言。13、學完服務器端編程語言之後就開始創建一個試驗項目。14、獲得你的網站,開始用你自己的網頁實驗。方法2:桌面軟件編程1、弄清楚桌面軟件編程是怎麼回事。2、瞭解不同的電腦硬件結構。3、學習一種入門級(小孩子學的那種)編程語言。4、學習程序化、面向對象、函數設序設計規範的入門。5、學習一種程序化程式設計語言的入門課程。6、學習至少一種進階建模技術,比如UML 或ORM。7、開始編寫一些小的主控臺應用程式或類似的應用程式。8、學習一門你選擇的編程語言的更進階課程。9、應用你所10、至少再學習一門編程語言規範的入門課程。11、試着比較你所學的兩門編程語言。12、利用你學過的一種語言來學習可視化編程概念。13、開始把你所學的知識運用到你設計的軟件小工程中。14、創建一個虛擬的"畢業工程"。15、透過學習更進階的課程、更加註意細節以及在網上學習搭建架構的技巧,來加深對你學過的可視化架構/庫/包的理解。16、搜尋其他含可視化元素的包/庫並學習它們。17、學習圖形學課程(而非圖形設計)。18、成爲遊戲程序員(不是必須的)。方法3:分佈式程序設計1、處理分佈式應用編程。2、快速瞭解通信系統及其硬件。3、熟悉網絡硬件結構和設備,比如集線器、接線臺和路由器。4、學習網絡協議的課程。5、學習XML 語言,並熟悉它。6、開始學習一門shell腳本語言。7、開始時用上你學的腳本知識,只運用程序化程式設計。8、使用你所學的腳本語言,寫出實現機器之間通信的腳本。9、轉移到桌面腳本/編程語言。10、專注於語言的核心部分,尤其hi那些支援網絡。11、學習分佈式應用設計與結構的課程。12、使用你所學的編程語言來了解服務部分建構和服務。13、學習如下技術中一種或更多。方法4:庫/平臺/框架/核心編程1、瞭解什麼是核心編程。2、學習一門支援創建可重複使用內容/包的編程語言,如果你還沒學過的話。3、學習一門UML 和ORM的進階課程。4、學習軟件工程的課程。5、學習至少一個模組,基於內容的、面對對象的和 事件驅動編程技術和概念。6、進一步瞭解不同的操作系統及其支援的編程架構。7、集中學習獨立平臺架構、編程語言和技術。8、如果到目前爲止你學習的編程語言具有ANSI/ISO/EEE/W3C標準版本,那麼掌握這些標準。9、嘗試模擬簡單的、已經建立的庫,尤其是開源的庫。10、在你的編程領域內尋找開源的包。11、學習不同方法。方法5:系統編程1、瞭解系統編程的定義。2、跟着"桌面應用程序員"的前三個步驟。3、學習線性代數的入門課程。4、學習微積分課程。5、學習邏輯學和/或離散數學課程。6、瞭解不同的"準操作系統"。7、學習計算機硬件結構的課程(或者作爲替代,看看書)。8、深入理解不同的計算機硬件平臺。9、初步熟悉你所選擇的硬件平臺/操作系統的彙編語言。10、學習ANSI C 和 C++ 語言,還有程序化程式設計的一些概念。11、在你選擇的平臺上理解並實踐C/C++標準庫。12、搜尋網絡資源、書籍和課程來理解你的平臺獨特的C風格。13、用C/C++練習編寫進階代碼。14、學習更進階的Assembly。15、學習操作系統設計的課程。16、尋找並閱讀你所選擇的平臺的相關文章。17、練習你已經掌握的知識。18、以最有益的順序學習語言。方法6:編程科學1、瞭解編程科學家是做什麼的。2、累積和四年制計算機科學學歷同等多的科學知識。3、選擇特定的領域。4、考慮獲取更進階的學歷。5、瞭解你選擇的編程領域的相關技術和編程語言。成爲程序員是一個日積月累的過程,需要日復一日年復一年的技能增長。編程本身是有趣的,並且有回報(腦力層面、精神層面、經濟層面)。這份指南不能保證你輕鬆當上程序員。不要神化下面這些步驟,從中你大概能瞭解在現今編程界如何成爲一名程序員。1、瞭解網絡編程的含義。網絡應用是指設計在網絡結構頂層的軟件部分。這就意味着這些應用是透過諸如火狐或IE之類的瀏覽器來處理的。架構於網絡結構的頂層並不一定要連接到網絡。這就是說網絡應用建立在如下標準網絡技術的頂層:HTTP
FTP
POP3
SMTP
TCP
IP協議
HTML
XML
Coldfusion
ASP
JSP
PHP
ASP.NET
2、瀏覽不同的網站,瞭解它們的外觀。(右擊,選擇"檢視源"或按F12。)尋找網站類型/內容的多樣性,而非數量。通常你需要訪問以下網站類型中至少一種: 團體網站(商業公司,非營利機構/組織,政府組織)
網絡索引引擎(搜尋引擎,meta搜尋網站,專業化搜尋引擎,目錄)
數據挖掘網站
個人網站
資訊/百科全書式網頁(維基,數據單,技術規格,人工列表目錄,博客和日誌,新聞和新聞機構網站,黃頁,等等。)
社交網站(社交門戶,書籤網站,記錄筆記網站)
合作網站(這包含了上面提及的目錄,比如維基和博客)
3、學習至少一種頭腦風暴技術/方法,並學習一個用來實現頭腦風暴的軟件。例如:頭腦風暴圖和微軟Visio。
4、熟悉網站結構。指的是創建概念化網絡範式、網絡地圖和導航結構。
5、趕緊學一門圖形設計的課程。儘量學習至少一個圖形編輯/操作軟件包(不是必須的,但強烈推薦)
6、瞭解網絡下部構造的基本情況。包括瞭解以下: 基本網絡服務協議(HTTP,FTP, SMTP和POP3或IMAP4)
網絡服務器軟件(最好其中一個就是你以後主要工作的平臺)
網絡瀏覽軟件
郵件服務器和客戶端軟件
7、學習HTML和CSS語言。或許你還想要"所見即所得"軟件包來編輯HTML。
8、學習XML及其相關技術,比如XSL和XPath(不是必需,僅作推薦)。
9、先建立簡單的靜態網站,直至你熟悉並習慣HTML語言。
10、學習客戶端腳本語言。多數人要麼學Java,要麼學VB,但也有一些人學習Perl和DHTML。
11、熟悉你所學的客戶端腳本語言。潛意識裏提醒自己只用你學的那個語言。只有在你熟悉你的客戶端腳本語言之後才能進入下個步驟。
12、學習至少一種服務器端腳本語言。如果你只用一種服務器軟件,那就學其中一種編程語言。否則,你得每個服務器軟件都學至少一種編程語言。
13、學完服務器端編程語言之後就開始創建一個試驗項目。
14、獲得你的網站,開始用你自己的網頁實驗。
1、弄清楚桌面軟件編程是怎麼回事。多數桌面軟件程序員都是編寫商務需要的代碼,所以好好了解一下商業及其組織和經濟結構將對節省時間、提高效率大有裨益。
2、瞭解不同的電腦硬件結構。看看數字電路設計和電腦結構的入門級課程,但是也有人認爲這對於剛起步來說太超前了,所以看兩三篇說明的文章(比如 這一篇 和 這一篇)就夠了。學完第一種編程語言後你可以再返回這個步驟。
3、學習一種入門級(小孩子學的那種)編程語言。不要因爲你不是個小孩子就不好意思去學。這些入門級語言能大大減輕你正式學習第一門編程語言時的痛苦和壓力。然而這一步也不是必須的。你也可以在上一步之前完成。
4、學習程序化、面向對象、函數設序設計規範的入門。
5、學習一種程序化程式設計語言的入門課程。無論你以後選擇何種編程語言,在某種程度上它都要求程序化程式設計。此外,據多數程序員反映,程序化程式設計總的來說是瞭解編程的一個很好的切入點。
6、學習至少一種進階建模技術,比如UML 或ORM。
7、開始編寫一些小的主控臺應用程式或類似的應用程式。你可以利用編程書中的常見小練習。選擇一個工具,用你所學的編程語言編寫程序。
8、學習一門你選擇的編程語言的更進階課程。確保進展之前先理解下列概念,並能熟練運用。對程序用戶輸入輸出資訊。
程式化設計語言寫成的程序中的邏輯流程和執行流程。
聲明、分配和比較變量
編程結構分支,比如if..then..else 和 select/switch..case.
循環結構,比如while..do, do..while/until, for..next.
創建、調用程序與函數的編程句法
數據類型及如何操控
用戶定義數據類型(records/structs/units)及其使用
如果你的語言支援超載函數,理解它。
你選擇的語言的內存處理方式(指針,變量窺視,等等。)
如果你的語言支援運營商超載,理解它。
如果你的語言支援delegates/函數指針,理解它。
9、應用你所學的進階技能 面向對象的規範
10、至少再學習一門編程語言規範的入門課程。推薦學習每種範式的編程語言,多數進階程序員確實是這麼做的,然而,通常你開始時只學一種,應用所學知識訓練了一段時間,獲得了編程的鮮活經驗,然後接着學習另一種。試試下面的語言: 邏輯編程範式
函數編程範式
面向對象的範式
11、試着比較你所學的兩門編程語言。評估各自利弊。通常可按以下方法完成拿出你在學習第一門編程語言時編寫的簡單範例,現在用第二門語言重新編寫。
創建一個工程,儘量用上兩種語言完成它。有時取決於你選擇的工程和語言,你可能僅用一門語言還無法完成這個工程呢!
寫一份兩種語言之間相似結構和獨特之處對比的速查表或一覽表。
儘量使用另一門語言找到模仿這兩門語言中獨特之處的辦法。
12、利用你學過的一種語言來學習可視化編程概念。幾乎所有的編程語言都具有支援可視化編程和其他支援控制檯或類似控制檯編程的版本/庫。同時進行的包括: 初步瞭解事件驅動編程。在某種程度上,多數可視化編程依賴事件及事件處理(用上你選擇的語言)。
儘可能多的嘗試桌面軟件,理解軟件是做什麼的。多數軟件開發公司會提供產品的測試版,你可以拿來測試軟件。在完善用戶介面方面保持更新。
閱讀關於圖形用戶介面的文章或教程。
13、開始把你所學的知識運用到你設計的軟件小工程中。儘量把你的編程專業知識運用到你日常生活中的問題上。比如,編寫程序,批量重命名檔案,視覺上比較文字檔案,複製目錄裏的檔案名到內存/文字檔案之類的東西。剛開始簡單一點。
14、創建一個虛擬的"畢業工程"。把這個放到最後完成,用上你到目前爲止學到的可視化編程技術。
15、透過學習更進階的課程、更加註意細節以及在網上學習搭建架構的技巧,來加深對你學過的可視化架構/庫/包的理解。
16、搜尋其他含可視化元素的包/庫並學習它們。
17、學習圖形學課程(而非圖形設計)。對於想要寫出吸引人的用戶介面元素的程序員來說,這將大有裨益。
18、成爲遊戲程序員(不是必須的)。很大程度上游戲編程是被當作桌面編程的。如果你想成爲遊戲程序員,完成這些步驟後你需要進一步學習遊戲編程。對於遊戲程序員而言,圖形學課程是必須的,後續步驟中第二門語言應該選擇邏輯/函數編程語言(最好是Prolog或Lisp)。
1、處理分佈式應用編程。分佈式應用編程被許多人認爲是最難學的一種,它要求計算機和通信技術中的不同知識。
2、快速瞭解通信系統及其硬件。這個步驟不是必須的,但是對於理解網絡拓撲結構很有用。
3、熟悉網絡硬件結構和設備,比如集線器、接線臺和路由器。
4、學習網絡協議的課程。在你開始分佈式應用編程之前,你需要好好理解"開放系統互聯 (OSI) "模型、以太、IP、TCP、UDP和HTTP 。
5、學習XML 語言,並熟悉它。
6、開始學習一門shell腳本語言。對基於Windows的編程,可以是任何能與Windows腳本宿主相容的腳本。對基於Linux的編程,Bash腳本和 Perl就夠了。對這兩個平臺都強烈推薦Java,原因如下: 幾乎所有操作系統的都支援腳本宿主(Windows 腳本宿主默認支援java ,大多數Linux發行版都有支援java腳本控制的包)。
許多開發者認爲它很容易學。
當你需要學第二門編程語言(C,C++,C#,Java和J#都有ALGOL開源句法)時,它擁有的ALGLO開源句法就能使你熟悉更多編程語言
透過學習java,你會熟悉網頁的客戶端腳本,這可謂一大福利!
7、開始時用上你學的腳本知識,只運用程序化程式設計。之後,根據你的腳本語言和它所支援的,你可以用上更進階的編程技巧和範式。所有的腳本語言在某種程度上都有程序化程式設計的一些方面。
8、使用你所學的腳本語言,寫出實現機器之間通信的腳本。學習完成這個所必需的東西。簡單的通信就足夠了。
9、轉移到桌面腳本/編程語言。一個比較好的是多範式語言,比如Python。簡單瞭解第二門語言。有許多理由讓多數程序員選擇java。然而,在這個領域內C#正在獲得多數優勢。Java和C#被青睞的原因如下:它們是面向對象的編程語言,使大量程序員免遭實現細節之苦,因爲它們都支援組成部分(代碼單元、預編譯,它們可以執行特定任務,並被用到其他程序中)。
它們支援事件驅動編程,在某種程度上還支援OO和程式化程序設計。
建立語言的架構按屬性分佈(比如Java)。
有許多現成的包來處理。社交網絡同時作爲開原始碼和架構內置包,這使得程序員繼續其他人工作更加容易。
10、專注於語言的核心部分,尤其hi那些支援網絡。少注意用戶介面元素,比如輸出,視窗設計和技術等。
11、學習分佈式應用設計與結構的課程。可以透過書本、網上教程或學術課程來完成。然而,十分有必要理解分佈式應用的結構及其概念。
12、使用你所學的編程語言來了解服務部分建構和服務。
13、學習如下技術中一種或更多。推薦你每一種都瞭解以下。多數分佈式應用程序員不會止於一兩門編程語言,他們會每個操作系統各學至少一種語言。這是因爲如果你希望你的應用"分佈式",你應該至少爲每個主要的操作系統各提供一個版本。公共對象訪問代理體系結構(CORBA)
簡單對象訪問協議(SOAP)
異步JavaScript和XML(AJAX)
分佈式組建對象模型(DCOM)
.NET遠程處理
XML 網絡服務
1、瞭解什麼是核心編程。核心程序員幾乎都是進階程序員,已經從編寫應用轉變爲給其他程序員編寫代碼彙編。
2、學習一門支援創建可重複使用內容/包的編程語言,如果你還沒學過的話。
3、學習一門UML 和ORM的進階課程。多數庫開發者使用其中一種,或兩種都用。
4、學習軟件工程的課程。
5、學習至少一個模組,基於內容的、面對對象的和 事件驅動編程技術和概念。你所學覆蓋越多編程範式和語言,你就能成爲越成功的庫/包程序員。
6、進一步瞭解不同的操作系統及其支援的編程架構。
7、集中學習獨立平臺架構、編程語言和技術。
8、如果到目前爲止你學習的編程語言具有ANSI/ISO/EEE/W3C標準版本,那麼掌握這些標準。無論何時儘可能使用標準代碼。
9、嘗試模擬簡單的、已經建立的庫,尤其是開源的庫。這在成爲庫/包程序員的早期階段十分有用。從簡單的包開始,比如單位轉換和中間科學計算包。如果你是大學生,利用你的非編程課程,嘗試把這些課程的方程式與核心科學用作庫。
10、在你的編程領域內尋找開源的包。首先下載包的二進制/可執行檔案。儘量去用,並發現它的利弊。之後,下載源,儘量弄明白它是怎麼完成的。嘗試再創造這些庫或其部分。剛開始,看完代碼再做;之後,先做再看代碼。後期階段,嘗試完善那些庫。
11、學習不同方法。給程序員分發、配送內容。通常,庫/包程序員傾向於以遞歸和/或迭代的思想來思考他們面臨的所有問題 。儘量把每個問題當作一個小問題的彙編(一系列更小的任務)或一個重複的不斷縮小問題範圍直至把這些更小的範圍彼此堆到一起的處理過程去思考。
庫/包程序員傾向於概括化。也就是說,當面臨一個特定的簡單的問題時,他們通常會想到一個更爲概括的問題,並努力解決這個更概括的問題,如此,小問題便不攻自破。
1、瞭解系統編程的定義。系統編程處理的是編程的"科學",而不是具體的編程實現。不要把你自己栓到特定平臺上。
2、跟着"桌面應用程序員"的前三個步驟。
3、學習線性代數的入門課程。
4、學習微積分課程。
5、學習邏輯學和/或離散數學課程。
6、瞭解不同的"準操作系統"。這可以透過以下途徑完成:瞭解操作系統是如何安裝的。
瞭解在一臺PC上如何安裝不同的操作系統(不是必須的,但作爲推薦)
安裝不止一種操作系統。不要在系統中安裝任何輔助包,相反,僅利用操作系統本身提供的函數。
7、學習計算機硬件結構的課程(或者作爲替代,看看書)。
8、深入理解不同的計算機硬件平臺。
9、初步熟悉你所選擇的硬件平臺/操作系統的彙編語言。稍後你會學習其他平臺/系統的彙編。
10、學習ANSI C 和 C++ 語言,還有程序化程式設計的一些概念。
11、在你選擇的平臺上理解並實踐C/C++標準庫。尤其注意標準模板庫(STL)和活動模板庫(ATL)。
12、搜尋網絡資源、書籍和課程來理解你的平臺獨特的C風格。
13、用C/C++練習編寫進階代碼。
14、學習更進階的Assembly。
15、學習操作系統設計的課程。
16、尋找並閱讀你所選擇的平臺的相關文章。如果你選的是基於Unix的操作系統就會容易得多。充分理解你今後將要用來工作的系統。
17、練習你已經掌握的知識。首先創建小的系統軟件。如下通常很有用: 試着重創你係統中已有的小工具。
試着把其他系統中的應用移植到你的系統裏。
18、以最有益的順序學習語言。此處是唯一強調第一門編程語言的地方。首先學習ANSI C 而不是 C++、C#、Java 、D。然後學習 C++。限制你第一門語言僅爲C是因爲系統編程要求程序員熟悉如下概念:原始碼真實、完全的編譯
低級對象輸出檔案
連結二進制
低級機器語言/彙編編程。C語言被某些人認爲是僞飾過的/更容易學習的彙編語言。只要你願意,它還支援插入彙編語言代碼,並且它只是程序化的(像彙編)。
1、瞭解編程科學家是做什麼的。編程科學家是十分進階的程序員,他們不開發程序,但他們研究計算科學,比如密碼學、編程語言和數據挖掘算法。沒有深入的學術研究是很難達到這個水準的。
2、累積和四年制計算機科學學歷同等多的科學知識。可透過如下其中一種完成: 獲得真實的學術學歷(這也是通常情況)。
從現代大學中獲得該學歷要求的課程大綱,自學課程或 分開一門門學。理論上這樣做也可以,但還是推薦第一種做法。
3、選擇特定的領域。越具體越好。這取決於你的偏好。但是這裏給出計算機編程領域中一些主要的課題:算法設計(例如搜尋、分類、密碼、解碼、錯誤檢測 等)
編程語言/編譯器設計/最優化
人工智能領域(模式識別,語音識別,自然語言處理,神經網絡)
機器人技術
科學編程
超級計算
計算機輔助設計/模式(CAD/CAM)
虛擬現實
計算機圖形學(計算機圖形學通常和圖形設計或圖形用戶介面設計混淆,計算機圖形學是研究如何表示和操控計算機系統中的圖形的領域)
4、考慮獲取更進階的學歷。或許你想追求碩士學歷或博士學歷。
5、瞭解你選擇的編程領域的相關技術和編程語言。