Note at shzaiz.github.io

$$ {\Huge{\text{漫游计算机系}}}\\ \textbf{Roaming in Computer Science} $$

饱受折磨的高数作业

高数课上的计算量大:

前两天发生的真实事件... Img

几百年前, 有一群人也因为此感到困扰:

说起来很容易, 但是我们 "机械的" 思维里面有什么?

我们需要一些哲♂学探讨...

机械的思维并不复杂:

Turing 的想法

+--------+---+--+------+---------+
|        |   |..|      |         |
|        |   |..|      |         | 
+--------|---+--+------+---------+
   #0     #1  ... #n-1    #n

Turing的想法就像描述一个说明书:

Lambda Calculus

更像是数学推导: 就像我们从小到大学过的数学一样: 代换, 推演...

$$ e::=x|\lambda x.e.|e_1e_2 $$

$$ \begin{align} (\lambda x[x^2 -2\cdot x+5])2 \rhd 2^2& -2\cdot 2+5 &\langle \text{Substitute 2 for } x\rangle \\ &= 4-4+5 &\langle\text{Arithmetic}\rangle \\ &= 5 &\langle\text{Arithmetic}\rangle \end{align} $$

从理论到实践

Img

所以它能干什么?

计算当然不成问题

一道计算量比较大的习题...

Img

解答:

Img

当然需要更好的工具!

Img

第二小问:

DChange[
    D[f[x, y], x, x] + D[f[x, y], y, y], 
    {rho == Sqrt[x^2 + y^2], 
     theta == ArcTan[y/x], x > 0, y > 0},
    {x, y}, 
    {rho, theta}, 
    f[x, y]
]

分别的输出结果:

Img

证明定理有时候也管用

可以帮助我们检验证明的正确性

Img

机器学习?

可以参考3Blue1brown的机器学习简介

冰山下的玄机

一切看上去就像魔法! 但是计算机世界里面没有魔法...

Img

从图中可以看出, 计算机系统由不同的抽象层构成, "计算"的过程就是不同抽象层转换的过程, 上层是下层的抽象, 而下层则是上层的具体实现. 计算机学科主要研究的是计算机系统各个不同抽象层的实现及其相互转换的机制

在电路和器件层, 计算机只能认得0和1, 我们让它解决问题, 该怎么做?

...

我们还经常听到学生问以下问题: 像地质系这些非计算机专业的学生自学JAVA语言等课程后也能找到软件开发的工作, 而我们计算机专业学生多学那么多课程不也只能干同样的事情吗? 我们计算机专业学生比其他专业自学计算机课程的学生强在哪里啊? 现在计算机学科发展这么快, 什么领域都和计算机相关, 为什么我们计算机学科毕业的学生真正能干的事也不多呢? ... 确实, 对于大部分计算机本科专业学生来说, 硬件设计能力不如电子工程专业学生, 行业软件开发和应用能力不如其他相关专业学生, 算法设计和分析基础又不如数学系学生. 那么, 计算机专业学生的特长在哪里? 我们认为计算机专业学生的优势之一在于计算机系统能力, 即具备计算机系统层面的认知与设计能力, 能从计算机系统的高度考虑和解决问题.

计算机科学在生活中的应用类似于哲学在科学中的作用.