什么是编程

什么是程序

本节先搞清楚什么是程序

从「西红柿鸡蛋」的菜谱开始说

先看看下面这是一个做菜的「程序」,做西红柿鸡蛋的步骤:

  1. 准备食材,鸡蛋,西红柿
  2. 鸡蛋打散,西红柿切丁
  3. 热锅热油,把鸡蛋单独炒熟盛出
  4. 热油炒西红柿,加盐,炒出汁,少许糖
  5. 加入之前炒熟的鸡蛋,混合后装盘出锅

我们说上面是一道做菜的「程序」,谁来执行呢,人,厨师,你或者你的爱人/父母,总之是一个人

程序是「一段预先编好的指令」

计算机程序就是一段预先编好的指令, 用来完成一个有意义的工作,计算机会非常忠实的按照这些的指令一步步执行任务

例如:

  1. 将文本内容 你好,世界 输出到终端
python
print("你好,世界")

正在检测桌面客户端环境…

再一个例子:

  1. 计算 4 * 4 * 3.14 的结果
  2. 将结果输出到终端

对应如下程序:

python
result = 4 * 4 * 3.14
print(result)

正在检测桌面客户端环境…

一个现实中更复杂的例子:

  1. 连接到指定网站的主机
  2. 发送 HTTP GET 指令,请求指定的 URL
  3. 接收响应内容
  4. 将接收到的响应展示到浏览器中,
  5. 浏览器进一步渲染网页内容
    • 加载所需的文件(脚本/样式/图片等)
    • 展示加载到的图片
    • 根据 css 渲染元素内容
    • 按顺序执行脚本
  6. 最后完整呈现你看到的网页内容

真实的软件程序比这展示的会多得多,可能会有数万行、几十万行上百万行。你现在需要知道程序就是由指令来组成的。通常在程序里面,我们把这些指令叫做语句。你可以不去了解这个概念,但是你只需要知道这些语句执行构成了程序,而这些程序交给计算机去执行。计算机会忠实的执行每一条的语句。

随着课程的进行,你会学习到各种各样的「语句」,他们完成不同的功能,那一个软件就是由这样完成各种各样功能的语句来组成。他们有机的结合在一起,由程序员、软件工程师帮他们编写完成。当然后面我们还会讲到,通过软件代码AI代理程序,代理程序会很好的帮助我们去编写很多的指令。

总之,指令/语句组成了计算机的程序,由计算机依次执行完成一些有意义的工作

数据

现在我们来讲另一个很重要的概念,就是数据。那么所有在上一节当中,你已经了解了,程序是由各种各样的语句来组成,那这些语句它完成很多不同的功能。那么这些功能有没有一个共同的特点。有的从本质上来讲,所有的程序都是在围绕数据进行处理

所有的程序都是在围绕数据进行处理,主要是这么几点:

  1. 数据如何定义
  2. 数据如何计算
  3. 数据如何展示,这涉及到我们的界面
  4. 数据如何传输和存储

举个例子,微信是我们最常用的聊天工具,相信所有人都在用过。那微信里面有什么样的数据呢?首先我们跟一个好朋友的对话,这有对话数据,那对话数据是怎么样的呢?对话数据它包含文字信息、语音信息、图片信息、视频以及其他的文件。

这就是微信这个软件里面数据一个聊天数据的定义。那它这个会话数据不是只有一个你有很多的好朋友,你有很多的呃群聊,那每一个跟好朋友的对话信息每一个的群聊信息,它都是一个会话数据。所以在微信里面的主要功能聊天里面首先它有会话数据,每一个会话数据它有什么它的会话对象是谁?这会话类型是什么?是单人会话还是多人群聊会话。单人信息里面,这个个人信息是什么样的?以及这个整个的会话列表是怎么样的或者叫会话历史数据。

那么数据是如何被计算的?想象你发一个语音,然后呢,你把它点击转成文字,这个就是计算。当然这使用了AI在里面做一些复杂的计算。

计算很容易理解。一个显而易见的计算的例子就是如果你到银行里面存款,他们往里面系统会给你的账户余额加一个数据,那你取款的时候,需要从你的账户余额里面减掉,你要取出的数据。如果你是转账呢,那要从你的账户余额里面减掉一个转账的金额,然后加到另一个账户里面。这个是一个简单的计算。但事实上其实计算对于程序来讲是无处不在的。很多隐藏的地方你看不见,这里我们就先不展开,那回头我们会清楚的看到会介绍计算是如何发生的,最简单的数据,最简单的计算是怎么样的。

数据的展示也很容易理解。我们看到微信的会话数据里面,任何一个现代的软件应用程序,它都有一个漂亮的界面。它的程序可能要跟服务器进行打交道,进行通信。那么无论如何,它都会有一个可视化的界面,比如说我们的微信的会话列表里面,你说的每一个文字,你的语音是展示成一条这样的数据,你发送的图片会有一个缩略图。你的发送的视频也会有一个封面缩略图,点击之后它会进行播放。那整个视频的这么一个文件,对于播放软件来讲,它的播放界面视频在不断的播放画面会不断的跟着视频在动。这个就是展示。

数据的存储。首先我们想要理解一个简单的概念,大家应该要了解数据的存储,比如说。你在跟别人聊天,你们之间会有很多的聊天会话数据,有文字,有语音,有视频。然后你随时可以翻阅你的历史数据。这些数据在你程序退出的时候,比如说你的微信结束了,它还在,它没有消失,它还保存着,它保存在哪里呢?它保存在你的手机里面,手机的SSD存储里。

甚至你关机之后,整个系统关机了,再重新开机,然后再启动微信。你之前的会话数据还保留着,那么这些数据就是它的存储。存储数据也是一个重要的概念,在存储这一个领域,本身就是一个很大的一个文章。比如说现在有数据库,数据库是持久化存储所谓的结构化数据的。后面我们会学到它是一个专门的用于存储数据的软件,存储查询,这是它最关键的功能,就是就这么一个功能,它作为一个最关键的一点,来存在。我

传输和存储也很好理解。在微信里面,你在跟别人聊天,你在聊天输入框里面输入了一段文字,然后点击发送这个数据就到了对方的手机上,那这个就是数据的传输,它的传输的路径可能会比较复杂,我们比较容易理理解的是他首先会通过网络发送到微信的服务器,然后微信的服务器会在最近的一些绘画数据做一些存储。如果这个时候对方也是在线的,就是他的微信也是打开着的,那么他会把这个绘画数据通过再传输给对方,那么对方就收到了数据。那数据的发送是非常的快的,基本上是电载通信啊,整个的延迟过程,大部分时间是在传输过程上。

那其实对于传输来讲,这是显而易见的刚才的例子。但其实数据的传输在很多时候是悄无声息的,这随着你在后面不断的学习,你会更多的去了解数据的传输是怎么样的。

为什么要从这个宏观的层面去告诉大家数据?因为程序就是处理数据的。所谓的计算机其实核心就是计算,那计算什么呢?计算数据,这数据从哪来呢?它有可能从磁盘来,那计算完了东西要怎么去做呢?可能是去展示,可能是传给对方,对吧?可能是保存下来,其实这个就是计算机,显示器就是展示数据的地方,硬盘就是存储数据的地方。CPU是计算数据的执行指令、计算数据的重要部件。那么网络互联网TCP/IP协议,它就是给予我们传输数据通过网络从一个地方传到另一个地方的一个关键点。

在后面的课程里,我们写的每一个程序语句,基本都可以归为这四类事情中的某一类。

你现在可能还会有很多不同的疑惑。没关系,我们在后面会更多地介绍相关的知识。你只需要知道计算机是用来处理数据的。它通过预先编写好的程序来处理数据,展示数据存储结果,存储数据。

理解了"程序"和"数据"这两个核心概念后,你可能会想:这些听起来很抽象,我该怎么真正开始编程呢?

别担心!就像学做菜一样,光看菜谱是学不会的,你需要真正动手去切菜、炒菜。编程也是一样,最好的学习方式就是动手写代码

接下来,我们将使用 Python 这门编程语言来进行实践。为什么选择 Python?因为:

  • 它的语法简单,接近自然语言,容易理解
  • 它功能强大,可以做很多事情(网站开发、数据分析、AI 应用等)
  • 它是目前最流行的编程语言之一

现在,让我们从最简单的开始,一步步感受编程的乐趣!

Python 基础

我们现在开始学习编程语言,Python语言。之前所讲的程序、数据的处理、计算、展示这些在编程语言里面处处都会体现到,编程语言就是为了要编写程序。然后这个程序最终就是用来处理、展示、存储、传输数据的。我们看看这个编程语言是怎么执行的。

我们刚才了解了全貌,我们现在再来了解编程语言。

Python 中的数据

数据是程序中非常重要的概念,就像前面所说的,程序就是用来处理数据的。我们看一看在 python 编程语言当中,如何使用数据。

这个例子在前面已经出现过了,运行它的时候,你会看到它在控制台输出了你好世界,你试一试把世界换成自己的名字,或某个人。比如说 「你好,AI101」。然后再运行,你会发现控制台输出了你输入的内容。

python
print("你好,世界")

正在检测桌面客户端环境…

"你好,世界" 用引号双引号括起来的你好世界,在python程序语言当中代表了一个字符串。字符串是非常常见的数据类型。比如说你微信发送的文字信息,比如说一个人的姓名、住址都是字符串类型,那这个语句是什么意思呢?你可以理解为他把你好世界这一个数据字符串数据展示到了控制台上。

python
print(3.14)

正在检测桌面客户端环境…

同样的,如果你把它换成一个数字,把引号去掉,那么它就会把这个数字这个数据打印到控制台上。 所以你请你记住: print 就是用于把数据输出到控制台上。

数据的运算

计算机最擅长的就是计算。那么程序里面如何实现计算呢?很简单,你只需要用你最熟悉的运算符,把数字连接起来即可

main.py
print( 12 + 3)
print( 10 * 10 * 3.14)
print( 1024 / 8)

正在检测桌面客户端环境…

正如你所看到的那样,Python 解释器在执行这个程序的时候,会先把括号内的算式先计算出结果,然后再把结果输出。

两个字符串之间可以使用加号进行连接。

python
print("你好" + ", ai101")

正在检测桌面客户端环境…

输出:

代码
你好, ai101

正在检测桌面客户端环境…

训练

我们来做一个有趣的练习。使用 Python 的 turtle (海龟绘图) 库来画一个正方形。

python
from turtle import *

# t = turtle.Turtle()
# t.shape("turtle")

shape("turtle")

# 绘制正方形
forward(100)  # 向前走 100 步
right(90)     # 向右转 90 度
forward(100)
right(90)
forward(100)
right(90)
forward(100)

done()

正在检测桌面客户端环境…

变量

在编程语言里面,变量是一个重要的概念,它为程序中的数据打上了一个标签,你可以用这一个标签来进行任何数据运算,或者也可以把标签应用到你熟悉的 print, forward 里面

python
# 变量给数据起名字
message = "你好,AI101"
radius = 4

print(message)
print(radius * radius * 3.14)

正在检测桌面客户端环境…

python
from turtle import *
import time

screen = Screen()
# screen.setup(width=600, height=500)
canvas = screen.getcanvas()
root = canvas.winfo_toplevel()
    
# 激活窗口并将其置顶
root.attributes('-topmost', 1)  # 设置为“总是置顶”

# 强制更新一下 UI,确保操作生效
root.update()

root.lift() 

root.update()

root.focus_force()

root.update()

# 3. 稍微停顿一下(可选),让用户看清窗口弹出了
time.sleep(0.5)

side = 100
angle = 90

forward(side)
left(angle)
forward(side)
left(angle)
forward(side)
left(angle)
forward(side)

root.attributes('-topmost', 0)  # 立即取消“总是置顶”,允许用户操作其他窗口,但当前窗口已获得焦点


done()

正在检测桌面客户端环境…

变量让我们的程序对数据形成了一个记忆。我们相当于给数据起了一个名字,那这样是可以使得我们的程序在处理数据的时候,非常的方便去使用这些数据。而且让我们的程序设计者在阅读程序理解程序的时候更加的轻松和方便。变量它在程序里面属于一个标识符,未来我们还会在使用标识符去给起名字。我们最重要的程序里面最重要的起名字,其实是有两个部分,一个是你的可复用的代码,一个是你的数据。那你的程序通过对这些数据和可复用的代码组合做了命名。那在这些命名之后,你任何的地方都可以很方便的去重复使用这些数据重复使用这些代码。

变量的字符有一些规则,可以由字母、数字、下划线组成,并且第一个字符不能是数字

TODO 添加一些变量的训练/问答