Becoming a programmer is a cumulative process that builds up your skills day after day and year after year, and programming can be fun and rewarding (mentally, spiritually and financially). This guide does not promise to give a magically easy way to becoming a programmer, and the ordering of the steps is not sacred, but you'll get a general outline of how to become a programmer in one of the modern programming fields.javascript
掌握程序員修煉之道,要成爲一名工資待遇很好,有職業前景的程序員,初級編程人員就必須經歷漫長的過程,並且隨着日積月累提升專業技能,編程也會帶來愉悅和回報(精神方面、物質方面、心靈方面)。雖然本文不能保證你輕鬆的邁向程序員隊伍,但會對你的編程領域有所幫助。
步驟:
html
一、Take an introductory course in one (or both) of the following disciplines:java
學習瞭解下列的一個(或兩個)入門級學科:
邏輯學
離散數學
二、Learn database concepts such as tables, views/queries and procedures. You can use any simple database package to do this, such as:git
瞭解數據庫的概念。可使用任何簡單的數據庫軟件包作到這一點,例如:
程序員
三、Decide what type of programmer you want to be. Programmers generally fall under one of the following categories:web
須要決定你想要當哪種程序員,程序員通常分爲以下幾種:
l Web程序
l 桌面應用程序
1、 面向對象的操做系統程序(依賴於一個單一或複雜的操做系統)
2、跨平臺程序
分佈式應用程序
庫/平臺/組件/底層核心程序
系統程序員
1、內核程序員
2、驅動程序員
3、編譯程序員
探究將來編程算法
四、Learn the technologies and programming languages related to your programming field of choice. The following sections break down the tasks for different types of programming.shell
你須要瞭解有關你選擇的編程領域語言以及相關技術。它分解爲不一樣類型的編程任務例如:
Method 1 of 6: Web Programming 任務之一: Web 程序
一、Know what Web programming entails. Web applications are software components designed to work on top of the internet architecture. This means that the applications are accessed through a web browser software such as Firefox or Internet Explorer. Being built on top of the Internet architecture does not necessarily require an active connection to the internet. It means that Web applications are built on top of standard web technologies such as:數據庫
你須要瞭解什麼是Web編程的延伸技術。Web應用程序由完成特定任務的各類Web組件構成,並經過Web將服務展現給外界,它是典型的瀏覽器/服務器架構的產物。 這就意味着Web應用程序通常藉助IE等瀏覽器來運行。 話又說回來,Web應用程序又有本身獨特的地方,就是它是基於Web的,而不是採用傳統方法運行的。例如:編程
二、Browse many diverse websites to learn about how they usually look. (Right click, then click View Source or press F12.) Look for diversity in the type/content of the website, not the quantity of websites visited. Generally, you will need to visit at least one of each of the following types of websites:
瀏覽不一樣的網站,以瞭解它們平時的運營狀態。 (右鍵單擊,而後查看源文件或按F12),搜索對比不一樣網站的類型和內容,而不是隻注重網站權重。通常狀況下,你至少須要訪問兩個一樣類型的網站,例如:
l 企業網站(盈利機構、非盈利機構、政府組織)
l 網頁搜索引擎(搜索引擎、元搜索引擎、專業的搜索引擎,目錄)
l 數據挖掘網站
l 我的網站
l 信息/百科全書的網頁(維基,數據表,技術規格和手冊列出目錄,博客和雜誌,新聞和新聞機構的網站,黃頁等)
l 社交網站(社交門戶網站,書籤網站,論壇)
l 社會化書籤(包括上面提到的其餘類別,如維基和博客)
三、Learn at least one brainstorming technique/method and a software that is used to implement that method. For example: brainstorming diagrams and MS Visio.
學習下列其中至少一個技術或者方法,並且能夠用軟件來實現它。例如:頭腦風暴和微軟圖形制做的軟件 。
四、Get familiar with website structuring. This is creating conceptual web diagrams, site-maps, and navigation structures.
熟悉網站結構。這是創造概念的網絡圖,網站地圖和導航結構。
五、Take a crash course on graphics design. Try to learn at least one graphics editing/manipulation software package (optional, but strongly recommended)
參加圖形設計速成班,努力學習圖形編輯或者處理軟件(你能夠選擇只學一個,最好能夠二者都學)
六、Learn the basics of the internet infrastructure. This includes getting a basic idea about:
瞭解互聯網的基礎。這包括弄懂一個最基本的規則,例如:
l 相應的Web服務協議(HTTP, FTP, SMTP, and POP3 or IMAP4)
l Web服務器軟件(最好是一個你將要開展的主要平臺)
l 網絡瀏覽軟件
l 電子郵件服務器和客戶端軟件
七、Learn the HTML and CSS languages. You might also want to get the "What You See Is What You Get (WYSIWYG)" software package for editing HTML.
學習HTML和CSS語言。你可能爲了編碼HTML去搞懂「所見即所得」的軟件包。
八、Learn XML and XML related technologies, such as XSL and XPath (optional but recommended).
瞭解XML和XML相關的技術,如XSL和XPath(推薦二者都學習)。
九、Create simple static websites until you are familiar with and comfortable around HTML.
除非你已經熟悉瞭解HTML了,不然你就建立簡單的靜態網站。
十、Learn a client-side scripting language. Most users either learn Javascript or VBScript, but some learn Perl and DHTML.
學習客戶端腳本語言。大多數用戶都學習JavaScript或VBScript,但也有一些學Perl和DHTML。
十一、Familiarize yourself with the client-side scripting language you learned. Try to reach your potential using only that language. Only go to the next step after you've at least become familiar with your client-side scripting language.
不斷熟悉你學到的客戶端腳本語言。嘗試只使用該語言來激發本身的潛力。在你至少熟悉你的客戶端腳本語言以後,才能夠進行下一步。
十二、Learn at least one server-side programming language. If you choose to restrict yourself to one server software, learn one of the programming languages supported by that software. If not, learn at least one programming language on each server software.
至少學習一種服務器端編程語言。要麼侷限於一臺服務器上的軟件,學習由軟件支持的編程語言之一。要麼學習在每一個服務器軟件上的一種以上的編程語言。
1三、Create a pilot project for yourself after you finish learning the server-side programming language.
本身學習的服務器端編程語言後,嘗試建立一個試驗項目。
1四、Obtain your own website and start experimenting online within your own page.
創建本身的網站,並開始嘗試運營。
方式之二:桌面應用程序
1 Know what you're getting into with desktop application programming. Most desktop programmers write code for business solutions, so getting an idea about businesses, their organizational and financial structure will be a big time-saver.
其目的是什麼,大部分是爲了節省行政和財政管理時間,以及解決商業問題編寫代碼。
大部分桌面應用程序員編寫代碼是出於解決商業問題。因此,有一個關於企業的創意,他們的組織和金融結構將可以節省大量的時間。
2 Learn about the different computer hardware architectures. An introductory level course in digital circuits design and another in computer architecture is useful; however, some see it as being advanced for a starting point, so reading two or three tutorial articles (such as this one and this one) might suffice. Then you can go back to this step later, after you learn your first programming language.
瞭解不一樣的計算機硬件體系結構,入門級數字電路課程設計和其它課程在計算機體系結構是很是有用的;然而,也有些觀點認爲這是一個比較高級的起點,因此閱讀兩個或三個教程文章可能就足夠了。當你學習你的第一門編輯語言以後,能夠返回來再進行這一步.
3 Learn an entry-level (kids') programming language[1]. Don't be shy to learn such a language just because you're older than being called a "kid". These programming languages can ease up the pain in learning your first programming language tremendously. However, this step is optional. It can also be done before the preceding step
首先學習一門初級編程語言,不要由於年齡太大而感到難爲情。它能夠緩解初級菜鳥的痛苦,固然你能夠選擇步驟2與步驟3調換。
4 Get an introduction to the procedural, object oriented, and functional programming paradigms.
本文主要介紹面向對象的操做系統程序。
5 Take an introductory course in one of the procedural programming languages. No matter what language you choose later to be your language of choice, it will require procedural programming at some level. Also, procedural programming is reported by most programmers to be the easiest to use as a starting point to get the idea of programming in general.
無論未來選擇哪種編程語言,都有必要學習一門初級程序編程。何況,廣泛認爲它就是了解編程的開端。
6 Learn at least one advanced modeling technique such as UML or ORM.
瞭解至少一種先進的建模技術,例如UML或ORM。
7 Start writing some small console or console-like applications. You can make use of common small exercises in programming languages books. For this, choose a tool for writing programs in the programming language you are writing in.
開始寫小的主機或者相似於主機的應用程序。能夠參考常見的編程語言書籍,和適合的編程工具。
8 Take a more advanced course in your chosen programming language. Make sure you understand the following concepts well and that you can apply them with relative ease before going forward:
學習更高級的編程課程,必須瞭解如下的概念,才能夠應用自如:
用戶的輸入和輸出信息
編程語言中的邏輯和方案執行流程
申報、分配、和比較變量
編程語言的分支語句,例如as if..then..else and select/switch..case.
循環結構,例如such as while..do, do..while/until, for..next.
編程語言的語法
數據數據而且重組他們
已經定義的數據類型(記錄/結構/單位)及其使用
若是你的語言支持函數重載,要了解這個。
訪問內存(pointers, peeking等)
若是你的語言支持操做符重載,要了解這個。
若是你的語言支持委託/函數指針,要了解這個。
9 Apply the advanced techniques you've learned.
熟練掌握上述技術
面向對象的操做系統程序
10 Take an introductory course in at least one more programming language in another programming paradigm. It is recommended to learn one programming language of each paradigm, and most advanced programmers do, however, you usually start with one, work for a while applying your knowledge and practicing it, then learn the other later on, after you already had a real-life experience in programming. Try one of the following language areas:
除了本身掌握的,再瞭解一下別的編程語言。一般高級程序員都會這麼作,用本身知識儲備去實踐其餘的技術,這纔是真正的工做編程。嘗試下列其中一個:
邏輯編程範式。
函數式編程範式。
11 Try to compare the two programming languages you learned so far. Evaluate the strengths and weaknesses of each one. Usually this is done by:
比照一下你目前學習的兩種語言,分析優劣勢。下列爲分析方法:
互換兩種編程語言,去從新寫早期的做品;
使用兩種語言去實現一個新的項目,也許你不會成功;
用備忘錄或者彙總表進行比較兩種語言的功能和結構;
儘可能互相轉化和模仿;
12 Learn visual programming concepts using one of the languages you learned. Almost all programming languages have versions/libraries that support visual programming and others supporting console or console-like programming. This can be accomplished by:
瞭解可視化編程,幾乎全部的編程語言都支持可視化編程和支持主機或主機類編程版本/數據庫。方法:
簡單介紹一下驅動編程。大部分的可視化編程在必定水平上,依賴於對事件和事件處理(使用你選擇的編程語言)。
瞭解、嘗試桌面軟件。大多數軟件開發企業提供本身的產品,你能夠用它來測試軟件,與時俱進。
閱讀圖形用戶界面的一些文章或教程。
13 Start applying your knowledge on small software projects you design. Try applying your programming expertise on problems you face in your day-to-day life. For example, write programs that rename files in mass, compares text files visually, copies the names of files in a directory to memory/text file, and things like that. Keep it simple at first.
嘗試小型軟件項目,應用知識去設計和解決生活中面臨的問題。例如:編寫重命名文件的程序;對比文本文件;爲了存儲/文本文件之類的東西,在目錄中拷貝文件。
14 Create a virtual graduation project. Complete this to the end, applying the techniques of visual programming you learned so far.
建立一個虛擬的畢業設計。用應用可視化編程的技巧來完成它。
15 Widen your understanding of the visual framework/library/package you learned before by taking advanced courses, paying extra attention to detail and learning more tips and tricks for your framework from online resources.
學習更高級的課程,來拓寬你的視覺框架/數據庫。掌握更多在線資源的框架的技巧而且要格外注意細節。
16 Search for other packages/libraries of visual elements for your programming languages and learn them.
完善視覺因素,掌握所需的數據庫/安裝包。
17 Take a course in graphics (not graphics design). It will be very helpful for programmers wanting to write appealing user-interface elements.
學習圖形課程(不是圖形設計)。若是想要吸引人的用戶界面,它很是有用。
18 Become a games programmer (optional). Game programming is considered, in most of its parts, desktop programming. If you intend to become a games programmer, you will need to learn more about game programming after you finish these steps. A graphics course is a must for game programmers and the second language of choice in the preceding steps should be a logic/functional programming language (preferably Prolog or Lisp).
在大部分地區,遊戲編程被認爲是桌面編程。遊戲程序員須要瞭解更多,例如圖形課程,並且上述步驟中,第二語言應該是一個邏輯/功能的編程語言(最好是rolog或Lisp)。
方法之三:跨平臺程序
1 Tackle distributed applications programming.Distributed application programming is considered by many to be one of the hardest to learn and requires diverse knowledge in computer and communication technologies.
先掌握跨平臺分佈式應用程序開發 。
廣泛認爲本文所陳述的方法是最難的,它須要掌握計算機和通訊技術多樣知識。
2 Take a speed introduction to telephony systems and their hardware. This step is optional. However, it is very useful in understanding network topologies.
接着瞭解它們的通話系統和硬件設施。
建議別忽略這一步驟,由於它能夠幫助瞭解網絡拓撲結構。
3 Familiarize yourself with networking hardware architectures and devices such as hubs, switches and routers.
熟悉硬件架構和設備,如集線器,交換機和路由器。
4 Take a course in networking protocols and essentials. You need a good understanding of the Open Systems Interconnection (OSI) model, Ethernet, IP, TCP, UDP and HTTP before you start programming distributed applications.
瞭解網絡協議和規則。在開始分佈式應用程序開發以前,仔細研究開放系統互連(OSI)模型,以太網、IP、TCP、UDP和HTTP。
5 Learn the XML language and familiarize yourself with it.
學習瞭解XML語言。
6 Start by learning a shell scripting language. For Windows-based programming, that would be any script that works with Windows Scripting Host. For Linux-based programming, Bash scripts and Perl will be sufficient. Javascript is strongly recommended for this in both platforms for the following reasons:
先學習shell腳本語言,它適用於Windows程序。bash和Perl腳本應用於Linux編程,而Javascript 同時兼容上述兩個平臺。緣由:
它在任何腳本主機中,支持任何操做系統(默認狀況下Windows腳本宿主支持JavaScript,大多數Linux發行版都有一個包的javascript腳本控制檯支持)
它被許多開發者認爲更容易學習。
它有一個ALGOL衍生語法,當須要選擇第二個編程語言時(C,C+ +,C#,Java和J#中已有ALGOL衍生語法),也能夠熟悉更多的其餘編程語言。
經過學習JavaScript,熟悉反作用網頁的客戶端腳本。
熟悉客戶端的網頁腳本,這是一個額外的反作用
7 Apply only procedural programming using your scripting language of choice at first. Later, you can use more advanced programming techniques and paradigms according to your scripting language and what it supports. All scripting languages have some procedural programming aspects at some level.
首先,選擇只適用於過程化編程的腳本語言;其次,您能夠根據本身的腳本語言,採用更先進的編程技術和範式。在某必定程度上,全部的腳本語言都遵照過程化編程的理念。
8 Use the scripting language you learned to write scripts that perform communications between machines. Learn what is necessary for doing that. Simple communications will suffice.
用你所學到的腳本語言創建起電腦之間的通訊。 瞭解必需要作的內容,來實現簡單的通訊就足夠了。
9 Make a transfer to a desktop scripting/programming language. Preferably, one that is a multi-paradigm language such as Python. Take a simple introduction to that second language. Java is considered by most programmers to be the language of choice for many reasons. However, C# is gaining momentum fast in this field. Java and C# are preferred for the following reasons:
編寫轉換到桌面的腳本/編程語言。最好是像Python同樣的多範式語言,如今簡單介紹一下第二語言:雖然通常狀況下首選Java,可是C#也有快速上升的勢頭。
選擇二者的緣由以下:
它們是面向對象的編程語言,支持大型團隊的程序員去實現細節,由於它們都支持組件(代碼,預編譯單位,執行必定的任務,能夠在其餘程序中使用);
它們支持驅動編程,以及在必定程度上,面向對象和過程化編程;
該語言是創建在由天然界分佈(在Java中的狀況下)的框架;
該語言框架創建在分佈式特徵上(在Java中的狀況下)
許多現成包處理網絡的實用性,包括asopen源代碼開源代碼和內置包框架,使程序員在其餘人的工做的基礎上更容易操做。
10 Concentrate more on the core features of the language, especially those supporting networking. Pay less attention to user-interface elements such as outputting, window design and techniques, and user-interface elements.
多注意語言的核心特徵,尤爲是支持網絡的那些。少關注一些用戶界面元素,例如輸出,窗口的設計和技術。
11 Take a course on distributed applications design and architectures. This can be done using books, online tutorials or academic courses. However, understanding the architecture of distributed applications and its concepts is necessary.
參加分佈式應用程序設計和架構的課程,例如書籍,在線教程或學術課程。並且,必須深刻研究。
12 Learn about building serviced components and services using your programming language of choice.
用你所學的編程語言,嘗試組建服務。
用你所學的編程語言,嘗試組建服務組件和服務。
13 Learn one or more of the following technologies. It is recommended that you get at least an introduction to all of them. Most distributed application programmers do not stop at one or two programming languages, but learn at least one programming language on each operating system. That is because if you want your application to be "distributed", you should provide a version of it at least for each major operating system.
深刻研究如下技術,建議至少所有了解一下。大多數分佈式應用程序的程序員不會知足掌握一兩種編程語言,由於每一個操做系統上至少有一種編程語言。若是想要本身的應用程序「分佈各地」,至少爲每一個主要的操做系統提供版本。
公共對象請求代理體系結構(CORBA)
簡單對象訪問協議(SOAP)
異步JavaScript和XML(AJAX)
分佈式組件對象模型(DCOM)
NET遠端處理
XML 網頁服務
方法之四:庫/平臺/組件/核心程序
1 Know what core programming is. Core programmers are merely advanced programmers who made the transfer from programming applications to programming code units to be used by other programmers.
瞭解核心編程。實際上是高級程序員把應用程序編碼成他人也能夠用的編程代碼。
2 Learn a programming language that supports building reusable components/packages, if you have not done so already.
首先你要學習一門支持構建可重組組件的編程語言。
3 Take an advanced course in UML and ORM. Most library developers use one or both of them.
研究UML 和 ORM。大部分的數據開發者都用這兩個。
4 Take a course in software engineering.
瞭解軟件工程。
5 Learn at least modular, component-based, object-oriented, and event-driven programming techniques and concepts. The more programming paradigms and languages you cover, the more successful you become as a library/package programmer.
至少學會模塊化、組件化、面向對象和驅動編程技術和概念。你掌握更多的編程模式和語言,就離成爲優秀的數據庫/包程序員更進了一步。
6 Learn more about the different operating systems and programming frameworks supported by these operating systems.
研究不一樣操做系統,以及這些系統支持的編程框架。
7 Focus your learning efforts on platform-independent frameworks, programming languages and technologies.
專一於跨平臺的框架努力學習編程語言和技術。
8 If the programming languages you learned so far have ANSI/ISO/IEEE/W3C standard versions, master the standards. Try to use standard code whenever possible.
若是學會了包括ANSI / ISO/ IEEE/ W3Cstandard版本的編程語言,而且嚴於標準。能夠嘗試使用標準的代碼。
9 Try to mimic simple, already established libraries, especially open-source ones. This is useful during the early phase of becoming a library/package programmer. Start with simple packages like units conversion and intermediate scientific calculations packages. If you are a college student, make use of your non-programming courses by trying to implement their equations and scientific core as libraries.
試着模仿簡單的、已經創建的數據庫,尤爲是開放源碼的。這在成爲數據庫/包程序員的早期階段很是有用。先從簡單的包開始,好比單位轉換、中間的科學計算包。若是你是一名大學生,去嘗試去實現他們的方程和科學核心庫,將你的非編程課程利用起來
10 Search for and try open-source packages in your field of programming. First download binaries/executables of the package. Try to use it and find its strong and weak points. After you've done that, download the source and try to figure out how it was done. Try to recreate those libraries or parts of them. At first, do that after you've seen the code and later before you see the code. At later phases, try improving those libraries.
在你的編程能力以內,搜索並嘗試開源軟件包。先下載二進制/可執行的文件,使用並分析利弊,而後下載源代碼並試圖找出原理,重建它們的庫或者部分庫。前期階段,在看到代碼的先後能夠這麼作。後期階段,就要就要改善這些庫。
11 Learn the different approaches used to distribute and deploy components to programmers.
瞭解分發和部署組件的不一樣方法。程序員傾向於遞歸而且/或者迭代考慮他們遇到的全部問題。試圖把一種狀況做爲小問題的堆積(更簡單的任務序列)或減小故障的可能範圍,最後堆放無論。而且他們一律而論,也就是說當面對特殊狀況,他們一般會想的很簡單,並期待系統自行解決。
方法之5:系統編程
方法之6:編程科學