编程基础

1.为什么要学习编程基础

因为你首先是一个合格的程序员,然后才是一个合格的前端工程师

前提:一个程序员必须知道

  1. 硬件和软件:计算机运行原理,参考书籍《编码》(理解难度面向0基础同学更友好),以及大学计算机相关课程,例如《计算机组成原理》,《计算机网络》等(最好有老师带,自学有一定难度!)。
  2. 最大的软件:操作系统
  3. 自己写软甲:数据结构和算法
  4. 多人写软件:软件工程

2. 前端工程师必知(自上而下)

  • 服务器 :不论HTML/CSS,还是JS,数据来源都在服务器中。
  • 浏览器 :HTML/CSS/JS 这三种前端主要语言都是运行在浏览器之上。
  • 操作系统:浏览器,不仅仅是浏览器,所有的软件都是运行在操作系统之上。
  • 硬件:操作系统作为最大的软件,运行在硬件之上。

3.常识:计算机如何存储0和1?

3.1 为什么计算机只能存储0和1?

这其中涉及到很多硬件知识,简单的来说,因为电脑是集成电路,内存微观上是无数小开关,或者是小电池,而“0”和“1”正好分别代表“开”和“关”(或者是“通电”和“不通电”),就好像家里的电灯开关只有开和关一样。所以,电脑的本质决定了它必须是二进制,只能存储0和1.

3.2 计算机是如何存储0和1?

计算机存储过程,其实就是给小电池不断充电的过程,因为小电池自身存在耗电(好比家里的南孚电池放久了不用自己会消耗电量一样)。

那么,既然小电池自己会耗电,又要不断充电,如何判断它是的状态是0和1呢?

规则是:当小电池电量大于50%,为1;电量小于50%,则为0。因为计算机的充电速率是纳秒级(10^-9), 即一次充电过程为:刷新 1次/10^-9s。

4.内存如何存储数字?

上面我们说,计算机已经解决了如何存储0和1的问题,那么,我们如何存储其他数字呢?

方法是将所有数字转化为0和1的组合去进行存储,这就是需要探究十进制如何转化为二进制的问题。

  • 举个例子:
图片

4.1 存储整数

如上:37 在十进制上以10为底的方式得到结果过程:

37(10)
=3\*10^1+7\*10^0
=30+7

同理,37(10)也可写作以2为底的方式得到:

37(10)
=1\*2^5   +  0\*2^4   +   0\*2^3  +   1\*2^2   +   0\*2^1   +   1\*2^0
=1   0  0  1  0  1

4.2 存储小数

同理,对于小数也是一样的道理,以1/10为底,过程为:

0.75(10)
=7\*1/10   +   5\*1/10^2
=0.7+0.05

那么,以1/2为底,过程为:

0.75(10)
=1\*1/2   +   1\*1/2^2
=0.5+0.25

问题:如何存储负数和小数点呢?

参考资料如下:

5.如何存储字符?

方法:对所有字符进行编号,首先以十进制的方式表示每个字符,最后都转化为二进制的方式进行存储。参考:ASCII美国信息交换标准代码

如图:

图片

如图:如果你想存储字母a,那么就存储97(10),对应进制转换为: a -> 97(10) -> 0110 0001(2) -> 61(16)

如果你想存储数字1,对应进制转换为:1-> 49(10) -> 0011 0001 -> 31(16)

以上就是存储键盘上简单字母的方法。

6.如何存储中文?

参考资料:GB 2312

部分图片

  • 在国内使用字符为汉字,我们便在ASCII码的基础上进行扩充。GB 2312收录了6163个汉字,同时收录了包括拉丁字母,希腊字母,日文平假名及片假名字母、俄语西里尔字母在内的682个字符。

  • 缺点:因为GB2312主要为常用字,不能满足人们的需求。后来,为了存储生僻字、繁体字、日语、朝鲜语等,微软推出了GBK字符集

7.如何存储所有字符?

  • 为了将所有字符都能够在电脑上显示,然而不同的字符集考虑到兼容性问题,Unicode联盟做了这样一件事,他们将全世界的文字都编在一张表中。截止到2016年6月,累计128231个字符。(参考资料:Unicode

  • 缺点:因为 128231>216,所以Unicode必须用232来存储。但是,也带来一些问题:

原来使用ASCII字符编码进行存储时,只需要1个字节即8位存储就足够,但是使用Unicode却需要4个字节即32位来存储;

原来存储一个中文字符需要2个字节即16位,使用Unicode后需要4个字节32位存储。这样大大的浪费了存储空间。


图片

7.2 UTF-8的出现(UTF-8

因为采用Unicode存储字符的方式大大的浪费了存储空间,为了节省字符存储消耗,使用UTF-8的方式进行优化,注意,这里是对Unicode存储方式进行优化,而没有改变原有的字符编码。

规定:对于字母例如字母 “a”,依然采用原来的一个字节存储,而不是4个字节进行存储,这样就节省了3个字节的空间;

而对于汉字,例如汉字 “你” ,依然使用原来的2个字节进行存储,但是,在上面的一大堆 0 和 1 中,计算机是无法识别哪一段表示字母,哪一段表示汉字,所以,又拿出一个字节进行区分;

例如 图中汉字 “你”:原本2个字节存储为:01001111 01100000 ,而转换为3个字符存储,表示为:11100100 10111101 10100000,第一个字节的前缀 1110表示这个字符长度为3,后面第2和第3个字符的前缀都为10 是为了和前面所标志的一致,而实际上这个字符的组成,是从第一个字节的后4位、第二个字节的后6位,第三个字节的后6位所组成。

所以,计算机在读取的过程中,当它读到 0110 0001 时,它发现开头没有1,那么就知道这是一个单字节;当它读到 11100100 10111101 10100000,发现前面有3个1,那么它就知道这是由3个字节组成,然后它就自动去读取第一个字节的后4位、第二个字节的后6位,第三个字节的后6位,拼凑成2个完整的字节,表示汉字“你”

  • 切记: UTF-8 只是一种编码方式,而不是字符集!

8.为什么很多中文软件喜欢使用GBK而不是UTF-8?

Unicode和GBk发展史

之前我们说,Unicode字符集使用UTF-8的编码方式更节省空间,而大家却为什么不用呢?考虑到两方面因素:

1.发展史:当时在国内发明GB 2312的早几年,微软的GBK还没有出现,大家习惯了使用 GB 2312 和 GB13000 ,而新出来的Unicode虽然全球统一,但是还不完善,没有采用UTF-8的编码方式。

之后GBK的出现,对原来的GB 2312更加优化,深受大家的喜爱。而到后来2000年出现的 GB 18030-2000 ,它统一和兼容了GBK,但是90年到2000年初,代大家还是习惯性的使用GBK字符集。

2.国情:在当时的背景下,信息相对比较闭塞,并不是什么东西像如今Google一下就可找到,所以在国内90年代大部分软件使用的字符集依然是GBK。

9.对前端的影响

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,884评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,755评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,369评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,799评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,910评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,096评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,159评论 3 411
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,917评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,360评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,673评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,814评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,509评论 4 334
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,156评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,882评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,123评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,641评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,728评论 2 351

推荐阅读更多精彩内容

  • 可以看我的博客 lmwen.top 或者订阅我的公众号 简介有稍微接触python的人就会知道,python中...
    ayuLiao阅读 3,097评论 1 5
  • 1.教练思维 进行了一次邓老师的电话平台沟通,内容是教练思维在四生系统的应用。教练的发问需要经历一个过程:发问→倾...
    多瀚Sean阅读 395评论 0 0
  • 也许骨子里本就有无数文艺范儿的种子,青春期启动的时候,这种气质喷薄而出,变得一发而不可收拾。从此,电影、音乐、文字...
    moon沐恩阅读 1,928评论 0 27