我在设计开发的编程语言, Hello, World 跑通了

305 天前
 daqing

语言暂时取名叫:Emo 。

目前实现了函数和类的调用。

看图说话:

9506 次点击
所在节点    分享创造
89 条回复
daqing
305 天前
@CEBBCAT 是的,代码就是基于那个的基础
daqing
305 天前
@yolee599 var 是变量,const 是声明常量,应该不难理解吧。new 是一个构造函数,用于创建类的实例。new 的第二个参数,是用于初始化类的实例变量的。
daqing
305 天前
@Pantheoon 因为语言就叫 Emo ,所以文件名是 abc.emo
daqing
305 天前
@OnlyO 天下语言一大抄。其实都差不多的
daqing
305 天前
@iamzuoxinyu 类本身,也是一个对象。HelloWorld 是类对象,传入这个名字没问题吧,你要是有 ruby 经验,就能理解。
daqing
305 天前
@byp 那估计要等 1.0 之后了,现在还是语法设计阶段
daqing
305 天前
@newtype0092 最简单的对应方法,就是一一对应啊。比如:

class Foo {
var name: String
var title: String
}

cosnt foo = new(Foo, {"name": "David", "title": "CTO"})

这里的规则,就是一一对应。Foo 声明了哪些字段,后面的 kv 字典,就去初始化赋值。
daqing
305 天前
@fcten 这个名字不错,犀利
daqing
305 天前
@Kilerd 是的,还在非常早期的阶段,连 0.1 都算不上吧。
daqing
305 天前
@lambdaX999 是的,受 Swift 影响比较大
newtype0092
305 天前
@daqing #67 我是指维护这种简单的对应方式,可能会需要复杂的处理逻辑。

举个例子,如果把 "name" typo 成 "nama" 会怎么样?

如果严格不允许这种情况,那这里 k 作为一个字符串类型就很奇怪,因为字符串不匹配的错误一般在执行时才会抛出。但这种问题明显在静态检查时就抛出来更好。
daqing
305 天前
@newtype0092 首先,这里说的静态检查问题,通过写一个静态检查器,是可以捕捉这种 typo 的情况的。

另外,对于语言来说,如果 name 写错了,匹配不上,那么,对象的初始值,就是 nil
daqing
305 天前
不过,从语义上讲,如果 new()的第二个参数,用来初始化值,那么,不应该出现,和 class 中的定义,对不上的情况。所以,这时候也可以作为 Error ,抛出。
xiangyuecn
305 天前
回复一句 没别的意思 单纯见不得 const 关键字
daqing
305 天前
@xiangyuecn 是的,我也觉得不太好,所以最新的代码,已经去掉了 const 关键字。

改成通过:

define(MAX_AGE, 35)

这种语句,来定义常量。
inframe
305 天前
开发角度:用这种技能用来写 DSL 比较方便
moudy
305 天前
@daqing #72 静态检查搞不定 { kv2.get("fieldName"):kv2.get("fieldValue")}
Kevin2
305 天前
感觉超酷!
daqing
305 天前
@inframe 今天也有朋友提到 DSL 的问题
daqing
305 天前
@Kevin2 谢谢支持啦

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

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

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

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

© 2021 V2EX