这个作业属于哪个课程 <班级链接>
这个作业要求在哪里    <作业要求>
这个作业的目标 <自我介绍及学习记录>

韶菲昔冀簇间魁,椿陌翌殇冢央骇

意或哀唏蕃华未逝之时,亢志凌云、丹忱满腹,予殊荣雅誉于万花丛中,但却终归佚失于残烛之年,伴朽脊而惘然殒逝。既求索桂冠无异湮泯于枯髀,不若渰溺幻诞自洽而酗淫恣欲尔?差矣。

    大家好,我叫陈永锐,来自土木系的工程管理专业,如今已是软件工程3班的一员。回首曾令自己怅然难寝的调剂,那时的怊惆仍然历历在目,倘若未有如此良机,或亦后生皆劫于土木囹圄,说笑了。其实并非工管专业不好,在大一上半学期所遇的芸芸倾忱皆令我念兹在兹,但终究我希冀所向并非挥汗献策于灌筑之地,故我选择了夙夜憧憬的、曾经的第一志愿:软件工程。
    诚言,敝人的性格实则三言两语难以言尽。现实中是一个相对内向的人,平常比较安静,虽言存在感聊胜于无,但是在该社交与组织的场面也能挺身而出、尽履其职而非退堂鼓而躺倒自咎。爱好而言,较中意于写作,闲暇时常提笔撰些愚作,惜不足抵为谈资。
   在大一上,我度过了一个较为充实的学期。借工管学委为契机,约束自身,未尝受常事所蒙蔽,完成了大部分我订制的目标。首先每天抽出碎片时间复习了四级二轮,并且在学期末成功过完六级一遍。
image
其次就是珍惜学习时间,在大学期间不沉溺于游戏。image
最后就是转入软件工程专业,再次深感荣幸。
    至于其他还有一些自我所获匪浅的所言之好,不妨也借此撰以留念。成功加入土木系的学生会的自律部后,与大家合奏了一段短暂而悠扬的旋律;image
误打误撞成为了至诚明日方舟群的群主,邂逅了众多志同道合的同伴,而后在线下活动的相处中收获了欢洽与友谊,这是我在大学收获的无可替代的财富。

    然终难有万全美事,思政在花了很多时间的前提下还是考的很烂;报的Python进阶课因为学业而没有学完;害最遗憾的还是高数没有考出令自己和老师所满意的成绩。希望在新的学期能够不留遗憾吧(叹)
    目前学过的计算机知识主要还是聚集在Python上,之前为了提高一些岗位竞争力而去报了课程,实际学下来还是相当有意思的,现在能够做到简单的自动整理文档/设计PPT、设计点个人二维码、微信自动群发消息之类的,网页开发和网络爬虫会在新学期开始学。C的话说来惭愧,寒假是初学,但其实寒假没怎么学,卡在循环了,前面的内容因为是网课没有配套的练习练手,所以掌握程度估计也没有打到课程掌握要求,希望开学系统性学后能更进一步吧。
    寒假的话,除了现阶段在学的计算机导论之外,首先把六级一轮结束了,不得不说,过了一遍之后一轮的效率有了质的飞跃image
开学专精下听力,四级感觉随便过,六级在能报的时候应该也已经背烂了,感觉问题也不大。然后就是把报的Python课上完了,image
顺便还浅浅的学了些C与高数,希望新的学期开始学的时候能压力小一些。
  而在新的学期中,首先我想竞选软工3班的学习委员,一是希望能继续借此约束自己,二是我认为我有信心也有能力为我们班的学习风气起到带头作用,谢谢大家。至于新学期目标的话,首先想着是继续挑战一些新事物image
不过毕竟是23版,定位也就只是当是日常寻乐打发时间的,新学期的话滚完考研大纲首轮和六级二轮就行。然后就是至少拿个一等奖学金吧(如果不是该死的思政上半学期拿个特等应该没什么问题害)学业肯定是摆在第一位的,期待能与大家一起良性竞争,共同进步。
    转入计算机专业的原因实则有三:首先,计算机专业拥有一个相当成熟的考研体系,对于考研选择方向的资料更多,目标也更加明晰。我未来是打算考研的,所以这应该是我选择计算机专业最主要的原因。其次就是薪酬,作为专业薪酬前三的软件工程即使真的考研失败,出去工作的基础薪资相较于我原本的专业也是更加优厚的,反之在进一步深造之后,薪资待遇的水平将进一步得到进一步的提升,并且该行业可开发的领域还很广,未来的发展前景良好。最后则是兴趣,从小对计算机便有着较为浓厚的兴趣,在上半学期的Python学习中,更是让我肯定了加入计算机行业的决心。对未来的就业可能想去做游戏开发者或者IT工程师,我很憧憬游戏的开发者,渴望能够带领开发团队做出独立游戏,这也算是敝人浩浩人生长河中小小的梦想,为此我会在逐梦的漫漫前路上不断努力拼搏。
    最后誊录一小段歪诗,以此记纂崭新生活的开始:
    虽逆旅的终点已然是萦绕着怅憾的枯冢
    但或许也曾有丝许划破阴霾讪笑声
    消融于残阳细雪
    倒映于澄冽冰镜
    熠熠生辉在荆榛满目的前路

          学习记录

1.计算机早期历史

最早的计算设备:算盘

发明地:美索不达米亚(公元前2500年)

计算设备的作用:能够更高效、更容易、更精确的完成任务,降低了操作门槛,提高了个人能力

曾经的计算机指的而非机器而是一种职业→计算者(1800年代后消失)

步进计算器:由德国科学家 戈特弗里德·莱布尼兹 发明于1694年—第一台能够进行加减乘除四种运算的机器

计算表:由人力计算器编撰而成的数表

Charles Babbage(计算机之父)设想:差分机,失败(15吨)→分析机:“通用计算机”具有跨时代性

世界上第一位程序员:Ada


2.电子计算机

继电器:电控制机械开关

控制线路(继电器内):控制电路开与关

*bug术语源自于虫子

热电子管:世界上第一个真空管

二极管:电流只能单项流动的电子部件

继电器→真空管:标志着计算机从机电转向电子的伟大飞跃

巨人1号:第一个大规模使用真空管的计算机

阿兰·图灵:计算机科学之父

巨人:第一个可编程的电子计算机

电子数值积分计算机(ENIAC):世界上第一个真正的通用、可编程的电子街计算机

真空管→晶体管 :计算机发展进入新时代

晶体管(固态)通过半导体材料可调节的导电性,以此来控制开关闭合

IBM 60: 第一个完全由晶体管构成的计算机


3.布尔逻辑和逻辑门

使用二进制的原因:1.只有开与关两种状态可以减少设备间相互干扰;2.有专于处理真与假的数学分支,解决布尔问题

布尔代数变量:truefalse;三个基本操作:notandor,not可以使true和false对调,通过接地达到not的输出调转效果(NOT门);and有两个input,只有当两者皆为true,output才为true,将两根晶体管串联在一起,只有当两者姐打开时才能输出电流;or则是将两根晶体管并联在一起,任一一根有电流流过时都能有电流输出(OR门)

单个晶体管各有一个输入input和输出output,在不存在not的情况下input=output

OXR输出true的条件:必须为true+false,同时两个true输出的结果为false

image


4.二进制

计算机中信息的存放与处理皆采用二进制

二进制,基于2的表示方式:根据20,21,22,23....2n的顺序以此累加表示数值

每个0或者1占一位

字节:1字节=8位(1byte=8bits)千字节(kb)→8000位、百万字节(MB)、十亿字节(GB)

二进制:1kb=210 = 1024字节

进制后缀:二进制(B),八进制(O),十进制(D),十六进制(H)

大部分计算机的正负由第一位表示:1为负0为正,其余位数用来表示数字

位址:为了方便存储数据

浮点数:即小数因为小数点可以在数字间浮动

IEEE 754标准:777.7<=>0.7777(有效位数)×103

浮点数首位仍判断正负,以32位为例:判断正负×1+位存质数×8+有效位数×23

ASCII:美国信息交换标准代码,7位码可存128个不同值,如a:97 A:65。使得不同构成的计算机之间能够相互交换数据→互用性

Unicode-统一所有编码的标准


*进制转换

数制:用一组固定的数字和一套统一的规则来表示数目的方法

基数:单个位上所能出现的基本数字个数,各个进制的基数=n进制的进制数

位权:即该数字在所识序内的位数n,权值→n进制的n位数

不同进制计数功能等价,可以相互转换

进制换算:先按权展开求和然后换权分解

小数转化:乘N取整,知道小数部分为零火刀给定精度位置向后取数

如10转N进制,整数除N取余小数乘R取整

二进制→八进制:三位归并 以小数点位分界前后每三位归为一段,转化为1个8进制数字,/八进制→二进制:一位分三位 将1位八进制数分解成三个二进制

以此类推 二→十六:四位归并/十六→二:一位分四位(ABCDEF为10,11,12....以此类推)

正负数区分:最高位(首位)为符号位判断正负→0+1-,其余位数数值位(8位为例子)

整数储存方式 解释 示例
原码 第一位判断正负,后项为数值 +1:00000001 -1:10000001
反码 正数的反码为其本身;负数在原码的基础上除了符号位不变,其余个位互换 +1:00000001 -1:11111110
补码 正数的补码为其本身;负数变为反码末尾+1 +1:00000001 -1:11111111

整数在计算机中以补码的形式储存


5.算术逻辑单元

算术逻辑单元(ALU):计算机中负责运算的组件

运算器的主要功能是完成算术运算和逻辑运算

ALU分为两个单元:1个算术单元和1个逻辑单元

算术单元:负责计算机中所有的数字操作

最基础的加法电路,将2个bit(0或1)相加,2个输入个1输出且三者皆为单bit

二进制中1=true/0=false SUM为总和,CARRY为进位

半加器:由一个AND门与一个XOR门组成

image

全加器:三输入一输出,由于两个半加器与一个OR门组成

image

八位行波进位加法器:进行两个八位数字的加合

溢出:加合数值超出了用于表示的位数→改进:增加更多的全加器以此来扩大非溢出范围。代价:需要更多的逻辑门以及计算

超前进位加法器(现代算术单元)

ALU所支持的操作:(进位)加法、(错位)减法、增量(+1)、减法(-1)

逻辑单元:AND、OR、NOT操作判断逻辑关系,如输入是正是负,输出A是否大于输出B


6.寄存器&内存

随机存取存储器(RAM):在通电状态下才能正常存储

持久存储:在电源关闭时数据也不会失去

AND-OR 锁存器:输入分为设置复位两项模块→可以锁住1位信息

写入:插入数据;读取:去除数据

门锁:由各种逻辑门组成用于储存信息,输入分为1门数据输入和1条允许写入线(作为开关决定数据输入能否通过门锁输出并且储存在门锁之中)

image

寄存器:由多个锁存器组成,能够储存一个数字,这个数字的位数长度被称为位宽

矩阵:通过网格交叉式放置锁存器,通过行与列交叉的坐标定位所需要所选目标从而控制某指定锁存器的运作→因为其余的锁存器未收到指令(没有允许写入命令)→能够读取数据的允许读取线

image

多路复用器:将进制地址转换成具体的行与列

内存的重要特性:可以随时访问任何位置

内存被称为随机存取存储器(RAM)

1条内存条→8个内存模块→32个内存方块→4个小块→个位矩阵:128位×64位

RAM:随机存取存储器(SRAM)、DRAM、闪存、NVRAM

存储信息原理:矩阵嵌套


7.中央处理器CPU

CPU的主要功能是执行程序

指令:控制计算机的运行

指令地址寄存器:用于寄存器追踪程序运行位置,保存当前指令的内存地址

指令寄存器:负责储存当前指令

在启动计算机时,所有寄存器将从0开始

取指令→解码→执行 时钟速度,单位为赫兹

CPU第一阶段:取指令阶段(负责拿到指令)首先将指令地址寄存器连接到RAM,此时因为寄存器的值为0,所有RAM返回地址0,二进制地址复制到指

令寄存器中(取得指令

CPU第二阶段:解码阶段将RAM值放入寄存器,而后由控制单元(由数个逻辑门构成)对指令进行解码

CPU第三阶段:执行阶段 通过指定电路打开RAM的允许读取线,并将地址传到RAM,然后再用指定电路启用寄存器上的允许读取线,把RAM上的值转入到寄存器中→指令地址寄存器+1→执行阶段结束

时钟:负责管理CPU的节奏→时钟负责触发电信号,控制单元使用该信号推进CPU内部操作

超频:修改计算机的是时钟速度,加快CPU速度。过度超频将使得CPU过热产生乱码

降频:降低CPU的速度,达到省电的效果

动态调整频率:根据需求加快或减慢时钟速度


8.指令与程序

CPU是可编程的,通过编程写入不同指令执行不同任务

可执行的操作:LOAD_A、LOAD_B、STORE_A、ADD、SUB、JUMP(储存/读取/相加/相减/跳转)

JUMP跳转:改变指令顺序、跳过指令→JUMP 0:跳回开头 原理:用指令中的值覆盖指令地址寄存器中的值

JUMP_NEG:只在ALU的负数标志为真时JUMP(计算结果为负时)

HALT:停止,能够对指令和数据进行区分

后4位用于表示指定内存地址,最多只能表示16个值

指令长度:一个指令中包含的2进制代码的位数(32/64位)

立即值:在立即寻址方式指令中给出的数,紧跟在操作码之后(JUMP),使指令可以为任意长度


9.高级CPU设计

早期计算机提速方式:减少晶体管切换时间

CPU与RAM之间连接的线被称为总线

解决方法:给CPU加一些RAM-缓存

想要的数据已在缓存:缓存命中/未在缓存:缓存未命中

脏位:对于缓存每个区位的特殊标记

CPU和RAM的同步发生在当缓存满了但是CPU仍需缓存的时候-清理缓存,清理缓存之前需要检查脏位,如果脏位的缓存已满在载入新内容之前需将数据写回RAM

并行处理:CPU的三个阶段可以同时进行,即执行指令时,同时解码下一个指令,每个时钟周期进行一次

乱序执行:对有依赖关系的指令进行动态排序,最小化流水线的停工时间

条件跳转(如JUMP NEGATIVE):改变程序的执行流程

推测执行:提前将指令放入流水线,CPU猜对JUMP流水线塞满正确指令→直接执行/CPU猜错→清空流水线

分支预测:为了减少清空流水线的次数和提高CPU猜对分支的正确率

超标量处理器:一个时钟周期可以完成多个指令

多核处理器:在一个CPU芯片中同时存在多个独立处理单元,同时运行多个指令流以此提升性能

世界上最快的计算机:中国神威计算机


10.早期编程方式

雅卡尔织布机被认为是最早的编程

插线板:早期用于编程的控制面板,每次运行不同的程序需要重新接线

穿孔纸卡:通过纸卡的孔洞将程序写入计算机中,也可以读取

面板编程:通过开关和按钮表示函数状态

存储程序计算机:可以存储编程和数据信息

冯诺依曼结构:程序和数据存储点

冯诺依曼计算机:一个有算术逻辑单元的处理器+数据寄存器+指令寄存器+指令地址寄存器+内存(储存数据和指令)


11.编程语言发展史

内存地址八位:前四位为操作码(OPCODE),后四位为地址码

计算机只能理解二进制语言(机器语言/机器码),在早期阶段只能使用机器码写程序

编程操作:先在纸上先用英语写好的预定程序(伪代码),然后用操作码表将伪代码转成二进制机器码,并导入计算机中运行

助记符:为操作码分配的代号。助记符+数据从而形成完整指令(如LOAD_A 10)

汇编器:能够将文字指令转化成二进制指令。取用汇编语言写的程序将其转化成机器码(如分析JUMP地址)

算术语言版本 0(A-0)属于高级编程语言,汇编语言与机器指令一一对应的同时,一行高级编程语言可以转化成几十条二进制指令

变量:代表堆内存地址的抽象

普通面向商业语言(COBEL):可以在不同机器上通用的编程语言,降低编程了使用门 槛


12.编程基础-语句与函数

赋值语句:把一个值赋给一个变量

控制流语句(条件语句):if/then/end if/else/while

函数:某代码块的整体,便于减少重复,降低整体代码复杂程度

库:预先写好的函数的集合

13.算法入门

算法:解决问题的具体步骤

排序:记载最多的算法之一

复杂度:输入大小运行步骤之间的关系,用于表示运行速度的量级

大O表示法:表示算法复杂度O 选择排列:O=(N2)

归并排序:先检查数组数是否>1,若成立将数组分成等量两份;若>1,则再分成大小为2的数组;直到每个数组大小为1→开始归并:从前两个数组开始读取排序,逐渐分组合成成最初的数组

归并排列的算法复杂度:O=(n*log n)n为比较+合并的次数;log n 为合并步骤的次数

并归排序比选择排序更高效


14.数据结构

数组/列表/向量

下表通常从0开始,并且用[ ]访问([0]为第一个值)

字符串:在内存里以0为结尾(该0位二进制的0"null",表示字符串结尾)

矩阵:视作数组的数组

12 88 55
5 9 2
7 3 4

如T [2] [1]=3

结构体:由多个变量组成(可用于存放不同类型的数据)

节点:指针(变量)可以指向内存地址,使用节点可以构成链表

链表:内含多个节点,通过每个节点指向下一个节点一实现其灵活性。可以创建新节点,插入链表;也可以排序,缩减,分割,倒叙

名称 特点
队列 先进先出(FIFO)
后进先出(LIFO)

若存在两个指针→

根节点:最高的节点;子节点:根节点的所有节点;母节点:任何子节点的直属上层节点;叶节点:没有子节点的节点(树的末端)

根据节点最多能够拥有的子节点数X对树进行命名:X叉树

”树“的重要性质:“根”到”叶“是单向的

数据任意链接(循环)→用“图”表示,图可以存在多个指针的节点,没有次序可以随意指向

结论:不同数据结构适用于不同场景,正确的选择可以简化工作,提高工作效率


15.阿兰·图灵

阿兰·图灵:计算机之父

图灵机:假想计算机(理论计算设备)

停机问题悖论:无法用图灵机解决→丘奇和图灵证明了计算是有极限的(可计算性理论/''丘奇-图灵论题'')

图灵测试:如果计算机能欺骗人雷相信它是人类,才能算是智能;现代用去区分计算机和人类(验证码)

图灵奖:计算机领域最高奖项


16.软件工程

解决代码过多:将多个函数排放层级,打包成对象

几乎所有的软件与游戏都是用"面向对象"编程语言写成的

程序编程接口(API):控制函数及其数据在内/外部访问的权限

private函数:只有同一对象内的其他函数可以对其进行调动

public函数:其他任意对象都可以对其进行调用

集成开发环境(IDE),所有的IDE都有写代码的功能:检查漏洞(调试),提供信息,运行代码

调试的时间>写代码时间

源代码管理/版本控制:将代码放到中心服务器上(代码仓库),将代码从中取出检测并进行修改、测试,当所有测试通过就可以进行提交

在源代码的管理向,可以使出现bug的代码回滚到上一个稳定版本

质量保证测试(QA):对代码进行测试,找出bug,确保软件质量


17.集成电路&摩尔定律

分立元件:只有一个电路元件的组件,可为被动(电阻、电容、电感)或主动(晶体管/真空管)

晶体管的普及标志着"计算2.0时代"的到来,但仍未解决"数字暴政"问题(为了性能,需要将原有设备复杂化)

集成电路(IC):将电路中的所有组件集成在一起形成的新的独立组件

印刷电路板(PCB):通过蚀刻经数显将零件连接到一起

光刻:用光将复杂的图案印到半导体材料上

芯片的核心是IC

摩尔定律:每过两年,在相同大小的空间内就能塞进两倍数量的晶体管

集成电路的出现(尤其是微型处理器):标志着计算机进入3.0时代

*学习心得

1.在经历了这些天的计算机导论学习后,令我感触最深的其实并非所谓课程的好坏与匪浅的感悟,而是这门学科所享有的资料量级,曾经在原专业中找"工程制图"的资料真是犹如大海捞针,好不容易找到的又并非是土木而是机械系的,考试复习真的很难得心应手。反观仅仅是导论这门计算机基础课程在CSDN上就有无数复习大纲的文章,b站和MOOC的网课都是一应俱全,真的很令人感慨。我认为我真的很幸运,能在这般优渥条件下备研无疑是比前路迷茫的原专业要舒心上无数倍。

2.作为软件工程基础综合中最基础的概念级别课程,该课程的内容上还是有很多可圈可点之处。对于抽象的逻辑门组合问题,创建了更便于理解的数学模型,对于我这种理解力不强的人十分友好。作为一名对硬件了解甚少的人,该课程让我学到了颇多计算机基层硬件的知识,对不完善的知识体系进行了补漏和拓展。同时对很多听过但是知之甚少的名词有了新的认识,相信这一定能为我之后的专业课开个好头。

3.虽说如此但敝人认为该视频还是有些不足之处,有些概念她没有补充出来,而且些许环节过于口语化,导致经常对于某些定义的深究需要去额外花大量时间查阅资料(点名批评脏位);但是总体的学习体验还是不错的,学到了许多新知识。

*视频评论区阅读心得

学习氛围很不错,有许多分享开源笔记的前辈们为新入门的人指引着前路,并且他们的笔记及其细致且条理清晰,从发现了自己笔记的一些缺漏;也有蛮多备研的同系大学生在看,能够感受到很强的代入感督促自己的学习。希望能够不辜负视频制作者和前辈们的希冀,将这门课程能作为自己初入软工的第一块基石。

posted on 2023-02-05 09:06  Eterlaze  阅读(210)  评论(3编辑  收藏  举报