我发起了一个 ILBC 的 子项目 EScript

Posted 凯特琳

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我发起了一个 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简要介绍

ILBC 规范

linux 使用 iLBC 编解码器 2 wav 转换 caf 文件

Android 手机可以解码和播放带有 iLBC 编解码器的 *.caf 文件吗?

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