Squirrel语言初探(可以使用VC6或者MinGW编译)

摘要:
我为什么要关注松鼠?事实证明,松鼠是我想要设计的理想语言。例如,我认为Lua的语法不够清晰和繁琐,所以我想用C系列语法替换Lua的句法,所以Squirrel实现了它;例如,Lua没有类结构。我想在我的语言中添加类,所以Squirrel实现了它;例如,我讨厌~=符号和–[[–]]符号,所以松鼠也被移除了。我不是说松鼠是一种非常强大的语言,但我觉得它对我有很强的参考价值。说白了,松鼠是Lua的衍生语言。

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编译)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Elastic Stack之搜索引擎基础Gerapy框架的安装下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Scala编程快速入门系列(一)

目 录 一、Scala概述 二、Scala数据类型 三、Scala函数 四、Scala集合 五、Scala伴生对象 六、Scala trait 七、Actor 八、隐式转换与隐式参数 九、Scala JDBC 由于整理的篇幅较长,所以文章计划分三次发布。 一、Scala概述 1. Scala简介 Scala是一种针对JVM将函数和面向对象技术组合在一起的编...

Lua中table的实现-《Lua设计与实现》

本文来自《Lua设计与实现》的阅读笔记,推荐Lua学习者可以购买一本,深入浅出讲解lua的设计和实现原理,很赞,哈哈   Lua中对于表的设计,是基于数组和散列表,和其他语言不同,对于数组的下标是从1开始的,对于散列表而言,只要其键值补位nil,都可以存储在其中。   一、table的基本类型定义 首先看看table的数据定义,参考源码lobject.h...

用近似静态语言、强类型语言的TypeScript开发属于动态语言、弱类型语言的JavaScript

    对于我们写习惯了强类型、静态类型语言的开发人员来讲,开发弱类型、动态类型语言的程序可真是头痛呀。特别是的走微软技术路线,用习惯了强大无比的VS系列工具的开发人员,VS2003,VS2005,VS2008,VS2010,VS2012。。。。。。还有这些工具与其相结合的强类型语言,比如C#,那用起来多爽呀。     先来看看弱类型语言有些特点吧,如果自...

简单实现php文件管理

如何能够利用PHP语言来进行空间中的文件管理,为我们带来良好的空间布局呢?今天我们就为大家介绍一种简便的PHP文件管理的实现方法。 PHP预定义变量数组种类概览 PHP uploaded_files函数使用技巧详解 经验分享 PHP显示图片 深入探讨PHP生成缩略图的实现方法 运用循环实现PHP分类列表 众所周知,用FTP上传,复制,删除大量文件是相当...

win10安装anaconda和Pycharm

本文来源:Python 工具——Anaconda+Pycharm 的安装过程 - 知乎 (zhihu.com) 其它参考来源: (41条消息) PyCharm与Anaconda超详细安装配置教程_思绪无限的博客-CSDN博客_anaconda 安装pycharm Python,Pycharm,Anaconda等的关系与安装过程~为初学者跳过各种坑 - TQ...

分享基于.NET动态编译&Newtonsoft.Json封装实现JSON转换器(JsonConverter)原理及JSON操作技巧

看文章标题就知道,本文的主题就是关于JSON,JSON转换器(JsonConverter)具有将C#定义的类源代码直接转换成对应的JSON字符串,以及将JSON字符串转换成对应的C#定义的类源代码,而JSON操作技巧则说明如何通过JPath来快速的定位JSON的属性节点从而达到灵活读写JSON目的。 一、JSON转换器(JsonConverter)使用及原...