角度:可编程语言编译成python字节码
angle的Python项目详细描述
![英文脚本](english script.png"english script")
**[角度](https://github.com/pannous/angle/)**是作为编程语言的[英文](https://github.com/pannous/english-script)的python实现。
这种语言的主要目的是让更多的人可以访问编程,更有趣,并方便编程通过语音为计算机命名。
install
----
`pip install angle`
<;!--` pip install anglang`-->;
或从源代码:
`git clone--recursive git@github.com:pannous/angle.git`
`cd angle`
`./install.sh`
启动shell:`./bin/angle`
示例
-
这里是我们最喜欢的几个工作示例,它们来自[测试](测试):
ales 0.5`
`beep three times`
(有一代程序员会摇头,说曾经有一种编程语言不能正确地解释这个句子。)
`assert square of[1,2 and 3]等于1,4,9`
`assert 3rd word in‘hi my friend’is‘friend’`
`x是2;如果0,2,4都是小于5则增加x;assert x等于3 `
`'beep每隔3秒`
``最后一个‘hi’中的‘hi’中的‘you’等于‘you’`
````````
当彼得在线上skype时,在skype上发一声"beep
睡眠10秒
10秒
完成
```
`` ```>`
` ` ` ` ` ` ` ` `>5,然后再增加x;assert;assert x等于3 `
`>`
`是的它是"在线的":返回yes
否则返回no
end
````
状态:
——
alpha,部分可用,部分[测试](测试)尚未通过:
[![生成状态](https://travis ci.org/pannous/angle.png)(https://travis ci.org/pannous/angle)
`删除"我的主文件夹"中以"bak"结尾的所有文件`
转换为ruby:
`文件夹(:home).files.选择{that{that.end_u?每一个{文件文件.删除}
<隐式lambda变量**it**
`对于彼得的所有邮件:将其标记为read,如果其主题包含"垃圾邮件"
`邮件(作者:彼得.作者:彼得.每一个{它.标记(:read)如果它是.subject.match('spam')}
最后一个例子还说明了我们所匹配按类型名称**.
```
删除邮件:
将邮件移动到垃圾箱文件夹
结束
```
此处的"mail"立即充当参数名称和参数类型。
不再有Java样式的邮件=new mail().getmail();
<;!--自我记录代码不是关于"如何",而是关于"什么"。例如:方法名应为filteroutoddnumbers()。不是MapmoduleO2Predicate()。-->;
实验
——
运行它,看看自己!
./bin/angle"6+6"`
`/bin/angle示例/test.e`
`/bin/angle`(没有参数可以启动外壳)
` ` ` ` ` 1/4`
` ` ` 6+6+6 `
` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` `<
>
/>` ` ` ` ` ` ` ` ` ` ` ` ` ` `,2,4小于5,然后增加x`
/>———————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————呃,医学博士),视野和背景。
语法并不意味着语言完整,而是[功能完整](https://en.wikipedia.org/wiki/functional_completency)且易于扩展。
"过早优化是万恶之源。"许多编程语言在语法级别上进行"优化",以优化生成的应用程序。或许[这个](http://www.cs.utexas.edu/~ewd/transcriptions/ewd06xx/ewd667.html)是个错误。
[语法](https://github.com/pannous/angle/blob/master/core/english-parser.py)
----
english-script/angle当前运行在
*[ruby]环境(https://github.com/pannous/english-script)和[python]环境中,但很快将共同运行登录
*网站(!!)感谢[webassembly](https://github.com/webassembly/design)
*jvm感谢[mirah](https://github.com/mirah/mirah)、[zippy](https://bitbucket.org/ssllab/zippy/overview)和[trufle](https://github.com/oraclelabs/trufle)
*[.net/clr/dlr](https://en.wikipedia.org/wiki/dynamic\u languag运行时)(通过[cecil](https://github.com/jbevain/cecil),也可能是mirah),
*作为最终目标:运行**本机**,可能类似于[crystal](https://github.com/manastech/crystal)、[vala](https://en.wikipedia.org/wiki/vala\u28编程语言%29)或rpython
otstrapped"编译器"(https://en.wikipedia.org/wiki/bootstrapping\u28编译器%29)是一个重要的中期目标。
**优先级**
一个非常热门的想法是允许动态修改语言语法,至少在有限的扩展之前。
第一步是使设置成为可能函数的优先顺序。
这将启用非常自然和优美的数学表达式,尤其是与Unicode名称结合使用时:
````
类复杂别名(re,im)
添加数字x
.precedence=number.add.precedence-1
s://github.com/pannous/angle/)直接指向python字节码:
与ruby相反,python(3)提供了一个非常漂亮和干净的抽象语法树以及预先安装的字节码功能。
编译比解释代码快得多。
python执行模型比ruby虚拟机友好一点,但两者都有[优缺点](https://github.com/pannous/cast/blob/master/ruby vs python.txt)。python最大的优点是对象可以在任何时候被赋予属性o.x='y'!然而,蟒蛇有限的lamda能力是一个痛苦的限制。
"应该有一种——最好只有一种——显而易见的方法"
美胜于丑。
显式胜于隐式。
简单胜于复杂。
复杂胜于复杂。
平面胜于嵌套。
y/vision/philosm/future of this project read the[档案](https://github.com/pannous/english script/tree/master/dossier.md)
**[角度](https://github.com/pannous/angle/)**是作为编程语言的[英文](https://github.com/pannous/english-script)的python实现。
这种语言的主要目的是让更多的人可以访问编程,更有趣,并方便编程通过语音为计算机命名。
install
----
`pip install angle`
<;!--` pip install anglang`-->;
或从源代码:
`git clone--recursive git@github.com:pannous/angle.git`
`cd angle`
`./install.sh`
启动shell:`./bin/angle`
示例
-
这里是我们最喜欢的几个工作示例,它们来自[测试](测试):
ales 0.5`
`beep three times`
(有一代程序员会摇头,说曾经有一种编程语言不能正确地解释这个句子。)
`assert square of[1,2 and 3]等于1,4,9`
`assert 3rd word in‘hi my friend’is‘friend’`
`x是2;如果0,2,4都是小于5则增加x;assert x等于3 `
`'beep每隔3秒`
``最后一个‘hi’中的‘hi’中的‘you’等于‘you’`
````````
当彼得在线上skype时,在skype上发一声"beep
睡眠10秒
10秒
完成
```
`` ```>`
` ` ` ` ` ` ` ` `>5,然后再增加x;assert;assert x等于3 `
`>`
`是的它是"在线的":返回yes
否则返回no
end
````
状态:
——
alpha,部分可用,部分[测试](测试)尚未通过:
[![生成状态](https://travis ci.org/pannous/angle.png)(https://travis ci.org/pannous/angle)
`删除"我的主文件夹"中以"bak"结尾的所有文件`
转换为ruby:
`文件夹(:home).files.选择{that{that.end_u?每一个{文件文件.删除}
<隐式lambda变量**it**
`对于彼得的所有邮件:将其标记为read,如果其主题包含"垃圾邮件"
`邮件(作者:彼得.作者:彼得.每一个{它.标记(:read)如果它是.subject.match('spam')}
最后一个例子还说明了我们所匹配按类型名称**.
```
删除邮件:
将邮件移动到垃圾箱文件夹
结束
```
此处的"mail"立即充当参数名称和参数类型。
不再有Java样式的邮件=new mail().getmail();
<;!--自我记录代码不是关于"如何",而是关于"什么"。例如:方法名应为filteroutoddnumbers()。不是MapmoduleO2Predicate()。-->;
实验
——
运行它,看看自己!
./bin/angle"6+6"`
`/bin/angle示例/test.e`
`/bin/angle`(没有参数可以启动外壳)
` ` ` ` ` 1/4`
` ` ` 6+6+6 `
` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` `<
>
/>` ` ` ` ` ` ` ` ` ` ` ` ` ` `,2,4小于5,然后增加x`
/>———————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————呃,医学博士),视野和背景。
语法并不意味着语言完整,而是[功能完整](https://en.wikipedia.org/wiki/functional_completency)且易于扩展。
"过早优化是万恶之源。"许多编程语言在语法级别上进行"优化",以优化生成的应用程序。或许[这个](http://www.cs.utexas.edu/~ewd/transcriptions/ewd06xx/ewd667.html)是个错误。
[语法](https://github.com/pannous/angle/blob/master/core/english-parser.py)
----
english-script/angle当前运行在
*[ruby]环境(https://github.com/pannous/english-script)和[python]环境中,但很快将共同运行登录
*网站(!!)感谢[webassembly](https://github.com/webassembly/design)
*jvm感谢[mirah](https://github.com/mirah/mirah)、[zippy](https://bitbucket.org/ssllab/zippy/overview)和[trufle](https://github.com/oraclelabs/trufle)
*[.net/clr/dlr](https://en.wikipedia.org/wiki/dynamic\u languag运行时)(通过[cecil](https://github.com/jbevain/cecil),也可能是mirah),
*作为最终目标:运行**本机**,可能类似于[crystal](https://github.com/manastech/crystal)、[vala](https://en.wikipedia.org/wiki/vala\u28编程语言%29)或rpython
otstrapped"编译器"(https://en.wikipedia.org/wiki/bootstrapping\u28编译器%29)是一个重要的中期目标。
**优先级**
一个非常热门的想法是允许动态修改语言语法,至少在有限的扩展之前。
第一步是使设置成为可能函数的优先顺序。
这将启用非常自然和优美的数学表达式,尤其是与Unicode名称结合使用时:
````
类复杂别名(re,im)
添加数字x
.precedence=number.add.precedence-1
s://github.com/pannous/angle/)直接指向python字节码:
与ruby相反,python(3)提供了一个非常漂亮和干净的抽象语法树以及预先安装的字节码功能。
编译比解释代码快得多。
python执行模型比ruby虚拟机友好一点,但两者都有[优缺点](https://github.com/pannous/cast/blob/master/ruby vs python.txt)。python最大的优点是对象可以在任何时候被赋予属性o.x='y'!然而,蟒蛇有限的lamda能力是一个痛苦的限制。
"应该有一种——最好只有一种——显而易见的方法"
美胜于丑。
显式胜于隐式。
简单胜于复杂。
复杂胜于复杂。
平面胜于嵌套。
y/vision/philosm/future of this project read the[档案](https://github.com/pannous/english script/tree/master/dossier.md)