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