Basis:一种新编程语言轮子,类似 Python / C++ / Go / ... 的混合,请大家拍砖,多谢多谢

2019-06-14 19:22:13 +08:00
 withablink

请看 PDF 草稿:

https://github.com/BlinkDL/Basis/blob/master/docs/basislang.pdf

强类型,静态类型。但可省略类型,由编译器自动推断静态类型。

请看 Basis 代码示例:

import sys.console as console  	

isPrime(n) :						
    n <= 1 : return 'bad'               
    for i = 2, i * i <= n, i++
        n % i == 0 : return 'bad'
    return 'good'

main : 										
    console.writeLine(isPrime(17))

Basis 中的冒号尤为灵活。上述程序,没有 if 语句,但仍然容易理解。

如果您有知乎账号,也欢迎在知乎讨论: https://zhuanlan.zhihu.com/p/68906047

3307 次点击
所在节点    程序员
21 条回复
CantoAllaVita
2019-06-14 19:27:48 +08:00
看起来很不错啊,加油
CrabAss
2019-06-14 19:57:43 +08:00
语法过于灵活,看得我有点儿晕
CrabAss
2019-06-14 20:02:23 +08:00
repo 里看了一圈好像没什么东西……有 BNF 文档吗?
withablink
2019-06-14 20:04:23 +08:00
@CrabAss 还没呢... 刚开始。会先做 MVP。

由于太灵活,很可能会遇到歧义,所以都需要想清楚各个特性的设计。
0xcb
2019-06-14 20:07:47 +08:00
👍,感觉跟 python 太像了,这段没有看出强类型的,
rawidn
2019-06-14 20:20:13 +08:00
说实话不如加上 if 容易理解… 写代码的人不会介意多写两个字母
withablink
2019-06-14 20:42:12 +08:00
@0xcb 谢谢,例如 string 和 其它 不自动互转,bool 和 其它 不自动互转,int 和 float 不自动互转,等等
youngxhui838
2019-06-14 20:44:03 +08:00
看起来又是一门要用游标卡尺才能写的代码
shuax
2019-06-14 20:44:22 +08:00
给我来一个 Python 的语法,C++的性能就够了。
HatMatrix
2019-06-14 20:46:09 +08:00
没啥新东西啊
xrlin
2019-06-14 20:46:18 +08:00
@shuax #9 crystal ?
withablink
2019-06-14 20:51:31 +08:00
@youngxhui838 可能也会支持用 { } 控制域... 这将是一个“想怎么写就怎么写”的语言。
FireCat
2019-06-15 11:30:05 +08:00
我看你知乎了。无 GC 还做脚本,这俩不互斥吗?
ysc3839
2019-06-15 11:55:25 +08:00
要让更多人参与进来的话建议做好国际化。
目前有一些 commit 是中文的,建议趁早改掉。
ixx
2019-06-15 18:27:28 +08:00
个人觉得 if 不是保留好些 对解析影响不大 但对读代码直观多了
thautwarm
2019-06-15 18:30:56 +08:00
lz 您好,很厉害。
几个问题:
1. 类型系统设计是什么样的?如你所说这是静态语言的话,这一点会是关键
2. 语言擅长的抽象方式是什么?基于类型的多态,面向对象多态,语法宏 /语法形式抽象?
3. 语言针对的问题?如果是 DSL,针对的什么方面。如果是通用编程,在各个领域的示例代码大概什么样(不需要实现)
4. 如果静态类型不够强,运行时的 debug 支持如何?运行时报错是否 make sense ?编译运行 latency 如何(比如 julia 语言几乎是完美后端语言,不考虑 latency 的话)
thautwarm
2019-06-15 18:35:56 +08:00
一些夹带个人喜好别的问题,
1. 语言似乎和 py 一样是 statement first 的,且所有表达式都无法包括语句?有没有什么 expression first 风格的模拟方法?
2. 扩展性。有没有办法定义新运算符,包括优先级结合性。有没有办法自定义类型推导规则。有没有办法定义新的语法,新的语言构造以及相应语义。
thautwarm
2019-06-15 18:38:19 +08:00
最后,编辑器支持什么的也很重要了。不比当年裸 vim/emacs 写。不求专门的 ide, 可以快速做一个 emacs mode 改善入门体验
1010543618
2019-06-15 20:11:02 +08:00
感觉这样写出来的程序要会好多种语言的语法糖的人才能看懂

见过一个大神有过类似的想法,不过看他的还是 JS 和 PY 的语法较多 https://github.com/jamiebuilds/ghost-lang
withablink
2019-06-16 15:23:24 +08:00
@ysc3839 谢谢,目前主要先做出 MVP。然后肯定需要做好英文介绍

@ixx 代码太"简洁",确实往往会降低可读性,所以,这个冒号语法是一个可选的语法糖

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

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

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

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

© 2021 V2EX