“吾尝终日而思矣,不如须臾之所学也;吾尝跂而望矣,不如登高之博见也。登高而招,臂非加长也,而见者远;顺风而呼,声非加疾也,而闻者彰。假舆马者,非利足也,而致千里;假舟楫者,非能水也,而绝江河。君子生非异也,善假于物也。”——《荀子·劝学》
“ChatGPT能结合上下文和人聊天而不只是一问一答了!”
“看,ChatGPT写的稿是不是比你们公司的文案还要好!”
“哇塞,ChatGPT还会编程,桃花眼~”
“马斯克发推文说ChatGPT好得吓人,这家伙不是从这家公司退出了吗?”
……
年数学家冯·诺依曼提出了采用二进制和“存储程序”的计算机思想,并研究出第一台现代意义上的通用计算机EDVAC,七十多年间计算机技术或组成一直没改变。那么,只有0/1两个“字”的计算机如何与人对话?
仔细回想更让人感慨:EDVAC占地45.5平方米,重千克,需要三十个技术人员共同操作,而如今小巧的笔记本电脑功能依然强大;几乎每人每天都用电子设备;现实中智能“机器人”层出不穷……
机缘巧合手机阅读软件向我推荐了《计算机是怎样跑起来的》这本书,这是通过一本书全面介绍计算机底层原理和应用的图书,极为罕见,所以想分享给大家,希望了解计算机基础知识后每个人对现实世界的数字化转型都更加游刃有余。
下面基于计算机底层原理和实际应用整理了7个问答方便大家阅读(由于本人也是小白,如果有不妥的地方欢迎大神们指正,不吝赐教):
1.为什么计算机只传输0/1两个信号?
顾名思义,计算机是进行运算的机器,它的工作原理是“执行输入——运算——输出”,请牢记,无论在屏幕或现实中看到哪些图像或神奇的计算机功能,在计算机的世界里只有运算。
计算机通过电信号传输数据,采用电子元件双稳工作设计,即电路中只存在两种电信号——5V左右的高电平代表数字1,0V左右的低电平代表数字0。电路中只有这两个信号所以只能采用二进制,二进制满二进一,与十进制换算关系如下:
通用计算机由运算器、存储器、控制器、输入设备和输出设备五大部件组成。工作原理为:键盘、鼠标、麦克等输入设备输入信息,运算器按照指令执行运算,再将结果输出到屏幕、打印机等输出设备上。
图1:计算机结构框架示意主存储器由许多存储单元构成,相当一个有很多“房间”的大厦,每个存储单元相当一个房间,用于存储数据。16位(bit)内存表示每个存储单元能存储一个16位长度的二进制数字。此外,每个存储单元都有“门牌号”,作为存取数据的地址。
运算器借助逻辑电路,可以取出存储单元里的数字进行运算,运算器也自带存储器,临时存储输入或者从内存取出的数据。运算器的存储器速度极快,被称为寄存器,因为价格也很贵所以容量相比内存小很多。控制器是计算机的神经中枢,指挥各部件自动、协调地工作。运算器和控制器组成了中央处理器(CPU,centralprocessingunit)。
输入设备和输出设备简称I/O设备。
如果大家对电路设计感兴趣,建议先和chatGPT学学门电路,例如查询“与非”、“或非”、“异或”、“同或”这几个词,都很有趣。
CPU有多少条用于传输数据的线路,一次便能运算多少位的二进制数字,现在大部分计算机的CPU是64位,运算能力可见一斑。而我们常用的USB传输数据的最小单位是域,属于另一项技术。
2.什么是计算机的硬件和软件?
来,我们先看看下图书中Z80微型计算机的线路图,主要元件为Z80CPU、TC内存和I/O设备Z80PIO。千万不要小看这些老古董,Z80CPU在上世纪80年代风靡一时,配备在日本NEC和SHARP公司的个人电脑上。
图2:Z80微型计算机的线路图制作微型计算机还需要一些辅助元件:
时钟发生器,有规律地发出5V电信号,每发出一个电信号就是一个时钟周期,这是计算机最小的时间单位。每个时钟周期CPU会完成一项最基本的操作,指令越复杂需要的时钟周期也越长,执行一次操作后,CPU还会停下来进入中断周期,看看是否需要放下当前指令处理其他任务;
输入装置,书中用8个指拨开关并联在一起;
输出装置,书中采用8个LED二极管,每个LED信号相当屏幕上的一个像素点,有兴趣的读者不妨算算4K(例如×)屏幕上有多少个发光单元;
一些小零件,例如按键开关、电阻、导线等。
这些看得见摸得着的物体就是计算机硬件,由于直接输入0/1代码操控计算机很不方便,电子设备出厂前都会存放一些0/1数字,加上这些代码的硬件称为固件,那些看不见摸不着的0/1数字就是软件。
图3:计算机主机系统示意软件是人们与计算机沟通的语言,计算机语言一直在进化:
机器语言:直接用0和1两个二进制数书写的程序被称为机器语言,硬件只听机器语言的命令,任何高级语言都需要转化为机器语言后,CPU才执行。CPU的逻辑线路决定指令的功能,例如“”可以设计为执行加法运算也可以设计为去内存取一个数据。为了让全世界数十亿台计算机通用,底层电路设计需要遵循相同的标准,感兴趣的读者可搜索了解美国信息互换标准代码(ASCII,AmericanStandardCodeforInformationInterchange);
汇编语言:借助电路设计,用一些单词、符号代替0/1数字。例如汇编语言“ADDA,”,表示把累加到寄存器A的数字上;
操作系统:前两种语言需要了解硬件的电路设计,一般人很难使用,因此操作系统应运而生。操作系统集成了很多功能,程序员只需输入更加简便的命令就能操控计算机,例如大名鼎鼎的Unix,DOS和MacOS。后来,Windows等图形操作系统更是好用到每个人都能直接上手。
高级语言:相比更加“高级”的办公、游戏、美图等应用软件,高级语言能用底层提供的库函数等功能编写程序,与计算机进行更深入的交流,比较有名的有VB、C、C++、C#、Java、pascal、Python等。
高级语言也称为“面向对象”的编程语言,意思是即便不了解计算机知识的小白,也能根据需求编写程序。例如用Python编写print(”Helloworld!”)后存储为可执行程序,打开程序便能输出“Helloworld!”,教材会忽悠你从此之后便是初级程序员了。
3.一大堆0/1代码如何操控计算机运行?
回到计算机视角,书中提到程序员在编程前应考虑程序的流程,即第一步做什么,第二步做什么,以此类推。实现此功能的一个重要部件是程序计数器(PC,ProgramCounter),PC是寄存器,里面存放应执行指令的内存地址(门牌号)。每执行完一条指令,PC便自动指向下一条指令的地址。
图4:硬件上的程序流程程序流水主要有三种,除了顺序执行,还有“条件分支”和“循环”:
条件分支比较有名的是if(如果)命令,表示如果程序员设定的某种条件触发,PC便直接跳到一个新地址,新地址中存放下一条需执行的指令;
循环分支比较有名的是while命令,表示CPU在运行中,如果符合程序员设定的某种条件,便循环往复地执行某些指令,参考上图可以设计循环,让CPU一直执行序号(2)的任务,即循环往复地读10、11、12号内存。书中一条指令占3字节,也有其他情况。
一系列准确而完整解决问题的清晰指令称为算法(Algorithm)。程序员编程前需要将现实中的问题转化为数学问题,即建立数学模型。
书中小游戏算法的数学模型为:
令石头=0,剪刀=1,布=2;
规定一共玩5局(循环5次);
单次玩法为电脑随机出手势,玩家输入手势,两个手势相同则平局,如果玩家数据+1后进行模3运算得出的结果和电脑相等则玩家获胜,否则计算机获胜;
5局结束显示玩家获胜次数及最终赢家。
此算法用到了“模运算”,表示被除数除以除数,保存余数,通过CPU电路设计很容易实现。至于运算,加减运算是最基本的运算,乘法也很重要,此外通过CPU芯片设计和编码还能实现很多算术运算和逻辑运算。从神经网络这个词便能看出CPU芯片设计的重要,简洁高效是致胜的法宝。
学编程前建议先学习数据结构,这门课是重中之重。因为数据和指令都被存放在各种内存块中,如何“指挥搬运”内存中动辄数以亿计的数据至关重要,想想现实中搬家有多不容易。程序员编程既要考虑空间复杂度(占用多少内存),也要考虑时间复杂度(CPU运算多少次)。据某机构估算,chatGPT初始投入每日电费都要5万美元。
计算机底层的CPU、存储器等提供的功能越来越强大,人们多年学习后的算法也愈发成熟,如今能在计算机中建立数学、统计学、管理学、经济学、历史、艺术等各学科知识的模型,甚至可以编写出chatGPT这样神奇的应用软件。
4.计算机技术多年未变,为什么能产生ChatGPT等智能“机器人”?
ChatGPT是采用自然语言理解技术的一款应用软件。几十年来,计算机领域一直在学习人们的语法、语义、说话习惯等,希望设计出算法能让计算机和人进行自然无缝的交流。当然,一些高质量的文案逻辑是计算机学习的重要模板和参考。
道阻且艰,虽然计算机运算能力很强,但“电脑”与人脑无法相提并论,集成度达上亿个晶体管的CPU芯片仍然无法与人类的~个神经元相比,况且1个神经元远超1个晶体管,很可能相当于一台高速运行的处理器。
行而不辍,几十年来无数人一直没有放弃自然语言理解技术。写这篇文章的时候,我刚好使用了悄悄上线的ChatGPT版必应搜索,发现很不错,相信计算机会听、会看、会说的时代已经不是很遥远了。
此前我们已经教会了计算机识字,年5月1日发布的简体中文汉字编码国家标准GB收录了个图形字符,包括个汉字,从此计算机会写中文了。
教计算机说话确实有点难,因为数据量大到难以想象。因此近代程序设计方法认为算法框架应建立在数据之上,在这里数据相当于物理实体,大量的数据运算需要大量的空间和时间。毕竟,每一块内存和每一度电都是白花花的银子。
千里之行始于足下,学好电路设计、数据结构、高等数学等基础知识是关键。书中提到的栈、队列、链表和二叉树是几种最基本的数据结构,配合字符串匹配等算法,计算机才能模仿人类的语法、语义等习惯,进行自然对话。
从字到词到句子,计算机需要付出很大的努力去学习,并用集合、线性、树、图等结构记住字词间的逻辑关系。
想想多年前原始的语音操控还是“幼稚”的婴儿:如果设计一个只有2个指令功能的语音操控软件,只需要用一个麦克风输入,用上文的if条件函数进行选择,如果输入的数据满足条件0则输出对应的0号结果,满足条件1则输出对应的1号结果。
短短几十年,现实中的“智能机器人”却能像老师一样为人们提供帮助。
自然语言理解技术是计算机在人工智能领域的分支,计算机在科学计算和数据处理、工业控制和实时控制、网络技术应用、虚拟现实、办公自动化和管理信息系统、计算机辅助设计(CAD,ComputerAidedDesign)/计算机辅助制造(CAM,ComputerAidedManufacturing)/计算机集成制造系统(CIMS,ComputerIntegratedManufacturingSystem)、多媒体技术、人工智能等领域同样大有作为。
在计算机的世界Never-stop-learning。
5.数据库为什么重要?
先想象一个现实中的场景:假如某商户没有数据库,每天处理上万个订单就需要花费大量的人力、物力,即便不考虑采购、营销策划、成本核算等工作,单单把这些订单发给快递都是很困难的。
可见,任何企业要想做大做强,都需要数据管理。数据库应运而生,所谓数据库(Database)就是数据(data)的基地(base)。
“知己知彼,百战不殆”,企业在实施商业战略时,把企业内的数据预先汇集到一个“基地”并加以整理,各部门充满干劲的员工就可以根据需要灵活使用这些数据。虽然纸质文件整理出来的数据也可以称为数据库,但和计算机相差甚远。
一些有实力的企业会根据自身需求自己编写数据库程序,但一般情况下,市场上售卖的数据库管理系统(DBMS,DatabaseManagementSystem)能满足绝大多数需求,例如几乎每个人电脑里都安装的Access,以及Oracle、SQLServer、DB2等。
书中展示了数据库的基本应用,即商品表、销售记录表和顾客表这三张表,并建立三张表的链接关系。背后的设计逻辑是这样:
1.部门协作:每张表代表一个部门的工作,数据统计不仅能让员工厘清工作思路,还能高效跨部门协作,例如采购部了解原材料存量及市场销量后,精准制定采购计划;
2.精简高效:避免重复存储相同的数据是数据库设计的重要规范,一方面内存和电费都很贵,另一方面基层员工不容易,需要关爱;
3.实用便捷:设置索引表方便查询,提供对业务发展有帮助的看板数据等。
至于数据库的操控,由于现在的软件太“高级”,大部分人研究几天就能学会。
6.互联网数以亿计的计算机如何传输信息?
几台电子设备通过链路连接到一个集线器上,能构成简单的计算机网络,而网络之间还可以通过路由器互连,构成一个覆盖范围更大的计算机网络,称为互连网(internet)。
人们口中说的“上网”,指连接到以大写字母I开始的Internet(互联网或因特网)。互联网是一个专有名词,指当前全球最大的、开放的、由众多网络相互连接而成的特定互连网,采用TCP/IP协议族作为通信的规则,前身是美国的ARPANET(阿帕网)。
图5:基于ISP的多层结构的互联网概念示自诞生以来,互联网便飞速发展,目前形成了图中多层次互联网服务提供者(ISP,InternetServiceProvider)的结构。年,若干个商用的互联网主干网成为主干ISP,取代了美国政府资助的NSFNET。中国的电信、联通、移动等公司是我国最有名的ISP。
网络通信指计算机中的进程(运行着的程序)之间的通信,主要采用客户-服务器方式和对等连接方式(P2P方式)。顾名思义,客户-服务器方式指的是用户机A中的程序向服务器B发送请求,B根据请求向A提供连接服务;P2P方式指两台主机都运行了对等连接软件,连接后双方都可以下载对方已经共享的文档。
家庭网络传输速率从最初的kb(千比特)级增长到现在的MB(百万字节)级,实现上万倍的增长。传输速率指的是机器处理数据的能力,网线上的速率叫传播速率。
所以,计算机网络体系结构重点研究一台计算机内不同层次的“软件”在传递数据时的规则和方法,为方便理解,为大家介绍五层协议的网络体系结构——应用层、运输层、网络层、数据链路层、物理层。
把计算机网络传输建成一个现实生活中的模型方便大家理解——收发快递:应用软件传送数据相当于发快递,网络传输涉及的“中间商”太多,软件不能直接写最终地址,要先打包发给运输层,运输层再打包发给网络层,这样一直打包到物理层,此时计算机才做好准备把数据发到网线上。“收货”计算机接到数据后,也要一层层地“拆快递”,最后把原始数据发给应用软件。
“中间商打包快递”的过程都做些什么呢?
主要包括:
“填写姓名”,这里姓名是指硬件地址或物理地址(MAC,MediaAccessControlorMediumAccessControl),集成在网卡上,是全球独一无二的;
“填写地址”,即IP地址,指的是计算机连接到的网络在互联网中的地址。可以推理,通过下层网络的IP地址可以找到它唯一的上层网络,这也是ISP提供的重要服务之一,即DNS(DomainNameSystem)域名解析服务。
“包装”:包括数据校验,约定单工通信、半双工通信或全双工通信,数据加密,采用复用等加速技术,指挥网络交通防止数据阻塞,等等。
了解计算机网络的工作方式后,相信每个人、公司或组织都能健康、愉悦、安全地使用网络。
7.非专业人士能和系统工程师(SE,SystemEngineer)对话吗?
当前,越来越多的公司都在根据业务需要开发各式各样的系统,开发和运维工作大多由专业的系统工程师或外包团队负责。
计算机专业人士更
转载请注明:http://www.0431gb208.com/sjslczl/4047.html