Chinaunix首页 | 论坛 | 博客
  • 博客访问: 398917
  • 博文数量: 69
  • 博客积分: 1984
  • 博客等级: 上尉
  • 技术积分: 953
  • 用 户 组: 普通用户
  • 注册时间: 2007-03-28 00:43
个人简介

学无所长,一事无成

文章分类

全部博文(69)

文章存档

2015年(19)

2014年(14)

2013年(9)

2012年(17)

2010年(10)

我的朋友

分类: Python/Ruby

2013-11-26 09:17:58

参考:

2.4.1 通过观察真实世界模拟编程

我们常常希望编写程序为真实世界建模或同真实世界互动。使用 COPL(面向并发的编程语言) 来写那样的程序会比较容易。

首先我们采用三步法进行分析:
1、我们观察真实世界中的活跃个体来找出真正需要并发的程序个体。
2、我们找出活跃个体间的所有消息通道。
3、我们记下在所有消息通道间流动的消息。

现在我们就可以开始编程了。程序的组织结构正好同解决问题的组织结构方式一致。真实世界的每一个并发活跃个体正好映射成我们的程序语言中的一个并发进程。如果所有要解决的问题都可以1:1映射到我们的程序中,那么我们就说程序同待解决的问题是同构的。

实现精确的1:1映射是极其重要的。它可以最大限度的减少问题与解决方案(即我们的程序)之间的原则差异。如果做不到精确的1:1映射,我们很快会发现我们的程序不断变异,程序将变得越来越诡异,越来越难懂。这种变异在试图使用非并发语言解决并发问题中屡见不鲜。而试图使程序正常运行的唯一办法也就只有强行将众多的独立个体置于同一个线程或进程中(而且必须同一语言编写)。这必然会导致程序越来越不清晰,并使程序主题越来越复杂且不可理喻(会产生很多难以再现的错误)。

在我们分析问题时,我们需要选择正确的模型粒度。比如我们构建一个实例消息系统,我们应该为每个用户派生一个进程,而非为每个用户当中的原子(atom)单位派生一个进程。

附加阅读:
http://blog.chariotsolutions.com/2011/07/learnings-from-actor-development.html
阅读(1378) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~