频道栏目
IT货架 > > 正文
Parallet-MyDynamicLanguage-一款异步编程语言
网友分享于:Jun 12, 2018 11:53:36 PM    来源: IT货架   
  Parallet - My Dynamic Language - 一款异步编程语言

简介:

      Parallet是笔者自创的一种新的编程语言. 当初的 定位是Dot Net下的异步脚本, 用来弥补C#对异步编程的不足.  (笔者想实现 一些异步操作超多超复杂的 服务器 应用, 但是用C#做起来超难. )

    这个项目已经开启了接近一个月. 目前的进度, 可以参考 http://www.parallet.net 上的 描述 , 也可以在本 博客里, 找到第一篇简介, 和最近的一些 心得

    就在昨天, 笔者完成了初步的动态编译到IL的实现. 让大部分不需要异步 执行的函数, 编译成CLI的 方法. 这些函数由 解释执行转换为编译执行后, 性能提高了100多倍.

    基本上, 现在很多架构上的 设计, 都已经完成. 大方向比较明确, 剩下的, 都是无穷无尽的 细节问题.


异步:

    在异步编程 方面, 由于新语言的异步函数的特点, 让它除了支持传统的命令式编程, 还支持新的异步方式编程, 让 开发者可以用传统的命令式语法去编写异步操作, 一次过摆脱为了异步而异步的各种麻烦的编程手法.

    而且, 这个新的语法体系里, 函数默认是异步的, 系统会自动 分析哪些函数需要异步处理, 而哪些不需要. 所以, 这个语言并没有为异步操作而创建 任何一个 关键字. 非常简单 容易接受.

    实际上一时之间要描述出这个新的异步语言, 是非常非常难. 这表现在多个方面:

        - 笔者的语文水平极差, 表达能力极差, 心里所想的东西并不能很好地表达出来.

        - 和传统编程一摸一样的语法, 这是优点, 但也导致读者会认为这根本就和异步编程没什么 关系..

        - 如果读者没有做过异步编程的工作, 那么就无法知道异步编程有多麻烦,
          不知道异步编程的麻烦之处, 也不会明白异步函数调用异步函数的好处.

    如果说代码就是文档的话, 那么或许用代码来解释这个异步函数的概念, 可能是最好的. 以下就用例子来慢慢说明异步函数的概念与意义.


示例:

    以下示例, 力求简单, 都是随便手写, 用 JS语法, 目的是让大家更容易 理解.

    传统,阻塞型, 同步调用
    上面代码, 通过给xhr.open传递一个false, 指定为sync模式. 当xhr.send("")执行时, 除非 服务器返回或者出错, 否则当前代码就会被阻塞, 当前的线程也会被阻塞, 浏览器也不会响应.

    在 UI线程里, 发生阻塞, 界面假死, 对 用户是非常不友好的事. 为了 解决这个 问题, xhr 提供了异步模式

    传统,回发型,异步调用:
    通过给xhr.open传递一个true, 指定为async模式. xhr.send("")后, 就立刻返回, 不会发生阻塞, 但程序也不会立刻得到结果. xhr得到服务器的响应后, 执行onreadystatechange指定的方法, 来通知它本身的调用者去处理异步的结果.

    咋一看, 两个LoadConfig用了不同的方式, 实现了相同的事了不 ?  没有 !

      假如有人写了这么一段代码 :
    阻塞方式的LoadConfig能阻塞线程, 等待服务器回复, 并且把结果返回给它的调用者. 

    但是, 如果把LoadConfig里的xhr改成异步调用, 那么config=LoadConfig()就不能正确地给config传递服务器结果了.

    所以, 要解决这个问题, 方案是 建立新的函数 LoadConfigAsync
    而在外面的代码, 也需要响应改变成
$$1 30^$^
 

广告服务联系QQ:1134687142 | 网站地图

版权所有: IT货架- 内容来自互联网,仅供用于技术学习,请遵循相关法律法规. 京ICP备11030978号-1