Basis:一种新编程语言轮子,类似 Python / C++ / Go / ... 的混合,请大家拍砖,多谢多谢 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
withablink
V2EX    程序员

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

  •  3
     
  •   withablink
    BlinkDL 2019-06-14 19:22:13 +08:00 3799 次点击
    这是一个创建于 2378 天前的主题,其中的信息可能已经有所发展或是发生改变。

    请看 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

    21 条回复    2019-06-16 15:51:12 +08:00
    CantoAllaVita
        1
    CantoAllaVita  
       2019-06-14 19:27:48 +08:00 via iPhone
    看起来很不错啊,加油
    CrabAss
        2
    CrabAss  
       2019-06-14 19:57:43 +08:00
    语法过于灵活,看得我有点儿晕
    CrabAss
        3
    CrabAss  
       2019-06-14 20:02:23 +08:00
    repo 里看了一圈好像没什么东西……有 BNF 文档吗?
    withablink
        4
    withablink  
    OP
       2019-06-14 20:04:23 +08:00
    @CrabAss 还没呢... 刚开始。会先做 MVP。

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

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

    @ixx 代码太"简洁",确实往往会降低可读性,所以,这个冒号语法是一个可选的语法糖
    withablink
        21
    withablink  
    OP
       2019-06-16 15:51:12 +08:00
    @thautwarm 您好,谢谢:

    1. 希望和 C++ 比较像,例如 [继承 /多态 /泛型 /模板] 都是 C++ 的层次。另外希望支持 [RESULT_TYPE, ERR_TYPE] 这种 union type。

    2. 多范式,不过还是以过程和对象为主,不像函数式语言那样可变(所以扩展性也不会特别强)。不过,考虑为 [异步 /多线程 /分布式] 做一些特殊的范式。

    3. 最初步的目标是 [可以混合 C++ 和 Python 的写法,但也拥有 C++ 的速度] ,这可能也是很多人的愿望。

    最初的领域,是机器学习,因为这个对效率(算力&内存)有要求,但常用的 Python 实在效率太低了,容易成为瓶颈,无法令人满意。

    4. 这是很重要也很费劲的一个事情,希望做好 。如果发现有特性会在此明显地拖后腿,那么会不加这个特性。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5230 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 05:51 PVG 13:51 LAX 21:51 JFK 00:51
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86