Kinx:一种脚本语言,适合希望使用类似C语法的人

2021-01-16 17:15:50

预览版现已推出! 请参阅发布。 看起来像JavaScript,感觉像Ruby,它是C程序员适合的脚本语言。 Ruby是一种主要的脚本语言。 Python也是如此。但是,这两种语法都不是C程序员所熟悉的。Kinx是一种脚本语言,适合希望使用类似C的语法的人。 小。 使用C而不是C ++。 我喜欢C ++,但在某些情况下运行时很大。 C样式语法...不,它是JavaScript样式语法而不是C,但是它也很好。 类和继承,高阶函数,词法作用域,闭包,Fiber,垃圾回收等。 有用的测试系统,名为SpecTest。 它不仅设计用于Kinx,而且还用于其他任何产品。 脚本语言是作为库之间的粘合剂的平台。这意味着语言本身并不是主要目的,由于要使用要使用的库,因此它应该只是后端或支持者。

因此,该语言的另一个设计目标是可扩展,轻巧且易于用户使用。Kinx将成为您要使用的任何库或自己的库的最佳平台。

排版... PDF核心库提供的简单字体排版库。请参阅《用户指南》(PDF)。

有关Kinx规范的详细信息,请参见Kinx规范。该文档还包括测试代码。我将此系统命名为SpecTest。有关详细信息,请参见SpecTest。

我想几乎所有的程序员都希望使用具有C样式语法的轻量级脚本语言,因为它们简单,易用且熟悉。C样式语法最适合程序员。

Ruby很棒。但这离C风格太远了。结束输入太多。

Python也很棒。但这离C风格太远了。简朴的风格有点局促,太多的自我打字。

JavaScript对我来说非常好,它是一种类似于C的样式。但是node.js太重了。

掉入开关盒中。但是C程序员会感觉到它在没有中断的情况下可以继续到下一个。

例如C,C ++,Java,JavaScript,C#等。如果您同意或不同意,无论如何都要加星号。

重要信息如果您遇到kinx可执行文件崩溃的情况,请尝试make clean all重建所有内容。有时更改公共标头中的结构会导致崩溃,因为Makefile中的依赖项不完整。

请注意,在Windows上,编译ir_exec.c需要很长时间,大约需要15分钟,因此请等待它。在Linux上这没问题,因为大约需要2到3分钟。

函数fib(n){如果(n< 3)返回n;返回fib(n-2)+ fib(n-1); }系统。 println(" fib(34)=",fib(34));

记住上面的斐波那契函数,这是一个简单的斐波那契函数,并通过以下时间测量来执行它。

本机fib(n){如果(n< 3)返回n;返回fib(n-2)+ fib(n-1); }系统。 println(" fib(34)=",fib(34));

这是一个演示动画。 REPL具有[TAB]键的自动完成功能。有关详细信息,请参见REPL。

有向图fib {节点[fontname =" Courier_New",fontsize = 10,style =" setlinewidth(0.1)",shape = record]; edge [fontname =" Courier_New",fontsize = 10,style =" setlinewidth(0.1)"]; label =" fib" labelloc =" t" L2020 [label =" {\ .L2020 |输入19,vars(1),args(1)}"]; L2021 [label =" {\ .L2021 |如果$ 0(0)\> = 3转到\ .L2023}"]; L2022 [label =" {\ .L2022 | ret $ 0(0)}"]; L2023 [label =" {\ .L2023 | sub_v0i $ 0(0),2 |调用$ 1(57),1 | sub_v0i $ 0(0),1 |调用$ 1(57),1 |添加| ret}"]; L2020:s-> L2021:n; L2021:s-> L2023:n; L2021:s-> L2022:n;}

您可以轻松添加功能。基本策略是按照某些规则添加dll。

对于新运算符,新A只是A.create的别名。有关类的工作原理,请参见类设计。

有关规格,请参阅Kinx规格。但是现在没有有关以下各项的文档。我会尽快编写。

现在,libcurl软件包已包含在Kinx中。 exampleSimple HTTP Get客户端库位于kxnet.kx的lib / std文件夹中的net / http.kx,虽然很差但是很容易升级。

请注意,还包括OpenSSL.OpenSSL版本是3.0.0,尚未正式发布,但意味着许可证是Apache 2.0。

现在支持eval()。您可以即时运行字符串代码。eval的参数像数组的命令行参数一样分配给$$。 使用using时找不到文件时,将导致错误。使用using时? 而是,即使没有找到该文件,它也将被无错忽略。 当您调用someMethod但一个对象发生methodMissing时,搜索_someMethod属性并使用它的值(如果找到)。有时这是合理的,因为您不必定义函数。 该项目已获得MIT许可证的许可。有关详细信息,请参阅LICENSE文件。有关内部使用的库的许可证,请遵循每个库的许可证。有关详细信息,请参阅docs / licenses文件夹。