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