回应模式 - No.60413427


No.60413427 - 科学


计算机导读从摇滚开始无名氏No.60413427 只看PO

2023-12-04(一)01:21:43 ID:22b93o1 回应

这是一个从零开始的计算机学教程。教程里不会出现太过于深奥的内容,而是鼓励肥哥们根据串内的推荐自行学习。这个串只起到初步解释和导读的作用。

为了让计算机学更加有趣,也为了满足我的摇滚癖好,计算机和摇滚会在这个串里有机地结合起来,毕竟学习时听听音乐不也挺好嘛(ゝ∀・)

无标题无名氏No.60413513

2023-12-04(一)01:30:57 ID: 22b93o1 (PO主)

https://y.music.163.com/m/song/4143723/

>如何定义计算机科学

在克莱姆森国王理智而矜持的歌声中,让我们开始计算机的旅程。

计算机学最初被称为“计算学”,然后是“计算机技术”,然后才是“计算机科学”。这是因为计算机科学最初的目的就是更好地做计算。而当一个巨聪明的人发明了计算机后,大家发现利用这种通电的可爱小玩意才能最好地做计算。

计算机的应用很广泛,因为计算的应用很广泛,很少有事情不涉及到:就是小学生写作文,也得算字数吧?

因为计算机的应用如此广泛,所以计算机的使用涉及各个不同的领域,可以说几乎所有的理科都涉及到计算机。不可避免地,计算机学需要各种方面的知识:工程,通信,生物,物理...哦,等等,不能忘了最重要的数学。

不仅因为计算机的应用面广泛,使用计算机本身就需要很多知识,大体可以分为两种:

>如何计算

>如何使用计算机这种工具

无标题无名氏No.60413632

2023-12-04(一)01:49:48 ID: Mwy9SJD

jmjp

无标题无名氏No.60413659

2023-12-04(一)01:53:13 ID: 22b93o1 (PO主)

>如何计算

著名的数学家,计算机学家迪克斯特拉(Dijkstra)曾经说过:“计算机之于计算机科学,就像天文望远镜之于天文学(Computer Science is no more about computers than Astronomy is about telescopes)。”

迪克斯特拉的意思是,计算机科学不需要计算机。有了计算机科学的知识,你不需要计算机也可以进行计算,只不过速度小小地慢个几十亿倍罢了。

他说的实际上就是如何计算的知识。一些放之四海而皆准,不根据你用的是人脑还是计算机而改变的计算理论知识,我们可以称其为理论计算机科学。举个实际的例子,a乘b就是a加上a,一共加b-1次。这种计算的结果不会因为使用的计算工具改变而改变。实际上,乘法就是一种最早提出的算法(Algorithm)。

在数学家的眼里,理论计算机科学就是数学的附庸。他们觉得“离散数学”(理论计算机科学很重要的一部分)就是一个不良定义词汇,可以直接归类为数学分析的子领域。某种程度上来说他们的想法是正确的。

但为了保住我身为一个计算机壬微不足道的自尊心,我会大声反驳这种观点,BB一些算法,形式语言之类的专有名词,然后搬来图灵等大仙用以佐证...扯远了,我们最后看看克莱姆森国王怎么说吧。

克莱姆森国王说:“知识真是致命的朋友(Knowledge is a deadly friend)。”

本串串首的图片为克莱姆森国王首专封面,发布于1969年,由一名乐队成员的程序员朋友以自己的脸作为母版绘制而成。那位程序员出生于1946年,于1970年死于心脏病发作,享年24岁。

知识是致命的朋友,希望你做好准备,还好这里有摇滚作为壮胆。

无标题无名氏No.60413753

2023-12-04(一)02:08:35 ID: BNtl932

观望一下,看看能不能帮我掌握计算机|∀゚

无标题无名氏No.60413823

2023-12-04(一)02:17:03 ID: 22b93o1 (PO主)

https://y.music.163.com/m/song/20045632/
>如何使用计算机这种工具

很多肥哥进这个串的目的可能是学习这个,很抱歉在前面唠叨了一堆影响你有效率地找到这里。

专职使用计算机工具的职业中,最常见的那个就叫做程序员。程序员吸收甲方的要求,然后将其打出来,像是把甲方的想法翻译成了一种(常常是带屎的)特殊的语言。这种语言可以让计算机看懂并执行。

人的话语是模糊的,而计算机的话语是清晰的,没有歧义的。从某种角度来看,计算机的话语是人通过各种理论所创造的,“直指大道”的话语。而人的语言则是自然所创造的语言,效率更低,但咱有文化。

说了这么多,但说出计算机的话语,也就是编程,只是使用计算机这种工具微乎其微的一小部分,就像你学语文的时候不会把“能说中文”看作语文这门学科的主要内容一样。

使用计算机这种工具还需要工程学的知识,每个程序员的键盘都是一把铲子,而程序员试图铲出一栋美丽的建筑。正如建筑工人不会把楼造的七扭八扭浪费使用者的时间一样,程序员也不会把代码写的需要很长时间来运行;也正如建筑工人不会把楼造的巨大无比一样,程序员不会把代码写的很长很大,并且让代码在运行时占用太多空间。

小与美不可兼得,时间和空间的完美利用也不可兼得,计算机工程和工程学一样,是妥协的艺术。

在搭建程序这栋建筑时,我们也需要关心建筑之间的一路顺风(po在这里尽可能地尝试用一个词来表示畅通无阻和安全)。一样的道理,计算机科学需要通信,密码学,网络安全等学科。一场阔佬的派对可能需要租用众多建筑,多线程的知识同理被需要。数据库,人工智能,电路...天哪,我们要的知识太多了。

许多利用计算机的技巧捆在一起,被我们称为“实践计算机科学”。

理论计算机科学就像Elephant Talk这首歌里用吉他模拟出来的象语,纯净,自然。而实践计算机科学则是人聒噪的话语,杂糅,充满沉淀。但不论如何,你没法用象语和人沟通,而人的话语也自有其有趣之处。

但在用计算机的语言沟通的时候,请在你心中培养数学的语言。实践计算机科学是外功,理论计算机科学是内功,练武不练功,到头一场空(赛博英雄传并感)。两者都学才是合理的,自然的,有效率的。

最后,我发誓接下来不会再多推这些莫名其妙的前卫摇滚了,肯定整老少咸宜的。

无标题无名氏No.60413943

2023-12-04(一)02:36:52 ID: 22b93o1 (PO主)

https://y.music.163.com/m/song/445702291

迟来的Q&A:
>这个串的目标群体是谁?
对计算机有兴趣的人,想要成为程序员的人,不知道今天听啥的摇滚爱好者,闲的没事干随便翻翻的人,想要巩固自己知识看看别人见解的人,和我自己。因为把我所学的知识写出来也是一种修行,若是大家能从我的文章里多挑点错,让我发现自己的漏洞,那就更好了。

>为什么是计算机和摇滚?
po是计算机从业者,也是摇滚爱好者。在学习计算机与听摇滚的过程中,po发现计算机和摇滚非常相似:
- 计算机发迹于50年代,摇滚也发迹于50年代
- 计算机是对于知识的表达,摇滚是对于情感的表达
- 摇滚中有很多主题有关机器人和计算机,计算机...也可以用来放摇滚
- 计算机由1和0构成,摇滚里也有很多1和0,比如说图里的这两位,他们曾经合唱过Under Pressure,但在感情上应该没有什么交叉
数字论证免了,总之Q.E.D

>这是个大工程吧,你打算写多久
不好说,直到我鸽

无标题无名氏No.60414013

2023-12-04(一)02:49:06 ID: 22b93o1 (PO主)

https://y.music.163.com/m/song/19703271

最后,学习计算机并不是什么需要沐浴更衣,集中思绪之类很复杂前摇的事情。如果你想要学习计算机,不要找理由了。

应该开始学习的时间是Right Now。

无标题无名氏No.60417366

2023-12-04(一)13:19:58 ID: 22b93o1 (PO主)

https://y.music.163.com/m/song/471969699

>1与0

每个人都知道1和0是计算机的根本,或者更严谨一点,二进制是计算机的根本。

进制是用有限的数字符号来表示所有的数值,二进制是用两个数字符号来表示数字。这两个符号是最小的自然数0,和第二小的自然数1。逢二进一,这就是二进制的规则。

https://blog.csdn.net/qi_ming88/article/details/77677305

↑这是二进制的基本加减乘除规则。其实二进制和十进制本质上没有区别,只是换了个方式表示数字罢了。

例如二进制数字101等于十进制数字5,二进制数字1100等于十进制数字12,101*1100(二进制)=5*12(十进制)=60(十进制)=111100(二进制)

https://zhuanlan.zhihu.com/p/75291280?utm_id=0

↑这是二进制和十进制互相转换的方法

我们可以人为地赋予1和0意义,例如我们可以认为1代表“有”,0代表“无”,因为任何数乘1得自身,乘0得0;可以认为1代表“正确”,0代表“错误”;1甚至可以代表We Will Rock You里的跺脚,0代表拍手。这样我们可以用110110来“编码”We Will Rock You这首歌。

编码(Encoding)就是将一种信息写为一种特定的格式。例如将音乐写作二进制一样。这样,二进制就可以用来表示信息。

我们还可以用数字来表示信息。例如我们可以用(十进制数字)0,1,2,3,4来表示头,左手,右手,左脚,右脚。这5个十进制数字转化成二进制就是0,1,10,11,100。根据这种表示信息的规则,我们在看见100时,可以通过既定的表示规则反向获取其代表的东西---右脚。

如何表示多个东西呢?一般来说,我们使用一个到多个字节来表示一样东西。

一个字节含八个比特,一个比特(bit,binary digit)含一个1或者0。

这是一个比特:1

这是一个字节:10001110

那么先左脚,再右脚就可以表示为00000011 00000100。我们似乎为每个肢体浪费了5个比特...不过为了秩序,这是可以接受的,如果不能接受,可以修改规则,让我们将三个比特作为一个单位,这样011 100就可以表示左脚然后右脚。但是11 100不行,因为两个数字之间的间隔是我为了方便加的。没有固定n个比特为一个单位的规则,我们不知道11100代表什么。

无标题无名氏No.60417637

2023-12-04(一)13:49:16 ID: 22b93o1 (PO主)

在计算机这个实体中,1和0被表示为电流。当电流通过一个管道的时候,如果我们检测到一段时间的电压较高,我们称其为高电平,并认为我们收到了一个1。当一段时间电压低时,我们收到了一个0。

特殊的电路结构会吸取两条流入的电流,并根据其电平高低,输出一条高电平或者低电平的电流。从抽象意义上来看,就是输入两个可以为1或者0的数,然后输出一个可以为1或者0的数。

我们把这种吸收两条电流,流出一条电流的结构叫做逻辑门(logic gate)。

https://s2.shizhz.me/s2e2

↑这是一个简单的逻辑门介绍

许许多多的逻辑门拼凑在一起,可以形成复杂的结构。例如一个叫做累加器的结构,可以实现输入两个数,每个数由很多个比特组成,输出一个由很多比特组成的数,这个输出的数是输入的两数之和(具体结构自行百度)。

实际上,逻辑门在被发明前,输入两个1或0然后输出1个1或0的运算规则就已经被发明了,它叫做布尔运算(boolean operation)。这并不是什么很值得惊讶的事情,毕竟根据输入的两个二进制数字的不同来输出不同的数字,只有16种不同的输出规则。若假定两个输入符合交换律,那么只有8种。如果排除掉无意义的输出规则(不管输入啥,都输出1/都输出0),那么只有6种。如果假设输出正好相反的规则为1种规则,那么只有3种。这三种规则是“与”(AND),“或”(OR)和“异或”(XOR)。

上面的种类数字是哪里来的?请百度布尔运算,百度真值表,然后自行思考一下。

总而言之,布尔运算是二进制数字除了加减乘除以外还拥有的一种特殊运算规则。放到实际中,可以用逻辑门这种电路单元来模拟。