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:编程科学