javascript 数据结构与算法 笔记1

通读第一遍

我的笔记似乎从来都不是为了自己看第二遍的.
而是想要通过及时输出,记录的方式进行回顾?

1.对自己的鼓励

首先,严格来讲, 这应该是我第二本 javascript 相关书籍的阅读,
第一本应该算是 javascript 函数式编程指南,
这第一本我就读了三遍, 其中的精髓肯定是没能完全掌握,
当时读这本书的时候, 其实没有多少读一本技术书的感觉.
因为当时对函数的理解总是模模糊糊,所以在网上不停的百度搜索一下相关的博客,
javascript 函数式编程指南这本书, 实际上是被我当做博客来读的.

而这本数据结构与算法, 则在读之前就已经给我一种,
"我要读一本技术书啦"的感觉了.

为什么我要谈这个感觉呢?
因为此前,我对看这种书实际上是非常抗拒的,
总觉得非常"难", 说得都不是人话,
(并且与这些日子读博客学习的过程相比的话,
界面也非常的不友好)
但这回也是抱着读一个博客的态度去读这本书的.

并且我不是纸质版而是电子版.
这也很重要,
因为我明明记得,当我还没想要学习编程相关的知识的时候,
在书店,图书馆一看到那些厚厚的技术书籍,
真的是望而却步.真的会打消积极性.
(当然一些长篇武侠小说这样的除外)

其实我是想说, 从昨天到今天, 我略读了一遍 jsvascript 数据结构与算法.
我可以非常肯定的说,
我肯定没学透彻, 没完全理解, 没完全掌握.
但我确实是读了一遍.
就因为这个,我感觉非常良好,
因为这起码表明了, 我心中对技术书籍可能不再那么畏惧了.

各项原因中, 我觉得通过视频学习(渡一课程),
给我打的基础是很重要的原因(这里必须给一波广告,哈哈哈,尽管我还没正式开始找工作),
其次,也应该是我自己在不知不觉之间有了一些小小的积累.

2. 代码确实是一种语言.

这个感觉是怎么来的呢?
看数据结构和算法这本书的时候,
其实里面总共存在三种语言,
第一种语言是汉字, (或者是英语,因为我看的是中文版),
也就是接近生活语言.
第二种语言是代码,严格说是javascript语言写的代码,
因为我目前学的就是这个,
第三种语言就是各种图

这回通读一遍, 我最切身的感受是, 代码绝对应该是一种语言,
因为靠前的一些章节的内容, 我早已接触过,
所以, 只看代码部分,
我就能理解他写是什么东西,
配合他要解决的问题是什么,
我大概就能明白前后关系,

后来我发现,
文字有点读不进去,
代码反而能更有效率的读进去.
以至于, 后来很大一块部分的内容,
我都是先看主题,问题和代码,
代码看不懂时, 才看代码解说.

然后就会有一种比较强烈的感觉,
是什么呢?
代码是一种精简的语言,
你会发现, 代码的解说
(也应该算是一种翻译,或者描述)
其实是有很多冗余的.
但这是必然的,比如
function add (a,b) { return a + b}
这一行代码, 如果翻译成语言, 你想说得越详细,
你就会发现越冗余,
而作为学习,书籍必然是想要描述的详细.
而这就有可能会增加认知负担.
(但你又不能没有, 因为确实有,没有就不行的时候)

总之,我是想说, 也许我阅读代码的能力有所提高了一点点.
又或者这本书的作者确实写得很友好.

3. 我想学会使用图

还有就是,书中的第三种语言, 也就是图,
这应该是更加简洁的语言,或者更加直观的语言.
就像用语言描述代码一样,
代码可能就是在描述一些图.
像学习二叉树,或者链表,等知识的时候,
如果没有图在脑海里,帮着进行思考,
光靠读代码, 我觉得可能很费力.

也许, 写任何代码之前, 都应该做一些图?
或者应用一些图?
也许, 写任何代码的过程当中, 脑海就应该想着这些图?

我很想学会使用一些图来帮助我思考,
我目前接触的就是思维脑图,
但我觉得应该存在一些专门的学问,学科,
我虽然不知道具体在哪里,
但我希望有机会的时候, 能够好好学习,或者练习一下.
(常老师,和董老师的做图能力我是服的)

4. 关于这本书

在这本书中提到了<算法导论> 这本书,
我也下载之后草草看了一下, 哇塞, 那内容之多,
已不能用"丰富"来描述.
相比那本书而言,
我才明白这本书的作者们是多么的人道.
写得非常的友好, 由浅入深.
作为只是读了第一遍的感觉是,

一直到9.5 章之前,
都是能理解的知识, 或者相信消化应该没那么难.
主要是 9.5 最短路径算法
9.6 最小生成树
比较难
而第十章的前面几个排序都好理解,
后面几个排序, 就有点看不懂,

第十一章的算法
11.2 动态规划
11.3 贪心算法
这两章节, 就有点彻底懵逼的意思,
代码都有点读不懂了.
果然遇到递归的代码, 就确实不好阅读.

这两天学习态度也不咋好,
咱们想读啥就读啥.


5. 一些表整理的是真的好

关于基础类型的,类型转换


image.png
image.png

你会发现 隐式类型转换 发生最多的就是 Number 了


image.png

image.png

6. 算法导论第三版的问题

实际上, 面对这样一本书的时候,
最难的地方在哪里?
在逻辑吗?
未必,
在新概念吗?
也未必,
实际上,在读这样一本书时, 最难的地方不在于某个概念很难,
或者某个逻辑很难,
最难的地方是, 会出现很多的新概念, 和新的词汇,
有些新的逻辑也会用新的词汇来表示.
这些"新"的量很大.

非要用一个不恰当的比喻,就像是让一个没学过英文的人, 去读英文原著.
英文原著里的单个词, 或者逻辑可能都没那么难.
难的是量很多.

其实我们在读一本书的时候,
总是根据脑海里已经有的概念,知识去解读新的知识,
进行重新描绘,或者定义.

这个过程是需要理解过程, 更需要记忆过程的.

一门学科最大的门槛,就是,这门学科拥有一套自己的词汇系统.
当我们说有没有一门学科的基础时,
所谓的基础里当然包含, 相关的训练,
但最基本的内容,应该就是该门学科的词汇和概念累积.

尽管我在抱怨,他不用一些通俗的语言来描述,
但从某种意义上来讲, 这也有可能是必须的.
部分原因可能是因为, 严谨性, 以及准确性的问题.
他要弄出一个概念大厦, 所以一定要严谨吧?

而学习代码的过程当中, 给我的另一个印象是,
往往一个代码的核心思路是比较清晰的,
但最后写出来的时候, 会有很多东西是冗余的,
这些冗余的部分是为了代码的兼容性,稳定性, 或者可读性什么的.
有人说这些非核心的代码通常会占据80%的内容.

同理, 我在想,
像这种算法导论这种书,
会不会也存在80%都是非核心的内容,
只是出于一种严谨诸如此类的原因而存在的?

你可能感兴趣的:(javascript 数据结构与算法 笔记1)