利用.NET下的async/await机制来简化回调和状态机的实现

在开发GUI程序或者游戏的过程中,我想各位可能都写过如下的代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void DoSomething() 
{
...blabla
ShowDialogA(onDialogClosed: DoSomethingStep2);
}

void DoSomethingStep2()
{
...blabla
if(some condition)
ShowDialogB(onDialogClosed: DoSomethingStep3);
}

void DoSomethingStep3()
{
...
}

稍微……有些啰嗦,对吧?

那么,有什么办法来解决这个问题呢?有,那就是async/await。

Read More

mRuby的虚拟机与中间码结构

如果你学过编译原理的话,那你大概知道对于一个编译型语言而言,把代码从文本变成二进制代码所需要经历的步骤大概如下:

词法分析->语法分析->生成抽象语法树->生成中间语言->生成最终的机器语言代码

然而,对于一个解释型的语言,这个过程会停留在哪一步呢?换句话说,对于解释型的语言来说,它会将代码分解到何种程度后再去翻译并执行它呢?

Read More