从文科生到程序员:用实战打通技术探索的第一关

许雨泽_移动端
2026-05-15 00:01
阅读 1963

大家好,我是你们的老朋友小文。三年前,我还是个每天和古籍、论文打交道的中文系毕业生,如今却成了一名全职前端工程师,还在VibeCoding当讲师带新人。很多人问我:“你一个文科生,是怎么啃下编程这块硬骨头的?”

我的答案很简单:动手做,别光看

今天这篇教程,就是我专门为零基础朋友准备的一份“技术探索与实践”入门指南。我不讲空洞理论,也不堆砌术语,而是带你用最真实的方式——写代码、跑项目、解面试题——来理解三个看似高深但其实很接地气的关键词:Embedding(嵌入)、GitHub Copilot(AI编程助手)和面试题挑战

你会发现,这些听起来像“黑科技”的东西,其实离你并不远。只要你愿意敲下第一行代码,就已经走在了路上。


为什么我要写这篇教程?

我当初学编程时,最痛苦的不是看不懂语法,而是不知道学了能干嘛。看视频觉得“懂了”,一关掉视频,手都不知道往哪放。后来我才明白:编程不是看会的,是练会的

所以我设计了这堂课:边做项目,边理解概念,顺便准备面试。我们不追求一步登天,只求每一步都踩得踏实。


第一步:环境准备——5分钟搭好你的“编程工位”

别被“环境配置”吓到。现在工具太友好了,我们只需要三样东西:

工具 用途 安装方式
VS Code 代码编辑器(写代码的地方) 官网下载安装(免费)
Node.js 运行JavaScript的环境 官网下载LTS版本(免费)
GitHub账号 代码托管 + 使用Copilot 注册github.com(免费)

具体操作步骤:

  1. 安装VS Code
    打开 https://code.visualstudio.com/,点“Download for Windows/macOS/Linux”,装完就行。

  2. 安装Node.js
    打开 https://nodejs.org/,点击绿色的 LTS 按钮下载安装。装完后打开终端(Mac用Terminal,Windows用PowerShell或CMD),输入:

    node -v
    npm -v
    

    如果看到版本号(比如 v20.12.0),说明成功了!

  3. 安装GitHub Copilot插件

    • 打开VS Code
    • 点左边栏的扩展图标(四个方块)
    • 搜索 “GitHub Copilot”
    • 点“Install”,然后按提示登录你的GitHub账号(需要开通Copilot试用,目前学生免费,其他人有30天试用)

💡 小贴士:如果你暂时不想用Copilot,也没关系!后面我会标注哪些地方可以用它辅助,哪些必须自己动手。


第二步:搞懂核心概念——用大白话解释“Embedding”和“AI编程”

什么是Embedding?别被名字唬住!

我第一次听到“Embedding”时,以为是什么加密技术。其实它特别简单:

Embedding 就是把文字、图片这些“人类看得懂的东西”,转换成计算机能计算的数字向量。

举个栗子🌰:

  • 你说“猫”,AI没法直接理解。
  • 但如果你告诉AI:“猫 = [0.8, -0.3, 0.5, ...]”(一串数字),它就能和其他词比较相似度。
  • 比如“狗 = [0.75, -0.28, 0.48, ...]”,这两个向量很接近 → AI就知道猫和狗是同类。

这就是Embedding的核心:把语义变成数字

🎯 实际用途:搜索推荐、聊天机器人、图像识别……背后都有Embedding在干活。

GitHub Copilot是什么?你的AI结对编程伙伴

Copilot不是“全自动写代码机器”,而是聪明的代码补全助手。它像一个看过几百万行代码的老程序员,坐在你旁边说:“嘿,你是不是想写这个?”

比如你打:

// 获取用户列表并按年龄排序

Copilot可能会自动补全:

function getUsersSortedByAge(users) {
  return users.sort((a, b) => a.age - b.age);
}

但它也会犯错!所以永远要自己检查代码

✅ 正确用法:用它省去重复劳动,但逻辑必须自己掌控。


第三步:实战项目——做一个“智能问答小助手”

我们现在就用上面两个概念,做一个超简单的命令行问答程序。功能:你问问题,程序用预设的知识库回答(用Embedding找最相关的答案)。

项目目标:

  • 输入一个问题(比如“React是什么?”)
  • 程序从知识库中找出最匹配的答案
  • 输出答案

虽然简单,但你会亲手用到Embedding思想(用字符串相似度模拟),并体验Copilot如何帮你写代码。


Step 1:创建项目目录

打开终端,执行:

mkdir smart-qna
cd smart-qna
npm init -y

这会在smart-qna文件夹里生成一个package.json,表示这是一个Node.js项目。


Step 2:写一个“伪Embedding”匹配函数

因为我们还没学真正的向量计算,先用关键词匹配来模拟Embedding的效果。

新建文件 qna.js,手动输入以下代码(先别用Copilot!):

// qna.js
const knowledgeBase = [
  {
    question: "什么是React?",
    answer: "React是一个用于构建用户界面的JavaScript库,由Facebook开发。"
  },
  {
    question: "JavaScript能做什么?",
    answer: "JavaScript可以用来做网页交互、服务器开发(Node.js)、移动App(React Native)等。"
  },
  {
    question: "怎么学编程?",
    answer: "动手写代码!从一个小项目开始,遇到问题就查文档、问社区。"
  }
];

// 简单的关键词匹配(模拟Embedding)
function findBestAnswer(userQuestion) {
  let bestMatch = null;
  let highestScore = 0;

  for (const item of knowledgeBase) {
    // 把问题转成小写,方便比较
    const userWords = userQuestion.toLowerCase().split(' ');
    const kbWords = item.question.toLowerCase().split(' ');

    // 计算有多少词重合
    let score = 0;
    for (const word of userWords) {
      if (kbWords.includes(word)) {
        score += 1;
      }
    }

    if (score > highestScore) {
      highestScore = score;
      bestMatch = item;
    }
  }

  return bestMatch ? bestMatch.answer : "抱歉,我还不知道这个问题的答案。";
}

// 测试函数
console.log(findBestAnswer("React是什么?"));

保存后,在终端运行:

node qna.js

你应该看到输出:

React是一个用于构建用户界面的JavaScript库,由Facebook开发。

✨ 恭喜!你刚刚实现了一个最简版的“语义搜索”!


Step 3:用Copilot加速开发

现在我们让程序能持续提问,而不是只问一次。

这时候就可以请Copilot上场了!

qna.js末尾删除测试代码,改成:

// 现在我想让用户可以不断输入问题,直到输入"退出"

然后按下回车,等待Copilot自动补全。你可能会看到类似这样的建议:

const readline = require('readline');

const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout
});

function askQuestion() {
  rl.question('请输入你的问题(输入“退出”结束): ', (input) => {
    if (input === '退出') {
      rl.close();
      return;
    }
    console.log(findBestAnswer(input));
    askQuestion(); // 递归继续提问
  });
}

askQuestion();

接受这个建议(按Tab键),保存文件,再运行:

node qna.js

现在你可以一直问问题了!试试问:

  • “怎么学编程?”
  • “JS能干嘛?”

🔍 注意:Copilot写的代码不一定完美。比如这里用了递归,如果问太多次可能栈溢出。但对初学者来说,完全够用!


Step 4:加入“面试题挑战”元素

很多公司面试会考“如何实现一个简单的搜索”?我们这个项目其实就是一道微型面试题!

常见追问

  • Q:如果知识库有10万条数据,你的匹配函数会不会慢?

  • A:会!因为要遍历所有条目。真实场景会用向量数据库(如Pinecone)+ 真正的Embedding模型(如OpenAI的text-embedding-ada-002)来加速。

  • Q:关键词匹配不准怎么办?比如用户问“React是啥”,但知识库里是“什么是React”?

  • A:这就需要真正的NLP模型做语义理解,而不是字面匹配。这也是Embedding的价值所在。

💡 面试题的本质不是考你背答案,而是看你解决问题的思路。哪怕你只写了关键词匹配,只要能说出“我知道这不够好,下一步该用向量检索”,面试官就会眼前一亮。


新手常见问题解答

❓问题1:Copilot会不会让我变懒,失去思考能力?

不会,前提是你主动思考

我建议这样用Copilot:

  • ✅ 用它生成样板代码(比如读取文件、创建HTTP服务器)
  • ✅ 用它解释错误信息(选中报错,右键“Ask Copilot”)
  • ❌ 不要用它直接生成整个项目逻辑而不理解

记住:Copilot是副驾驶,方向盘在你手里


❓问题2:Embedding听起来很高深,我需要学数学吗?

短期不需要!你现在只需要理解:

  • Embedding = 把文字变成数字向量
  • 向量越接近,意思越相似

等你以后做推荐系统、聊天机器人时,再深入学向量运算、余弦相似度也不迟。先会用,再深挖


❓问题3:这个项目太简单了,对找工作有用吗?

非常有用!原因有三:

  1. 展示了完整开发流程:需求 → 编码 → 测试 → 优化
  2. 涉及热门技术关键词:Embedding、AI辅助编程
  3. 可扩展性强:你可以后续加上真实Embedding API(比如调用OpenAI),变成简历上的亮点项目

我带过的学生里,有人就把类似项目写进简历,面试时被问到:“你提到用了Embedding思想,能讲讲吗?”——机会就来了。


下一步学习建议

你已经迈出了关键一步!接下来可以这样走:

🗺️ 学习路径图(文字版)

你现在的位置 → 
├─ 基础巩固:学JavaScript核心语法(变量、函数、对象、异步)
├─ 工具熟练:Git + GitHub(每天提交代码!)
├─ 项目升级:给Q&A加Web界面(用HTML+CSS+JS)
├─ 接入真实Embedding:调用OpenAI API生成向量
└─ 准备面试:每周做1道算法题 + 1道系统设计题

📚 推荐资源

类型 推荐内容 为什么适合你
视频 freeCodeCamp JavaScript课程 全英文但语速慢,有字幕
书籍 《JavaScript权威指南》前10章 当字典查,不用全读
实战 LeetCode“简单”标签题 从“两数之和”开始
社区 VibeCoding Discord群 我们有每日代码打卡

最后的话:技术探索,贵在“动手”

我当初学的时候,也觉得Embedding遥不可及,Copilot是“作弊工具”。但当我真正动手写了一个小项目,才发现:所有高大上的技术,都是由一个个简单的步骤组成的

你不需要一开始就懂全部。你只需要:

  1. 装好环境
  2. 写下第一行代码
  3. 遇到问题,Google + 问人
  4. 跑通,哪怕只是打印“Hello World”

今天这个Q&A小助手,就是你的“Hello World”升级版。它不完美,但它属于你。

技术探索的路上,没有“零基础”,只有“刚起步”

现在,打开你的VS Code,新建一个文件,写下:

console.log("我开始了!");

然后运行它。恭喜你,你已经是探索者了。

—— 小文,一个曾经连“终端”都不敢点的文科生

评论 0

最热最新
暂无评论
许雨泽_移动端Lv.1
0
影响力
0
文章
0
粉丝