2021-01-15 日记

晴,微风。

三天没有写日记了,12号和豪去医院补牙,下午打了场球,晚上聚了一下,时间比较晚了,遂未写;13号离校回家,刚到家就和老同学打了场球,被球场上的一个壮汉撞得两眼发黑,四肢酸痛,遂又未写;14号去了外婆家,便再次未写。

从昨天开始便开始了科目三的学习,我计划用每天早上6点半到7点半这段时间来练车,一方面可以在一天的开始就把这件事给做了,之后便无需再想这件事;另一方面也可以督促自己前一天晚上早点上床睡觉,效果挺好的。科目三操作其实不难,难点在于需要注意其他车辆和路况信息,但对于我来说问题不大。

昨天完成了《大梦无疆》的阅读,阅读体验特别棒,虽然我不是以色列人,甚至此前对以色列这个国家也没有很多了解,但是看到一群犹太人在漂泊了千年之后回到故园建立起属于自己这个民族的国家,并为之奋斗的故事,我仍然感受到了极大的震撼。此外,西蒙·佩雷斯老爷子的乐观与勇气也令我印象深刻。一方面我羡慕佩雷斯的机遇,羡慕他能够有机会亲历并推动一个国家的崛起;另一方面我也深深地感受到自身勇气的缺乏,即使机遇摆在眼前,现在的我又有勇气去争取吗?不敢梦,不敢为已经成为我成长路径上最大的阻碍,不只是我,大多数人亦是如此。希望我能够慢慢向佩雷斯老爷子靠拢,永远心怀梦想,永远敢做敢为!

今天的学习情况:

《SICP》
递归过程迭代过程,递归过程有着延迟求值的过程,即先扩张后收缩,例如定义一个求阶乘的过程,其递归过程是这样的:

2021-01-15 日记

而迭代过程是这样的:

2021-01-15 日记

两者的区别在于:迭代过程使用一个或多个变量来保存过程执行的状态信息,而递归过程的状态信息并没有显示地保存在变量中,而是“隐含”的,这些状态信息由解释器来维持。

在理解这两个概念时需要区分函数(procedure)递归与过程(process)帝国的区别,因为在上述示例中的迭代过程好像也是在递归调用fact-iter。注意fact-iter是函数意义的递归,但对于这个过程来说,它使用了三个变量来保存状态信息,即使过程执行中断,只要将这三个变量所保存的信息提供给解释器,它依然可以继续执行,而递归过程则不行。

《计算机组成与设计》
主要学习了一些基本指令,在讲述RISC-V的指令集时,Pat与Hennessy讲述了三个重要的设计原则:

  1. 简单源自规整
  2. 越少越快
  3. 优秀的设计需要适当的折衷

就目前所学,RISC-V的指令大致分为三类:

  • R型指令:含有三个寄存器字段(5位),以及几个控制字段,用于add,sub等指令;
  • I型指令:含有两个寄存器字段,一个立即数字段(12位),用于addi等指令;
  • S型指令:含有两个寄存器字段,两个立即数字段(共12位),用于load,store等指令。

三种指令的长度均为32位。

《算法设计手册》
一个算法解决的是一类问题,而不仅仅是某个特定的问题。
an algorithm must solve a general, well-specified problem. An algorithmic problem is specified by describing the complete set of instances it must work on and of its output after running on one of these instances.

算法接受可能的输入,进行运算,并给出期望的输出。
An algorithm is a procedure that takes any of the possible input instances
and transforms it to the desired output.

上一篇:P1177 【模板】快速排序


下一篇:IDEA 2021 没有Allow parallel run