如何成為一名程式設計師

來源:酷知科普網 2.97W

成為程式設計師是一個日積月累的過程,需要日復一日年復一年的技能增長。程式設計本身是有趣的,並且有回報(腦力層面、精神層面、經濟層面)。這份指南不能保證你輕鬆當上程式設計師。不要神化下面這些步驟,從中你大概能瞭解在現今程式設計界如何成為一名程式設計師。

步驟

(01)學習下列這些學科中一兩門引導性課程:邏輯學離散數學

如何成為一名程式設計師

(02)學習資料庫概念,比如表,檢視/查詢和程序。你可以使用任何簡單的資料庫包來完成這些,比如:MS AccessDB VFox ProParadoxMySQL是一個很值得學習的資料庫,因為它免費且通用,資料庫常常用於SQL查詢。

(03)想好你要成為哪種程式設計師。通常程式設計師會是下面某一種:網路程式設計師桌面軟體程式設計師作業系統程式設計師(有單系統,也有多系統)獨立平臺程式設計師分散式程式設計員庫/平臺/框架/核心程式設計師系統程式設計師核心程式設計師驅動程式設計師編譯程式設計師程式設計科學

(04)瞭解你的程式設計領域內相關技術和程式語言。下面的部分詳細給出了成為不同型別程式設計師所需的步驟。

如何成為一名程式設計師 第2張

網路程式設計

(01)瞭解網路程式設計的含義。網路應用是指設計在網路結構頂層的軟體部分。這就意味著這些應用是通過諸如火狐或IE之類的瀏覽器來處理的。架構於網路結構的頂層並不一定要連線到網路。這就是說網路應用建立在如下標準網路技術的頂層:HTTPFTPPOP3SMTPTCPIP協議

如何成為一名程式設計師 第3張

(02)瀏覽不同的網站,瞭解它們的外觀。(右擊,選擇“檢視源”或按F12。)尋找網站型別/內容的多樣性,而非數量。通常你需要訪問以下網站型別中至少一種:團體網站(商業公司,非營利機構/組織,政府組織)網路索引引擎(搜尋引擎,meta搜尋網站,專業化搜尋引擎,目錄)資料探勘網站個人網站資訊/百科全書式網頁(維基,資料單,技術規格,人工列表目錄,部落格和日誌,新聞和新聞機構網站,黃頁,等等。)社交網站(社交門戶,書籤網站,記錄筆記網站)合作網站(這包含了上面提及的目錄,比如維基和部落格)

(03)學習至少一種頭腦風暴技術/方法,並學習一個用來實現頭腦風暴的軟體。例如:頭腦風暴圖和微軟Visio。

(04)熟悉網站結構。指的是建立概念化網路正規化、網路地圖和導航結構。

如何成為一名程式設計師 第4張

(05)趕緊學一門圖形設計的課程。儘量學習至少一個圖形編輯/操作軟體包(不是必須的,但強烈推薦)

如何成為一名程式設計師 第5張

(06)瞭解網路下部構造的基本情況。包括瞭解以下:基本網路服務協議(HTTP,FTP, SMTP和POP3或IMAP4)網路伺服器軟體(最好其中一個就是你以後主要工作的平臺)網路瀏覽軟體郵件伺服器和客戶端軟體

(07)學習HTML和CSS語言。或許你還想要“所見即所得”軟體包來編輯HTML。

(08)學習XML及其相關技術,比如XSL和XPath(不是必需,僅作推薦)。

如何成為一名程式設計師 第6張

(09)先建立簡單的靜態網站,直至你熟悉並習慣HTML語言。

如何成為一名程式設計師 第7張

(10)學習客戶端指令碼語言。多數人要麼學Java,要麼學VB,但也有一些人學習Perl和DHTML。

如何成為一名程式設計師 第8張

(11)熟悉你所學的客戶端指令碼語言。潛意識裡提醒自己只用你學的那個語言。只有在你熟悉你的客戶端指令碼語言之後才能進入下個步驟。

(12)學習至少一種伺服器端指令碼語言。如果你只用一種伺服器軟體,那就學其中一種程式語言。否則,你得每個伺服器軟體都學至少一種程式語言。

(13)學完伺服器端程式語言之後就開始建立一個試驗專案。

(14)獲得你的網站,開始用你自己的網頁實驗。

桌面軟體程式設計

(01)弄清楚桌面軟體程式設計是怎麼回事。多數桌面軟體程式設計師都是編寫商務需要的程式碼,所以好好了解一下商業及其組織和經濟結構將對節省時間、提高效率大有裨益。

如何成為一名程式設計師 第9張

(02)瞭解不同的電腦硬體結構。看看數位電路設計和電腦結構的入門級課程,但是也有人認為這對於剛起步來說太超前了,所以看兩三篇說明的文章(比如這一篇和這一篇)就夠了。學完第一種程式語言後你可以再返回這個步驟。

如何成為一名程式設計師 第10張

(03)學習一種入門級(小孩子學的那種)程式語言。不要因為你不是個小孩子就不好意思去學。這些入門級語言能大大減輕你正式學習第一門程式語言時的痛苦和壓力。然而這一步也不是必須的。你也可以在上一步之前完成。

(04)學習程式化、物件導向、函式設序設計規範的入門。

(05)學習一種程式化程式設計語言的入門課程。無論你以後選擇何種程式語言,在某種程度上它都要求程式化程式設計。此外,據多數程式設計師反映,程式化程式設計總的來說是瞭解程式設計的一個很好的切入點。

(06)學習至少一種高階建模技術,比如UML 或ORM。

(07)開始編寫一些小的主控臺應用程式或類似的應用程式。你可以利用程式設計書中的常見小練習。選擇一個工具,用你所學的程式語言編寫程式。

如何成為一名程式設計師 第11張

(08)學習一門你選擇的程式語言的更高階課程。確保進展之前先理解下列概念,並能熟練運用。對程式使用者輸入輸出資訊。程式化設計語言寫成的程式中的邏輯流程和執行流程。宣告、分配和比較變數程式設計結構分支,比如 和 select/.迴圈結構,比如, e/until, .建立、呼叫程式與函式的程式設計句法資料型別及如何操控使用者定義資料型別(records/structs/units)及其使用如果你的語言支援超載函式,理解它。你選擇的語言的記憶體處理方式(指標,變數窺視,等等。)如果你的語言支援運營商超載,理解它。如果你的語言支援delegates/函式指標,理解它。

如何成為一名程式設計師 第12張

(09)應用你所學的高階技能物件導向的規範

(10)至少再學習一門程式設計語言規範的入門課程。推薦學習每種正規化的程式語言,多數高階程式設計師確實是這麼做的,然而,通常你開始時只學一種,應用所學知識訓練了一段時間,獲得了程式設計的鮮活經驗,然後接著學習另一種。試試下面的語言:邏輯程式設計正規化函式程式設計正規化

如何成為一名程式設計師 第13張

(11)試著比較你所學的兩門程式語言。評估各自利弊。通常可按以下方法完成拿出你在學習第一門程式語言時編寫的簡單範例,現在用第二門語言重新編寫。建立一個工程,儘量用上兩種語言完成它。有時取決於你選擇的工程和語言,你可能僅用一門語言還無法完成這個工程呢!寫一份兩種語言之間相似結構和獨特之處對比的速查表或一覽表。儘量使用另一門語言找到模仿這兩門語言中獨特之處的辦法。

如何成為一名程式設計師 第14張

(12)利用你學過的一種語言來學習視覺化程式設計概念。幾乎所有的程式語言都具有支援視覺化程式設計和其他支援控制檯或類似控制檯程式設計的版本/庫。同時進行的包括:初步瞭解事件驅動程式設計。在某種程度上,多數視覺化程式設計依賴事件及事件處理(用上你選擇的語言)。儘可能多的嘗試桌面軟體,理解軟體是做什麼的。多數軟體開發公司會提供產品的測試版,你可以拿來測試軟體。在完善使用者介面方面保持更新。閱讀關於圖形使用者介面的文章或教程。

(13)開始把你所學的知識運用到你設計的軟體小工程中。儘量把你的程式設計專業知識運用到你日常生活中的問題上。比如,編寫程式,批量重新命名檔案,視覺上比較文字檔案,複製目錄裡的檔名到記憶體/文字檔案之類的東西。剛開始簡單一點。

如何成為一名程式設計師 第15張

(14)建立一個虛擬的“畢業工程”。把這個放到最後完成,用上你到目前為止學到的視覺化程式設計技術。

如何成為一名程式設計師 第16張

(15)通過學習更高階的課程、更加註意細節以及在網上學習搭建架構的技巧,來加深對你學過的視覺化架構/庫/包的理解。

(16)搜尋其他含視覺化元素的包/庫並學習它們。

如何成為一名程式設計師 第17張

(17)學習圖形學課程(而非圖形設計)。對於想要寫出吸引人的使用者介面元素的程式設計師來說,這將大有裨益。

(18)成為遊戲程式設計師(不是必須的)。很大程度上游戲程式設計是被當作桌面程式設計的。如果你想成為遊戲程式設計師,完成這些步驟後你需要進一步學習遊戲程式設計。對於遊戲程式設計師而言,圖形學課程是必須的,後續步驟中第二門語言應該選擇邏輯/函式程式語言(最好是Prolog或Lisp)。

分散式程式設計

(01)處理分散式應用程式設計。分散式應用程式設計被許多人認為是最難學的一種,它要求計算機和通訊技術中的不同知識。

如何成為一名程式設計師 第18張

(02)快速瞭解通訊系統及其硬體。這個步驟不是必須的,但是對於理解網路拓撲結構很有用。

(03)熟悉網路硬體結構和裝置,比如集線器、接線臺和路由器。

如何成為一名程式設計師 第19張

(04)學習網路協議的課程。在你開始分散式應用程式設計之前,你需要好好理解“開放系統互聯 (OSI) ”模型、以太、IP、TCP、UDP和HTTP 。

(05)學習XML 語言,並熟悉它。

如何成為一名程式設計師 第20張

(06)開始學習一門shell指令碼語言。對基於Windows的程式設計,可以是任何能與Windows指令碼宿主相容的指令碼。對基於Linux的程式設計,Bash指令碼和 Perl就夠了。對這兩個平臺都強烈推薦Java,原因如下:幾乎所有作業系統的都支援指令碼宿主(Windows 指令碼宿主預設支援java ,大多數Linux發行版都有支援java指令碼控制的包)。許多開發者認為它很容易學。當你需要學第二門程式語言(C,C++,C#,Java和J#都有ALGOL開源句法)時,它擁有的ALGLO開源句法就能使你熟悉更多程式語言通過學習java,你會熟悉網頁的客戶端指令碼,這可謂一大福利!

(07)開始時用上你學的指令碼知識,只運用程式化程式設計。之後,根據你的指令碼語言和它所支援的,你可以用上更高階的程式設計技巧和正規化。所有的指令碼語言在某種程度上都有程式化程式設計的一些方面。

如何成為一名程式設計師 第21張

(08)使用你所學的指令碼語言,寫出實現機器之間通訊的指令碼。學習完成這個所必需的東西。簡單的通訊就足夠了。

如何成為一名程式設計師 第22張

(09)轉移到桌面指令碼/程式語言。一個比較好的是多正規化語言,比如Python。簡單瞭解第二門語言。有許多理由讓多數程式設計師選擇java。然而,在這個領域內C#正在獲得多數優勢。Java和C#被青睞的原因如下:它們是物件導向的程式語言,使大量程式設計師免遭實現細節之苦,因為它們都支援組成部分(程式碼單元、預編譯,它們可以執行特定任務,並被用到其他程式中)。它們支援事件驅動程式設計,在某種程度上還支援OO和程式化程式設計。建立語言的架構按屬性分佈(比如Java)。有許多現成的包來處理。社交網路同時作為開原始碼和架構內建包,這使得程式設計師繼續其他人工作更加容易。

如何成為一名程式設計師 第23張

(10)專注於語言的核心部分,尤其hi那些支援網路。少注意使用者介面元素,比如輸出,視窗設計和技術等。

如何成為一名程式設計師 第24張

(11)學習分散式應用設計與結構的課程。可以通過書本、網上教程或學術課程來完成。然而,十分有必要理解分散式應用的結構及其概念。

(12)使用你所學的程式語言來了解服務部分建構和服務。

(13)學習如下技術中一種或更多。推薦你每一種都瞭解以下。多數分散式應用程式設計師不會止於一兩門程式語言,他們會每個作業系統各學至少一種語言。這是因為如果你希望你的應用“分散式”,你應該至少為每個主要的作業系統各提供一個版本。公共物件訪問代理體系結構(CORBA)簡單物件訪問協議(SOAP)非同步JavaScript和XML(AJAX)分散式組建物件模型(DCOM)遠端處理XML 網路服務

如何成為一名程式設計師 第25張

庫/平臺/框架/核心程式設計

(01)瞭解什麼是核心程式設計。核心程式設計師幾乎都是高階程式設計師,已經從編寫應用轉變為給其他程式設計師編寫程式碼彙編。

(02)學習一門支援建立可重複使用內容/包的程式語言,如果你還沒學過的話。

如何成為一名程式設計師 第26張

(03)學習一門UML 和ORM的高階課程。多數庫開發者使用其中一種,或兩種都用。

如何成為一名程式設計師 第27張

(04)學習軟體工程的課程。

(05)學習至少一個模組,基於內容的、面對物件的和 事件驅動程式設計技術和概念。你所學覆蓋越多程式設計正規化和語言,你就能成為越成功的庫/包程式設計師。

(06)進一步瞭解不同的作業系統及其支援的程式設計架構。

如何成為一名程式設計師 第28張

(07)集中學習獨立平臺架構、程式語言和技術。

(08)如果到目前為止你學習的程式語言具有ANSI/ISO/EEE/W3C標準版本,那麼掌握這些標準。無論何時儘可能使用標準程式碼。

如何成為一名程式設計師 第29張

(09)嘗試模擬簡單的、已經建立的庫,尤其是開源的庫。這在成為庫/包程式設計師的早期階段十分有用。從簡單的包開始,比如單位轉換和中間科學計算包。如果你是大學生,利用你的非程式設計課程,嘗試把這些課程的方程式與核心科學用作庫。

(10)在你的程式設計領域內尋找開源的包。首先下載包的二進位制/可執行檔案。儘量去用,並發現它的利弊。之後,下載源,儘量弄明白它是怎麼完成的。嘗試再創造這些庫或其部分。剛開始,看完程式碼再做;之後,先做再看程式碼。後期階段,嘗試完善那些庫。

(11)學習不同方法。給程式設計師分發、配送內容。通常,庫/包程式設計師傾向於以遞迴和/或迭代的思想來思考他們面臨的所有問題 。儘量把每個問題當作一個小問題的彙編(一系列更小的任務)或一個重複的不斷縮小問題範圍直至把這些更小的範圍彼此堆到一起的處理過程去思考。庫/包程式設計師傾向於概括化。也就是說,當面臨一個特定的簡單的問題時,他們通常會想到一個更為概括的問題,並努力解決這個更概括的問題,如此,小問題便不攻自破。

如何成為一名程式設計師 第30張

系統程式設計

(01)瞭解系統程式設計的定義。系統程式設計處理的是程式設計的“科學”,而不是具體的程式設計實現。不要把你自己栓到特定平臺上。

(02)跟著“桌面應用程式設計師”的前三個步驟。

(03)學習線性代數的入門課程。

如何成為一名程式設計師 第31張

(04)學習微積分課程。

如何成為一名程式設計師 第32張

(05)學習邏輯學和/或離散數學課程。

如何成為一名程式設計師 第33張

(06)瞭解不同的“準作業系統”。這可以通過以下途徑完成:瞭解作業系統是如何安裝的。瞭解在一臺PC上如何安裝不同的作業系統(不是必須的,但作為推薦)安裝不止一種作業系統。不要在系統中安裝任何輔助包,相反,僅利用作業系統本身提供的函式。

如何成為一名程式設計師 第34張

(07)學習計算機硬體結構的課程(或者作為替代,看看書)。

(08)深入理解不同的計算機硬體平臺。

(09)初步熟悉你所選擇的硬體平臺/作業系統的組合語言。稍後你會學習其他平臺/系統的彙編。

(10)學習ANSI C 和 C++ 語言,還有程式化程式設計的一些概念。

(11)在你選擇的平臺上理解並實踐C/C++標準庫。尤其注意標準模板庫(STL)和活動模板庫(ATL)。

如何成為一名程式設計師 第35張

(12)搜尋網路資源、書籍和課程來理解你的平臺獨特的C風格。

(13)用C/C++練習編寫高階程式碼。

(14)學習更高階的Assembly。

如何成為一名程式設計師 第36張

(15)學習作業系統設計的課程。

(16)尋找並閱讀你所選擇的平臺的相關文章。如果你選的是基於Unix的作業系統就會容易得多。充分理解你今後將要用來工作的系統。

如何成為一名程式設計師 第37張

(17)練習你已經掌握的知識。首先建立小的系統軟體。如下通常很有用:試著重創你係統中已有的小工具。試著把其他系統中的應用移植到你的系統裡。

(18)以最有益的順序學習語言。此處是唯一強調第一門程式語言的地方。首先學習ANSI C 而不是 C++、C#、Java 、D。然後學習 C++。限制你第一門語言僅為C是因為系統程式設計要求程式設計師熟悉如下概念:原始碼真實、完全的編譯低階物件輸出檔案連結二進位制低階機器語言/彙編程式設計。C語言被某些人認為是偽飾過的/更容易學習的組合語言。只要你願意,它還支援插入組合語言程式碼,並且它只是程式化的(像彙編)。

如何成為一名程式設計師 第38張

程式設計科學

(01)瞭解程式設計科學家是做什麼的。程式設計科學家是十分高階的程式設計師,他們不開發程式,但他們研究計算科學,比如密碼學、程式語言和資料探勘演算法。沒有深入的學術研究是很難達到這個水準的。

(02)累積和四年制電腦科學學歷同等多的科學知識。可通過如下其中一種完成:獲得真實的學術學歷(這也是通常情況)。從現代大學中獲得該學歷要求的課程大綱,自學課程或 分開一門門學。理論上這樣做也可以,但還是推薦第一種做法。

(03)選擇特定的領域。越具體越好。這取決於你的偏好。但是這裡給出計算機程式設計領域中一些主要的課題:演算法設計(例如搜尋、分類、密碼、解碼、錯誤檢測 等)程式語言/編譯器設計/最優化人工智慧領域(模式識別,語音識別,自然語言處理,神經網路)機器人技術科學程式設計超級計算計算機輔助設計/模式(CAD/CAM)虛擬現實計算機圖形學(計算機圖形學通常和圖形設計或圖形使用者介面設計混淆,計算機圖形學是研究如何表示和操控計算機系統中的圖形的領域)

如何成為一名程式設計師 第39張

(04)考慮獲取更高階的學歷。或許你想追求碩士學歷或博士學歷。

如何成為一名程式設計師 第40張

(05)瞭解你選擇的程式設計領域的相關技術和程式語言。

特別提示

不管你想嘗試哪種程式設計,不管你想達到何種水平,考慮去學校或本地社群大學上課。不要被諸如“電腦科學”一類的術語嚇到。你參加的任何不需要預備課程的課程都應該集中教一些程式設計的基礎知識。在上課之前先諮詢一下老師或客服,確保這門課是你想要的,像“計算機文化”這樣的課很有可能更多地集中在教你更熟悉辦公應用之類。

熱門標籤