有没有,没有 if else 的编程语言? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
heheda11
V2EX    问与答

有没有,没有 if else 的编程语言?

  •  1
     
  •   heheda11 2021-07-06 11:11:36 +08:00 5206 次点击
    这是一个创建于 1626 天前的主题,其中的信息可能已经有所发展或是发生改变。

    。。。。就问问

    第 1 条附言    2021-07-06 17:29:59 +08:00
    补充一下
    没有任何类似于 IF else 的分支判断功能
    36 条回复    2021-07-08 17:10:32 +08:00
    AoEiuV020
        1
    AoEiuV020  
       2021-07-06 11:19:07 +08:00
    汇编,
    JamesMackerel
        2
    JamesMackerel  
       2021-07-06 11:44:15 +08:00
    @AoEiuV020
    汇编有无条件跳转和有条件跳转的指令,四舍五入就是 if else 。我猜想一个语言可以没有循环功能,但是条件分支应该是必须的。
    banmuyutian
        3
    banmuyutian  
       2021-07-06 11:46:12 +08:00
    机器码
    phobal
        4
    phobal  
       2021-07-06 11:54:19 +08:00
    如果 css 算编程语言的话它算是没 if else 吧
    chiu
        5
    chiu  
       2021-07-06 12:52:46 +08:00
    Bash?

    [ -e ~/file.txt ] && cat ~/file.txt || echo "Hello" > ~/file.txt
    NoDocCat
        6
    NoDocCat  
       2021-07-06 13:29:03 +08:00
    @JamesMackerel 没有循环还可以用跳转和递归来处理重复任务, 但是没有条件分支这语言就啥都不能干了.
    stx0821
        7
    stx0821  
       2021-07-06 13:58:52 +08:00
    某些 esoteric language
    ///是一门由坦纳斯韦特( Tanner Swett )在 2008 年发明的编程语言。该编程语言只含有一个操作符“/”,功能是替换字符串。
    EscYezi
        8
    EscYezi  
       2021-07-06 14:12:06 +08:00 via iPhone
    brainfuck
    TimePPT
        9
    TimePPT  
    PRO
       2021-07-06 15:11:25 +08:00   1
    理论上实现了全套逻辑门后,if else 就可以替换了
    jy02201949
        10
    jy02201949  
       2021-07-06 15:56:30 +08:00
    为什么要折磨自己
    Leonard
        11
    Leonard  
       2021-07-06 15:57:19 +08:00
    换成 switch case 呗
    U7Q5tLAex2FI0o0g
        12
    U7Q5tLAex2FI0o0g  
       2021-07-06 15:59:54 +08:00
    @phobal #4
    css 的 media 写法也可以算的上是某种 if
    aguesuka
        13
    aguesuka  
       2021-07-06 16:10:01 +08:00   1
    https://en.wikipedia.org/wiki/Conditional_(computer_programming)

    有些低级语言没有 if
    有些上古语言只有 if 没有 else (some dialects of BASIC in the 1980s)
    有些函数式语言没有 if 关键字, 但可以自己实现(lisp).
    有些语言没有 if-else 关键字但可以通过模式匹配来实现.
    aitaii
        14
    aitaii  
       2021-07-06 16:15:18 +08:00
    记得有个语言是这样写的 -+---+++++---++---
    cmdOptionKana
        15
    cmdOptionKana  
       2021-07-06 16:18:13 +08:00
    说清楚,是没有这个关键词,还是彻底没有任何形式的分支判断功能。
    wangkun025
        16
    wangkun025  
       2021-07-06 16:47:02 +08:00
    顺序、分支、循环三种结构
    缺了分支,循环也只能是死循环。
    应该实现不了。

    不行的话,替换下关键字,把 if 变成别的啥。
    L5tEU4WX072p5P42
        17
    L5tEU4WX072p5P42  
       2021-07-06 17:27:02 +08:00 via iPhone
    @TimePPT 此话怎讲?
    wellsc
        18
    wellsc  
       2021-07-06 17:36:34 +08:00
    @chiu if fi?
    chiu
        19
    chiu  
       2021-07-06 18:31:27 +08:00 via Android
    @wellsc #18
    开玩笑的
    MakeItGreat
        20
    MakeItGreat  
       2021-07-06 18:45:00 +08:00 via Android
    Css 判断屏幕尺寸不就是个 if else?
    eason1874
        21
    eason1874  
       2021-07-06 18:57:21 +08:00
    除非把 markup language 也算作 programming language,否则不可能没有条件判断,这是编程最基础的东西了。
    iceheart
        22
    iceheart  
       2021-07-06 18:59:26 +08:00 via Android
    XML,HTML
    amimo
        23
    amimo  
       2021-07-06 20:25:24 +08:00
    用楼上老哥们说的 switch-case 貌似就可以。比如比较两数,可以将他们减,使用得数的符号位(正负)判断他们的大小。

    int32_t min(int32_t a, int32_t b)
    {
    int c = ((a - b) >> 31) & 1; // 取(a - b) 符号位 0, 1
    switch (c) {
    case 0:
    return b;
    case 1:
    // c == 1 => a - b < 0 -> a < b
    return a;
    }
    }
    CosimoZi
        24
    CosimoZi  
       2021-07-06 20:38:55 +08:00
    理解一下图灵机
    explore365
        25
    explore365  
       2021-07-06 20:39:00 +08:00
    什么,计算机不是二进制的?
    mxT52CRuqR6o5
        26
    mxT52CRuqR6o5  
       2021-07-06 20:40:26 +08:00
    没有分支判断的话实现不了图灵完备吧,brainfuck 也是有分支判断的
    Tink
        27
    Tink  
    PRO
       2021-07-06 20:48:16 +08:00 via Android
    how to make love 没有判断
    inhzus
        28
    inhzus  
       2021-07-06 21:34:28 +08:00 via iPhone
    广义的来说应该都有,如果只是狭义的 if else,指没有类似代码块形式的,C++ 模板语言偏特化可以算一个
    kaneg
        29
    kaneg  
       2021-07-06 23:13:04 +08:00
    计算机基础里提到过一门完整的语言必须具备以下三个条件:
    顺序
    条件
    循环
    icyalala
        30
    icyalala  
       2021-07-06 23:34:12 +08:00
    如果你说的是 "没有分支判断" 的 "图灵完备" 语言,那没有。
    pkookp8
        31
    pkookp8  
       2021-07-06 23:47:51 +08:00 via Android
    #define if while
    狗头保命
    msg7086
        32
    msg7086  
       2021-07-07 00:40:01 +08:00 via Android
    从定义上就不满足了。没有判断的不能叫编程语言。
    zk8802
        33
    zk8802  
       2021-07-07 07:30:37 +08:00
    fo0o7hU2tr6v6TCe
        34
    fo0o7hU2tr6v6TCe  
       2021-07-07 13:45:14 +08:00
    icyalala
        35
    icyalala  
       2021-07-07 18:14:45 +08:00
    @zk8802 看来是我想当然了。。去搜了一下资料:
    mov 是图灵完备的:
    https://web.archive.org/web/20190331191157/https://www.cl.cam.ac.uk/~sd601/papers/mov.pdf
    其他各种奇葩实现:
    https://en.wikipedia.org/wiki/One-instruction_set_computer
    甚至还有更奇葩的:
    https://github.com/jbangert/trapcc
    hu8245
        36
    hu8245  
       2021-07-08 17:10:32 +08:00
    换个行业吧
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5338 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 41ms UTC 02:48 PVG 10:48 LAX 18:48 JFK 21:48
    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