`
qiezi
  • 浏览: 492919 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Io Language学习:Prototype-Based Language

阅读更多
Io Language是一种Prototype-Based Language,像JavaScript一样(其它类似的语言我不清楚),这也是个常见的词,JavaScript也非常流行,所以不用再详细解释这个概念了,主要说一下它的库扩展能力,玩过JavaScript/Ruby的对这个特性应该是很喜欢了。

举个小例子说一下这种模型的好处。

Io Language的Object有一个wait方法,它的实现就是个死循环,在没有其它任务的情况下会不断地取时间判断有没有超时。它的附加库里面有个Socket,是使用libevent来实现的,由于libevent使用的是基于事件接口,比如select/poll/epoll,原有的wait方法会对它造成影响,所以Socket库覆写了Object的wait方法,改成用libevent来实现,很好地和libevent结合起来。

并不是所有情况下都会自动扩展,它和Ruby/JavaScript一样,需要把该模块加载才能产生效果,在Io Language里面只需要简单地在程序里写一行:
Socket

,它的自动模块加载机制会找到Socket目录并加载。

另一个例子,Io Language的File模块使用的是Posix接口,在有些情况下可能效率不够高,还会造成线程阻塞。AsyncRequest模块(目前只有aio实现)解决了这个问题,它用aio来实现文件的读写操作,只需要简单地加载它(测试也有问题)。当然它没有彻底解决问题,在很多文件系统上,文件IO的瓶颈在open/close上而不是read/write,aio没有解决这个问题。

在我的测试中发现许多BUG ,毕竟还是个非常不成熟的语言,库还没有经过充分测试,效率也是非常非常低,对于现有的很多C库也没有比Erlang做得更好,不过我很喜欢它。
2
0
分享到:
评论

相关推荐

    kafka-schema-registry-client-6.2.2.jar

    maven 仓库找不到,下载好了,分享出来 报错内容如下 Could not resolve dependencies for project org.apache.flink:flink-avro-confluent-...packages.confluent.io/maven/io/confluent/kafka-schema-registry-client

    commons-io-2.5-API文档-中文版.zip

    赠送jar包:commons-io-2.5.jar; 赠送原API文档:commons-io-2.5-javadoc.jar; 赠送源代码:commons-io-2.5-sources.jar; 赠送Maven依赖信息文件:commons-io-2.5.pom; 包含翻译后的API文档:commons-io-2.5-...

    Android代码-card.io-Android-SDK

    card.io SDK for Android card.io provides fast, easy credit card scanning in mobile apps. Stay up to date Please be sure to keep your app up to date with the latest version...Subscribe to our card-io-sdk-

    GMS特征匹配 原文和代码详细解读GMS: Grid-based Motion Statistics for Fast, Ultra-robust Feature Correspondence

    GMS: Grid-based Motion Statistics for Fast, Ultra-robust Feature Correspondence 代码解读   论文原文地址:GMS: Grid-based Motion Statistics for Fast, Ultra-robust Feature Correspondence 代码地址:github...

    commons-io-2.11.0-API文档-中文版.zip

    赠送jar包:commons-io-2.11.0.jar; 赠送原API文档:commons-io-2.11.0-javadoc.jar; 赠送源代码:commons-io-2.11.0-sources.jar; 赠送Maven依赖信息文件:commons-io-2.11.0.pom; 包含翻译后的API文档:...

    commons-io-1.3.2-API文档-中文版.zip

    赠送jar包:commons-io-1.3.2.jar; 赠送原API文档:commons-io-1.3.2-javadoc.jar; 赠送源代码:commons-io-1.3.2-sources.jar; 赠送Maven依赖信息文件:commons-io-1.3.2.pom; 包含翻译后的API文档:commons-io...

    commons-io-2.7-API文档-中文版.zip

    赠送jar包:commons-io-2.7.jar; 赠送原API文档:commons-io-2.7-javadoc.jar; 赠送源代码:commons-io-2.7-sources.jar; 赠送Maven依赖信息文件:commons-io-2.7.pom; 包含翻译后的API文档:commons-io-2.7-...

    commons-io-2.8.0-API文档-中英对照版.zip

    赠送jar包:commons-io-2.8.0.jar; 赠送原API文档:commons-io-2.8.0-javadoc.jar; 赠送源代码:commons-io-2.8.0-sources.jar; 赠送Maven依赖信息文件:commons-io-2.8.0.pom; 包含翻译后的API文档:commons-io...

    commons-io-2.7-API文档-中英对照版.zip

    赠送jar包:commons-io-2.7.jar 赠送原API文档:commons-io-2.7-javadoc.jar 赠送源代码:commons-io-2.7-sources.jar 包含翻译后的API文档:commons-io-2.7-javadoc-API文档-中文(简体)-英语-对照版.zip 对应...

    commons-io-2.2-API文档-中文版.zip

    赠送jar包:commons-io-2.2.jar; 赠送原API文档:commons-io-2.2-javadoc.jar; 赠送源代码:commons-io-2.2-sources.jar; 包含翻译后的API文档:commons-io-2.2-javadoc-API文档-中文(简体)版.zip 对应Maven...

    commons-io-2.4

    内部自动缓存buffer,友好的关闭流closeQuetly,以LineIterator行迭代器的形式读取文件,流

    commons-io-2.2-API文档-中英对照版.zip

    赠送jar包:commons-io-2.2.jar 赠送原API文档:commons-io-2.2-javadoc.jar 赠送源代码:commons-io-2.2-sources.jar 包含翻译后的API文档:commons-io-2.2-javadoc-API文档-中文(简体)-英语-对照版.zip 对应...

    commons-io-2.4-API文档-中文版.zip

    赠送jar包:commons-io-2.4.jar; 赠送原API文档:commons-io-2.4-javadoc.jar; 赠送源代码:commons-io-2.4-sources.jar; 赠送Maven依赖信息文件:commons-io-2.4.pom; 包含翻译后的API文档:commons-io-2.4-...

    commons-io-2.4-API文档-中英对照版.zip

    赠送jar包:commons-io-2.4.jar; 赠送原API文档:commons-io-2.4-javadoc.jar; 赠送源代码:commons-io-2.4-sources.jar; 包含翻译后的API文档:commons-io-2.4-javadoc-API文档-中文(简体)-英语-对照版.zip ...

    plexus相关jar包

    Failure to transfer org.... Original error: Could not transfer artifact org.codehaus.plexus:plexus-io:jar: 1.0.1 from/to central (http://repo.maven.apache.org/maven2): No response received after 60000

    lettuce-core-5.1.6.RELEASE.jar

    高级Redis客户端,用于线程安全同步,异步和响应使用,支持集群,Sentinel,管道和编码器。主要在一些分布式缓存框架上使用比较多。基于Netty框架的事件驱动的通信层,其方法调用是异步的。Lettuce的API是线程安全的...

    commons-io-1.4-API文档-中文版.zip

    赠送jar包:commons-io-1.4.jar; 赠送原API文档:commons-io-1.4-javadoc.jar; 赠送源代码:commons-io-1.4-sources.jar; 赠送Maven依赖信息文件:commons-io-1.4.pom; 包含翻译后的API文档:commons-io-1.4-...

    commons-io-2.8.0-API文档-中文版.zip

    赠送jar包:commons-io-2.8.0.jar; 赠送原API文档:commons-io-2.8.0-javadoc.jar; 赠送源代码:commons-io-2.8.0-sources.jar; 赠送Maven依赖信息文件:commons-io-2.8.0.pom; 包含翻译后的API文档:commons-io...

    commons-io-2.11.0-API文档-中英对照版.zip

    赠送jar包:commons-io-2.11.0.jar; 赠送原API文档:commons-io-2.11.0-javadoc.jar; 赠送源代码:commons-io-2.11.0-sources.jar; 赠送Maven依赖信息文件:commons-io-2.11.0.pom; 包含翻译后的API文档:...

    commons-io-1.3.2-API文档-中英对照版.zip

    赠送jar包:commons-io-1.3.2.jar; 赠送原API文档:commons-io-1.3.2-javadoc.jar; 赠送源代码:commons-io-1.3.2-sources.jar; 赠送Maven依赖信息文件:commons-io-1.3.2.pom; 包含翻译后的API文档:commons-io...

Global site tag (gtag.js) - Google Analytics