程序设计

电脑程序设计（），或称程式设计（），是给出解决特定问题程序的过程，软体开发过程中的重要步骤。程序设计往往以某种程序设计语言为工具，给出这种语言下的程序。程序设计过程应包括分析、设计、编码、测试、除错等不同阶段。

在计算机技术发展的早期，软体开发主要就是程序设计。但随着技术的发展，软件系统越来越复杂，逐渐分化出许多专用的软件系统，如操作系统、数据库系统、应用服务器，而且这些专用的软件系统愈来愈成为普遍的系统环境的一部分。这种情况下软体开发的内容越来越丰富，不再只是纯粹的程序设计，还包括数据库设计、用户界面设计、通信协议设计和复杂的系统配置过程。

专业的程序设计人员被称为程序员。某种意思上，程序设计的出现甚至早于电子计算机的出现。英国著名诗人拜伦的女儿爱达·勒芙蕾丝曾设计了巴贝奇分析机上计算伯努利数的一个程序。她甚至还建立了循环和子程序的概念。由于她在程序设计上的突破性创新，爱达·勒芙蕾丝被称为世界上第一位程序员。

任何设计工作都是在各种条件限制和相互矛盾的需求之间寻求一种平衡。这种观点反映在程式设计上，就是硬体储存空间与程式执行时间的限制。

空间方面，在计算机技术发展的早期，由于机器资源比较昂贵，如何缩小储存空间往往是设计关心的首要重点；而随着硬件技术的飞速发展，电脑上资料储存媒体的价格降低，空间不再是考虑的第一要点，一些较耗时的运算也渐渐发展出以空间换取时间的模式。

时间方面，在早期，如何加强程式效率、缩短程式执行时间是程式设计师的共同目标；而在硬体效能进步、效率差距缩小，软件规模与复杂度却日益增加的现在，程序的结构、可维护性、重复使用性、弹性等因素更显得重要。在多人合作的程式设计专案里，程式设计师们会加上各种注解以协助其他参与者理解程式码，，但却因能达到较好的沟通并提高程式码的可维护性，而成为目前的主流。

然而，随著智慧型手机等携带装置的兴起，执行时间的缩短与储存空间的有效运用再次成为焦点，形成与主机伺服器类型应用程式不同的重点考虑方向。