Squirrel语言初探(可以使用VC6或者MinGW编译)
Squirrel语言初探
为啥我要关注Squirrel语言?原来Squirrel就很像我希望设计出的理想中的语言(当然也不完全符合)。比如我觉得Lua的语法表述不清晰,累赘,于是想用C系语法来代替Lua语法,于是Squirrel实现了;比如Lua中没有类的结构,我想在我的语言里面加入类(基于表来实现),于是Squirrel实现了;比如我痛恨~=号,–[[–]]号,于是Squirrel也去掉了。
我并不是说Squirrel就是很牛逼的语言,只是感觉对自己有很强的参考价值。之前都不知道有这样一种语言的,后来是在看网友的blog的时候了解到了。
Squirrel说白了,就是Lua的一种衍生语言。它的作者是意大利人Alberto Demichelis,Squirrel开发的本意是用于替代Lua,Squirrel语法与C/C++很相似,而Lua的很多语法与C/C++ 不一致,写脚本时,容易犯错误,所以,Squirrel更适合C/C++ 程序员。加之它们都是为了更好地与C程序相互嵌入,所以用C的语法觉得更自然一些。
看了它的spec.之后,总结一下它的特性:
- 动态语言,弱类型;
- 编译器+虚拟机方式;
- 强大的表结构(与Lua同);
- 支持有限的OO(比Lua的只能模拟类更直接一些);
- 内部由C++实现(不像Lua只用ANSI C实现);
- 有userdata和userpointer,推广了Lua这一块的特性。貌似userpointer这一特性极其好用;
- 自动内存管理;
- 有协程;
- Delegation代理支持(暂时不清楚什么意思);
- 产生子generator;
- 异常捕获(try exception throw)和处理;
总的来看,它的60%的特性我比较喜欢,另40%的设计我仍觉得不是很爽,博采众长吧。
可是,要设计一门新语言,要如何着手呢?……
https://xenyinzen.wordpress.com/2009/12/09/squirrel%E8%AF%AD%E8%A8%80%E5%88%9D%E6%8E%A2/
https://github.com/albertodemichelis/squirrel
http://www.squirrel-lang.org/
https://github.com/aardappel/lobster
Squirrel语言初探(可以使用VC6或者MinGW编译)的更多相关文章
- 手把手教你在Windows下使用MinGW编译libav(参考libx264的编入)
转自:http://www.th7.cn/Program/cp/201407/242762.shtml 手把手教你在Windows下使用MinGW编译libav libav是在Linux下使用纯c语言 ...
- MingW编译virt-viewer
在http://www.spice-space.org/download.html可以下载到windows版本的virt viewer virt-viewer-x86-0.5.7.msi和virt-v ...
- vc6.0批量编译
一直想研究一下怎么让电脑批处理编译程序,今天就从vc6开始,做个记录,学习一下. VC可以生成make文件(Project->Export Makefile),在设置好环境变量下,执行NMAKE ...
- 在Windows环境下使用MinGW编译Qt 4.8.6
1.修改环境变量工具推荐:Rapid Environment Editor.官网:http://www.rapidee.com/ 修改前请先备份当前的环境变量.然后: (1)检查系统变量path,删除 ...
- Mingw编译DLib
Mingw编译DLib 因为机器上安装了qt-opensource-windows-x86-mingw530-5.8.0,所以准备使用其自带的mingw530来编译DLib使用. 因为DLib使用CM ...
- 使用mingw编译完整Qt5的过程(使用了niXman的msys套装)good
使用mingw编译完整Qt5的过程 坛子里似乎已经有人编译出Qt5了,不过大多有问题,不是缺少opengl就是缺少openssl,还有缺少webkit的,本文提供的仍然不能说是绝对完整的,不过相对以前 ...
- C语言编程入门之--第二章编译环境搭建
第二章 编译环境搭建 导读:C语言程序如何工作,首先需要编译链接成可执行文件,然后就可以运行在不同的环境中,这个“环境”的意思就是比如说,电脑,手机,路由器,蓝牙音箱等等智能设备中,其中编译器启到了关 ...
- Fedora 11中用MinGW编译Windows的Qt4程序(在Linux系统下编译Windows的程序)
Ubuntu下可以直接安装: sudo apt-get install mingw32 mingw32-binutils mingw32-runtime 安装后编译程序可以: i586-mingw32 ...
- Windows下MinGW编译Qt4
还真不是吹,这个问题折磨我一天……前些天转载了一篇关于<Eclipse+Qt开发环境设置>和<Eclipse+MinGW+Qt开发环境设置>两片文章,里面讲述了QT的开源版本q ...
随机推荐
- CS文件类头注释
1.修改unity生成CS文件的模板(模板位置:Unity\Editor\Data\Resources\ScriptTemplates 文件名:81-C# Script-NewBehaviourScr ...
- Java 中 Map与JavaBean实体类之间的相互转化
/** * 将一个 JavaBean 对象转化为一个 Map * @param bean 要转化的JavaBean 对象 * @return 转化出来的 Map 对象 * @throws Intr ...
- C#------各种数据库连接字符串编写
转载: https://www.connectionstrings.com/
- day19<异常&File类>
异常(异常的概述和分类) 异常(JVM默认是如何处理异常的) 异常(try...catch的方式处理异常1) 异常(try...catch的方式处理异常2) 异常(编译期异常和运行期异常的区别) 异常 ...
- PHP-004
'URL_CASE_INSENSITIVE' => true,设置为true的时候表示URL地址不区分大小写,这个也是框架在部署模式下面的默认设置. URL模式 : URL_MODEL设置 ...
- angularjs基础——控制器
1)当使用非空ng-app和ng-controller时,变量由angularjs控制器来处理 2)控制器接管模型变量后,直接修改模型,模版里的变量还是会自动变的 <!DOCTYPE html& ...
- echo\awk\sed\tee\curl的使用-shell
echo的使用:http://man.linuxde.net/echo awk的使用:http://man.linuxde.net/awk sed的使用:http://man.linuxde.net/ ...
- MySQL建表字段类型
1.数据库:在MySQL中,要存储数据,必须从数据库开始,因此首先要创建数据库,但由于学校的MySQL服务器对学生数据帐号有限止,学生不得创建数据库,故每个学生的帐号中已事先由信息中心为大家建立了一个 ...
- MySql学习—— 查询性能优化 深入理解MySql如何执行查询
本篇深入了解查询优化和服务器的内部机制,了解MySql如何执行特定查询,从中也可以知道如何更改查询执行计划,当我们深入理解MySql如何真正地执行查询,明白高效和低效的真正含义,在实际应用中就能扬长避 ...
- LeetCode——Power of Two
Description: Given an integer, write a function to determine if it is a power of two. public class S ...