已更新到 swift 4.2
前言:
学习基本的知识、知道代码如何运作。然后学习用来学 swift
代码的工具
基本知识包括:代码注解、算数运算、常量、变量
首先学习计算机的工作原理,毕竟进行更复杂的编程领域之前得有好基础
计算机的基础工作原理
计算机的功能强大是由于人类的编程,如果你想对计算机顺手拈来,知道工作原理非常重要!
其实计算机也是很简单的机器,计算机大脑就是 CPU,它本质是一个数学机器,它对数字执行加法、减法和其他算术运算。你操作电脑时看到的一切都是建立在进行每秒数百万次处理的 CPU 上的
CPU 将它所操作的数字存储在称为寄存器(registers)的小内存单元中。CPU 能够从计算机的主存储器(即随机存取存储器(RAM))中将数字读入寄存器,它还可以将存储在寄存器中的数字写回到 RAM 中。所以允许CPU处理大量不适合放在寄存器的数据。
下面是如何工作的图表
当CPU从RAM中将值提取到寄存器中时,它将在其数学单元(Math Unit)中使用这些值并将结果存储回另一个寄存器中。
每次 CPU 进行加减法,从 RAM 读取或者写入 RAM 时,它都会执行一条指令。每个计算机程序通常由成千上万条指令组成。一个复杂的计算机程序,例如您的操作系统macOS(是的,这也是一个计算机程序!),可能总共有数百万条指令。
现在你不用编写单独的指令,而是用一种特定的编程语言编写代码,比如 swift 。这段代码通过一个叫做编译器的计算机程序执行,它把代码转换成CPU知道如何执行的指令。你写的每一行代码都会变成很多指令——有些行可能会变成几十条指令!
表示的数字
数字是计算机所做的一切的基本基础。你发送给编译器的任何信息最终都会变成一个数字。例如,文本块中的每个字符都由一个数字表示。字符串是表示文本块的计算机术语。
图片也不例外。在计算机中,每个图像也由一系列数字表示。一幅图像被分割成成千上万甚至上百万个被称为像素的图像元素,每个像素都是纯色。如果你仔细观察你的电脑屏幕,你也许能辨认出这些方块。除非你有一个特别高分辨率的显示器,像素非常小!这些纯色像素通常由三个数字表示:一个代表红色,一个代表绿色,一个代表蓝色。例如,一个完全红色的像素是100%红,0%绿和0%蓝。
CPU使用的数字与你使用的数字有明显的不同。 当你在日常生活中处理数字时,你会以十进制处理它们。
十进制或基数10的数字423包含三个个位,两个十位和四个百位:
在以10为基数的系统中,一个数字的每一个数字的值可以是0、1、2、3、4、5、6、7、8或9,每个数字总共有10个可能的值。是的,这就是为什么它被称为基数10!但是每个数字的真实值取决于它在数字中的位置。从右向左移动,每一位数字都乘以10的幂。所以极右位置的乘数是10的0次方,也就是1。往左移,下一个乘数是10的1次方,也就是10。再往左移,下一个乘数是10的2次方,也就是100。等等。
这意味着每个数字的值都是右边数字的10倍。数字423等于:
(0 * 1000) + (4 * 100) + (2 * 10) + (3 * 1) = 423
二进制数
电脑觉得十进制太复杂,反而喜欢在 base 2下工作。
base 2,通常被称作二进制,二进制的数字要么1要么0
几乎所有的现代电脑都是用二进制,因为在物理级别上,对每个数字只处理两个选项是最容易的。在主要由计算机组成的数字电子电路中,存在的电压是1,而不存在的电压是0——这是 base2!
注意:已经有真实的和想象的计算机使用三元数字系统,它有三个可能的值而不是两个。计算机科学家、工程师和专门的黑客继续探索base-3计算机的可能性。参见https://en.wikipedia.org/wiki/Ternary_computer和http://hackaday.com/tag/ternary-computer/。
下面是以2为基数的1101:
在base 10 系统中,值以10倍增长、10、100、1000等因子。在base 10中,值以2倍增长、2、4、8、16等因子。一般规则是将每个数字乘以基数的幂。 base 2 中幂是2,所以
所以最右边的数字代表(1 * 2 ^ 0),即(1 * 1),结果为1。左边第二位代表(0 * 2 ^ 1),即(0 * 2),结果是0
换句话说,2的每一次方(幂)要么是(1)要么不是(0),作为二进制数的组成部分。
二进制数的十进制形式是组成这个数的2的所有幂的和。所以二进制数1101等于:
(1 * 8) + (1 * 4) + (0 * 2) + (1 * 1) = 13
如果你想把 base 10 的数字423转换成二进制,你只需要把423分解成它的2次方。你会得到以下结果:
(1 * 256) + (1 * 128) + (0 * 64) + (1 * 32) + (0 * 16) + (0 * 8) + (1 *
4) + (1 * 2) + (1 * 1) = 423
通过上式中的二进制数字可以看出,得到的二进制数是110100111。你可以通过计算来证明这个等于423 !
给二进制数的每个数字的计算机术语是比特(“二进制数字”英语的缩写)。八个比特(位)组成一个字节。四个比特(位)被称为“半字节”。
计算机有限的内存意味着它只能处理一定长度的数字。举个例子,集成器通常是 32位 或者 64位长度,这也是我们称32位、64位 CPU 的原因。
因此,一个32位的CPU可以处理最多的基数为4,294,967,295,换成二进制是11111111111111111111111111111111,一共32个 1,可以算一下。
对于一台计算机来说,处理大于CPU最大值的数字是可以,但是计算必须以一种特殊且更长的方式进行拆分和管理,就像你在学校中执行的长时间乘法一样。
十六进制数字
可以想象,处理二进制数字会变得非常乏味,因为编写或键入它们可能需要很长时间。因此,在计算机编程中,我们经常使用另一种称为十六进制的数字格式,简称十六进制也就是 base 16。
当然,没有16个不同的数字可以用来表示数字;只有10个。为了补充这些,我们使用前六个字母,a到f。
它们相当于十进制数,像这样:
• a=10
• b=11
• c=12
• d=13
• e=14
• f=15
下面是一个 base 16 的示例,使用与前面相同的格式:
现在每个数字的幂是16。同样的方法,把这个数字转换成十进制,像这样:
(12 * 4096) + (0 * 256) + (13 * 16) + (14 * 1) = 49374
十六进制非常重要,因为每个十六进制数字可以精确地表示四个二进制数字。二进制数1111相当于十六进制数f。接下来,你可以简单地将表示每个十六进制数的二进制数连接起来,创建一个比二进制或十进制数短的十六进制数。
c = 1100
0 = 0000
d = 1101
e = 1110
c0de = 1100 0000 1101 1110
这非常有用,十进制中最长的32位数字是4,294,967,295。在十六进制中,它是ffffffff
代码如何工作
计算机有很多限制,而且它们自己只能做很少的事情。计算机程序员通过编码增加的能力,就是把这些小的东西按正确的顺序组合在一起,生产出大得多的东西。
编码很像写食谱。你把原料(数据)组装起来,然后一步一步地告诉电脑如何使用它们。
下面是个例子:
步骤1。从硬盘加载照片。
步骤2。调整图片大小为400像素宽,300像素高。
步骤3。在照片上应用乌贼滤镜。
步骤4。打印照片。
每种编程语言都是一种高级的、预先定义好的方式来表达这些步骤。编译器知道如何解释你编写的代码,并将其转换为CPU可以执行的指令。
有许多不同的编程语言,每种语言都有自己的优点和缺点。swift是一种非常现代的语言,吸收了很多语言的优点,同时摈弃他们的一些缺点。
程序员们在回顾Swift时也会觉得老呆板。但就目前而言,它是一种非常令人兴奋的语言,因为它正在迅速进化。
总结:本文简要介绍了计算机硬件、数字表示和代码,以及它们如何一起工作来创建一个现代程序。在一节中要讲的内容太多了!接下来是时候学习阅读本书时编写Swift的工具了。
Playgrounds
用于编写软件的工具集通常称为工具链。编写代码的工具链的一部分称为集成开发环境(IDE)。Swift最常用的IDE是Xcode,您将使用它。
Xcode包含了一个方便的特性,叫做Playground,它允许您快速编写和测试代码,而不需要构建一个完整的应用程序。
共同学习,写下你的评论
评论加载中...
作者其他优质文章