首页
/ Web-Dev-For-Beginners 第一课全解:编程语言基础与现代开发者工具链入门

Web-Dev-For-Beginners 第一课全解:编程语言基础与现代开发者工具链入门

2026-09-06 19:16:50作者:史锋燃Gardner

本篇文章围绕开源课程《Web Development for Beginners — A Curriculum》的第一个教学单元展开,该单元位于仓库 translations/ar/1-getting-started-lessons/1-intro-to-programming-languages/README.md(英文原版见 1-getting-started-lessons/1-intro-to-programming-languages/README.md)。这是一份面向零基础读者的系统性入门课程,属于整门课程 24 课、12 周 体系中的第一课,也是 1-getting-started-lessons/README.md「Getting Started」板块中非项目式的核心基础课。读完本单元,你将理解"编程"的本质、高级语言与低级语言的区别、构成一切程序的三大编程基石,并掌握代码编辑器、浏览器开发者工具、命令行与文档检索等现代 Web 开发者每日使用的工具链。

课程开场思维导图:编程语言全景速览

图为课程配套的 sketchnote 视觉总结(本课阿拉伯语译本内嵌插图),一图速览"编程语言"主题的知识版图。

什么是编程:给计算机写下精确到每一步的指令

在动手之前,本课先用一个生活化场景帮你建立直觉:教家人操作智能电视遥控器时,你需要不停地说"按红色的小按钮,不是大按钮……按住两秒,不是一秒也不是三秒"。编程的本质与之完全相同——它是向一个"功能强大但必须把所有细节都讲清楚"的执行者下达分步指令的艺术,只不过听指令的对象从"会追问的人"换成了"严格照做、不会追问意图"的计算机。

本课强调的两个核心事实是:

  • 计算机底层只认识 10,本质上就是"是/否""开/关"两种状态;
  • 编程语言是人与计算机之间的翻译器:它把你自然的人类思维转换成计算机能执行的机器指令,你无需像电影《黑客帝国》里那样用二进制思考。

正如课程所点出的,你手机里几乎每一个数字功能——滤镜、推荐算法、分摊账单的应用——最初都始于某个开发者写下的代码。这也是本课把"给出指令"与"解决问题"绑定在一起的原因:编程是一项技能,更是一种加入"问题解决者社区"的入口。

编程语言生态:没有"最好"的语言,只有最合适的场景

常见语言与其主场

课程用"音乐流派"来类比语言多样性——爵士、摇滚、古典各有气质与适用场合;编程语言同样如此:你不会用同一门语言去写休闲手游和跑气候大数据分析。下表完整梳理了本课讲解的主流语言与适用领域:

语言 最擅长 流行的原因
JavaScript Web 开发、用户界面 原生运行于浏览器,支撑互动网站
Python 数据科学、自动化、AI 易读易学,库生态强大
Java 企业级应用、Android 应用 跨平台,适合大型系统
C# Windows 应用、游戏开发 微软生态强力支持
Go 云服务、后端系统 快速、简洁,面向现代计算设计

在此基础上,课程以思维导图形式扩展了更多分工:Web 方向还有 TypeScript(JS 加类型、适合企业应用);数据与 AI 方向有 R(统计与研究);移动端有 Swift(iOS/苹果生态)、Kotlin(现代 Android、跨平台);系统与性能方向有 C++(游戏、性能敏感)、Rust(内存安全、系统编程)与 Go(云服务、可扩展后端)。初学者不需要一次记住全部——先感受生态的广度即可。

高级语言 vs 低级语言

课程用一个"在异国找洗手间"的类比讲清了抽象层级:

  • 低级语言(如 Assembly、C)像是掌握了当地方言甚至内部梗——直指硬件、效率极高,但你必须以"机器的方式"思考,心智转换成本大;
  • 高级语言(如 JavaScript、Python、C#)像身边有个懂你的本地朋友——你用接近人类思维的方式表达,翻译成机器语言的工作全部交给幕后处理,且社区对新人也更友好。

课程明确建议:入门阶段从高级语言开始,它像一副"你根本不想摘下来的辅助轮",能显著提升学习体验的愉悦度。

实战对比:同一个斐波那契序列,两种截然不同的写法

为了让"抽象层级"不再抽象,课程用斐波那契数列(每项等于前两项之和:0, 1, 1, 2, 3, 5, 8, 13…)这一任务,分别用高级语言与低级语言各写一遍,让你直观体会差异。下面代码完整来自原课,可直接复制到浏览器控制台或 Node.js 中运行。

高级语言(JavaScript):几乎像英文说明书的写法

// 第 1 步:基础设定
const fibonacciCount = 10;
let current = 0;
let next = 1;

console.log('Fibonacci sequence:');

// 第 2 步:用循环生成序列
for (let i = 0; i < fibonacciCount; i++) {
  console.log(`Position ${i + 1}: ${current}`);

  // 计算序列中的下一个数字
  const sum = current + next;
  current = next;
  next = sum;
}

// 第 3 步:现代函数式写法(返回完整数组)
const generateFibonacci = (count) => {
  const sequence = [0, 1];

  for (let i = 2; i < count; i++) {
    sequence[i] = sequence[i - 1] + sequence[i - 2];
  }

  return sequence;
};

// 用法示例
const fibSequence = generateFibonacci(10);
console.log(fibSequence);

低级语言(ARM Assembly):面向处理器寄存器的写法

 area ascen,code,readonly
 entry
 code32
 adr r0,thumb+1
 bx r0
 code16
thumb
 mov r0,#00
 sub r0,r0,#01
 mov r1,#01
 mov r4,#10
 ldr r2,=0x40000000
back add r0,r1
 str r0,[r2]
 add r2,#04
 mov r3,r0
 mov r0,r1
 mov r1,r3
 sub r4,#01
 cmp r4,#00
 bne back
 end

对比可见四方面差异:可读性fibonacciCount 这种语义化命名 vs r0r1 这类寄存器标签)、注释习惯(高级语言鼓励让代码自文档化)、结构表达(JS 的控制流与人类逐步思考的方式吻合)、可维护性(修改 JS 版本满足新需求显然更直接)。两段代码完成的是同一任务,但开发体验天差地别——这正是高级语言的意义。

三大编程基石:语句、变量与控制流

课程提出:一切程序都由若干"配方基础原料"构成,理解它们之后,你几乎能读懂任何语言的代码。这三大基石是语句(Statements)变量(Variables)控制流(Control Flow),其协作关系可以概括为"语句负责指令 → 变量负责存储 → 控制流负责决策 → 最终得到能运行的程序"。

语句:一次说一件事

语句是"与计算机对话"中的单个句子,每个语句执行一个具体动作。典型例子:

// 执行单一动作的基础语句
const userName = "Alex";
console.log("Hello, world!");
const sum = 5 + 3;

// 与网页交互的语句
document.title = "My Awesome Website";
document.body.style.backgroundColor = "lightblue";

第一组完成"声明常量、输出问候、计算并保存运算结果"三个动作;第二组则直接修改浏览器标签页标题与页面背景色,展示语句如何在浏览器环境中产生可感知的效果。

变量:程序的内存系统

课程用"手机通讯录"来类比变量:你不会背下所有人的电话号码,而是存下"妈妈""最好的朋友",让手机记住真实号码。变量就是贴了有意义标签的容器,程序通过名字存取信息,且值可以在运行期被更新(这也是"variable——可变的"名字由来)。完整示例(含对象与解构)如下:

// 第 1 步:创建基础变量
const siteName = "Weather Dashboard";
let currentWeather = "sunny";
let temperature = 75;
let isRaining = false;

// 第 2 步:用对象聚合相关数据
const weatherData = {
  location: "San Francisco",
  humidity: 65,
  windSpeed: 12
};

// 第 3 步:使用并更新变量
console.log(`${siteName}: Today is ${currentWeather} and ${temperature}°F`);
console.log(`Wind speed: ${weatherData.windSpeed} mph`);

// 更新可变变量
currentWeather = "cloudy";
temperature = 68;

// 第 4 步:解构赋值让代码更干净
const { location, humidity } = weatherData;
console.log(`${location} humidity: ${humidity}%`);

要点拆解:

  • const vs let:恒定不变的值用 const,运行期会变化的值用 let
  • 数据类型:本例覆盖字符串、数字与布尔值;
  • 对象与键值对:把相关数据组织在一个变量名下(如天气的湿度、风速);
  • 模板字符串:用 `${}` 语法拼接变量生成可读消息;
  • 点号访问weatherData.windSpeed 读取对象属性;
  • 解构赋值const { location, humidity } = weatherData 一键把对象键提取为同名变量。

控制流:让程序学会做决定

控制流让你的程序能"看情况反应",而非按固定剧本执行。你每天无数次在做的事——"如果下雨就带伞,如果迟到就跳过早餐"——正是 if-then 逻辑。课程给出了由浅入深的四组 JavaScript 示例:

// 第 1 步:基础条件逻辑
const userAge = 17;

if (userAge >= 18) {
  console.log("You can vote!");
} else {
  const yearsToWait = 18 - userAge;
  console.log(`You'll be able to vote in ${yearsToWait} year(s).`);
}

// 第 2 步:逻辑运算符组合多条件
const hasPermission = true;

if (userAge >= 18 && hasPermission) {
  console.log("Access granted: You can enter the venue.");
} else if (userAge >= 16) {
  console.log("You need parent permission to enter.");
} else {
  console.log("Sorry, you must be at least 16 years old.");
}

// 第 3 步:三元运算符写二选一条件
const votingStatus = userAge >= 18 ? "Can vote" : "Cannot vote yet";
console.log(`Status: ${votingStatus}`);

// 第 4 步:switch 处理多个离散取值
const dayOfWeek = "Tuesday";

switch (dayOfWeek) {
  case "Monday":
  case "Tuesday":
  case "Wednesday":
  case "Thursday":
  case "Friday":
    console.log("It's a weekday - time to work!");
    break;
  case "Saturday":
  case "Sunday":
    console.log("It's the weekend - time to relax!");
    break;
  default:
    console.log("Invalid day of the week");
}

这段代码覆盖了 if/elseelse if 层级、&& 逻辑与、三元运算符 ? :switch 多分支、case 合并、default 兜底与 break 防穿透等完整的条件语法。更妙的是,这些基础会在后续课程中被反复使用——例如 2-js-basics/3-making-decisions(条件判断)与 2-js-basics/4-arrays-loops(数组与循环)会在此基础上做系统深化。

开发者工具链:从创意到上线的工作流

整条工具流水线

本课将"你的创意"到"上线应用"的主链路画成一条清晰流水线:代码编辑器(如 VS Code)→ 浏览器开发者工具(测试与调试)→ 命令行(自动化与工具)→ 文档(学习与查阅)→ 上线 Web 应用,并辅以 AI 助手(GitHub Copilot)、响应式设备测试、包管理器(npm/yarn)与社区(Stack Overflow)等横向支撑。这条流水线正是真实开发者每天的工作流骨架,且绝大多数核心工具完全免费。

代码编辑器与 IDE:语法高亮到 AI 补全

现代编辑器已不是"花哨的文本编辑器",而像 24/7 陪练导师——在你敲下代码前就提示错误、自动补全、甚至预判你下一步想写什么。课程给出了编辑器核心能力对照表:

特性 作用 价值
语法高亮 用颜色区分代码各部分 更易阅读、快速发现错误
自动补全 边输入边给出代码建议 提速并减少拼写错误
调试工具 帮助定位并修复错误 省下数小时排查时间
扩展插件 为特定技术增加能力 按需定制编辑器
AI 助手 生成与解释代码 加速学习与产出

课程推荐的三档选择与关键扩展如下:

  • [Visual Studio Code](免费):Web 开发者中最流行,扩展生态优秀,内置终端与 Git 集成。建议优先安装的扩展:GitHub Copilot(AI 代码建议)、Live Share(实时协同)、Prettier(自动格式化)、Code Spell Checker(代码拼写检查);
  • [JetBrains WebStorm](付费,学生免费):高级调试与测试工具、智能补全、内置版本控制;
  • 云端 IDE(价格各异):GitHub Codespaces(浏览器里的完整 VS Code)、Replit(适合学习与分享)、StackBlitz(即时的全栈 Web 开发)。

入门建议很简单:从 Visual Studio Code 开始——免费、业界广泛使用、社区教程与插件资源海量。这一建议在仓库中有真实印证:根 README.md 明确推荐 VS Code 作为本课程编辑器,并提供了直接 git clone 后本地运行的路径。

浏览器与 DevTools:藏在右键菜单里的开发实验室

每次右键选择"检查元素",你就打开了一整套比许多付费软件更强的开发工具。浏览器既展示你的成果,也反馈性能、可访问性与潜在问题。DevTools 的核心面板如下:

工具类别 作用 典型用例
元素检查器 实时查看/编辑 HTML/CSS 调整样式立即看效果
控制台 查看错误信息、试验 JavaScript 调试问题、随手验证代码
网络监视器 追踪资源加载过程 优化性能与加载时间
无障碍检查器 检测包容性设计 确保所有用户都能使用
设备模拟器 预览不同屏幕尺寸 不做多设备也能测响应式

课程强调一条实用纪律:务必在多个浏览器中测试——在 Chrome 中完美运行的页面可能在 Safari 或 Firefox 中出现差异,专业开发者都会跨主流浏览器验证一致性。仓库后续课程正是这一理念的实践载体,例如 3-terrarium/3-intro-to-DOM-and-closures 会让你用 DevTools 直接观察 DOM 操作与闭包行为。

命令行:把项目从 0 到 1 的自动化魔法

课程坦率地承认命令行初看吓人("黑屏加闪烁光标,像 80 年代黑客电影"),但它本质上是"与计算机直接对话",并在自动化、精确度与速度上远超图形界面。下面是一套完整、可直接执行的从零搭建前端项目的命令序列:

# 第 1 步:创建并进入项目目录
mkdir my-awesome-website
cd my-awesome-website

# 第 2 步:用默认配置初始化 package.json
npm init -y

# 安装现代开发工具(--save-dev 标记为仅开发期依赖)
npm install --save-dev vite prettier eslint
npm install --save-dev @eslint/js

# 第 3 步:搭建项目结构与文件
mkdir src assets
echo '<!DOCTYPE html><html><head><title>My Site</title></head><body><h1>Hello World</h1></body></html>' > index.html

# 启动 Vite 开发服务器(实时刷新 + 热模块替换)
npx vite

这条命令链解释了现代前端的工具分工:npm init -y 生成默认 package.jsonVite 负责高速开发服务器与生产构建;Prettier 负责统一格式;ESLint(含新版推荐的 @eslint/js)负责代码质量检查;--save-dev 保证这些只出现在开发依赖中;npx vite 一句即启动带热更新的本地服务。

配套的工具职责速查表:

工具 用途 为什么需要
Git 版本控制 跟踪变更、协作、备份工作
Node.js & npm JS 运行时与包管理 浏览器之外运行 JS、安装现代工具
Vite 构建工具与开发服务器 极速开发与热模块替换
ESLint 代码质量 自动发现并修复 JS 问题
Prettier 代码格式化 保持风格统一可读

命令行在本仓库中并非纸上谈兵。以 quiz-app/package.json 为例,它的脚本正是 "dev": "vite""build": "vite build""preview": "vite preview" 与基于 ESLint 的 "lint",依赖里声明了 Vite 6.x 与 Vue 生态——课程所教工具链被真实用于构建仓库内的问答应用;而 5-browser-extension/start/package.json 则展示了另一套工具组合(webpack 打包、Node ≥ 18、npm ≥ 9 的引擎约束),说明"具体工具随项目需求而变,但命令行工作流方法论是通用的"。

平台差异:Windows 可用 Windows Terminal、PowerShell、传统命令提示符;macOS 自带 Terminal 或选用 iTerm2;Linux 常用 Bash 与 KDE Konsole(💻 表示系统预装)。学习路径建议从 cd(切换目录)、ls/dir(列出文件)、mkdir(新建目录)起步,再练习 npm installgit statuscode .(在 VS Code 中打开当前目录)等现代工作流命令。

文档:永不休息的导师

课程分享了一个让新手安心的秘密:资深开发者也花大量时间读文档——Web 技术演进太快,没人能把一切装进脑子;会查文档不是露怯,而是智慧。推荐的权威文档源包括 MDN(Mozilla 开发者网络)(Web 技术文档的黄金标准,含浏览器兼容性信息与交互式演示)、Web.dev(Google 出品,现代最佳实践与性能优化指南)、Microsoft 开发者文档(Edge 与 PWA 资源)以及 Frontend Masters Learning Paths(结构化课程)。学习策略是"别背文档,学会高效检索与导航,把常用参考加入书签"。

配套练习设计:测验、挑战与作业

本课延续了整门课程"预测验 → 精读 → 实践 → 后测验"的教学法(见根 README.md 对学习流程的说明)。按 translations/ar/1-getting-started-lessons/1-intro-to-programming-languages/README.md 中的编排,它包含四类可执行任务:

  1. 课前与课后测验:分别在学习前后自测,判断掌握程度;
  2. GitHub Copilot Agent 模式挑战:用 Agent 模式探索现代编辑器/IDE,列出 3 项能提升"编写—调试—维护"效率的特性或扩展,并说明对工作流的益处;
  3. "语言侦探"实践挑战:从完全不同领域选 3 门语言(如做网站、做移动应用、跑科学数据的各一门),找同一简单任务的三种写法、挖掘各语言的起源故事、观察其社区生态,最后凭直觉选一门"最想深入了解"的语言;进阶彩蛋是调查各语言支撑的大型网站或应用;
  4. 课后作业 "Reading the Docs":详细要求见 assignment.md(阿拉伯语版见 translations/ar/1-getting-started-lessons/1-intro-to-programming-languages/assignment.md)。任务是从本课未提及的工具类别中挑选 3 款工具(如构建工具、测试框架、设计工具、部署平台、CSS 框架、无障碍工具、API 开发工具等),按"名称与类别 / 目的与收益 / 官方文档链接 / 真实工作流中的位置"四要素撰写,并用"优秀—良好—待改进"量规自查。

课程还给出了一份分阶段行动清单:5 分钟(收藏 2–3 个语言官网、安装 VS Code、F12 打开 DevTools、加入一个开发者社区)→ 1 小时(完成后测、配置 GitHub Copilot、在两种语言里各写一次 Hello World、开始"语言侦探"任务)→ 1 周(完成作业、关注 5 位开发者、在 CodePen/Replit 造点小东西、参加线上 meetup)→ 1 个月(完成第一个小项目、从修文档开始参与开源、建立开发者作品集站)。

小结:为什么这一课是整条 24 课学习路径的地基

从仓库的课程结构可以清楚看到本课的定位:后续全部内容——2-js-basics 的数据类型与函数、3-terrarium 的 HTML/CSS/DOM、4-typing-game 的交互逻辑、直到 9-chat-project10-ai-framework-project 的完整应用——都建立在本课打下的概念骨架之上:编程是什么、语言如何分层、语句/变量/控制流如何构成程序、以及编辑器—浏览器—命令行—文档这条贯穿始终的工具工作流。

本课反复强调的学习心法是:今天的目标不是背下一切,而是点燃兴趣。细节会在你动手实践的过程中自然沉淀——先用 quiz-app 这类真实项目体验 Vite + ESLint 的现代工程流,或直接动手完成课后作业,从"读懂工具"走向"驾驭工具"。

提示:该阿拉伯语译本由 Co-op Translator 机器翻译生成,若需精确措辞,建议以英文原版 1-getting-started-lessons/1-intro-to-programming-languages/README.md 为权威参照。

登录后查看全文
热门项目推荐
相关项目推荐

项目优选

收起
kernelkernel
deepin linux kernel
C
33
18
ops-transformerops-transformer
本项目是CANN提供的transformer类大模型算子库,实现网络在NPU上加速计算。
C++
1.13 K
2.75 K
pytorchpytorch
作为 Ascend for PyTorch 社区的核心组件,TorchNPU 是昇腾专为 PyTorch 打造的深度学习适配插件,使 PyTorch 框架能够直接调用昇腾 NPU,为开发者提供昇腾 AI 处理器的超强算力。
Python
857
1.35 K
docsdocs
暂无描述
Markdown
897
5.8 K
kernelkernel
openEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。
C
529
593
ops-nnops-nn
本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。
C++
915
1.83 K
jiuwenswarmjiuwenswarm
JiuwenSwarm 是一款基于openJiuwen开发的智能AI Agent,它能够将大语言模型的强大能力,通过你日常使用的各类通讯应用,直接延伸至你的指尖。
Python
3.58 K
1.01 K
ops-mathops-math
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
1.35 K
1.46 K
cann-learning-hubcann-learning-hub
CANN 学习中心仓,支持在线互动运行、边学边练,提供教程、示例与优化方案,一站式助力昇腾开发者快速上手。
Jupyter Notebook
1.01 K
515
AscendNPU-IRAscendNPU-IR
AscendNPU-IR是基于MLIR(Multi-Level Intermediate Representation)构建的,面向昇腾亲和算子编译时使用的中间表示,提供昇腾完备表达能力,通过编译优化提升昇腾AI处理器计算效率,支持通过生态框架使能昇腾AI处理器与深度调优
C++
547
388