下载PDF文件 下载PDF文件

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

    • 逻辑学
    • 离散数学
    • 编程语言(学习不同的编程模式,从顺序/过程到面向对象,再到函数式和逻辑式编程。初学者最好选择Ruby/Python/Pascal,彻底弄懂了之后再深入学习C++/C#/Java)
    专家提示

    Gene Linetsky, MS

    创业者和工程总监
    Gene Linetsky是美国旧金山市湾区的一位创业者和软件工程师。他从事技术行业超过30年,目前在一家为企业建立智能销售点终端的技术公司Poynt担任工程总监。
    Gene Linetsky, MS
    创业者和工程总监

    不要以拿到编程学位为目标。 虽然学习编程语言的课程可能很有帮助,但软件工程师和创业公司创始人Gene Linetsky建议说:“其实以拿学位为目标有利还是有弊值得商榷。相反,最好把编程看作是一种学徒制——它主要涉及到从错误中学习。”

  1. 你可以使用任何简单的数据库包来完成这些,比如:
    • MS Access
    • DB V
    • Fox Pro
    • Paradox
    • MySQL是一个很值得学习的数据库,因为它免费且通用,数据库常常用于SQL查询。
  2. 通常程序员会是下面某一种:
    • 网络程序员
    • 桌面软件程序员
      • 操作系统程序员(有单系统,也有多系统)
      • 独立平台程序员
    • 分布式程序设计员
    • 库/平台/框架/核心程序员
    • 系统程序员
      • 内核程序员
      • 驱动程序员
      • 编译程序员
    • 编程科学家
  3. 下面的部分详细给出了成为不同类型程序员所需的步骤。
    广告
方法 1
方法 1 的 6:

网络编程

下载PDF文件
  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。
  8. 多数人要么学Java,要么学VB,但也有一些人学习Perl和DHTML。
  9. 潜意识里提醒自己只用你学的那个语言。只有在你熟悉你的客户端脚本语言之后才能进入下个步骤。
  10. 如果你只用一种服务器软件,那就学其中一种编程语言。否则,你得每个服务器软件都学至少一种编程语言。
  11. 广告
方法 2
方法 2 的 6:

桌面软件编程

下载PDF文件
  1. 多数桌面软件程序员都是编写商务需要的代码,所以好好了解一下商业及其组织和经济结构将对节省时间、提高效率大有裨益。
  2. 看看数字电路设计和电脑结构的入门级课程,但是也有人认为这对于刚起步来说太超前了,所以看两三篇说明的文章(比如 这一篇 这一篇 )就够了。学完第一种编程语言后你可以再返回这个步骤。
  3. [1] 不要因为你不是个小孩子就不好意思去学。这些入门级语言能大大减轻你正式学习第一门编程语言时的痛苦和压力。然而这一步也不是必须的。你也可以在上一步之前完成。
  4. 无论你以后选择何种编程语言,在某种程度上它都要求程序化程式设计。此外,据多数程序员反映,程序化程式设计总的来说是了解编程的一个很好的切入点。
  5. 你可以利用编程书中的常见小练习。选择一个工具,用你所学的编程语言编写程序。
  6. 确保进展之前先理解下列概念,并能熟练运用。
    • 对程序用户输入输出信息。
    • 程式化设计语言写成的程序中的逻辑流程和执行流程。
    • 声明、分配和比较变量
    • 编程结构分支,比如if..then..else 和 select/switch..case.
    • 循环结构,比如while..do, do..while/until, for..next.
    • 创建、调用程序与函数的编程句法
    • 数据类型及如何操控
    • 用户定义数据类型(records/structs/units)及其使用
    • 如果你的语言支持超载函数,理解它。
    • 你选择的语言的内存处理方式(指针,变量窥视,等等。)
    • 如果你的语言支持运营商超载,理解它。
    • 如果你的语言支持delegates/函数指针,理解它。
    • 面向对象的规范
  7. 推荐学习每种范式的编程语言,多数高级程序员确实是这么做的,然而,通常你开始时只学一种,应用所学知识训练了一段时间,获得了编程的鲜活经验,然后接着学习另一种。试试下面的语言:
    • 逻辑编程范式
    • 函数编程范式
    • 面向对象的范式
  8. 评估各自利弊。通常可按以下方法完成
    • 拿出你在学习第一门编程语言时编写的简单范例,现在用第二门语言重新编写。
    • 创建一个工程,尽量用上两种语言完成它。有时取决于你选择的工程和语言,你可能仅用一门语言还无法完成这个工程呢!
    • 写一份两种语言之间相似结构和独特之处对比的速查表或一览表。
    • 尽量使用另一门语言找到模仿这两门语言中独特之处的办法。
  9. 几乎所有的编程语言都具有支持可视化编程和其他支持控制台或类似控制台编程的版本/库。同时进行的包括:
    • 初步了解事件驱动编程。在某种程度上,多数可视化编程依赖事件及事件处理(用上你选择的语言)。
    • 尽可能多的尝试桌面软件,理解软件是做什么的。多数软件开发公司会提供产品的测试版,你可以拿来测试软件。在完善用户界面方面保持更新。
    • 阅读关于图形用户界面的文章或教程。
  10. 尽量把你的编程专业知识运用到你日常生活中的问题上。比如,编写程序,批量重命名文件,视觉上比较文本文件,复制目录里的文件名到内存/文本文件之类的东西。刚开始简单一点。
  11. 把这个放到最后完成,用上你到目前为止学到的可视化编程技术。
  12. 通过学习更高级的课程、更加注意细节以及在网上学习搭建架构的技巧,来加深对你学过的可视化架构/库/包的理解。
  13. 对于想要写出吸引人的用户界面元素的程序员来说,这将大有裨益。
  14. 很大程度上游戏编程是被当作桌面编程的。如果你想成为游戏程序员,完成这些步骤后你需要进一步学习游戏编程。对于游戏程序员而言,图形学课程是必须的,后续步骤中第二门语言应该选择逻辑/函数编程语言(最好是Prolog或Lisp)。
    广告
方法 3
方法 3 的 6:

分布式程序设计

下载PDF文件
  1. 分布式应用编程被许多人认为是最难学的一种,它要求计算机和通信技术中的不同知识。
  2. 这个步骤不是必须的,但是对于理解网络拓扑结构很有用。
  3. 在你开始分布式应用编程之前,你需要好好理解“开放系统互联 (OSI) ”模型、以太、IP、TCP、UDP和HTTP 。
  4. 对基于Windows的编程,可以是任何能与Windows脚本宿主兼容的脚本。对基于Linux的编程,Bash脚本和 Perl就够了。对这两个平台都强烈推荐Java,原因如下:
    • 几乎所有操作系统的都支持脚本宿主(Windows 脚本宿主默认支持java ,大多数Linux发行版都有支持java脚本控制的包)。
    • 许多开发者认为它很容易学。
    • 当你需要学第二门编程语言(C,C++,C#,Java和J#都有ALGOL开源句法)时,它拥有的ALGLO开源句法就能使你熟悉更多编程语言
    • 通过学习java,你会熟悉网页的客户端脚本,这可谓一大福利!
  5. 之后,根据你的脚本语言和它所支持的,你可以用上更高级的编程技巧和范式。所有的脚本语言在某种程度上都有程序化程式设计的一些方面。
  6. 学习完成这个所必需的东西。简单的通信就足够了。
  7. 一个比较好的是多范式语言,比如Python。简单了解第二门语言。有许多理由让多数程序员选择java。然而,在这个领域内C#正在获得多数优势。Java和C#被青睐的原因如下:
    • 它们是面向对象的编程语言,使大量程序员免遭实现细节之苦,因为它们都支持组成部分(代码单元、预编译,它们可以执行特定任务,并被用到其他程序中)。
    • 它们支持事件驱动编程,在某种程度上还支持OO和程式化程序设计。
    • 建立语言的架构按属性分布(比如Java)。
    • 有许多现成的包来处理。社交网络同时作为开源代码和架构内置包,这使得程序员继续其他人工作更加容易。
  8. 少注意用户界面元素,比如输出,窗口设计和技术等。
  9. 可以通过书本、网上教程或学术课程来完成。然而,十分有必要理解分布式应用的结构及其概念。
  10. 推荐你每一种都了解以下。多数分布式应用程序员不会止于一两门编程语言,他们会每个操作系统各学至少一种语言。这是因为如果你希望你的应用“分布式”,你应该至少为每个主要的操作系统各提供一个版本。
    • 公共对象访问代理体系结构(CORBA)
    • 简单对象访问协议(SOAP)
    • 异步JavaScript和XML(AJAX)
    • 分布式组建对象模型(DCOM)
    • .NET远程处理
    • XML 网络服务
    广告
方法 4
方法 4 的 6:

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

下载PDF文件
  1. 核心程序员几乎都是高级程序员,已经从编写应用转变为给其他程序员编写代码汇编。
  2. 多数库开发者使用其中一种,或两种都用。
  3. 你所学覆盖越多编程范式和语言,你就能成为越成功的库/包程序员。
  4. 无论何时尽可能使用标准代码。
  5. 这在成为库/包程序员的早期阶段十分有用。从简单的包开始,比如单位转换和中间科学计算包。如果你是大学生,利用你的非编程课程,尝试把这些课程的方程式与核心科学用作库。
  6. 首先下载包的二进制/可执行文件。尽量去用,并发现它的利弊。之后,下载源,尽量弄明白它是怎么完成的。尝试再创造这些库或其部分。刚开始,看完代码再做;之后,先做再看代码。后期阶段,尝试完善那些库。
  7. 给程序员分发、配送内容。
    • 通常,库/包程序员倾向于以递归和/或迭代的思想来思考他们面临的所有问题 。尽量把每个问题当作一个小问题的汇编(一系列更小的任务)或一个重复的不断缩小问题范围直至把这些更小的范围彼此堆到一起的处理过程去思考。
    • 库/包程序员倾向于概括化。也就是说,当面临一个特定的简单的问题时,他们通常会想到一个更为概括的问题,并努力解决这个更概括的问题,如此,小问题便不攻自破。
    广告
方法 5
方法 5 的 6:

系统编程

下载PDF文件
  1. 系统编程处理的是编程的“科学”,而不是具体的编程实现。不要把你自己栓到特定平台上。
  2. 这可以通过以下途径完成:
    • 了解操作系统是如何安装的。
    • 了解在一台PC上如何安装不同的操作系统(不是必须的,但作为推荐)
    • 安装不止一种操作系统。不要在系统中安装任何辅助包,相反,仅利用操作系统本身提供的函数。
  3. 稍后你会学习其他平台/系统的汇编。
  4. 尤其注意标准模板库(STL)和活动模板库(ATL)。
  5. 如果你选的是基于Unix的操作系统就会容易得多。充分理解你今后将要用来工作的系统。
  6. 首先创建小的系统软件。如下通常很有用:
    • 试着重创你系统中已有的小工具。
    • 试着把其他系统中的应用移植到你的系统里。
  7. 此处是唯一强调第一门编程语言的地方。首先学习ANSI C 而不是 C++、C#、Java 、D。然后学习 C++。
    • 限制你第一门语言仅为C是因为系统编程要求程序员熟悉如下概念:
      • 源代码真实、完全的编译
      • 低级对象输出文件
      • 链接二进制
      • 低级机器语言/汇编编程。C语言被某些人认为是伪饰过的/更容易学习的汇编语言。只要你愿意,它还支持插入汇编语言代码,并且它只是程序化的(像汇编)。
    广告
方法 6
方法 6 的 6:

编程科学

下载PDF文件
  1. 编程科学家是十分高级的程序员,他们不开发程序,但他们研究计算科学,比如密码学、编程语言和数据挖掘算法。没有深入的学术研究是很难达到这个水准的。
  2. 可通过如下其中一种完成:
    • 获得真实的学术学历(这也是通常情况)。
    • 从现代大学中获得该学历要求的课程大纲,自学课程或 分开一门门学。理论上这样做也可以,但还是推荐第一种做法。
  3. 越具体越好。这取决于你的偏好。但是这里给出计算机编程领域中一些主要的课题:
    • 算法设计(例如搜索、分类、密码、解码、错误检测 等)
    • 编程语言/编译器设计/最优化
    • 人工智能领域(模式识别,语音识别,自然语言处理,神经网络)
    • 机器人技术
    • 科学编程
    • 超级计算
    • 计算机辅助设计/模式(CAD/CAM)
    • 虚拟现实
    • 计算机图形学(计算机图形学通常和图形设计或图形用户界面设计混淆,计算机图形学是研究如何表示和操控计算机系统中的图形的领域)
  4. 或许你想追求硕士学历或博士学历。
  5. 广告

小提示

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


广告

相关wikiHows

关于本wikiHow

本页面已经被访问过48,567次。

这篇文章对你有帮助吗?

广告