Skip to content

编程就是操作数据,所以任何代码都由数据操作和数据本身组成。

代码其实就是纯文本,和我们平时书写的文字没任何区别,所以可以用任意文本编辑器实现编程,比如记事本。

执行代码

计算机只读得懂机器语言(二进制语言),所以代码必须得先转换为机器指令才能交给计算机执行,除非你能手搓 CPU 指令。

负责把代码转换为机器指令的工具称为编译器(Compiler)或解释器(Interpreter),比如 Python 的 CPython 解释器、C 的 gcc 编译器。当然还有混合体,比如 JavaScript 的 V8 引擎。

在实际开发中,“编译”不一定表示把代码只转换为机器指令,也有可能转换为中间产物或其他语言。 “编译”表示的是一种转换操作,类似于自然语言的“翻译”。

一种语言可以有多种转换工具,比如 Python 解释器就有 CPython、Jython、IronPython、PyPy 等。

实操

  1. 新建一个文本文件,在其中写入 <script>alert("Hello World")</script>
  2. 保存文件,把文件扩展名改为 .html
  3. 用浏览器打开该文件,应该会弹出一个提示框显示 Hello World

当你用浏览器打开 .html 文件时,浏览器会把其中的内容转换为机器指令,然后交给计算机执行。

你看到的所有网页都是基于这个过程形成的,只不过是使用别人的 .html 文件而已。

开发环境

开发环境主要指开发中需要用到的软件工具和配置数据。

一般来说,各语言开发团队提供了官方的开发环境,通常可以直接下载安装。

  • 编译器或解释器
  • 代码编辑器,比如 Visual Studio Code
  • 调试工具,比如 debugpy
  • 版本控制系统,比如 Git
  • ...

调试

版本控制

程序设计

至少得熟练掌握一种编程语言,才能开始接触程序设计。

编程范式(Programming Paradigm)是指编程的基本方法论,是指程序设计的基本原则、模式和风格。 比如面向对象(Object-Oriented,OOP)、函数式编程(Functional,FP)等,实际开发中往往会使用多种范式。

设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过分类编制的、代码设计经验的总结。

程序架构(Architecture)是指软件系统的结构、功能和关系。

网络通信

通信就是数据传输,比如下载文件就是把别人的数据复制到你的计算机上。

计算机网络就是指把很多台计算机连接在一起,实现数据的共享和传递,在网络中的计算机也被称为主机(Host)或服务器(Server)。

通信

通信的过程可以分为发送和接收,也被称为请求(Request)和响应(Response)。

你在网络上做的任何事,实际上都是在与其他计算机进行通信。 比如你给一个视频点赞,实际上就是你在向视频网站服务器发送一段数据,告诉它你向某个视频点赞了,然后它把这个信息记录到数据库中,完成后再告诉你点赞成功了。

对于 HTTP 协议,请求数据需要包括请求行、请求头、空行和请求体四部分。但在实际开发中,我们只需要关心请求头(Request Header)和请求体(Request Body)。响应数据同理。

打开浏览器,按下 F12,切换到 Network 面板,刷新页面,可以看到浏览器发出所有的请求和响应。 捕获这些数据的过程称为抓包(Packet Sniffing),通常用于网络安全领域。

网址

网址的结构是 协议://域名:端口/路径

协议决定数据传输的规则,比如 file 协议可以用于访问本地文件系统。

试试在浏览器地址栏输入 file:///C:/,或在资源管理器地址栏输入 https://bluebones.fun/ 目录。

域名指向一个计算机(服务器)的 IP 地址,比如 localhost 就是指向本机的 IP 地址。 这种指向称为域名解析,通常由 DNS 服务器完成。 所以在访问网址时,浏览器会先把域名发送给 DNS 服务器,拿到 IP 地址后再进行访问。

其实直接访问 IP 地址也行,但多数人不会允许这种方式访问他们的计算机。比如 https://159.226.242.62/

端口表示在这台计算机上运行的某个程序。

路径就是一段普通的文本。

我们平时看到的网址通常会省略端口,比如 https://www.example.com,这是因为 https 协议默认使用 443 端口。