V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
withablink
V2EX  ›  程序员

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

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

    请看 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
    看起来又是一门要用游标卡尺才能写的代码
    shuax
        9
    shuax  
       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   ·   实用小工具   ·   3535 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 00:10 · PVG 08:10 · LAX 16:10 · JFK 19:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.