怎么样成为一名程序员 应该怎么做?

来源:互联网
责任编辑:鲁能
 综合 
字体:

在本文中:网络编程桌面软件编程分布式程序设计库/平台/框架/核心编程系统编程编程科学

成为程序员是一个日积月累的过程,需要日复一日年复一年的技能增长。编程本身是有趣的,并且有回报(脑力层面、精神层面、经济层面)。这份指南不能保证你轻松当上程序员。不要神化下面这些步骤,从中你大概能了解在现今编程界如何成为一名程序员。

步骤

以38720 1为标题的图片

1学习下列这些学科中一两门引导性课程:

逻辑学

离散数学

2学习数据库概念,比如表,视图/查询和进程。你可以使用任何简单的数据库包来完成这些,比如:

MS Access

DB V

Fox Pro

Paradox

MySQL是一个很值得学习的数据库,因为它免费且通用,数据库常常用于SQL查询。

3想好你要成为哪种程序员。通常程序员会是下面某一种:

网络程序员

桌面软件程序员

操作系统程序员(有单系统,也有多系统)

独立平台程序员

分布式程序设计员

库/平台/框架/核心程序员

系统程序员

内核程序员

驱动程序员

编译程序员

编程科学家

以38720 4为标题的图片

4了解你的编程领域内相关技术和编程语言。下面的部分详细给出了成为不同类型程序员所需的步骤。

1网络编程

以38720 5为标题的图片

1了解网络编程的含义。网络应用是指设计在网络结构顶层的软件部分。这就意味着这些应用是通过诸如火狐或IE之类的浏览器来处理的。架构于网络结构的顶层并不一定要连接到网络。这就是说网络应用建立在如下标准网络技术的顶层:

HTTP

FTP

POP3

SMTP

TCP

IP协议

HTML

XML

Coldfusion

ASP

JSP

PHP

ASP.NET

2浏览不同的网站,了解它们的外观。(右击,选择“查看源”或按F12。)寻找网站类型/内容的多样性,而非数量。通常你需要访问以下网站类型中至少一种:

团体网站(商业公司,非营利机构/组织,政府组织)

网络索引引擎(搜索引擎,meta搜索网站,专业化搜索引擎,目录)

数据挖掘网站

个人网站

信息/百科全书式网页(维基,数据单,技术规格,人工列表目录,博客和日志,新闻和新闻机构网站,黄页,等等。)

社交网站(社交门户,书签网站,记录笔记网站)

合作网站(这包含了上面提及的目录,比如维基和博客)

3学习至少一种头脑风暴技术/方法,并学习一个用来实现头脑风暴的软件。例如:头脑风暴图和微软Visio。

以38720 8为标题的图片

4熟悉网站结构。指的是创建概念化网络范式、网络地图和导航结构。

以38720 9为标题的图片

5赶紧学一门图形设计的课程。尽量学习至少一个图形编辑/操作软件包(不是必须的,但强烈推荐)

6了解网络下部构造的基本情况。包括了解以下:

基本网络服务协议(HTTP,FTP, SMTP和POP3或IMAP4)

网络服务器软件(最好其中一个就是你以后主要工作的平台)

网络浏览软件

邮件服务器和客户端软件

7学习HTML和CSS语言。或许你还想要“所见即所得”软件包来编辑HTML。

以38720 12为标题的图片

8学习XML及其相关技术,比如XSL和XPath(不是必需,仅作推荐)。

以38720 13为标题的图片

9先建立简单的静态网站,直至你熟悉并习惯HTML语言。

以38720 14为标题的图片

10学习客户端脚本语言。多数人要么学Java,要么学VB,但也有一些人学习Perl和DHTML。

11熟悉你所学的客户端脚本语言。潜意识里提醒自己只用你学的那个语言。只有在你熟悉你的客户端脚本语言之后才能进入下个步骤。

12学习至少一种服务器端脚本语言。如果你只用一种服务器软件,那就学其中一种编程语言。否则,你得每个服务器软件都学至少一种编程语言。

13学完服务器端编程语言之后就开始创建一个试验项目。

14获得你的网站,开始用你自己的网页实验。

2桌面软件编程

以38720 19为标题的图片

1弄清楚桌面软件编程是怎么回事。多数桌面软件程序员都是编写商务需要的代码,所以好好了解一下商业及其组织和经济结构将对节省时间、提高效率大有裨益。

以38720 20为标题的图片

2了解不同的电脑硬件结构。看看数字电路设计和电脑结构的入门级课程,但是也有人认为这对于刚起步来说太超前了,所以看两三篇说明的文章(比如 这一篇 和 这一篇)就够了。学完第一种编程语言后你可以再返回这个步骤。

3学习一种入门级(小孩子学的那种)编程语言。[1]不要因为你不是个小孩子就不好意思去学。这些入门级语言能大大减轻你正式学习第一门编程语言时的痛苦和压力。然而这一步也不是必须的。你也可以在上一步之前完成。

4学习程序化、面向对象、函数设序设计规范的入门。

5学习一种程序化程式设计语言的入门课程。无论你以后选择何种编程语言,在某种程度上它都要求程序化程式设计。此外,据多数程序员反映,程序化程式设计总的来说是了解编程的一个很好的切入点。

6学习至少一种高级建模技术,比如UML 或ORM。

以38720 25为标题的图片

7开始编写一些小的主控台应用程式或类似的应用程式。你可以利用编程书中的常见小练习。选择一个工具,用你所学的编程语言编写程序。

以38720 26为标题的图片

8学习一门你选择的编程语言的更高级课程。确保进展之前先理解下列概念,并能熟练运用。

对程序用户输入输出信息。

程式化设计语言写成的程序中的逻辑流程和执行流程。

声明、分配和比较变量

编程结构分支,比如if..then..else 和 select/switch..case.

循环结构,比如while..do, do..while/until, for..next.

创建、调用程序与函数的编程句法

数据类型及如何操控

用户定义数据类型(records/structs/units)及其使用

如果你的语言支持超载函数,理解它。

你选择的语言的内存处理方式(指针,变量窥视,等等。)

如果你的语言支持运营商超载,理解它。

如果你的语言支持delegates/函数指针,理解它。

9应用你所学的高级技能

面向对象的规范

以38720 28为标题的图片

10至少再学习一门编程语言规范的入门课程。推荐学习每种范式的编程语言,多数高级程序员确实是这么做的,然而,通常你开始时只学一种,应用所学知识训练了一段时间,获得了编程的鲜活经验,然后接着学习另一种。试试下面的语言:

逻辑编程范式

函数编程范式

以38720 29为标题的图片

11试着比较你所学的两门编程语言。评估各自利弊。通常可按以下方法完成

拿出你在学习第一门编程语言时编写的简单范例,现在用第二门语言重新编写。

创建一个工程,尽量用上两种语言完成它。有时取决于你选择的工程和语言,你可能仅用一门语言还无法完成这个工程呢!

写一份两种语言之间相似结构和独特之处对比的速查表或一览表。

尽量使用另一门语言找到模仿这两门语言中独特之处的办法。

12利用你学过的一种语言来学习可视化编程概念。几乎所有的编程语言都具有支持可视化编程和其他支持控制台或类似控制台编程的版本/库。同时进行的包括:

初步了解事件驱动编程。在某种程度上,多数可视化编程依赖事件及事件处理(用上你选择的语言)。

尽可能多的尝试桌面软件,理解软件是做什么的。多数软件开发公司会提供产品的测试版,你可以拿来测试软件。在完善用户界面方面保持更新。

阅读关于图形用户界面的文章或教程。

以38720 31为标题的图片

13开始把你所学的知识运用到你设计的软件小工程中。尽量把你的编程专业知识运用到你日常生活中的问题上。比如,编写程序,批量重命名文件,视觉上比较文本文件,复制目录里的文件名到内存/文本文件之类的东西。刚开始简单一点。

以38720 32为标题的图片

14创建一个虚拟的“毕业工程”。把这个放到最后完成,用上你到目前为止学到的可视化编程技术。

15通过学习更高级的课程、更加注意细节以及在网上学习搭建架构的技巧,来加深对你学过的可视化架构/库/包的理解。

以38720 34为标题的图片

16搜索其他含可视化元素的包/库并学习它们。

17学习图形学课程(而非图形设计)。对于想要写出吸引人的用户界面元素的程序员来说,这将大有裨益。

18成为游戏程序员(不是必须的)。很大程度上游戏编程是被当作桌面编程的。如果你想成为游戏程序员,完成这些步骤后你需要进一步学习游戏编程。对于游戏程序员而言,图形学课程是必须的,后续步骤中第二门语言应该选择逻辑/函数编程语言(最好是Prolog或Lisp)。

3分布式程序设计

以38720 37为标题的图片

1处理分布式应用编程。分布式应用编程被许多人认为是最难学的一种,它要求计算机和通信技术中的不同知识。

2快速了解通信系统及其硬件。这个步骤不是必须的,但是对于理解网络拓扑结构很有用。

以38720 39为标题的图片

3熟悉网络硬件结构和设备,比如集线器、接线台和路由器。

4学习网络协议的课程。在你开始分布式应用编程之前,你需要好好理解“开放系统互联 (OSI) ”模型、以太、IP、TCP、UDP和HTTP 。

以38720 41为标题的图片

5学习XML 语言,并熟悉它。

6开始学习一门shell脚本语言。对基于Windows的编程,可以是任何能与Windows脚本宿主兼容的脚本。对基于Linux的编程,Bash脚本和 Perl就够了。对这两个平台都强烈推荐Java,原因如下:

几乎所有操作系统的都支持脚本宿主(Windows 脚本宿主默认支持java ,大多数Linux发行版都有支持java脚本控制的包)。

许多开发者认为它很容易学。

当你需要学第二门编程语言(C,C++,C#,Java和J#都有ALGOL开源句法)时,它拥有的ALGLO开源句法就能使你熟悉更多编程语言

通过学习java,你会熟悉网页的客户端脚本,这可谓一大福利!

以38720 43为标题的图片

7开始时用上你学的脚本知识,只运用程序化程式设计。之后,根据你的脚本语言和它所支持的,你可以用上更高级的编程技巧和范式。所有的脚本语言在某种程度上都有程序化程式设计的一些方面。

以38720 44为标题的图片

8使用你所学的脚本语言,写出实现机器之间通信的脚本。学习完成这个所必需的东西。简单的通信就足够了。

以38720 45为标题的图片

9转移到桌面脚本/编程语言。一个比较好的是多范式语言,比如Python。简单了解第二门语言。有许多理由让多数程序员选择java。然而,在这个领域内C#正在获得多数优势。Java和C#被青睐的原因如下:

它们是面向对象的编程语言,使大量程序员免遭实现细节之苦,因为它们都支持组成部分(代码单元、预编译,它们可以执行特定任务,并被用到其他程序中)。

它们支持事件驱动编程,在某种程度上还支持OO和程式化程序设计。

建立语言的架构按属性分布(比如Java)。

有许多现成的包来处理。社交网络同时作为开源代码和架构内置包,这使得程序员继续其他人工作更加容易。

以38720 46为标题的图片

10专注于语言的核心部分,尤其hi那些支持网络。少注意用户界面元素,比如输出,窗口设计和技术等。

11学习分布式应用设计与结构的课程。可以通过书本、网上教程或学术课程来完成。然而,十分有必要理解分布式应用的结构及其概念。

12使用你所学的编程语言来了解服务部分建构和服务。

以38720 49为标题的图片

13学习如下技术中一种或更多。推荐你每一种都了解以下。多数分布式应用程序员不会止于一两门编程语言,他们会每个操作系统各学至少一种语言。这是因为如果你希望你的应用“分布式”,你应该至少为每个主要的操作系统各提供一个版本。

公共对象访问代理体系结构(CORBA)

简单对象访问协议(SOAP)

异步JavaScript和XML(AJAX)

分布式组建对象模型(DCOM)

.NET远程处理

XML 网络服务

4库/平台/框架/核心编程

1了解什么是核心编程。核心程序员几乎都是高级程序员,已经从编写应用转变为给其他程序员编写代码汇编。

以38720 51为标题的图片

2学习一门支持创建可重复使用内容/包的编程语言,如果你还没学过的话。

以38720 52为标题的图片

3学习一门UML 和ORM的高级课程。多数库开发者使用其中一种,或两种都用。

4学习软件工程的课程。

5学习至少一个模块,基于内容的、面对对象的和 事件驱动编程技术和概念。你所学覆盖越多编程范式和语言,你就能成为越成功的库/包程序员。

以38720 55为标题的图片

6进一步了解不同的操作系统及其支持的编程架构。

7集中学习独立平台架构、编程语言和技术。

以38720 57为标题的图片

8如果到目前为止你学习的编程语言具有ANSI/ISO/EEE/W3C标准版本,那么掌握这些标准。无论何时尽可能使用标准代码。

9尝试模拟简单的、已经建立的库,尤其是开源的库。这在成为库/包程序员的早期阶段十分有用。从简单的包开始,比如单位转换和中间科学计算包。如果你是大学生,利用你的非编程课程,尝试把这些课程的方程式与核心科学用作库。

10在你的编程领域内寻找开源的包。首先下载包的二进制/可执行文件。尽量去用,并发现它的利弊。之后,下载源,尽量弄明白它是怎么完成的。尝试再创造这些库或其部分。刚开始,看完代码再做;之后,先做再看代码。后期阶段,尝试完善那些库。

以38720 60为标题的图片

11学习不同方法。给程序员分发、配送内容。

通常,库/包程序员倾向于以递归和/或迭代的思想来思考他们面临的所有问题 。尽量把每个问题当作一个小问题的汇编(一系列更小的任务)或一个重复的不断缩小问题范围直至把这些更小的范围彼此堆到一起的处理过程去思考。

库/包程序员倾向于概括化。也就是说,当面临一个特定的简单的问题时,他们通常会想到一个更为概括的问题,并努力解决这个更概括的问题,如此,小问题便不攻自破。

5系统编程

1了解系统编程的定义。系统编程处理的是编程的“科学”,而不是具体的编程实现。不要把你自己栓到特定平台上。

2跟着“桌面应用程序员”的前三个步骤。

以38720 63为标题的图片

3学习线性代数的入门课程。

以38720 64为标题的图片

4学习微积分课程。

以38720 65为标题的图片

5学习逻辑学和/或离散数学课程。

以38720 66为标题的图片

6了解不同的“准操作系统”。这可以通过以下途径完成:

了解操作系统是如何安装的。

了解在一台PC上如何安装不同的操作系统(不是必须的,但作为推荐)

安装不止一种操作系统。不要在系统中安装任何辅助包,相反,仅利用操作系统本身提供的函数。

7学习计算机硬件结构的课程(或者作为替代,看看书)。

8深入理解不同的计算机硬件平台。

9初步熟悉你所选择的硬件平台/操作系统的汇编语言。稍后你会学习其他平台/系统的汇编。

10学习ANSI C 和 C++ 语言,还有程序化程式设计的一些概念。

以38720 71为标题的图片

11在你选择的平台上理解并实践C/C++标准库。尤其注意标准模板库(STL)和活动模板库(ATL)。

12搜索网络资源、书籍和课程来理解你的平台独特的C风格。

13用C/C++练习编写高级代码。

以38720 74为标题的图片

14学习更高级的Assembly。

15学习操作系统设计的课程。

以38720 76为标题的图片

16寻找并阅读你所选择的平台的相关文章。如果你选的是基于Unix的操作系统就会容易得多。充分理解你今后将要用来工作的系统。

17练习你已经掌握的知识。首先创建小的系统软件。如下通常很有用:

试着重创你系统中已有的小工具。

试着把其他系统中的应用移植到你的系统里。

以38720 78为标题的图片

18以最有益的顺序学习语言。此处是唯一强调第一门编程语言的地方。首先学习ANSI C 而不是 C++、C#、Java 、D。然后学习 C++。

限制你第一门语言仅为C是因为系统编程要求程序员熟悉如下概念:

源代码真实、完全的编译

低级对象输出文件

链接二进制

低级机器语言/汇编编程。C语言被某些人认为是伪饰过的/更容易学习的汇编语言。只要你愿意,它还支持插入汇编语言代码,并且它只是程序化的(像汇编)。

6编程科学

1了解编程科学家是做什么的。编程科学家是十分高级的程序员,他们不开发程序,但他们研究计算科学,比如密码学、编程语言和数据挖掘算法。没有深入的学术研究是很难达到这个水准的。

2累积和四年制计算机科学学历同等多的科学知识。可通过如下其中一种完成:

获得真实的学术学历(这也是通常情况)。

从现代大学中获得该学历要求的课程大纲,自学课程或 分开一门门学。理论上这样做也可以,但还是推荐第一种做法。

以38720 81为标题的图片

3选择特定的领域。越具体越好。这取决于你的偏好。但是这里给出计算机编程领域中一些主要的课题:

算法设计(例如搜索、分类、密码、解码、错误检测 等)

编程语言/编译器设计/最优化

人工智能领域(模式识别,语音识别,自然语言处理,神经网络)

机器人技术

科学编程

超级计算

计算机辅助设计/模式(CAD/CAM)

虚拟现实

计算机图形学(计算机图形学通常和图形设计或图形用户界面设计混淆,计算机图形学是研究如何表示和操控计算机系统中的图形的领域)

以38720 82为标题的图片

4考虑获取更高级的学历。或许你想追求硕士学历或博士学历。5了解你选择的编程领域的相关技术和编程语言。

小提示

不管你想尝试哪种编程,不管你想达到何种水平,考虑去学校或本地社区大学上课。不要被诸如“计算机科学”一类的术语吓到。你参加的任何不需要预备课程的课程都应该集中教一些编程的基础知识。在上课之前先咨询一下老师或客服,确保这门课是你想要的,像“计算机文化”这样的课很有可能更多地集中在教你更熟悉办公应用之类。

相关wikiHows

在Chrome浏览器中下载YouTube视频

如何

在Chrome浏览器中下载YouTube视频

减少PDF文件的大小

如何

减少PDF文件的大小

打开EPUB文件

如何

打开EPUB文件

打出倒过来的问号?

如何

打出倒过来的问号?

打开EML文件

如何

打开EML文件

在HTML中插入空格

如何

在HTML中插入空格

使用VPN

如何

使用VPN

重置Macbook Pro

如何

重置Macbook Pro

发匿名短信

如何

发匿名短信

将照片从iPhone传到电脑

如何

将照片从iPhone传到电脑

打开SWF文件

如何

打开SWF文件

添加打印机

如何

添加打印机

恢复被覆盖的文件

如何

恢复被覆盖的文件

在Mac中打开exe文件

如何

在Mac中打开exe文件

根据您访问的内容,您可能还对以下内容感兴趣,希望对您有帮助:

如何成为一个程序员

答:1、 程序员意味着要编程序。(如果你仅仅想得到一份高薪水的工作,喝喝咖啡就等老板发薪水,我奉劝你还是另找一份更合适的工作,譬如练摊,真的,兄弟,这份工作不适合你) 2、你是学文的还是学理的,编程序也许需要浪漫,但更需要逻辑和严谨。...

如何成为一名程序员?

答:成为程序员的具体步骤: 第一步: 掌握一种编程语言。学习任意一种主流的编程语言,例如C++语言。熟练掌握一种语言的语法和基本的编程技巧。 学习时间: 3个月左右 注意事项: 编程语言和编程工具是两回事情,编程语言是指C++、Basic、Object Pa...

如何成为一个优秀程序员

答:从初入职场菜鸟到职场大咖,很多程序员在努力充实自己,有时候我们需要对自己进行一次能力定位,了解自己的优势和没有掌握的技术。芯学苑列出几点作为初入职场的新手评估自己,明了前进学习的方向。 1、技术能力(解决问题的能力) 这是非常重要的...

做一名程序员有前途吗?!

答:做程序员最需要的就是熬得住,有时候你努力了很长一段时间可能一点好的结果都没有这是很正常的。所以就看你的耐心怎么样。如果你仅仅是有激情,想进入这个行业尝试,那做为前辈来说我还是奉劝你打消这个念头,到IT里面做程序设计是很辛苦的,很...

要做好一个程序员要具备什么条件?

答:成为一名出色的程序员的基本规则: 1.扎实的基矗数据结构、离散数学、编译原理,这些是所有计算机科学的基础,如果不掌握他们,很难写出高水平的程序。据我的观察,学计算机专业的人比学其他专业的人更能写出高质量的软件。程序人人都会写,但当...

成为一名正式工作的程序员需要多长时间左右?

答:当你自己真正的完成一个程序时你就能够成为一个真正的程序员了。之前是需要你向前辈们认真学习的阶段。 如何成为一个优秀的程序员: 同一时间处理多个工作任务,我们对这种情况并不陌生。有时候是迫不得已,但有时候也是个人的习惯造成的。“同一...

如何成为一名高级程序员??

答:程序员可以分为很多种,像Unix程序员、Windows程序员,或是C++程序员、Delphi程序员,等等。今天我想谈的是Web程序员,一名真正的Web程序员应该懂得那些方面的知识,应该注意学习哪些东西。 也许有些朋友会说,我知道Asp、Jsp,会做网站、会做bb...

怎样做好一名程序编程员?

答:1,文档习惯 :文档是一个软件系统的生命力。一个公司的产品再好、技术含量再高,如果缺乏文档,知识就没有继承,公司还是一个来料加工的软件作坊。作为代码程序员,必须将30%的工作时间写用于技术文档。没有文档的程序员势必会被淘汰。 2,模块...

如何做一名优秀的程序员

答:首先就是你的目标就不明确,你先要确定自己打算向哪方面发展 当好一名合格的程序员不仅要有扎实的基础知识,还要多思考,多实践,勤看书,更要有团队合作精神,平时多和别人交流,俗话说:“三人行必有我师”,多上网看看一些资料,看看别人对同一...

如何面试一名程序员

答:如何面试程序员 一、提问之前的准备 首先,最重要的是,你自己一开始就应该想清楚: 1. 需要新员工完成什么样的任务? 2. 怎样的人能完成这样的任务? 3. 哪些途径和方法可以发现这样的人? 只有明确这些根本性的问题,才能正确高效地完成面试。...


www.book1234.com true http://www.book1234.com/10/4336/108069.html report 83125 怎么样成为一名程序员应该怎么做?,在本文中:网络编程桌面软件编程分布式程序设计库/平台/框架/核心编程系统编程编程科学成为程序员是一个日积月累的过程,需要日复一日年复一年的技能增长。编程本身是有趣的,并且有回报(脑力层面、精神层面、经济层面)。这份指南不能保证你轻松当上程序员。不要神...
娱乐时尚
科技资讯
历史文化
真视界
旅游美食
精彩图文
我爱我车
母婴健康
关于本站 | 广告服务 | 手机版 | 商务合作 | 免责申明 | 招聘信息 | 联系我们
Copyright © 2004-2018 book1234.com All Rights Reserved. 布客网 版权所有
京ICP备10044368号-1 京公网安备11010802011102号
教育考试: 学历财经建筑 医药公考资格外语电脑作文招聘中小学留学 文档 移民 文库专栏23问答中心z资讯z资讯1资讯涨资讯涨资讯1资讯问答图书馆知识IT编程数码信息解决方案信息中心IT科技问答新闻中心软件教室设计大全网络相关英语学习开发编程考试中心参考范文管理文库营销中心站长之家IT信息中心商学院数码大全硬件DIY企业服务网吧在线百科硬件知识手机平板汽车游戏家电精彩摄影现代家居IT女人经验健康养生猎奇创业攻略教育学习历史时尚潮流最近更新涨知识