0%

一、总论

因为我没有上过走软,所以这是我第一次接触 Web 应用开发,在感觉十分新奇有趣的同时,却在编程(其实大部分时候是提需求的产品经理)总感觉自己是浮在云端的。

当我写 C 的时候我是不会这样的,我知道我写的是一门高级语言,这门语言会通过编译器编译成二进制可执行文件,二进制文件会在流水线处理器上执行,处理器会根据指令进行计算和访存,最终通过写显示器的端口输出信息,在我写 Java 的时候,我知道 Java 会先编译成 .class 字节码,然后利用 JDK 环境在 JVM 上解释执行,解释器会调用各种库,最终完成效果。

但是当我在写 html, css, javasript 的时候,我是完全没有概念的,我知道最后成果可以在浏览器上显示,但是为啥?浏览器在我的理解里,就是一个和互联网沟通的应用程序,我点开它,然后互联网就冲我挥手了,感觉似乎没有浏览器,互联网它老人家也找得到我。当我去了解后端的时候,我知道了服务器,我之前理解的服务器,就是那种深埋地下,占地和鸟巢差不多大的东西,每天都要靠全太平洋的水去降温,从事的是计算世界末日啥时候发生的重要事件,关于 URL,我以为就是一个按钮,我点一下他,互联网就来了,贼灵。

这个其实一个计算机领域很常见的现象,“封装和抽象”,人们并不需要了解每个技术的具体实现细节,只需要享受这个技术暴露在外的接口构造的抽象即可。所以将互联网理解成一个宝库一样的东西,浏览器理解成一个探寻宝库的手电,甚至将其与电视做类比,并不是一件很奇怪的事情,谁也不是先学计组,后学 C 语言的,有一个虚假的抽象不丢人。不过这层抽象和以往的抽象不同的是,这层抽象需要被几乎所有人接受,而不是像 C 一样,只需要被一部分程序员接受即可。所以“互联网-浏览器”这层抽象才那么的厚重,那么的虚幻,因为他必须简单到被所有可以上网的人理解。

Read more »

一、时间复杂度的估计

1.1 三种方法

估算分治问题的时间复杂度一共有三种普遍的方法:

image-20220922153507509

1.2 代入法

Read more »

一、经典句型

1.1 论说文经典句型

1.1.1 话题引起

这个部分主要由两个部分组成,一个是引起话题的东西,即

awareness, tendency, discussion, situation, phenomenon, concern, fact
Read more »

一、总论

智能体系结构(Intelligent Architecture)是我大三上学期报的一门选修课。这门课的主要实验目的是搭建一个人工神经网络(可能是卷积神经网络)的加速器。在接触这门课前我对于这个名词一无所知。

现在来看,大概是这个意思,人工神经网络是一种模拟人脑神经结构的数学模型,这个数学模型需要计算机辅助实现。但是这个数学模型跟计算机原有的冯诺依曼体系有些不搭配。我们常见的计算机一般将存储和数据处理分离,但是显然我们脑子不是这样的,我们的脑子的存储和数据架构并没有分开,而且存储的形式也不是一种固态的仓库,而更像是一种数据加工过程的趋势。所以我们考虑搭建新的硬件架构,去适应人工神经网络这个数学模型,一旦适应了,就起到了“加速”的作用,这也是被称为“加速器”的原因。


二、计算机的抽象

Read more »

一、面向对象基础

1.1 定义

class Point
    def initialize(x, y)
        @x = x
        @y = y
    end
end

point = Point.new(0, 1)
puts point.is_a? Point		# true

其中 initialize 方法充当了构造器,以 @ 开头的变量是实例变量,也就是说是 Java 中的属性。

我们利用 new 方法创造一个变量,类似于一个工厂方法。如果往深里探究,应该是 new 方法是一个类对象方法,也就是说,Point 可以作为一个类,同时它也是 Class 这个类的一个对象,他作为对象有一个方法是 new 。这个 new 会调用实例方法(就是 java 中的非静态方法) new ,然后完成构造。

Read more »

一、脚本语言

我似乎对于 Python 和 Ruby 强求太多了,我要让他们实现 C 的所有功能。他们确实可以实现所有的功能,但是他们的目的不是为了这个。

我也可以用 shell 实现很多复杂的算法,但是我绝对不会用他去写图着色或者动态规划。但是我使用 python 和 Ruby 的时候却又这种倾向。我不会强求 C 为我列出目录中的所有文件,但是我却会强求 python,可叹啊。

我之前似乎把语言看成了算法和架构的载体和实现,怪不得过得这么不幸福。


Read more »