{
  "format": "ai-knowledge-map/tutorial-v1",
  "canonical": "https://ai-knowledge-map.com/software/ai-coding/coding-foundations/",
  "language": "zh-Hans",
  "title": "第一章 传统编程",
  "summary": "从明确问题、搜集信息、设计方法、编写运行到验证改进，理解编程的五个核心环节，并认识运行环境、程序结构、Git、测试与调试等重要技术。",
  "questions": [
    {
      "question": "完成一个编程任务通常要经过哪些环节？",
      "answer": "五个环节是明确问题、搜集信息、设计处理方法与程序结构、编写并运行，以及验证结果和改进。",
      "sections": [
        {
          "id": "coding-foundations-overview",
          "title": "编程的核心环节",
          "url": "https://ai-knowledge-map.com/software/ai-coding/coding-foundations/#coding-foundations-overview"
        }
      ]
    },
    {
      "question": "运行环境、程序结构、Git、测试和调试分别解决什么问题？",
      "answer": "运行环境负责执行，程序结构组织处理逻辑，Git 记录版本，测试检查结果，调试帮助定位错误。",
      "sections": [
        {
          "id": "coding-foundations-section-1",
          "title": "重要技术简介",
          "url": "https://ai-knowledge-map.com/software/ai-coding/coding-foundations/#coding-foundations-section-1"
        }
      ]
    },
    {
      "question": "在使用 AI 编程前，应该先理解哪些基础技术？",
      "answer": "先理解任务如何转成程序、程序在哪里运行，以及怎样检查结果；使用 AI 时仍需要这些基础来判断修改是否符合目标。",
      "sections": [
        {
          "id": "coding-foundations-overview",
          "title": "编程的核心环节",
          "url": "https://ai-knowledge-map.com/software/ai-coding/coding-foundations/#coding-foundations-overview"
        },
        {
          "id": "coding-foundations-section-1",
          "title": "重要技术简介",
          "url": "https://ai-knowledge-map.com/software/ai-coding/coding-foundations/#coding-foundations-section-1"
        }
      ]
    }
  ],
  "scope": "摘要与短答依据正式课程整理。以下完整章节保留原始来源名称、配置细节、适用版本与实测限制。此文件为公开阅读格式，不代表独立审核或实测结果。",
  "sources": [],
  "sections": [
    {
      "id": "coding-foundations-overview",
      "title": "编程的核心环节",
      "url": "https://ai-knowledge-map.com/software/ai-coding/coding-foundations/#coding-foundations-overview",
      "html": "<p>编程，是用代码表达处理信息和执行操作的规则，让计算机按照这些规则完成任务。任务可以是统计一组成绩、批量处理图片，也可以是制作一个能够与人交互的程序。本节所说的传统编程，是以人直接组织和编写代码为主的工作方式：程序员分析问题，设计处理方法和代码结构，借助工具实现，再根据运行结果检查和修改。</p>\n<p>这个过程可以概括为五个环节：明确问题、搜集信息、设计处理方法与程序结构、逐步编写并运行程序，以及验证结果、定位错误并改进。它们会反复衔接：运行时可能发现材料不足，检查时可能发现规则含糊，修改时也可能需要重新调整代码结构。</p>\n<p>完成这些工作，需要逐步掌握一些编程技术。例如，运行环境和依赖管理帮助程序具备运行条件，函数与模块帮助组织代码，Git 帮助保存和比较版本，测试与日志帮助检查行为、寻找问题。具体采用哪些技术，要结合任务判断：修改已有项目时可以先查阅现有测试，程序出现性能问题时再进行相应测量和分析。</p>\n<p>下表按照核心环节整理这些技术，后文分别作简洁介绍。阅读时可以先理解每项技术解决什么问题，以及它在编程过程中起什么作用。</p>\n<table class=\"d-table\"><thead><tr><th>核心环节</th><th>重要技术</th></tr></thead><tbody><tr><td>明确问题</td><td></td></tr><tr><td>搜集信息</td><td>查阅现有测试；运行环境与语言版本；包管理器；依赖清单与锁文件；虚拟环境；配置文件。</td></tr><tr><td>设计处理方法与程序结构</td><td>条件与循环；函数、参数与返回值；模块划分与程序接口；数据清洗；代码注释与函数文档。</td></tr><tr><td>逐步编写并运行程序</td><td>代码编辑器与 IDE；Git 版本管理。</td></tr><tr><td>验证结果定位错误并改进</td><td>回归测试；调试输出与日志；重构；性能分析。</td></tr></tbody></table>"
    },
    {
      "id": "coding-foundations-section-1",
      "title": "重要技术简介",
      "url": "https://ai-knowledge-map.com/software/ai-coding/coding-foundations/#coding-foundations-section-1",
      "html": "<p><strong>1 查阅现有测试</strong></p>\n<p>阅读项目已经编写的检查程序，了解它检查什么、输入什么、期待什么结果；运行这些检查，可以了解当前程序是否满足已有要求。现有测试也可能存在遗漏。</p>\n<p><strong>2 运行环境与语言版本</strong></p>\n<p>程序需要合适的软件环境和语言版本才能运行。确认这些条件，可以减少因版本差异或缺少必要组件导致的运行问题。</p>\n<p><strong>3 包管理器</strong></p>\n<p>帮助安装、更新和移除代码库的工具。它也会处理库之间的依赖，减少手动寻找和安装相关组件的工作。</p>\n<p><strong>4 依赖清单与锁文件</strong></p>\n<p>依赖清单声明项目需要哪些库及允许的版本范围，锁文件记录工具解析得到的具体依赖版本。两者配合，帮助在不同时间或设备上重建所需的依赖环境。</p>\n<p><strong>5 虚拟环境</strong></p>\n<p>为项目隔离所使用的依赖，使不同项目可以使用不同版本的库，减少一个项目的安装或更新影响另一个项目。</p>\n<p><strong>6 配置文件</strong></p>\n<p>集中保存程序设置的文件，例如文件位置、处理选项和运行模式。程序读取这些设置后工作，使用者可以通过调整配置改变相应行为。</p>\n<p><strong>7 条件与循环</strong></p>\n<p>条件让程序根据情况选择操作，例如判断成绩是否及格；循环让程序重复处理，例如逐个检查一组成绩。</p>\n<p><strong>8 函数 参数与返回值</strong></p>\n<p>函数将一项工作组织成可以调用的代码。参数是调用时传入的信息，返回值是函数交回的结果，有助于拆分任务和复用实现。</p>\n<p><strong>9 模块划分与程序接口</strong></p>\n<p>模块把相关代码组织在一起，接口约定各部分怎样调用、接收什么和产生什么。职责与连接方式清楚后，程序更容易理解和修改。</p>\n<p><strong>10 数据清洗</strong></p>\n<p>检查并处理缺失、重复、格式不一致和无效数据，使后续处理能够使用符合要求的数据。具体采用修正、补充、标记还是排除，需要依据任务规则决定。</p>\n<p><strong>11 代码注释与函数文档</strong></p>\n<p>在代码附近说明用途、必要原因和使用方法。函数文档还可以解释参数、返回结果及使用限制，帮助自己和他人理解代码。</p>\n<p><strong>12 代码编辑器与 IDE</strong></p>\n<p>代码编辑器用于编写和修改代码；IDE 是集成开发环境，通常还整合运行、代码导航和项目管理等功能，便于在同一工具中完成多种编程操作。</p>\n<p><strong>13 Git 版本管理</strong></p>\n<p>查看文件状态和修改差异，选择一批改动提交为版本，并留下说明。通过历史版本、修改内容和提交说明，可以理解代码怎样形成，寻找问题由哪次修改引入；也可以比较版本、撤销修改或恢复已经保存的内容，为继续修改保留退路。</p>\n<p><strong>14 回归测试</strong></p>\n<p>修改程序后，重新检查原有功能和已经修复的问题，确认它们没有因本次修改而失效。重要的检查可以保留下来，在后续修改时重复运行。</p>\n<p><strong>15 调试输出与日志</strong></p>\n<p>记录程序执行到哪里、处理了什么和产生了什么中间结果，帮助观察运行过程并定位问题。临时输出适合即时观察，日志便于持续记录、筛选和事后查阅。</p>\n<p><strong>16 重构</strong></p>\n<p>在保持预期行为的前提下调整代码结构，例如拆分过长的函数或减少重复实现。重构后仍需检查程序，确认整理结构没有破坏原有功能。</p>\n<p><strong>17 性能分析</strong></p>\n<p>测量程序的运行时间、内存等资源消耗，找出实际瓶颈，再决定怎样优化。是否需要优化及优化目标，应由任务的性能要求决定。</p>"
    }
  ]
}
