#writing_sample
Samuel上课内容

今天我们学习了计算机入门的内容。广泛来看，手机、ipad甚至是有些车都可以认为是计算机。比起像台式电话这样的电子设备，我们大致可以认为计算机拥有更强大的通用能力，即可以通过编程具备强大的扩展能力。

计算机是数字世界的基础，在数字世界中，良好的计算机技能让人拥有如同魔法一般的能力，你甚至可以非常高效地操纵一切数据和逻辑。而数字世界越来越多地在渗透进真实世界，这种魔法的效力只会越来越明显。

举个例子，通过代码直接买火车票比起在火车站排队买票，是不是就是一种新的力量的变化。

一、计算机的组成

计算机是由哪些部件组成的呢？ 我们很容易看到的，键盘，鼠标，显示器和音箱。它们容易看到是因为其共同之处在于，它们都是直接与外界打交道的设备，大致可以分为输出设备（Output devices）和输入设备（Input devices）。

而事实上，对于服务器和一些专有计算机而言，输入设备和输出设备并不一定需要。计算机内部最核心的设备是CPU，可以简单认为它就是用来处理所有计算任务的设备，其实也就类似于人类的大脑。人类大脑在思考的时候，也需要一些记忆空间，在计算机中叫内存（Memory）。与内存相对有个概念叫“外存”，但现在很少这么说，一般用“硬盘”表示。内存速度快、空间小且不能长期保存，硬盘速度慢、空间大但可以长期保存。所以内存是用来与计算配合的瞬时记忆，硬盘是用来保存结果的长期记忆。

有个有意思的点，手机厂商说的内存512G指的是内存还是硬盘？

二、 二进制和操作系统

数字世界是由二进制来表示的，所有的东西都是0和1的序列。数字10用二进制是1010，字母A用二进制是01000001。甚至是一张照片也可以很方便用二进制来表示： 先把一张照片分成很多很多个小格子，每个格子是一个像素，每个像素可以用3个8位的数字分表表示red, green, blue的比重（比如255,255,255就表示纯白色），就可以完成照片的数字化。

早期的计算机的任务执行是依据于一个很长的纸带，这个纸带上也是有好多个小格子，每个小格子代表0或1，计算机读到这一串二进制之后直接由CPU执行。这种方式非常繁琐，而且还有大量重复劳动。操作系统其实是在所有硬件之上所做的一个中间层，它来管理好硬件，并获取非二进制的信息再转换成硬件指令去执行。

最著名的操作系统是Unix，它大约于1960年代末被发明，它的大部分设计都被沿用至今。苹果电脑用的操作系统macOS和苹果手机用的操作系统ios，都是Unix后代。服务器当中最常用的操作系统Linux也是Unix的变体，安卓手机的操作系统android是源自于Linux。学校里使用的电脑大多是用Windows，它来自于DOS。

简单来看，操作系统大概可以分为命令行和图形界面两种。为什么一般只有命令行的Linux会成为服务器和开发人员的主要选择，是因为命令行虽然看起来简陋，但是它具备了非常好的精确性和可编程能力（当然对使用键盘的水平也有要求了）。我们对图形界面已经很了解了，但这事实上是为了让更多的人能轻松使用计算机，对于工程师和“魔法师”，使用命令行仍然是最快捷的方式。

有个小知识，有个概念叫“Unix时间”代表的是1970年1月1日 00:00:00以后的秒数，这种看起来非常不直观的概念在计算机领域还有很多，它有什么好处呢？

三、 文件管理和基本命令

在操作系统中，大部分东西都可以表示为文件。文件就是一个二进制序列，它可以是一段文字，也可以是一个完整的程序代码，当然也可以是音乐或视频。文件是以树状结构组织在一起的，这根树都是从“根”（root）开始串起各个节点，节点只有两种类型：文件和目录（也叫文件夹），只有目录下面才可以再放别的节点。所以“根”也是一个目录。

现在我们打开终端来进入命令行，执行第一个命令：

	pwd

这个命令是present working directory的缩写，它的返回是当前所在的目录路径。它可能会返回 "/home/ubuntu"，说明它是在根目录下的home目录下的ubuntu目录。

如果我们想进入根目录看看，可以用“cd”命令：

	cd /

直接用“/”就代表了根目录，而且路径都要以“/”开头。但也存在一种简写，如果路径不以“/”开头，那实际上是需要以当前路径在前面补全，比如 "src/bin"这个路径，是要以“pwd”的返回加到前面，变成 “/home/ubuntu/src/bin”。

进入新的目录后，可以用“pwd”检测是不是发生变化了。我们可以用“ls”来查看目录下的节点有哪些

	ls

可以看到有很多不同的节点，它们要么是文件，要么也是目录，可以通过cd进入新的目录。

在目录下想要创建文件怎么办？可以用touch命令

	touch new-file

也可以对它进行复制：

	cp new-file new-file-2

或者改名

	mv new-file-2 new-file-3

也可以删除

	rm new-file-3

这些命令就是最基本的文件操作了。可以在命令行下反复尝试。同时这些命令也有一些更复杂的选项，可以通过手册（man命令）、书籍、搜索引擎、ai探索。

四、远程连接Linux

本地的命令行与Linux有很多相似之处，但不如Linux标准全面。我已经创建了一台专用的学习Linux机器在腾讯云上面。可以通过专门的远程登录软件或者ssh命令来登录使用。

IP：106.53.52.195
用户名：ubuntu
密码：samuelwang122

计算机的知识需要大量的尝试和探索，才能变成魔法。

五、作业

1. 输入工具熟练度提高。建议买一个无线机械键盘，可以连在电脑、MacBook、ipad上使用。确保指法正确，尽量所有输入都用同一个键盘练习。需要长期训练，如果微信或qq聊天也能用键盘最好，目标是达到不用看着键盘打字，速率与正常说话差不多。
2. Linux操作系统知识学习。需要系统性理解Linux操作系统的知识，包括文件系统、进程管理、文本编辑、用户管理等。
3. Linux命令行学习。结合Linux知识，通过命令行完成和理解这些知识。目标是基本上理解Linux命令的分类，掌握常用命令使用，能通过各种方法查询更多命令的使用。

参与资料：

https://linuxtools-rst.readthedocs.io/zh-cn/latest/index.html

《鸟哥的私房菜-基础学习篇》
《Linux命令行大全》