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