V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
heheda11
V2EX  ›  问与答

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

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

    。。。。就问问 🤗🤗🤗

    第 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  
       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 呗
    littleylv
        12
    littleylv  
       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 变成别的啥。
    Mogamigawa
        17
    Mogamigawa  
       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  
       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   ·   实用小工具   ·   1341 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 23:46 · PVG 07:46 · LAX 15:46 · JFK 18:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.