如何成为一名程序员

作者: John Stephens
创建日期: 1 一月 2021
更新日期: 2 七月 2024
Anonim
如何自学成为一名程序员
视频: 如何自学成为一名程序员

内容

成为开发人员是一个不断积累的过程,可以逐步培养您的技能,并且可以成为一项有趣而有意义的工作(在智力,精神和财务上)。 )。本教程不会向您保证成为程序员的简便方法的魔力,而且步骤的顺序也不是那么重要,但是您将获得如何成为程序员的要旨。成为现代编程领域之一的程序员。

脚步

  1. 参加以下一个(或全部)主题的入门课程:
    • 逻辑
    • 离散数学
    • 编程语言(初学者最好学习C ++ / Java / Python)


    吉恩·莱恩茨基(MS)

    创业创始人和技术总监Gene Linetsky是旧金山湾区的创业创始人和软件工程师。他从事高科技行业已有30多年,目前是Poynt的技术总监,该公司是为企业生产智能销售点设备的技术公司。

    吉恩·莱恩茨基(MS)
    初创公司创始人兼技术总监

    您不需要编码学位。 虽然学习编程语言是有益的,但软件工程师,一家初创公司的创始人吉恩·莱恩斯基(Gene Linesky)表示:``学位是否有用还存在争议。在这里,您可以将编程视为一个学徒过程-您将从错误中学习。”


  2. 了解数据库概念,例如表,视图/查询和过程。 您可以使用任何简单的数据库程序包来执行此操作,例如:
    • MS Access
    • 数据库V
    • 福克斯专业版
    • 悖论
    • MySQL是一个很好的学习数据库,因为它是免费的,常用的,并且经常使用SQL查询来访问数据库。

  3. 确定您要成为哪种类型的开发人员。 程序员通常属于以下类别之一:
    • Web开发人员
    • 桌面应用程序程序员
      • 面向操作系统的程序员(与单个操作系统或一组操作系统相关联)
      • 平台独立开发人员
    • 分布式应用程序程序员
    • 库/平台/框架/核心程序员
    • 系统程序员
      • 内核人员程序员
      • 驱动程式
      • 程序员编译器
    • 编程科学家
  4. 研究与您选择的编程领域相关的技术和编程语言。 下一节将划分不同类型编程的任务。广告

方法1之6:网络编程

  1. 了解Web编程需要什么。 Web应用程序是旨在在Internet体系结构之上运行的软件组件。这意味着可以通过浏览器软件(例如Firefox或Internet Explorer)访问应用程序。这些应用程序位于Internet体系结构的顶部,这意味着它不需要真正连接到Internet。这意味着Web应用程序建立在标准Web技术之上,例如:
    • HTTP
    • 的FTP
    • POP3
    • SMTP
    • TCP协议
    • IP协议
    • 的HTML
    • XML格式
    • 冷融
    • 均价
    • JSP
    • 的PHP
    • ASP.NET
  2. 查看各个页面以查看其通常的外观。 (通过右键单击,然后选择“查看源代码”(查看源代码)或按F12键)。您应该寻找网站类型/内容的多样性,而不是看到的网页数量。通常,对于以下每种类型的网站,您至少需要访问一页:
    • 公司介绍页(商业公司,非营利性公司/组织,政府实体)
    • Web索引工具(搜索引擎,元搜索站点,专用搜索引擎,目录)
    • 数据挖掘站点
    • 个人页面
    • 文档/百科全书网站(Wiki,数据表,技术规范和用户指南目录,博客和杂志,新闻和新闻站点,黄页 ...)
    • 社交网站(社交门户网站,书签和在线笔记站点)
    • 协作网站(包括以上所有类别,例如Wiki和Blog)
  3. 学习至少一种集思广益的技巧/方法和用于实现此目的的软件。 示例:集思广益图表和MS Visio软件。

  4. 熟悉网站结构。 这是概念性站点地图,站点地图和导航结构的创建。
  5. 参加密集的图形设计培训课程。 尝试学习至少一个图形编辑/操作软件包(不是必需的,但强烈建议)。

  6. 了解互联网基础设施的基础知识。 它涉及掌握以下基本概念:
    • 常见的Web服务协议(HTTP,FTP,SMTP和POP3或IMAP4)
    • Web服务器软件(最好是主要用于其平台的软件)
    • 网页浏览软件。
    • 电子邮件的服务器和客户端软件

  7. 学习HTML和CSS语言。 您可能还需要“所见即所得(WYSIWYG)(所见即所得)”软件包进行HTML编辑。
  8. 了解XML和XML相关技术,例如XSL和XPath(可选,但推荐)。
  9. 创建简单的静态网页,直到您熟悉和熟悉HTML。
  10. 学习客户端脚本语言。 大多数用户都学习JavaScript。其他人学习VBScript,但它与大多数浏览器不兼容。
  11. 熟悉所学的客户端脚本语言。 仅尝试使用该语言就可以做到最好。仅当您至少熟悉客户端脚本语言时才继续。
  12. 学习至少一种服务器编程语言。 如果您选择限制自己使用服务器软件,请学习该软件支持的编程语言。如果不是,请为每种服务器软件至少学习一种编程语言。
  13. 学习完服务器编程语言后,请为自己创建一个试验项目。
  14. 建立您自己的网站并开始尝试自己的在线体验。 广告

方法2之6:桌面应用程序腹部编程

  1. 了解如何处理桌面应用程序编程。 大多数桌面程序员为业务解决方案编写代码,因此了解他们的业务,组织结构和财务结构将节省大量时间。
  2. 研究不同的计算机硬件体系结构。 有趣的是数字电路设计的基础课程和计算机体系结构的基础课程。但是,有些人认为从一开始就很难学习它,因此阅读两三个教程(像这样)就足够了。学习完第一门编程语言后,您可以返回此步骤。
  3. 学习基本的编程语言(适用于儿童)。 不要因为您太老而不能被称为“孩子”而尴尬地学习这种语言。此类编程语言的一个示例是Scratch。这些编程语言可以大大减少学习您的第一门编程语言的难度。但是,此步骤是可选的,您也可以在上一步之前进行。
  4. 了解过程,面向对象和功能编程模型。
  5. 使用一种过程编程语言学习基础课程。 以后无论选择哪种语言,都将需要一定程度的过程编程。此外,程序员认为过程式编程是掌握一般编程思想的最简单起点。
  6. 学习至少一种高级建模方法,例如UML或ORM。
  7. 开始编写一些小型控制台应用程序或类似的东西。 您可以在编程语言书籍中使用这些小练习。为此,请根据您要编写的编程语言选择一种用于编写程序的工具。
  8. 使用您选择的编程语言来参加更高级的课程。 在继续进行之前,请确保您了解以下概念并可以相对轻松地应用它们:
    • 为程序用户输入和输出信息。
    • 程序语言的程序的逻辑流程和执行流程。
    • 声明,分配和比较变量。
    • 编程中的分支语句(例如if..then..else),然后选择/switch..case。
    • 循环语句,如while..do,do..while /直到for..next。
    • 用于创建和调用过程和函数的编程语言语法。
    • 数据类型并对其进行操作。
    • 用户定义的数据类型(记录/结构/单位)及其用法。
    • 如果您的语言支持函数重载,请理解它。
    • 您选择的语言的内存访问方法(指针,如何读取任何单元格的内容...)
    • 如果您的语言支持运算符重载,请理解它。
    • 如果您的语言支持函数指针,请理解它。
  9. 应用所学的高级技术。
    • 面向对象的模型。

  10. 在另一种编程模型中,学习有关至少一种其他编程语言的基础课程。 大多数高级程序员都应该为每种模型学习一种编程语言。但是,您通常应该从一种语言开始,花一会儿时间,运用您的知识并进行练习。具有实际的编程经验之后,然后学习一种新的语言。请尝试以下语言数组之一:
    • 逻辑编程模型。
    • 功能编程模型。

  11. 让我们尝试比较到目前为止学到的两种编程语言。 评估每种语言的优势和劣势。通常通过以下方式完成此操作:
    • 使用第一种编程语言采用较早的简单作业模式,然后用第二种编程语言重写它。
    • 创建一个新项目,并尝试使用两种语言。有时,取决于您选择的项目和选择的语言,您可能无法使用任何一种语言进行操作!
    • 比较两种语言的两个相似语句之间的快速查找表或汇总表,以及每种语言的独特功能。
    • 尝试找到一种方法来模仿另一种语言的独特特性。

  12. 使用您学过的一种语言学习编程概念。 大多数编程语言都有支持可视化的版本/库以及其他有助于通信或类似功能的编程类型。您可以通过以下方式做到这一点:
    • 了解有关事件编程的知识。大多数可视化编程在某种程度上依赖于事件和事件的处理(使用您选择的编程语言)。
    • 尝试尽可能多的台式机软件,并了解它们的作用。大多数软件开发公司都向用户提供产品的测试(测试版)版本以测试软件。因此,请及时了解用户界面的最新进展。
    • 阅读有关图形用户界面的一些文章或教程。
  13. 开始将您的知识应用于您设计的小型软件项目。 尝试将您的编程技能应用于每天遇到的问题。例如,编写程序以批量重命名文件,目视比较文本文件,将目录中的文件名复制到内存/文本文件,等等。记住,这只是那么简单。
  14. 创建一个虚拟的“毕业项目”。 应用到目前为止所学的可视化技术,完成项目的最后阶段。
  15. 通过学习高级课程,更加关注细节以及学习有关框架的更多技巧,可以扩展您对以前学习的视觉框架/库/程序包的理解。您的工作来自在线资源。
  16. 搜索其他视觉元素包/库以使用您的编程语言并进行研究。
  17. 参加图形课程(不是图形设计)。 对于想要编写有吸引力的UI元素的程序员来说,这将非常有帮助。
  18. 成为游戏程序员(可选)。 游戏编程在很大程度上仍被认为是桌面编程。如果您打算成为游戏开发人员,则在完成这些步骤后,您将需要了解有关游戏编程的更多信息。游戏程序员需要图形课程,并且在前面的步骤中选择的第二种语言应该是逻辑/功能编程语言(应选择Prolog或Lisp)。广告

方法3(共6):分布式应用程序编程

  1. 了解分布式应用程序编程。 许多人认为分布式应用程序编程是最难学习的程序之一,需要计算机和通信技术方面的丰富知识。
  2. 快速了解语音系统及其硬件。 此步骤是可选的。但是,了解网络拓扑非常有帮助。
  3. 熟悉硬件结构和网络设备,例如中央集中器(集线器),交换机和路由器(路由器)。
  4. 参加有关协议和基础知识的课程。 在开始对分布式应用程序进行编程之前,您需要对开放系统连接(OSI)模型,以太网,IP,TCP,UDP和HTTP有很好的了解。
  5. 学习XML语言并熟悉它。
  6. 首先学习用于命令解释器的脚本语言。 对于基于Windows的编程,可以是与Windows脚本宿主一起使用的任何脚本。对于基于Linux的编程,Bash和Perl脚本就足够了。出于以下原因,强烈建议在两个平台上为此使用JavaScript:
    • 任何操作系统中的大多数脚本工具都支持它(默认情况下Windows Scripting Host支持JavaScript,大多数Linux发行版都具有JavaScript脚本通信支持包) 。
    • 许多程序员认为它更易于学习。
    • 它具有ALGOL派生的语法,当您需要选择第二种编程语言时,您可以熟悉许多其他编程语言C,C ++,C#,Java和J#都有从ALGOL派生的语法。
    • 通过学习JavaScript,您将熟悉网页的客户端脚本,这显然是有益的副作用!
  7. 首先,仅以您选择的脚本语言应用过程编程。 然后,您可以根据脚本语言及其支持的内容使用更高级的编程模式和技术。所有脚本语言都在某种程度上与过程编程有关。
  8. 使用您学到的脚本语言编写用于在机器之间进行通信的脚本。 找出需要做的事情。只需简单的联系信息就足够了。
  9. 切换到桌面编程/脚本语言。 最好的是像Python这样的多范式语言。关于第二种语言的初步研究。由于许多原因,Java是大多数程序员选择的语言。但是,C#有助于在此数组中创建更快的动力。支持Java和C#的原因如下:
    • 它们是面向对象的编程语言,可帮助大团队的程序员避免实现部件,因为它们都具有支持组件(即代码单元,前沿)的能力。针对特定任务执行的翻译可以在其他程序中使用)
    • 它们在某种程度上支持事件驱动的编程以及OO(面向对象)和过程编程。
    • 建立该语言的框架的特点是具有分布式特性(对于Java)。
    • 已有开源的或内置在框架中的预制编程软件包可用于处理网络。这使开发人员可以轻松地开发其他人的产品。
  10. 更多地关注核心语言功能,尤其是那些支持网络的功能。 少关注UI元素,例如输出信息,工作窗口的设计和技术以及UI元素。
  11. 参加分布式应用程序体系结构和设计培训课程。 您可以学习书籍,在线教程或学术课程。但是,无论哪种方式,您都需要掌握分布式应用程序的体系结构及其概念。
  12. 了解如何构建服务组件以及如何使用所选的编程语言。
  13. 了解以下一项或多项技术。 至少您应该仔细阅读所有内容。大多数分布式应用程序开发人员不仅学习一种或两种编程语言,而且每个操作系统至少学习一种编程语言。这是因为如果要“分发”应用程序,则必须至少为每个流行的操作系统提供一个版本。
    • 通用对象请求代理体系结构(CORBA)
    • 简单对象访问协议(SOAP)
    • 异步JavaScript和XML(AJAX)(异步JavaScript和XML)
    • 分布式组件对象模型(DCOM)(分布式组件对象模型)
    • .NET Remoting(用于处理远程计算的解决方案)
    • XML Web服务
    广告

方法4之6:库/平台/框架/核心编程

  1. 了解什么是核心编程。 核心程序员只是将编程应用程序转换为供其他程序员使用的编程代码单元的高级程序员。
  2. 如果还没有,请学习一种编程语言,以帮助构建可重用的组件/软件包。
  3. 参加UML和ORM的高级课程。 大多数库开发人员都使用其中一个或两个。
  4. 参加软件工程课程。
  5. 至少学习模块化,基于组件,面向对象和事件驱动的编程概念和技术。 您了解的编程模型和语言越多,您作为库/程序包开发人员将越成功。
  6. 了解有关它们支持的不同操作系统和编程框架的更多信息。
  7. 将学习重点放在平台独立的框架,编程语言和技术上。
  8. 如果到目前为止已经学习过的语言具有ANSI / ISO / IEEE / W3C标准的版本,请掌握这些标准。 尽可能尝试使用标准代码。
  9. 尝试模仿预制的简单库,尤其是开源库。 这在成为库/包开发人员的早期阶段非常有用。从简单的程序包开始,例如中间的科学计算和单位转换程序包。如果您是学生,请尝试通过将非编程学科的方程式实现为科学并利用它们作为图书馆来繁衍。
  10. 在您的编程字段中搜索并尝试使用开源软件包。 首先下载软件包的二进制文件/可执行文件。尝试使用它,并找到其优点和缺点。完成后,下载源代码并尝试找出完成方式。尝试重新创建这些库或它们的一部分。首先,请先查看源代码,然后再查看源代码。在稍后的阶段,尝试完善那些库。
  11. 研究向程序员分发和部署组件的不同方法。
    • 通常,库/程序包程序员倾向于递归地和/或反复地考虑向他们提出的所有问题。将每个问题视为一组较小的问题(一系列较简单的任务),或将问题范围缩小至较小范围的迭代过程,然后将范围堆叠在一起。
    • 库/包开发人员倾向于概括。也就是说,当他们遇到一个简单的特定问题时,他们通常会想到一个更普遍的问题,并尝试解决该普遍的问题,以便它将自动解决较小的问题。
    广告

方法6之5:系统编程

  1. 了解系统编程需要什么。 系统程序员处理编程的“科学性”,而不是其特定的实现。不要将自己局限于特定的背景。
  2. 按照前三个步骤成为桌面应用程序程序员。
  3. 参加线性代数入门课程。
  4. 参加计算机课程。
  5. 参加离散数学和/或逻辑课程。
  6. 熟悉不同的基本操作系统。 这可以通过以下方式完成:
    • 了解如何安装操作系统。
    • 了解如何在一台PC上安装不同的操作系统(可选,但建议)。
    • 安装多个操作系统。请勿在系统上安装任何其他插件;而是仅使用操作系统提供的基本功能。
  7. 参加一门有关计算机硬件体系结构的课程(或可能读一本书)。
  8. 加深对不同计算机硬件平台的了解。
  9. 首先熟悉您选择的操作系统/硬件平台组装。 稍后,您将了解其他操作系统/平台的更多汇编语言。
  10. 学习ANSI C和C ++语言以及过程概念。
  11. 在您选择的平台上理解和实践标准C / C ++库。 应该特别注意标准模板库(STL)以及可能的活动模板库(ATL)。
  12. 搜索在线资源,书籍和课程,以在您选择的平台上了解C的功能。
  13. 使用C和C ++练习高级代码生成。
  14. 了解更多高级汇编语言。
  15. 参加操作系统设计课程。
  16. 在您选择的特定平台上查找和阅读材料。 如果选择基于Unix的操作系统,这将更加容易。掌握以后要使用的系统。
  17. 练习获得的收益。 让我们首先创建一些小型系统实用程序。如果您:
    • 尝试重新创建系统上可用的小型工具。
    • 尝试将其他操作系统中可用的实用程序迁移到您的操作系统中。
  18. 按照最有帮助的顺序学习语言。 这是第一种编程语言具有其含义的唯一数组。首先学习ANSI C,而不是C ++,C#,Java或D。然后学习C ++。
    • 将第一语言限制为C,仅限于C,因为编程系统要求程序员熟悉以下概念:
      • 编译实际和整个源代码。
      • 低级对象输出文件。
      • 二进制链接的代码。
      • 低级机器语言/汇编语言编程。许多人认为C语言是替代语言,而且汇编语言更容易学习。它还支持随时随地将汇编代码插入代码中,而这只是过程性的(如汇编)。
    广告

方法6之6:程式设计科学

  1. 了解程序员的工作。 编程科学家是非常高级的程序员,他们不用开发应用程序,而是开发诸如编码,编程语言和数据挖掘算法之类的计算技术。如果没有深入的学术研究,很难获得该学位。
  2. 累积的科学知识相当于4年的计算机科学学位。 这可以通过以下方式之一来实现:
    • 获得真正的学位(通常是这样)。
    • 从其中一所现有大学中找到此类学位的课程大纲,然后自己学习或修读私人课程。从理论上讲,您可以实现这一目标,但是您应该走第一条路。
  3. 选择一个专用阵列。 更具体,更好。这取决于您的喜好。但是,以下是计算机编程科学中的主要主题列表:
    • 设计算法(查找,分类,编码,解码和检测通信中的错误是一些示例)
    • 设计/优化编程语言/编译器
    • 人工智能阵列(模式识别,语音识别,自然语言处理,神经网络)
    • 机器人技术
    • 科学编程
    • 超级计算
    • 计算机辅助设计/建模(CAD / CAM)
    • 虚拟现实
    • 计算机图形学(计算机图形学经常与图形设计或图形用户界面设计相混淆。)计算机图形学是研究如何在计算机系统中表示和操纵图形的研究领域。计算)。
  4. 考虑获得更高的学位。 您可以继续攻读硕士或博士学位课程。
  5. 学习与您选择的编程领域相关的编程语言和技术。 广告

忠告

  • 无论您想尝试哪种编程类型,并且想要达到什么水平,都可以考虑在当地学校或社区学院上课。不要被诸如“计算机科学”之类的术语所吓倒。您参加的不需要初始要求或要求的任何课程都将专注于教授编程的基础知识,但无论如何请先与您的指导老师或导师联系确保这正是您要寻找的东西,因为“计算机技能”之类的课程可以更加侧重于适应Office应用程序或类似的应用程序。