编程基础
概述
集成开发环境(IDE)是一种软件应用程序,为计算机程序员提供全面的软件开发设施。IDE 通常包括源代码编辑器、构建自动化工具和调试器。大多数现代 IDE 具有智能代码补全功能。一些 IDE 包含编译器、解释器或两者。集成开发环境与更广泛的软件开发环境其他部分之间的边界并不明确。有时,版本控制系统或用于简化图形用户界面(GUI)构建的各种工具也会集成到其中。许多现代 IDE 还具有类浏览器、对象浏览器和类层次结构图,用于面向对象的软件开发。[1]
讨论
高级语言程序通常以 ASCII 文本形式写入源代码文件。使用独特的文件扩展名(例如:.asm、.c、.cpp、.java、.js、.py)来标识源代码文件。正如我们从例子中可以看到的——汇编语言、C、C++、Java、JavaScript 和 Python,它们实际上只是 ASCII 文本文件(其他文本文件通常使用 .txt 扩展名)。程序员编写的源代码必须转换为特定于计算机 CPU 的可执行机器代码文件(在当今计算机世界中通常是 Intel 或兼容的 CPU)。将程序从源代码阶段转化为运行在计算机上的程序,通常需要多个步骤。历史上,我们必须使用多个软件程序(文本编辑器、编译器、链接器和操作系统命令)来完成转换并运行程序。然而,今天所有这些软件程序及其相关任务已经被集成到一个程序中。这一个程序实际上是许多软件项目,它为程序员提供了一个开发软件的环境。因此,这个名称叫做:集成开发环境(IDE)。
集成开发环境(IDE)
用高级语言编写的程序通常通过某种类型的解释器直接执行,或通过编译器(以及汇编器和链接器)转换成机器代码,以供 CPU 执行。JavaScript、Perl、Python 和 Ruby 是解释型编程语言的例子。C、C++、C#、Java 和 Swift 是编译型编程语言的例子。[2] 图中展示了在 IDE 中,程序员输入源代码并指示 IDE 编译和运行程序的活动进程。
启动 IDE 软件后,程序员通常会指示要打开用于编辑的源代码文件。当他们进行更改时,可能会选择“另存为”或“保存”。当他们完成输入源代码后,通常会指示 IDE 执行“编译和运行”程序。IDE 执行以下步骤:
- 如果源代码文件有未保存的更改,IDE 会要求文本编辑器保存这些更改。
- 编译器打开源代码文件,并执行第一步:执行预处理器编译指令及其他必要步骤,以便将文件准备好进入第二步。在此阶段,#include 会将头文件插入代码。如果遇到错误,编译器会停止该过程,并返回用户至文本编辑器中的源代码文件,显示错误信息。如果没有问题,它会将源代码保存到一个临时文件中,称为翻译单元。
- 编译器打开翻译单元文件,执行第二步:将编程语言代码转换为 CPU 的机器指令、数据区和待链接器解决的项目列表。若遇到问题(通常是语法错误或违反编程语言规则),编译器会停止该过程,并返回用户至文本编辑器中的源代码文件,显示错误信息。如果没有问题,它会将机器指令、数据区和链接器解决列表保存为目标文件。
- 链接器打开程序目标文件,并根据需要将其与库目标文件链接。除非所有链接器项目都已解决,否则该过程会停止,并返回用户至文本编辑器中的源代码文件,显示错误信息。如果没有问题,它会将链接的对象保存为可执行文件。
- IDE 指示操作系统中的加载程序将可执行文件加载到计算机内存,并使中央处理单元(CPU)开始处理指令。用户与程序交互时,输入测试数据,可能会发现输出结果不正确。这类错误称为逻辑错误,通常需要用户返回源代码更改算法。
解决错误
尽管我们努力成为完美的程序员,但我们仍然会产生错误。解决这些错误的过程称为调试程序。按照发生顺序,错误分为三类:
- 编译错误 - 一个将编程语言代码转换为机器代码的程序。
- 链接错误 - 一个将文件合并成一个文件的程序。(例如:.exe、.lib 等)
- 逻辑错误 - 程序的计算部分,例如,使用数据和公式生成某一数据点。
编译器错误有两种类型:预处理器错误(第一步)和转换错误(第二步)。
在转换(第二步)过程中,编译器可能会给出警告消息,在某些情况下这可能不是需要担心的问题。例如,数据类型降级可能是程序所需的功能,但大多数编译器会发出警告消息。警告不会停止编译过程,但如其名称所示,应该进行审查。
关键术语
- 编译器:将源代码转换为目标代码的程序。
- 调试:从程序中删除错误的过程。包括:1)编译器错误 2)链接器错误 3)逻辑错误。
- 集成开发环境(IDE):为计算机程序员提供全面的软件开发设施的应用程序。
- 链接器:将目标文件连接成可执行文件的程序。
- 加载程序:操作系统的一部分,将可执行文件加载到内存并指示 CPU 开始运行程序。
- 预处理器:编译器将源代码转换为目标代码的第一步。
- 文本编辑器:用于创建和编辑 ASCII 文本文件的软件程序。
- 警告:编译器发出的警告,提示可能存在问题。
参考文献
- cnx.org: Programming Fundamentals – A Modular Structured Approach using C++
- Wikipedia: Integrated development environment
- Wikipedia: Interpreter (computing)