程序员

程序员（Programmer，Computer Programmer或Coder；程式師），可以指在程序设计某個專業領域中的專業人士，或是从事軟體撰寫，程序开发、维护的专业人员。但一般Coder特指進行編寫代碼的編碼員。 一个程序员最常使用的编程语言（如汇编语言、COBOL、C、C++、C#、JavaScript、Lisp、Python）可以加在“程序员”这个词前面用来修饰。 涉及编程的一系列职业，如（软件）开发人员、网络开发人员、流動應用程式开发人员、嵌入式韌體开发人员、软件工程师、電腦科學家、游戏程序师、游戏开发人员和软件分析师（英语：software analyst），通常还需要一系列其他类似的技能。用程序员这个词来指代这些职位，有时被认为是一种侮辱性的简化，甚至是贬损。 英国著名诗人拜伦的女儿愛達·勒芙蕾絲曾设计了巴贝奇分析机上計算伯努利數的一个程序，她甚至还建立了递归和子程序的概念。由于愛達在程序设计上的突破性創新，她被称为世界上第一位程序员，詳見计算机领域中的女性。 本节的一些内容来自《职业前景手册 （页面存档备份，存于互联网档案馆）》，2006-07版，该手册作为美国政府的一部作品进入公有领域。 计算机程序员编写、测试、调试和维护被称为计算机程序的详细指令，计算机必须遵循这些指令来执行它们的功能。程序员还构思、设计和测试用计算机解决问题的逻辑结构。编程领域的许多技术创新——先进的计算技术、复杂的新语言和编程工具——重新定义了程序员的角色，提升了当今许多编程工作。职位名称和描述可能会有所不同，取决于组织。 程序员在许多环境中工作，包括企业信息技术（“IT”）部门、大型软件公司、小型服务公司和各种规模的政府实体。许多专业程序员也以独立承包人的身份在客户现场为咨询公司工作。程序员通常不需要有从业执照就可以工作，但他们一般都会持有專業認證。编程被广泛认为是一个專業（但有些权威机构不同意这个看法，他们认为只有那些法律上规定要有从业执照的职业才能叫做专业）。 程序员的工作差别很大，这取决于他们为之编写程序的业务类型。例如，更新财务记录所涉及的指示，与飞行模拟器中训练飞行员时模拟在飞机上的状况所需的指示大不相同。简单的程序可以在几个小时内完成，更复杂的程序可能需要一年以上的工作，而其他的程序则永远不会被认为是“完善的”，而是只要继续使用就会不断进行改进。在大多数情况下，几个程序员在高级程序员的监督下作为一个团队一起工作。 程序员根据主要由高级程序员和系统分析员确定的规范编写程序。在设计过程完成后，程序员的工作就是将设计转换成计算机可以遵循的一系列逻辑指令。程序员用众多编程语言中的一种来编写这些指令。根据用途的不同，会使用不同的编程语言。例如，COBOL通常用于通常在大型和中型计算机上运行的业务应用程序，而Fortran则用于科学和工程。C++和Python广泛用于科学和商业应用程序。Java、C#、JS与PHP是Web和商业应用程序的流行编程语言。程序员通常了解一种以上的编程语言，因为许多语言是相似的，他们通常可以相对容易地学习新的语言。在实际中，通常会用程序员们了解的语言来描述程序员，比如，Java程序员，或者用他们所扮演的角色或他们的工作环境来描述：比如，数据库程序员、大型机程序员、Web开发人员等。 当修改组成程序的源代码时，程序员需要让其他程序员知道程序要执行的任务。他们通过插入注释以及编写文档，来让其他人更容易理解程序。为了节省工作量，程序员经常使用基本代码库，这些库可以针对特定的应用程序进行修改或自定义。这种方法可以产生更可靠和一致的程序，并通过消除一些重复性的步骤来提高程序员的生产力。 程序员通过运行程序并查找错误来测试程序。一旦确定了错误，程序员通常会进行适当的修正，然后重新检查程序，直到错误（bug）的严重程度达到可接受的低水平。这个过程称为测试和调试。这些都是每个程序员工作的重要部分。程序员可以在程序的整个生命周期中继续修复这些问题。更新、修复、修改和扩展现有程序有时称为维护编程。程序员可能会编写用户指南和在线帮助，或者他们可能会与技术作者合作完成这些工作。 计算机程序员通常分为两大类：应用程序员和系统程序员。应用程序员编写程序来处理特定的工作，例如在组织内跟踪库存的程序。他们还可以修改现有的套装软件（packaged software），或定制通常从独立软件供应商购买的通用应用程序。相比之下，系统程序员编写程序来维护和控制计算机系统软件，如操作系统和数据库管理系统。这些工作人员对指令进行更改，这些指令决定了系统的网络、工作站和CPU如何处理给定的各种作业，以及如何与打印机和磁盘驱动器等外围设备通信。 软件开发人员需要在计算机技术的某些方面具有深厚的技术专长。有些职位需要相关领域的学位，如计算机科学、信息技术、工程、编程或任何其他与IT相关的研究生学习。 一个理想的软件开发人员是一个自我激励的专业人员，在诸如C++、C#、PHP、Java、C、JavaScript、Visual Basic、Python、Smalltalk等关键编程语言上拥有动态的动手实践经验。 根据开发人员Eric Sink的说法，系统设计、软件开发和编程之间的差异更加明显。在当前的市场环境中，程序员和开发人员之间已经存在隔离，因为实现程序的人和设计类结构或层次结构的人是不一样的。开发人员成为软件架构师（英语：software architect）或系统架构师（即设计大型软件系统的多层体系结构或组件交互的架构师）后，差异会更大。 软件开发公司的程序员可以直接与来自不同领域的专家合作来开发软件，包括为特定客户设计的程序或通用的套装软件，从电子游戏到教育软件，再到用于桌面出版和财务规划的程序。套装软件的编程是计算机服务行业增长最快的部分之一。一些公司或组织，即使是小公司，也建立了自己的IT团队，以确保内部软件的设计和开发能够满足内部最终用户非常特殊的需求，特别是在现有软件不适合或成本太高的情况下。研究中心的情况就是如此。 在一些组织中，特别是小型组织中，通常被称为程序员分析师的人同时负责系统分析和实际的编程工作。从大型机环境过渡到主要基于个人电脑（PC）的环境，模糊了曾经严格的程序员和用户之间的区别。越来越多的熟练的终端用户正在接管许多以前由程序员执行的任务。例如，越来越多地使用套装软件，如电子表格和数据库管理软件包，让用户可以编写简单的程序来访问数据和执行计算。 此外，互联网的兴起使得Web开发成为编程领域的一个重要组成部分。目前，更多的软件应用程序是网络应用程序，任何人都可以使用网页浏览器。这类应用程序的例子包括Google搜索服务、Outlook.com电子邮件服务和Flickr照片分享服务。 编程编辑器，也称为源代码编辑器，是专门为编写程序源代码的程序员或开发人员设计的文本编辑器。这些编辑器中的大多数都含有对程序员有用的特性，可能包括語法突顯、自动缩进、自动完成、括号匹配、语法检查以及允许插件。这些特性帮助用户进行编码、调试和测试。 集成开发环境（Integrated Development Environment），简称IDE，是程序员广泛使用的一种，集合了源代码编辑器、编译器、版本控制等功能的应用程序，常见的有Microsoft Visual Studio，InteliJ IDEA等等。 No Programmers. [2020-06-14]. （原始内容存档于2020-06-14）.  Developer versus programmer. [2008-04-21]. （原始内容存档于2010-11-25）.  Developers AND Programmers. [2020-06-14]. （原始内容存档于2013-11-03）.  Programmer vs. Developer vs. Software Engineer. [2008-04-21]. （原始内容存档于2018-07-10）.  Programmer vs. Developer vs. Software Engineer. [2020-06-14]. （原始内容存档于2017-09-09）.  Software Engineer Skills and Responsibilities. [2020-06-14]. （原始内容存档于2020-06-14）.  Eric Sink. Small ISVs: You need Developers, not Programmers. Sourcegear. [2008-06-06]. （原始内容存档于2008-07-05）. A programmer is someone who does nothing but code new features and (if you're lucky) fix bugs. They don't write specs. They don't write automated test cases. They don't help keep the automated build system up to date. They don't help customers work out tough problems. They don't help write documentation. They don't help with testing. They don't even read code. All they do is write new code.  BBC Bitesize - GCSE Computer Science - Programming software and the IDE - Revision 4. www.bbc.co.uk. [2017-09-16]. （原始内容存档于2017-09-23） （英国英语）.  系统管理员（SA） 系统设计师（SD） 数据库管理员（DBA） 应用分析师（AA） 技术支持（TS） 识别优秀程序员的关键要素（英文） 程序员不為人知的事實（英文）