摘要:
已经决定半年后继续这个项目.JavaScript同步调用异步的处理方式也确定了下来.主要原理就是当同步函数调用异步函数时,异步函数将返回一个Parallet对象.同步函数可以用该对象查询状态,响应结束时间,得到返回值或异常信息.而用JavaScript实现Parallet, 为了针对JavaScript的特点, 语法规则也会大幅度改变. 尽量兼容现有的JS语法, 方便开发者入门. 阅读全文
摘要:
number类型是否允许为null, 的确是很头疼的问题.Parallet的目标是脚本语言. (但它也可预先编译代码)很多脚本语言的所有类型都允许为null的.但是为了让number为null, 要付出的代价实在是太大了.就按我的经验, number需要为null的情况, 非常非常少.如果某些场合需要允许传递null, 大不了可以定义参数为var便可.(虽然那样的话允许传递任何类型)-现在DotNet的版本依然有很多工作. 考虑到最近实在太忙, 这样进展太慢也不是办法.-Parallet要发展起来, 必须需要实在的项目用来支持它.我是打算实现了DotNet的版本后, 先做一个P2P的项目用来验 阅读全文
摘要:
目前还有很多细节没做完. 说道一些细节, 如果没有写下来, 没有写成文档, 甚至是'规范', 有时我自己也会忘记某些细节的实现规则如何..所以, 看来还是有必要继续在当前版本下点功夫, 然后一点一滴, 把细节搞定先. 这样, 有了一个规范, 才能让这个语言不变得模棱两可.--另外, 在重构DotNet版本之前, 我还想先去JVM那边做一个版本出来验证一下先.. 毕竟现在基于JVM的语言还是挺火的. 如果Parallet推出JVM版本, 未尝不是一件X事. 阅读全文
摘要:
代码来源于 http://www.cnblogs.com/miloyip/archive/2010/07/07/languages_brawl_GI.html在我的电脑上, C#_ref那个测得52秒, 而用Parallet解释执行, 则需要1350秒, 是C#的26倍时间. 由于编译执行没完全做好, 所以就还没做编译执行的测试.C#的26倍时间, 和LUA差不多了, 比我想象中好很多, 毕竟LUA是C写的而且传说还用了CPU寄存器做卖点..比起ChromeJS,也只相差5倍而已, 比之前差70倍的数学测试要好不少.下一次等编译执行搞定后, 再来测试一下.(备注:如果采用多线程并发模式, 则只 阅读全文
摘要:
Parallet是笔者自创的一种新的编程语言. 当初的定位是DotNet下的异步脚本, 用来弥补C#对异步编程的不足. (笔者想实现一些异步操作超多超复杂的服务器应用, 但是用C#做起来超难. )
这个项目已经开启了接近一个月. 目前的进度, 可以参考 http://www.parallet.net 上的描述 , 也可以在本博客里, 找到第一篇简介, 和最近的一些心得.
就在昨天, 笔者完成了初步的动态编译到IL的实现. 让大部分不需要异步执行的函数, 编译成CLI的方法. 这些函数由解释执行转换为编译执行后, 性能提高了100多倍.
基本上, 现在很多架构上的设计, 都已经完成. 大方向比较明确, 剩下的, 都是无穷无尽的细节问题. 阅读全文
摘要:
在同一个ModuleBuilder里, DefineType并且CreateType之后, 是可以继续DefineType的..
这样可以防止编译多次代码导致的AssemblyBuilder过多的问题. 现在只需要1个AssemblyBuilder就够了.
示例代码 : using System;....... 阅读全文
摘要:
很简单的fibonacci数列性能测试.C++用int,C#用int,Parallet用double, int Fib(int a){ if(a<2) return a; return Fib(a-1)+Fib(a-2);}Fib(40) 所需时间分别为C++ : 1500C# : 1400Parallet : 1750C#竟然比C++快? 这个结果让我对在C++上实现Parallet的欲望减少了不少..Parallet的第一版的任务是先把DotNet上的实现做好.然后再考虑搞到Mono去, 然后才是JVM上, 然后才到C++.. 阅读全文
摘要:
第一个版本的Parallet是在DotNet里实现的. (自带GC省了很多工作量)当前进度是, 在同一个编译系统中同时实现了解释执行,编译执行,调用IL,被IL调用,IL类型,新类型系统这6个东西混在一起是非常复杂的.互相调用时的同步异步模式转换,参数传递与类型转换, 非常麻烦.经过今天部分完成的编译执行的验证, 性能比解释执行最多提升了一百多倍. (已经超过ChromeJS, 优势来自于支持强类型)也就是说, 虽然编译执行的环节的增加让实现变得很繁琐, 但物有所值.(但是解释执行仍然有它的意义,它不Emit出Assembly,在不断执行新脚本的环境下不会造成内存越积越多的问题)-这个项目计划 阅读全文
摘要:
Parallet是笔者自己开发的一种新语言,主要是基于JavaScript和C#的语法. 里面包含着针对异步与并行编程的独特思想. 无论你对异步并行编程,还是对如何创作新的编程语言感兴趣, 不放试试耐心地阅读这篇随笔. 阅读全文