什么是编程

阅读 65

电脑程序设计(英语:Computer programming),或称程序设计(programming),是给出解决特定问题程序的过程,软件开发过程中的重要步骤。程序设计往往以某种程序设计语言为工具,给出这种语言下的程序。程序设计过程一般包括分析、设计、编码、测试、调试等不同阶段。 — 维基百科 程序设计

编程语言

世界上在使用的编程语言有上百门 编程语言列表,其中在主流的编程语言大概十几门,从 C、C++、Java、Python、Javascript、PHP 到新出现的 Golang、Rust、Swift 等。这些编程语言大多是为了解决某些问题,做出一些改进而开发的,比如 C 语言是为了更高效的开发 Unix,现在底层软件如驱动程序、数据库、操作系统大部分都是用 c 语言开发的;C++ 在 C 的基础上提供了许多新的特性(尤其是类),提高了开发效率,而且不影响运行效率;Javascript 是为了在浏览器中运行的解释性脚本语言,是的网页能够根据用户操作即时的作出相应,现在是前端开发的唯一编程语言。

编程语言分为两种,一种是编译型,另一种是解释型。计算机只能够执行二进制的的机器语言,所以开发者编写的程序需要翻译成二进制文件,所谓的编译和解释,就是不同的翻译方式。例如 C、C++、Golang,是编译型编程语言,在执行之前需要选编程成二进制文件,优点是效率比较高。而 Python、Ruby、Javascript 是解释型语言,在执行时一边执行一边翻译,执行速度会收到影响,但是,由于解释型语言的一般更灵活、简洁,开发效率更高。更加有利于项目的快速迭代。也会有一些编程语言同时使用 编译型、解释型,比如 Java。Java 先是编译成 javac 文件,运行时在 Java 虚拟机中解释执行,得益于 Java 虚拟机的诸多优点,Java 程序的执行效率同样很高。

每一门编程语言都有自己的特点和使用领域,比如使用 C/C++ 开发存储、网络服务,这一类软件需要使用较低的系统资源,较高的运行效率;使用 Python/Java 开发网站,这类软件需要快速开发;使用 Java/Kotlin 开发 Android 应用,Swift 开发 Ios 应用,这是平台指定的,相关工具最全。需要注意的是,没有绝度的边界,比如 Java 可以开发数据库、网站、移动应用,都没有问题,具体的技术选型还是要综合考虑。

程序设计

“程序就是数据结构加算法”,这是一个经典的说法。虽然不算准确,但是数据结构和算法确实是程序的灵魂。深入了解数据结构与算法能够帮助程序员开发出更加优秀的程序。这里推荐 《算法》 或者 《算法导论》, 如果只是想了解一些相关内容推荐《算法图解》。每一个初级程序员都应该学习数组、链表、散列表等数据结构,常见的排序查找算法、队列、栈、树等相关算法。

数据结构与算法相当于大厦的设计图纸,编程语言就是钢筋水泥,一点点的实现图纸上的内容,组成一个完整的大厦。

软件工程

经典的软件开发流程是分析、设计、编码、测试。通常人们最为关心编码,认为编码是项目执行的核心,但是随着开发任务的加大,编码对分析、设计、测试的依赖就越大。尤其是一些行业软件,没有详细的需求分析、细致的概要设计,开发出来的产品往往不能满足实际需求。测试同样重要,多人协作的大型项目,每个人负责的代码之间可能出现的问题,需要详尽的测试才能保证项目的质量。

随着软件项目的不断变大,软件开发面临一些新的问题,为了解决这些问题,人们提出了“软件工程”的概念。软件工程的目的是在时间、资源、人员这3个主要限制条件下构建满足用户需求的软件系统。到现在,软件工程都是计算机学院的一门重要课程。

  • 项目运行超出预算。
  • 项目运行超过时间。
  • 软件质量低落。
  • 软件通常不符合需求。
  • 项目无法管理,且代码难以维护。

常见的软件开发模型有瀑布模型和螺旋模型。

瀑布模型是经典的生命周期模型,简单的线性过程模型。一般会依次进行以下环节:

  1. 需求
  2. 分析
  3. 设计
  4. 实现
  5. 测试
  6. 集成
  7. 部署(或安装)
  8. 维护

适用于需求定义明确的软件开发工作,实际工作很难按照瀑布模型的预想进行。

螺旋模型兼顾了快速原型的迭代的特征以及瀑布模型的系统化与严格监控。

一个典型的螺旋模型应该由以下的步骤构成:

  1. 明确本迭代阶段的目标、备选方案以及应用备选方案的限制;
  2. 对备选方案进行评估,明确并解决存在的风险,创建原型;
  3. 当风险得到很好的分析与解决后,应用瀑布模型进行本阶段的开发与测试;
  4. 对下一阶段进行计划与部署;
  5. 与客户一起对本阶段进行评审;

小结

编程是一门将需求逻辑转化为机器执行代码的过程。为了更好的完成这一过程,程序员需要了解一门合适的编程语言,相关的数据结构和算法,然后才能根据需求开发出高质量的软件。结合实际的需求选择合适的技术,和项目管理方法。

对于初学者,建议从一门编程语言(推荐 C 或者 Python)开始,慢慢学习。一定要多些代码,学习知识点,和动手编程是两码事。