分享一个新的编程语言 Lemon 。

2017-11-12 13:07:19 +08:00
 zhicheng

项目地址 https://github.com/lemon-lang/lemon 官网地址 http://www.lemon-lang.org/

简单介绍一下,

纯 C 实现,支持 Linux, macOS, Windows,以及(未测试) FreeBSD, OpenBSD, NetBSD,Solaris 等支持 POSIX 的环境,如果选择关掉内置的 OS 和 SOCKET 模块,那么几乎任何有标准 C 编译器的平台都可以支持。Windows 需要 Windows XP 及以上,如果用的 Windows 2000 则需要安装 kernel extension。

代码量少,算上内置模块,也只有 20ksloc 编译后 200 多 k。

动态语言,语法和 C/C++, Java, JavaScript 接近,但注意和 JavaScript 是完全不同的语言。

支持 GC, 面向对象,多重继承,闭包,Coroutine, Continuation 等现代编程语言的大部分功能。

因为官方实现很小,你可以直接把实现放到项目里,这样就不用担心语言升级项目重写了。

官网就是用 lemon 实现的,可以作为一个简单的参考 https://github.com/lemon-lang/website

有另一个中文的简单介绍 https://www.textarea.com/zhicheng/lemon-bianchengyuyan-jieshao-884/ 更多信息请移步官网或在邮件列表中讨论论。

10691 次点击
所在节点    程序员
97 条回复
qdwang
2017-11-13 10:53:26 +08:00
@zhicheng brainfuck 与其说是一种语言,不如说是一种基础指令集。我们这里讨论的是高级语言,请不要混淆两者。
vocalman
2017-11-13 11:00:49 +08:00
666
zhicheng
2017-11-13 11:00:56 +08:00
@qdwang 所以你说的东西没有任何实际意义,请不要因为别人的 “品味” 和你不一样就是 “品味差” 。
thinker3
2017-11-13 11:12:59 +08:00
@PythonAnswer 有分号才好分行写
faywong8888
2017-11-13 11:32:11 +08:00
@zhicheng 支持大佬!
yanzixuan
2017-11-13 11:42:12 +08:00
希望后续的库支持更好些吧。挺喜欢这样的咚咚的。
xsd3169
2017-11-13 11:50:17 +08:00
谢谢 dalao 的工作~!

另外有个问题,能不能同时支持通过 indent 来分句以及直接 import 包名不加引号?这样少打点字。。而且能够使用 pycharm 来开发这个编译 233

可能您会说要我直接写 python 得了,但是 python 性能差呀。。

弱弱泣求
cy97cool
2017-11-13 11:55:27 +08:00
要是能自动把其他语言的库代码翻译过来就精彩了
ftdejo
2017-11-13 12:02:56 +08:00
已 star··话说想问下 LZ 用了大概多久的时间··
qdwang
2017-11-13 12:05:19 +08:00
@zhicheng 看来是对牛弹琴了,也罢
zhicheng
2017-11-13 12:08:39 +08:00
@ftdejo Lemon 的虚拟机大概用了一两个星期,解释器和编译器一个月,对象系统花的时间最长,光实现 callcc 这个函数就花了一个多星期,总共应该用了一个季度左右,其实 Lemon 三个月前就做完了,之所以现在发是因为 lemon-lang.org 的域名十月五号才过期可以注册。
cholerae
2017-11-13 12:09:23 +08:00
这语言跟别人比有没有什么优越之处?
zhicheng
2017-11-13 12:12:02 +08:00
@xsd3169 Lemon 的性能并不比 Python 好。。。感觉你的需求挺无聊的。。。
zhicheng
2017-11-13 12:14:36 +08:00
@cholerae 一个项目选择一个语言,不是因为一个语言比别的语言有什么优越之处,而是这个语言能不能符合项目的需求。
GeruzoniAnsasu
2017-11-13 12:16:55 +08:00
我感觉新创造的语言一定要专注于解决某个痛点的问题,一味吸收各种特性最后并不会变得优秀,只会看起来四不像

C++这种大而全但东西和概念太多神 tm 难用,内存管理靠上帝之眼,new 一下下辈子再回收
python 动态类型 项目一大立马吃屎传进来的是个什么鬼完全不知道,文档少写一点都要命
JS PHP 弱类型 = == === 数字字符串数组一混分分钟自己挖个洞
java 要性能被虚拟机拦死,内存占用 1 个 T (看向 jetbrains ),GC 一动卡三年

这些语言都有独特的短板,而相当多语言就是专门解决痛点诞生的,比如 rust typescript lua

我觉得 lua 就非常独特而且很成功,目标就是在一个高性能低抽象难开发的系统中引入能快速实现逻辑的脚本,而高级数据结构和库都可在宿主中提供,lua 只专注提供方便于宿主沟通的相互接口。看看游戏结构,一个引擎+一坨数据+一坨琐碎的特效 /动作 /剧本等等业务逻辑,与 lua 简直天作之合,于是几乎在所有游戏里都能见到 lua 的身影



再看看 lz 发的官网文档。。。首先语法大杂烩,python js 都有,然后同样是动态类型,有着 python 一样的短板,也没有更多语法糖尝起来更甜,到这就已经 emmmmmmmmm 了,然后仔细一看还有两种空类型,两种数字,还跟 lua 一样从较少的数组解包到更多变量不会报错自动 nil,感觉已经眼前一黑。括号和分号的问题其实……挺 hhh 的,看起来就是凭个人口味的结果,并没有重新思考过各种 token 到底起什么作用,不然你应该能发现那么多种注释没什么用并且分号作为单行分句符并不需要行尾强制

能自主实现编程语言是非常牛逼的大牛,我表示很崇拜。。。但是大牛玩玩具也只是玩具,变不成宝剑
zhicheng
2017-11-13 12:20:46 +08:00
@qdwang 所以我不止 “品味差” 又成 “牛” 了?我觉得通过攻击别人获得优越感挺无聊的,你觉得呢?如果你要批评 Lemon,有理有据的,你说得对的地方,我可能会修改,如果我觉得你说得不对的地方,我可能会发表一下看法。如果你觉得我 “品味差” 那我建议你憋在心里不要说出来。
zhicheng
2017-11-13 12:28:23 +08:00
@GeruzoniAnsasu 对不起,我无法理解你的评论。如果你是过来表达 “哇,作者在两万行代码的实现里提供了 Python JS 和 Lua 所有的功能” ,那么谢谢你地夸奖。
ftdejo
2017-11-13 12:33:21 +08:00
@zhicheng YM 大佬 有博客地址吗 拜读下 --from 一个汇编就根本没学懂的渣渣
zhicheng
2017-11-13 12:36:18 +08:00
@ftdejo https://www.textarea.com/zhicheng/ 不需要学汇编,你只要看一下 opcode.h 里的虚拟机指令就可以了,Lemon 是通过虚拟机解释执行的。
ftdejo
2017-11-13 12:43:15 +08:00
@zhicheng emmmm 听着你解释 想起了上次给我一个丝毫不懂编程的朋友解释写代码的时候··简直一模一样··蛤蛤

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/405696

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX