日记

C#

已经好久不写日记,因为我早已两耳不闻窗外事,一心只读C#(读作C 瞎谱)。

C#

C#是一门高级程序语言,好是好,就是书太厚了。好不容易看完《Head First C#》,这是我看的第二本 Head First 系列的书,第一本叫《Head First Design Patterns》,不过那是在电脑上看的,若说真正的纸质书,《Head First C#》是我看的第一本真正的 Head First 系列的书,我真的如书评中说的那样,从前到后,一字不落给看完了!我非常佩服这套书的制作者们,对我来说,这种写书方式是颠覆性的!也许是我看的书的太少,大惊小怪吧。显然这还只是一本C#入门书籍而已,但是看完它后,我觉得自己可以做一个资深的开发者了,觉得简直什么程序都能做都敢做了,连游戏甚至是大型游戏我现在都能都敢开发了。以前从来没有想过自己可以制作动画程序,大概是在大学里学 C语言 的时候,被制作一个动画程序的复杂程度给吓怕了。使用C#吧,简单。学C语言的时候就听到过双缓冲动画,说是这种技术不错,可以解决画面闪烁问题,但是被代码给搞晕了,从此一听到双缓冲,大脑便蒙了。没想到双缓冲是个简单得不能再简单的概念,就是说在把多个图层的画面画到真正的界面上之前,先把它们全部画到内存(这个内存区域就是起缓冲作用的)中,等所有图层都画完了,再一次性将缓冲内存中的图像更新到界面。

比如说动画的每一帧都是有背景图像和前景图像这样两层的画面,如果直接在界面上画,每一帧都都会先画背景,再画前景,每次更新一帧,都会先用背景将之前的画面覆盖(变化很大,因为整个前景消失了),然后又立即画上前景,让人看了画画在闪烁。但是用另一种途径,每次更新帧前,将前景背景画到缓冲内存中(这时前景背景已经拼合成一个图层了),再将缓冲内存中的画面一次性更新到界面上,这样子,前后两帧的变化就平滑,闪烁消失了!

由于是先画到内存,再画到界面(界面也对应着内存中的一块区域,是另一个缓冲),有了两步,所以叫双缓冲技术。这是一个很直接很简单的改进嘛。

其中的第一步缓冲,就相当于是 Photoshop 中的“拼合所有图层”。为什么以前就没发现是这么简单呢……

因为以前没有人用C瞎谱写这样的程序给我看,所以我没看出是这么回事儿。还有比C瞎谱更好的谱么?《黑客与画家》中提到另一种谱,叫立死谱(LISP),反正作者是对它赞不绝口,因为它小众,因为它专供高手使用(菜鸟想要学习它,立刻就被整死了,所以叫立死谱……这只是我想当然耳,不是作者说的)。这谱也引起了我极大的兴趣,因为这么多年来,我学的编程语言全是命令式的,还从没有学过这种函数表达式的。现在我对它充满了好奇与崇敬。

 

C#又是一个调号,比C调要尖一点。在五线谱中,C#大调是这样标记的:

C# major

以前五线谱是我的立死谱,我看到它就立马晕死掉了。我一直觉得奇怪,为什么世界上会有人发明这种奇怪的记谱方式���黑蝌蚪白蝌蚪带尾巴的蝌蚪不带尾巴的蝌蚪,忽上忽下忽断忽连。我也觉得奇怪,为什么居然有人(而且是那么多人!)能够看懂这种谱,而且还能非常迅速地把它们唱、奏出来。

直到吉他老师对我讲,这有什么难的啦,我跟你讲,一个五六岁的孩子,我五分钟就教会他啦!这句话今天想起来,言犹在耳,令人难忘。后来同事给我了一本教材《Learn & Master Guitar with Steve Krenze》,我照着一页一页练下来,发现不知不觉中,竟也熟悉了起来。

直到又有一天,我坐在桌边对着五线谱练着吉他,练得天黑了,光线暗了下来,我才发现一件很奇妙的事。那就是书本上的文字我已经看不清了,在那样暗的光线下,文字或者数字,都是辨认不出来的,即使眼睛凑得很近,看起来也非常吃力。但是五线谱不一样,不用凑近,不用费力,也能看清节拍和音阶。我这时才意识到,原来五线谱是一种图形,而简谱是文字记谱方式。人眼对图形的敏感性,天生大于对文字的。

五线谱是一种优美的图形记谱方式,它相当直观,那些蝌蚪的高低位置,正表明了音阶的高低。其实,它比简谱更简单。

单调

我已好久不写日记,因为实在没有什么可记的,每天都是一样的,非常地单调,但是并不乏味。

数学家一定想不通,为什么单调总和乏味这个词联系在一起呢?

让我们写个函数,y = f(t),t是时间,y是一个人的状态。这个函数表示了这个人在不同时刻的情绪状态。

单调函数图形 非单调函数图形

若这是一个单调函数,那么就是说,对于任意不同的时刻t,此人都拥有着一个不同的状态y(这正是数学上一一映射的定义,而单调函数必定是一一映射的)。此人每时每刻的情绪状态都不一样,那他一定没有感觉到乏味。相反,若这不是一个单调函数,那么就是说,至少有两个不同的时刻t1与t2,此人的状态y值一样。说不定有更多的时刻状态一样。这才乏味呐!最坏的情况是,他的状态函数是一条水平线,相应的函数表达式是

y = c

常量函数

那他一定乏味死了。c是一个常量,不随自变量(这里自变量是时间t)变化而变化。为什么用c表达常量,因为常量的英语constant以字母c开头。

我的状态函数离 y = c 只差了一点点,我的状态函数是 y = c#!

y = c#

万恶的教育

泰戈尔说“我们把世界看错了,反而说他欺骗我们”。但我们为什么把世界看错呢?因为从小被灌输了错误的世界观。

Tangent

What does this weird word “tangent” mean?

The word tangent is derived from the Latin word tangens, which means “touching”. Thus, a tangent to a curve is a line that touches the curve. In other words, a tangent line should have the same direction as the curve at the point of contact.

- Calculus by James Stewart

tangent

Add comment

Loading