为什么你该动手写代码,而不是只看教程?

技术边角料
2026-03-09 14:27
阅读 2729

大家好,我是一名开源项目维护者,也是一名 AIGC 技术讲师。过去几年里,我看到太多初学者卡在“学了就忘、看了不会”的怪圈里——他们反复刷视频、读文档,却始终不敢打开编辑器写一行代码。我自己当初学编程时也这样:买了十几本技术书,结果连第一个“Hello World”都拖了一个月才跑通。

后来我明白了:技术不是看会的,是练会的。今天这篇教程,不讲大道理,只带你动手做三件事:安装一个工具、写一段智能代码、部署一个迷你区块链。全程只需 30 分钟,但你会真正理解“技术探索与实践”的价值。


一、先装上你的“副驾驶”:GitHub Copilot

在开始前,我们先装一个能帮你写代码的 AI 工具——GitHub Copilot。它就像编程时的副驾驶,你描述需求,它生成代码。对新手来说,这是降低门槛的神器。

安装步骤(以 VS Code 为例):

  1. 下载并安装 Visual Studio Code
  2. 打开 VS Code,点击左侧扩展图标(或按 Ctrl+Shift+X
  3. 搜索 “GitHub Copilot”,点击安装
  4. 安装后重启 VS Code,登录你的 GitHub 账号(需有 Copilot 权限,学生可免费申请)

💡 提示:如果你还没有 GitHub 账号,请先注册一个。它是全球开发者共享代码的“图书馆”,也是你未来展示作品的地方。

小测试:让 Copilot 写个加法函数

新建一个文件 math.js,输入以下注释:

// 写一个函数,接收两个数字,返回它们的和

按下回车,Copilot 很可能自动生成:

function add(a, b) {
  return a + b;
}

是不是很神奇?但这不是魔法,而是你和工具的协作。你负责思考“做什么”,工具负责“怎么做”。这就是现代开发的起点。


二、理解三个关键词:工具、区块链、Copilot

很多新手被术语吓住,其实它们比你想象的简单:

关键词 通俗解释 类比
工具 帮你更高效完成任务的软件或服务 就像厨师用锅铲,画家用画笔
区块链 一种不可篡改的“数字账本” 类似银行流水,但公开透明且无法涂改
GitHub Copilot 基于 AI 的代码自动补全工具 像有个资深程序员坐在你旁边实时建议

重点来了:工具不是目的,而是手段。我们用 Copilot 快速搭建原型,再用区块链理解“数据如何被信任”,最终目标是通过实践建立技术直觉


三、动手:用 JavaScript 实现一个迷你区块链

别担心,我们不碰复杂的加密或共识算法。这个“玩具级”区块链只有两个功能:添加区块验证链是否完整。整个过程约 50 行代码,Copilot 会帮你写大部分。

步骤 1:创建项目目录

mkdir my-first-blockchain
cd my-first-blockchain
npm init -y

步骤 2:新建 blockchain.js,让 Copilot 帮你写基础结构

在文件顶部输入:

// 定义一个区块类,包含 index, timestamp, data, previousHash, hash

Copilot 可能生成:

class Block {
  constructor(index, timestamp, data, previousHash = '') {
    this.index = index;
    this.timestamp = timestamp;
    this.data = data;
    this.previousHash = previousHash;
    this.hash = this.calculateHash();
  }

  calculateHash() {
    // 这里需要一个哈希函数,稍后补充
  }
}

步骤 3:补充哈希计算(使用内置 crypto 模块)

在文件顶部加上:

const crypto = require('crypto');

然后完善 calculateHash

calculateHash() {
  return crypto
    .createHash('sha256')
    .update(this.index + this.previousHash + this.timestamp + JSON.stringify(this.data))
    .digest('hex');
}

🛠️ 小知识sha256 是一种加密哈希算法,能把任意长度的数据变成固定长度的“指纹”。哪怕数据改一个字,哈希值就完全不同。

步骤 4:实现区块链类

继续输入注释:

// 定义一个区块链类,包含 chain 数组,创世区块,添加区块方法

Copilot 通常会生成:

class Blockchain {
  constructor() {
    this.chain = [this.createGenesisBlock()];
  }

  createGenesisBlock() {
    return new Block(0, "01/01/2024", "Genesis Block", "0");
  }

  getLatestBlock() {
    return this.chain[this.chain.length - 1];
  }

  addBlock(newBlock) {
    newBlock.previousHash = this.getLatestBlock().hash;
    newBlock.hash = newBlock.calculateHash();
    this.chain.push(newBlock);
  }
}

步骤 5:验证链是否被篡改

再加一个方法:

// 验证区块链是否有效:检查每个区块的 hash 和 previousHash 是否匹配

Copilot 会建议:

isChainValid() {
  for (let i = 1; i < this.chain.length; i++) {
    const currentBlock = this.chain[i];
    const previousBlock = this.chain[i - 1];

    if (currentBlock.hash !== currentBlock.calculateHash()) {
      return false; // 当前区块被篡改
    }

    if (currentBlock.previousHash !== previousBlock.hash) {
      return false; // 链接断裂
    }
  }
  return true;
}

步骤 6:运行测试

在文件末尾添加:

// 测试
let myCoin = new Blockchain();
myCoin.addBlock(new Block(1, "02/01/2024", { amount: 5 }));
myCoin.addBlock(new Block(2, "03/01/2024", { amount: 10 }));

console.log(JSON.stringify(myCoin, null, 2));
console.log("Is valid?", myCoin.isChainValid());

// 尝试篡改
myCoin.chain[1].data = { amount: 100 };
console.log("After tampering:", myCoin.isChainValid());

保存后,在终端运行:

node blockchain.js

你会看到输出:

  • 初始链有效(true
  • 篡改后无效(false

恭喜!你刚刚亲手实现了区块链的核心机制:不可篡改性


四、新手常见问题解答

Q1:Copilot 生成的代码安全吗?

A:Copilot 是辅助工具,不是裁判。它可能生成有漏洞或过时的代码。永远要理解它生成的内容,就像司机不能完全依赖自动驾驶。

Q2:区块链一定要用加密货币吗?

A:完全不用!区块链本质是“可信数据结构”。你可以用它做投票系统、学历认证、供应链追踪——只要需要“防篡改+可追溯”。

Q3:我写的代码太简单,有意义吗?

A:所有复杂系统都从简单原型开始。Linux 最初只是 Linus 在家写的玩具,比特币白皮书只有 9 页。关键是迈出第一步

Q4:环境配置太麻烦,想放弃怎么办?

A:试试在线开发环境(如 GitHub Codespaces 或 Replit),免安装直接写代码。但长期建议本地配置,这是开发者的基本功。


五、给你的三条学习建议

  1. 每天写 10 行代码
    不必追求大项目。今天实现一个函数,明天调试一个 bug,积累起来就是能力。

  2. 善用工具,但别依赖
    Copilot 能加速开发,但你要问自己:“如果没它,我会怎么写?” 主动思考才能成长。

  3. 把作品放到 GitHub
    即使是一个小脚本,也 push 到仓库。这不仅是备份,更是你技术成长的“时间胶囊”。未来面试时,一个活跃的 GitHub 比简历更有说服力。


六、下一步你可以做什么?

完成这个迷你区块链后,你可以尝试:

  • 给区块加上“工作量证明”(PoW):要求哈希以若干个 0 开头,模拟挖矿
  • 用 Express 搭建一个 API:通过 HTTP 请求添加区块
  • 部署到 Vercel 或 Render:让全世界都能访问你的链

或者换个方向:

  • 用 Copilot 快速生成一个 Todo 应用
  • 在 GitHub 上找一个带 good first issue 标签的开源项目,提交第一个 PR

最后的话

我当初学区块链时,花了两周才搞懂默克尔树。但现在回头看,真正让我突破的,不是那本厚书,而是某天晚上手抖敲下的第一行 console.log("Block created")

技术世界没有“准备好”这回事。你永远会在实践中遇到新问题,而解决它们的过程,就是你成为工程师的路。

所以,别等“学会”再开始——边做边学,才是最快的路径

现在,关掉这篇文章,打开你的编辑器。
写一行代码,然后告诉我:你创造了什么?

评论 0

最热最新
暂无评论
技术边角料Lv.1
0
影响力
0
文章
0
粉丝