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的更多相关文章

  1. 我发起了一个 ILBC 的 子项目 ILBC Studio

    ILBC  见 <ILBC 规范>  https://www.cnblogs.com/KSongKing/p/10354824.htm 发起这个项目的原因是, 本来想用 VsCode 来写 ...

  2. 我发起并创立了一个 VMBC 的 子项目 D#

    大家好, 我发起并创立了一个 VMBC 的 子项目 D#  . 有关 VMBC ,  请参考 <我发起了一个 用 C 语言 作为 中间语言 的 编译器 项目 VMBC>     https ...

  3. 我发起了一个 用 C# 写 的 浏览器 开源项目 HtmlCore

    我之前还发起过一个 项目, 名字也叫 HtmlCore, 见 <我发起了一个 .Net 开源 跨平台 GUI (界面开发框架)项目 HtmlCore>  https://www.cnblo ...

  4. 我发起了一个 支持 ServerFul 架构 的 .Net 开源项目 ServerFulManager

    大家好,  我发起了一个 支持 ServerFul 架构 的 .Net 开源项目 ServerFulManager . ServerFulManager 的 目标 是 实现一个 支持 ServerFu ...

  5. 我发起了一个 .Net 开源 跨平台 GUI (界面开发框架)项目 HtmlCore

    大家好 , 我发起了一个 .Net 开源 跨平台 GUI (界面开发框架)项目 , 名字叫 HtmlCore  . 项目的一个主要目标是可以用 .Net 在 移动设备 上 开发 GUI 程序 (界面程 ...

  6. 我发起了一个 .Net 平台上的 NewSql 数据库 BabanaDB

    发起这个项目的起因, 是偶然看到一个网友发的 MongoDB 的 新闻, 我想, 像  MongoDB  这样的 非关系数据库 ,随时 都可以写 很多个, 真正 难写 的 是  关系数据库, 非关系数 ...

  7. 我发起了一个 .Net 平台上的 开源项目 知识图谱 Babana Map 和 文本文件搜索引擎 Babana Search

    起因 也是 前几天 有 网友 在 群 里发了   知识图谱   相关的文章, 还有 有 网友 问起   NLog -> LogStash -> Elastic Search  的 问题, ...

  8. 我发起了一个 .Net Core 平台上的 开源项目 ShadowDomain 用于 热更新

    大家好,  我发起了一个 .Net Core 平台上的 开源项目 ShadowDomain  用于 热更新 . 简单的说, 原理就是 类似 Asp.net 那样 让 当前 WebApp 运行在一个 A ...

  9. 我发起了一个 用 C 语言 作为 中间语言 的 编译器 项目 VMBC

    大家好 ,  我发起了一个 用 C 语言 作为 中间语言 的 编译器 项目 VMBC . VMBC ,  全称是 Virtual Machine Base on C  . 有一种说法 ,  C 语言是 ...

随机推荐

  1. position:fixed 兼容浏览器低版本

    项目中遇到的坑,写篇博客做个笔记纪念下,position: fixed一般来说都兼容各个浏览器,但是要兼容浏览低版本问题,就得用-webkit-transform: translateZ(0);这段代 ...

  2. Ubuntu16.04安装MongoDB的Ruby驱动

    背景: 1. ruby的安装方式:sudo apt-get install ruby 2. mongod服务已开启 3. ruby版本:2.3, gem已安装 安装驱动的步骤: 1. gem inst ...

  3. 修改VScode行号区的背景颜色

    vs code是相当不错的一个编辑器,现阶段我用来编写nim程序. vs code非常丧心病狂一点就是行号区和编辑区的背景颜色都是一样, 这样会导致要看行首有没有对齐会非常吃力.这个问题让我纠结了非常 ...

  4. java知识点总结--java数据类型

    java中的两大数据类型 1.基本数据类型:也称作内置类型,java语言本身提供的基本数据类型是其他类型(包括java核心类和用户自定义类)的基础 2.引用数据类型:java语言根据基本类型扩展数的其 ...

  5. Centos6.5 安装 RabbitMQ 3.7.11

    RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客户端,如:Python.Ruby..NET.Java.JMS.C.PHP.ActionScript.XMPP.STO ...

  6. [RESTful] RESTful是什么,为什么要使用它

    RESTful是什么? 本质:一种软件架构风格 核心:面向资源 解决的问题:降低开发的复杂性,提高系统的可伸缩性 设计概念和准则: 1.网络上所有的事物都可以被抽象为资源 2.每个资源都有唯一的资源标 ...

  7. Hello1 web

    <?xml version="1.0" encoding="UTF-8"?>     xml版本,指定编码格式 <web-app versio ...

  8. Qt终结者之QML动画

    前言 使用QML差不多2年了,在使用过程中深深的感受到QML的强大与便捷,让我深陷其中,不能自拔.其中QML相比传统的界面最大的优势就是便捷的动画效果与炫酷的粒子效果,让QML做出来的界面能媲美WPF ...

  9. java并发中的Semaphore

    什么是Semaphore Semaphore可以控制某个资源可被同时访问的个数(locks和synchronized锁,在任何时刻只允许一个任务访问一个资源),通过acquire()获取一个许可,如果 ...

  10. 2018 ICPC南京网络赛 L Magical Girl Haze 题解

    大致题意: 给定一个n个点m条边的图,在可以把路径上至多k条边的权值变为0的情况下,求S到T的最短路. 数据规模: N≤100000,M≤200000,K≤10 建一个立体的图,有k层,每一层是一份原 ...