
1 pdxjun Nov 13, 2024 图裂了 |
2 4332weizi Nov 13, 2024 头一次见这种 new |
4 chashao Nov 13, 2024 new 是一个库函数调用么? |
5 daqing OP |
6 menglizhi2333 Nov 13, 2024 这个语言设计目的是什么? |
8 daqing OP @menglizhi2333 目的是希望能更加清晰的表达思想 |
9 bzj Nov 13, 2024 语法像 go ,但是面向对象简直就是画蛇添足 |
10 sankooc Nov 13, 2024 编译成目标代码么 还是需要运行时啊 |
11 Ocyss Nov 13, 2024 类型首字母大写有什么好处, 小写能作为变量么? |
12 MisterQ Nov 13, 2024 不懂设计开发语言底层逻辑,纯好奇,为什么新语言就要定义一种和其他语言都不一样的语法(比如这个 new ),为了表明是不一样的语言? |
13 dandycheung Nov 13, 2024 via Android 这个 new 设计的挺好的。想当年从 C 语言拓展到 C++ 的时候,一开始接触到 new 的用法非常不自在,感觉明明是一个执行动作的函数,为什么不用小括号,毕竟连 if 后面都有嘛, |
14 InDom Nov 13, 2024 看着像 GoScript 。 |
15 shakaraka PRO go 和 js 的杂交版 |
16 finab Nov 13, 2024 不如改成 new HelloName(name: name) ,多个参数 new HelloName(name: name, name2: name2) |
18 thinkwei2012 Nov 13, 2024 |
19 Leviathann Nov 13, 2024 出现了关键字 func goboy:像 go |
22 ztty Nov 13, 2024 我的理解设计新的编程语言所需要做的就只是写个新的编译器,不知道我的理解对不对 |
24 daqing OP @dandycheung 是的,Emo 的设计目标之一,是尽可能的符合常识。 |
28 daqing OP @Felldeadbird 目前是用 Go 实现的 |
30 PTLin Nov 13, 2024 你这风格融合了不少语言呀,rust dart 什么的 |
33 shakaraka PRO @daqing #27 还有 ```name: String``` ts 里的就是这样,go 的是 ``` func hello (name string) 而且你函数还没设计返回类型呢,默认难道是 void ? |
34 MrLiu04 Nov 13, 2024 很好,我想用你这款语言来编写一个外卦 APP ,就是监听微信抢红包,定时打开钉钉打卡,还能自动帮我薅羊毛,可以吗? |
36 CEBBCAT Nov 13, 2024 |
37 Donahue Nov 13, 2024 大学生 编译原理课程设计水平? |
38 rxswift Nov 13, 2024 6 啊 |
39 yolee599 Nov 13, 2024 前面有 var name ,后面有 const runner ,有点看不懂。 这个 new 的语法属实有点抽象,比较嗦,以及难看懂,看样子是可以传任意多参数?只要在类里面加一个变量就可以再加一个构造参数? |
42 jsq2627 Nov 13, 2024 > V2EX 第 51 号会员 哇 真大佬 |
43 2024 Nov 13, 2024 可以开源出来吗,代码学习学习 |
44 Pantheoon Nov 13, 2024 文件后缀为啥是 emo?是因为写这个语言的这段时间情绪状态不高吗 |
45 OnlyO Nov 13, 2024 厉害, 支持, 虽然我看着感觉像是 Kotlin |
46 fcten Nov 13, 2024 objective-go |
47 Nzelites Nov 13, 2024 虽然一下没理解设计思路 但是看起来挺有趣的 |
48 iamzuoxinyu Nov 13, 2024 提一点:如果你的类型不作为运行时的一种数据(类似 lua/js 那种 prototype oriented 模式),new 作为关键字,最好不要用函数调用的语法, 否则 new() 的第一个参数传入类型名字其实也挺奇怪的(除非)。 |
49 Ghostisbored Nov 13, 2024 都已经卷到这个程度了么 |
51 byp Nov 13, 2024 啥时候自举啊 |
52 yangliudi123 Nov 13, 2024 via iPhone 编译器不是必须的,解释器也行。 |
53 caola Nov 13, 2024 6 啊,我也有过自己写一套语言。 我的想法是开发一个全部只有 字符串(string) 一种类型的语言,这样就不用去处理各种类型上的烦事,考虑到内存分配问题可以提前手动指定是属于 tinytext 、text 、mediumtext 、longtext ,默认是自动变长的。随着以后的计机算性能越来越好,这种单一类型的语言性能不会很差,重要的是开发效率上去了。 与 PHP 不同的是 这个语言是面向底层级的语言,与 rust 一样要属于内存安全型。 好了,我的想象已经完了,但我肯定不会去开发的,除非财务自由了再考虑付出行动研究。 |
54 newtype0092 Nov 13, 2024 想起来以前做游戏的时候,用 lua 这种没有 class 的脚本语言需要模拟 class 的时候就会定义一个类似这样的 new 方法来初始化。 这里 new 的第二个参数是个 kv 字典,如何保证 k 和 class 的成员属性对应就很麻烦,能处理的方式非常多,对 class 这种基础特性来说就有点太自由了。 |
55 asche910 Nov 13, 2024 本来想找找茬的,一看“V2EX 第 51 号会员”,算了,我不够格 |
56 Jirajine Nov 13, 2024 via Android @caola #53 上一个只有字符串一种类型的语言是 shell 脚本,还有一个 Tcl 也能算。开发效率如何我就不说什么了。 |
58 Kilerd Nov 13, 2024 看了看源码: 手搓 parser 、没有抽象出 VM ,用了 native golang 来做 eval ,没有抽象出 opcode 和 bytecode 还在初始阶段就是了。 看起来是一个强类型的解析式语言 |
59 lambdaX999 Nov 13, 2024 确实像 swift |
62 daqing OP @yolee599 var 是变量,const 是声明常量,应该不难理解吧。new 是一个构造函数,用于创建类的实例。new 的第二个参数,是用于初始化类的实例变量的。 |
65 daqing OP @iamzuoxinyu 类本身,也是一个对象。HelloWorld 是类对象,传入这个名字没问题吧,你要是有 ruby 经验,就能理解。 |
67 daqing OP @newtype0092 最简单的对应方法,就是一一对应啊。比如: class Foo { var name: String var title: String } cosnt foo = new(Foo, {"name": "David", "title": "CTO"}) 这里的规则,就是一一对应。Foo 声明了哪些字段,后面的 kv 字典,就去初始化赋值。 |
70 daqing OP @lambdaX999 是的,受 Swift 影响比较大 |
71 newtype0092 Nov 13, 2024 @daqing #67 我是指维护这种简单的对应方式,可能会需要复杂的处理逻辑。 举个例子,如果把 "name" typo 成 "nama" 会怎么样? 如果严格不允许这种情况,那这里 k 作为一个字符串类型就很奇怪,因为字符串不匹配的错误一般在执行时才会抛出。但这种问题明显在静态检查时就抛出来更好。 |
72 daqing OP |
73 daqing OP 不过,从语义上讲,如果 new()的第二个参数,用来初始化值,那么,不应该出现,和 class 中的定义,对不上的情况。所以,这时候也可以作为 Error ,抛出。 |
74 xiangyuecn Nov 13, 2024 回复一句 没别的意思 单纯见不得 const 关键字 |
75 daqing OP |
76 inframe Nov 13, 2024 开发角度:用这种技能用来写 DSL 比较方便 |
78 Kevin2 Nov 13, 2024 via Android 感觉超酷! |
81 struggle001 Nov 14, 2024 推广下 www.fibjs.org |
82 struggle001 Nov 14, 2024 https://fibjs.org 不带 www |
84 levelworm Nov 14, 2024 @inframe 我觉得如果团队允许的话,的确蛮爽的,相当于自己创造一门语言了。只不过大多数时候大伙还是会选用已有的选项。创造一门语言需要的精力实在是太多了。光是测试就要写很多。 楼主这种如果能够编译成 LVVM 的 IR 就可以了,不用自己写后端。 |
86 zhiyu1998 Nov 14, 2024 Emo 语言,越写越 Emo |
88 ixoy Nov 14, 2024 新语言解决了什么特别问题?有什么别于其他语言的新特性? |