首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  程序员

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

  •  2
     
  •   withablink · 130 天前 · 1817 次点击
    这是一个创建于 130 天前的主题,其中的信息可能已经有所发展或是发生改变。

    请看 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
        1
    CantoAllaVita   130 天前 via iPhone
    看起来很不错啊,加油
        2
    CrabAss   130 天前
    语法过于灵活,看得我有点儿晕
        3
    CrabAss   130 天前
    repo 里看了一圈好像没什么东西……有 BNF 文档吗?
        4
    withablink   130 天前
    @CrabAss 还没呢... 刚开始。会先做 MVP。

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

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

    @ixx 代码太"简洁",确实往往会降低可读性,所以,这个冒号语法是一个可选的语法糖
        21
    withablink   128 天前
    @thautwarm 您好,谢谢:

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

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

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

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

    4. 这是很重要也很费劲的一个事情,希望做好 。如果发现有特性会在此明显地拖后腿,那么会不加这个特性。
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1886 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 22ms · UTC 16:22 · PVG 00:22 · LAX 09:22 · JFK 12:22
    ♥ Do have faith in what you're doing.