我发起了一个 ILBC 的 子项目 EScript
ILBC 见 《ILBC 规范》 https://www.cnblogs.com/KSongKing/p/10354824.html
今天装了个 VsCode , 听说 VsCode 是 用 Javascript 写的,
突然觉得, 跨平台 的 主角 应该是 Javascript 嘛 ~!
所以, 就想 ILBC 是不是也要支持 Javascript ,,, 当然, 从技术上, ILBC 完全没有问题 。
Javascript 确实 很容易 跨平台, 比如, 脚步语言 不需要复杂的 开发环境 和 运行环境, 普及率高, 没有 复杂的 基础库, 等等 。
不过 有 网友 说 Js 是 单线程 模型, 对 并发 和 并行计算 不友好, 也有网友说, Js 适用于 IO 密集型 , 不适用于 计算密集型 。
还有一个 缺点 是, 弱类型, 这样在 开发时 对于 类型 的 方法提示 以及 错误提示 不太方便 。
所以, 我就想 ILBC 也可以提供一种 语言, 可以容易的使用, 来像 Js 一样可以容易的 跨平台 和 快速开发 。
这种 语言 命名为 EScript 。
EScript 跟 D# 差不多, 就是 把 D# 值类型 的 部分 完全采用 对象的方式 来 处理 就 可以 了 。
另外, EScript 不提供 D# 的 一些 底层特性, 比如 指针 。
值类型 完全采用 对象, 比如 int 类型, 实际上一个 Int32 结构体 , 并且 结构体 也 用 引用 的 方式 访问 。
O 了 。
ILBC 对 这个 架构 完全支持, 比 支持 D# 还简单 。
EScript 基础库 提供 String, 集合, 简单 IO, HttpClient ,
提供 illock 关键字 实现 IL Lock , 以此 实现 并发编程 的 同步 / 互斥 通信 。
后来想了一下, 不应该提供 IL Lock, 因为 提供 IL Lock 意味着 提供 线程 。
对于 EScript, 不需要 提供 线程 , 提供 Task 库 就可以,
Task 之间可以通过 Task.Lock( obj ) 来 锁定对象 来 同步 / 互斥 通信 ,
也可以用 Task.Wait( ) , Task.Join( ) 等 方法 来 实现 Task 之间 的 通信协作 。
EScript 把 数值类型(int long float double char bool 等) 都 作为 结构体(比如 Int32), 并且用 引用 访问, 这会 降低 执行效率 。
最 呵呵 的 是 连 bool 也 用 结构体 + 引用 表示,,,
不过没办法,
EScript 可以用于 对 执行效率 要求 不严格 的 场合 。
我发起了一个 ILBC 的 子项目 EScript的更多相关文章
- 我发起了一个 ILBC 的 子项目 ILBC Studio
ILBC 见 <ILBC 规范> https://www.cnblogs.com/KSongKing/p/10354824.htm 发起这个项目的原因是, 本来想用 VsCode 来写 ...
- 我发起并创立了一个 VMBC 的 子项目 D#
大家好, 我发起并创立了一个 VMBC 的 子项目 D# . 有关 VMBC , 请参考 <我发起了一个 用 C 语言 作为 中间语言 的 编译器 项目 VMBC> https ...
- 我发起了一个 用 C# 写 的 浏览器 开源项目 HtmlCore
我之前还发起过一个 项目, 名字也叫 HtmlCore, 见 <我发起了一个 .Net 开源 跨平台 GUI (界面开发框架)项目 HtmlCore> https://www.cnblo ...
- 我发起了一个 支持 ServerFul 架构 的 .Net 开源项目 ServerFulManager
大家好, 我发起了一个 支持 ServerFul 架构 的 .Net 开源项目 ServerFulManager . ServerFulManager 的 目标 是 实现一个 支持 ServerFu ...
- 我发起了一个 .Net 开源 跨平台 GUI (界面开发框架)项目 HtmlCore
大家好 , 我发起了一个 .Net 开源 跨平台 GUI (界面开发框架)项目 , 名字叫 HtmlCore . 项目的一个主要目标是可以用 .Net 在 移动设备 上 开发 GUI 程序 (界面程 ...
- 我发起了一个 .Net 平台上的 NewSql 数据库 BabanaDB
发起这个项目的起因, 是偶然看到一个网友发的 MongoDB 的 新闻, 我想, 像 MongoDB 这样的 非关系数据库 ,随时 都可以写 很多个, 真正 难写 的 是 关系数据库, 非关系数 ...
- 我发起了一个 .Net 平台上的 开源项目 知识图谱 Babana Map 和 文本文件搜索引擎 Babana Search
起因 也是 前几天 有 网友 在 群 里发了 知识图谱 相关的文章, 还有 有 网友 问起 NLog -> LogStash -> Elastic Search 的 问题, ...
- 我发起了一个 .Net Core 平台上的 开源项目 ShadowDomain 用于 热更新
大家好, 我发起了一个 .Net Core 平台上的 开源项目 ShadowDomain 用于 热更新 . 简单的说, 原理就是 类似 Asp.net 那样 让 当前 WebApp 运行在一个 A ...
- 我发起了一个 用 C 语言 作为 中间语言 的 编译器 项目 VMBC
大家好 , 我发起了一个 用 C 语言 作为 中间语言 的 编译器 项目 VMBC . VMBC , 全称是 Virtual Machine Base on C . 有一种说法 , C 语言是 ...
随机推荐
- 详细集成Redis (一)
1.添加依赖 <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</a ...
- 关于MySQL什么时候使用索引问题以及什么情况下应不建或少建索引
一,什么情况下使用索引1. 表的主关键字 自动建立唯一索引 2. 表的字段唯一约束 ORACLE利用索引来保证数据的完整性 3. 直接条件查询的字段 在SQL中用于条件约束的字段 如zl_yhjbqk ...
- C++面试笔记(2)
11 explicit 显式构造函数 explicit修饰的构造函数可用来防止隐式转换 class Test1 { public: Test1(int n) // 普通构造函数 { num=n; } ...
- IPhone微信H5用Video标签播放不了视频
H5用Video标签播放视频 视频在安卓上可以正常播放,在苹果上却不能播放. 因为用了文件服务站点,而且不支持断点下载 把文件服务改成支持断点下载即可 断点下载参考(C#)
- 关于SpringCloud配置网关转发时出现一下啊错误:“com.netflix.zuul.exception.ZuulException: Forwarding error at org.springframework.cloud.netflix.zuul.filters.route.RibbonRoutingFilter.handleException”
com.netflix.zuul.exception.ZuulException: Forwarding error at org.springframework.cloud.netflix.zuul ...
- KUANGBIN带你飞
KUANGBIN带你飞 全专题整理 https://www.cnblogs.com/slzk/articles/7402292.html 专题一 简单搜索 POJ 1321 棋盘问题 //201 ...
- iptables 添加raw提高服务器性能之路
前几天准备把线上一批机器添加iptables.于是梳理出几个需要通外网的端口,80,81等. 防火墙规则如下: #### filter table ########################## ...
- React native中DrawerNavigator,StackNavigator,TabNavigator导航栏使用
import React from 'react'; import { View, Text,Button } from 'react-native'; import { DrawerNavigato ...
- 学习java一个月的进展
作为一个阶段性总结,有很多的东西需要说明,有细节的,有架构的,且听我细细说来. java和php最大的区别不止是类型的强制定义,而是在设计思路上有着非常重大的偏差(虽然SY3框架已经开始借鉴JAVA的 ...
- VBO最佳实践
VBO的大小 一个VBO应该多大? 你可以创建一个很小的VBO,但最佳方案是把很多对象放到一个VBO里面,这样的话可以减少调用gl函数的数量,比如glBindBuffer.glVertexPointe ...