shyangs
V2EX  ›  编程

坑最少的语言是哪个?

  •  1
     
  •   shyangs · Jan 19, 2015 · 11762 views
    This topic created in 4316 days ago, the information mentioned may be changed or developed.

    语言或多或少都有坑。

    // 像 javascript 不小心把字符串和数值加在一起
    alert("1"+2);  // "12"
    
    # python 里,把字符串和数值加在一起会报 TypeError,避开了这个坑
    
    # 但是...
    def fn(x, L=[]):
      L.append(x)
      return L
    
    print(fn(1))   # [1]
    print(fn(7))   # [1, 7]
    print(fn(13))  # [1, 7, 13]
    
    // 而 javascript (ES6) 没有上面那个坑
    function fn(x, L=[]){
      L.push(x);
      return L.toString();
    }
    
    console.log(fn(1))   // "1"
    console.log(fn(7))   // "7"
    console.log(fn(13))  // "13"
    

    想了想 javascript, python 都是脚本,那考虑 C语言,又发现 C语言变量声明时未赋初值 就拿来使用会跑出随机的垃圾值,反而 python 中的变量不需要声明(或者说,赋值的同时也声明了)避开了这个坑。

    既然语言或多或少都有坑,那就有多寡的差别。各位同学接触过(或听过)的语言坑最少的是哪个?

    94 replies  •  2023-03-18 07:00:57 +08:00
    skl
    skl
    Jan 19, 2015
    1
    Lua, C#
    yakczh
    yakczh
    Jan 19, 2015
    2
    php
    nicodelee
    nicodelee
    Jan 19, 2015❤️2
    3
    语言的坑我不太了解。
    自己不坑自己才是
    tabris17
    tabris17
    Jan 19, 2015
    4
    JAVA、C#
    clino
    clino
    Jan 19, 2015 via Android
    5
    估计lua会比较少

    第一个不是坑吧,强类型和弱类型
    zkd8907
    zkd8907
    Jan 19, 2015
    6
    西吓破
    besto
    besto
    Jan 19, 2015
    7
    想了想 javascript, python 都是脚本,那考虑 C语言,又发现 C语言变量声明时未赋初值 就拿来使用会跑出随机的垃圾值,反而 python 中的变量不需要声明(或者说,赋值的同时也声明了)避开了这个坑。
    =================================================================
    没赋初始值的变量,在编译的时候没有告警?
    raincious
    raincious
    Jan 19, 2015❤️1
    8
    Go会要求显式类型转换,可以“避开”这样的“问题”吧?

    就楼主的问题……

    汇编语言坑最少。(是的,就几个命令,有坑也是人造成的……)

    楼主下一个帖子预测:《坑最少的CPU是哪个?》
    tini9
    tini9
    Jan 19, 2015
    9
    python的坑算少的了,一般来说,特色功能越少坑越少。
    hahastudio
    hahastudio
    Jan 19, 2015
    10
    哪个语言表现力弱,坑就少呗
    你看谁说过汇编坑= =
    spacewander
    spacewander
    Jan 19, 2015
    11
    功能最少的语言也即坑最少的语言,比如Brainfuck
    arnofeng
    arnofeng
    Jan 19, 2015 via Android❤️1
    12
    php是世界上最好的语言
    DingSoung
    DingSoung
    Jan 19, 2015
    13
    额,我就是汇编的,是不是快绝种了
    club
    club
    Jan 19, 2015
    14
    @arnofeng 呵呵
    supergrubby
    supergrubby
    Jan 19, 2015
    15
    强类型、静态类型检查 :Java/C#
    hjc4869
    hjc4869
    Jan 19, 2015❤️1
    16
    照楼主的意思,C#的坑貌似少。。
    supergrubby
    supergrubby
    Jan 19, 2015
    17
    强类型保证没有untrapped behavior和部分的trapped behavior
    静态类型检查保证编译时没有ill behavior
    linuxer
    linuxer
    Jan 19, 2015
    18
    It's not a 坑; it's an undocumented feature!
    xxstop
    xxstop
    Jan 19, 2015
    19
    php+2
    FrankFang128
    FrankFang128
    Jan 19, 2015
    20
    你自己不加引号,怪语言?
    alsotang
    alsotang
    Jan 19, 2015
    21
    eclipse 是世界上最好的 ide
    yingluck
    yingluck
    Jan 19, 2015
    22
    @dingsoung 汇编飘过
    jyootai
    jyootai
    Jan 19, 2015
    23
    HTML 是最富表达力、坑最少的语言
    infinte
    infinte
    Jan 19, 2015❤️1
    24
    坑最少?Standard ML,全部有形式化定义,绝对没坑。
    icedx
    icedx
    Jan 19, 2015
    25
    第而个不是坑吧, 类型不同
    tioover
    tioover
    Jan 19, 2015
    26
    欢迎来到 Rust。
    有坑欢迎提交修改。
    dddd1919
    dddd1919
    Jan 19, 2015
    27
    多坑程序猿
    otakustay
    otakustay
    Jan 19, 2015
    28
    C#因为有扩展方法,乱玩也容易有些坑,我看JAVA的坑才少
    otakustay
    otakustay
    Jan 19, 2015
    29
    @jyootai HTML真不行,一个标签闭合就能玩死
    messense
    messense
    Jan 19, 2015
    30
    楼主说的 Python 那个能算坑么,是不懂 Python 对函数参数初始化的处理造成的吧.....语言特性不能说成是坑吧,被“坑”到说明对这个语言理解不够啊
    aciscoa
    aciscoa
    Jan 19, 2015
    31
    java~
    binjoo
    binjoo
    Jan 19, 2015
    32
    易语言
    vilicvane
    vilicvane
    Jan 19, 2015
    33
    楼主说的 JavaScript 的特性也不是坑, 而是非常有用的特性. 并且也不是 @linuxer 说得 undocumented feature, 因为这些特性都是非常严谨地写入了 ECMAScript 标准中的.

    JavaScript 中的 toString() 和 valueOf() 是两个非常有意思的方法, 之前大家经常提到的 [] + [], {} + {}, [] + {}, {} + [] 也是非常好的切入点, 但如果止步于笑笑, 亏的就是自己咯.
    bugeye
    bugeye
    Jan 19, 2015
    34
    C语言那是feature啊,声名就给初值要浪费CPU的啊。
    loading
    loading
    Jan 19, 2015 via Android
    35
    汇编,几乎没有你不知道的东西,实在不行,机器码
    imwower
    imwower
    Jan 19, 2015❤️1
    36
    C#是语法最优美的语言;
    语法、语法糖、lambda等,
    现在.net 4.5 和5.0就算很完美了,以后再演化,也只是小内容更新
    hooluupog
    hooluupog
    Jan 19, 2015
    37
    Lisp。
    thinkif
    thinkif
    Jan 19, 2015
    38
    从这个角度说,Swift 比 C# 坑更少
    jyootai
    jyootai
    Jan 19, 2015
    39
    @otakustay 照这样说,Java 少一个分号也玩死
    otakustay
    otakustay
    Jan 19, 2015
    40
    @jyootai 区别在于java少个分号连compile都过不了更别说运行,HTML则直接跑起来了各种错乱还要找好久错误在哪……所以我倾向于非强类型的语言坑都会相对多
    Monad
    Monad
    Jan 19, 2015
    41
    函数式大法好
    dallaslu
    dallaslu
    Jan 19, 2015
    42
    javascript:alert("1"-0+2)

    输出:3
    wheatcc
    wheatcc
    Jan 19, 2015❤️12
    43
    一天我路过一座桥,碰巧看见一个人想跳河自杀。我跑过去对他大喊道:“别跳,别死啊。”

    “为什么不让我跳?”他说。

    “因为还有很多东西值得我们活下去啊。”

    “有吗?比如说?”

    “呃……你做什么工作?”

    “程序员。”

    我说:“我也是!瞧,有共同点了吧。你是软件还是硬件?”

    “软件。”

    “我也是!PC 还是 Web?”

    “PC。”

    “我也是!Windows 还是 Linux 平台?”

    “Linux。”

    “我也是!那你使用 C 还是 C++?”

    “C++。”

    “我也是。1998 年的 C++ 98 还是 2011 年的 C++ 11?”

    “2011 年的 C++ 11。”

    “我也是。大括号写在后面还是写在下一行?”

    “下一行。”

    “去死吧!你这个异教徒人渣!”我一把将他推下桥去。
    shadyxu
    shadyxu
    Jan 19, 2015
    44
    Python里面不要用[], {}作为默认参数。
    jyootai
    jyootai
    Jan 19, 2015❤️1
    45
    @otakustay 不能这么说,在编译时检查错误是属于非脚本语言的特点,与是否是强类型无关。

    即使在java中少一个分号能立刻发现,那这也是借助强大IDE的特性,在vim(未装相关插件)或者记事本这类编辑器中写的话,真的会遇到这个坑。如果使用写HTML的IDE的话,也能即使发现标签问题。
    happywowwow
    happywowwow
    Jan 19, 2015
    46
    python 遇到最大的坑 类动态绑定属性-->当然这是特性 但是。。。
    曾经遇到一个bug, 最后竟然是写错了类的属性变量名。。。一个字母 r 变成了 n
    ichou
    ichou
    Jan 19, 2015
    47
    php+3
    tracebundy
    tracebundy
    Jan 19, 2015
    48
    haskell
    otakustay
    otakustay
    Jan 19, 2015
    49
    @jyootai 是,我经常把脚本/非脚本和强类型/弱类型搞混

    但我觉得java的坑少的重点在于有错易定位且错误不易到线上,而不是不容易出错。一个javac我就知道哪个文件哪一行少了分号,但是HTML……昨天我才一个标签闭合问题找了整整10分钟,整个页面就是乱的根本没有提示,一大片的标签也看得想睡着

    当然我可以用很强大的Htmllint类工具,但至今没有发现这么好的工具,特别是custom tag出现以后
    lincanbin
    lincanbin
    Jan 19, 2015 via Android❤️1
    50
    这不算坑,弱类型语言需要注意类型隐式转换,当一方为字符串,+号则作为字符串拼接符,实际使用中按规范编程不会踩到坑。
    这种都算坑只能说基础不扎实,像Python的字符串编码,你要说算坑吧,也不能算,只能是说不够傻瓜化,对菜鸟照顾不周,算不上语言缺陷。
    JavaScript的坑是像没有命名空间之类的天生缺陷。
    mulog
    mulog
    Jan 19, 2015
    51
    楼主这个例子..无力吐槽啊
    这么基础的语言特性搞不清楚我觉得就不要谈坑不坑的了
    恩 我就搞不清楚 所以从来不吐槽语言 XD
    9tyi
    9tyi
    Jan 19, 2015
    52
    你可以试一试IFTTT.







    ---------------------------------------
    真心话:你要是嫌麻烦就别学,除了IFTTT就没有不坑的
    zythum
    zythum
    Jan 19, 2015
    53
    这些如果你觉得算坑的话。请使用强类型的语言。就没有这种坑了。
    lincanbin
    lincanbin
    Jan 19, 2015
    54
    python没有隐式转换,应该这么写
    print "1"+str(2)
    JavaScript可以这么写
    alert("1"+2);

    实际上支持隐式转换,应该是个Feature,增强了鲁棒性,而且减少了输入量。
    人生苦短,我用隐式转换!
    这在弱类型解释型语言中是个相当不错的特性,当然孰优孰劣我不引战,这些几十年的老语言里,说是坑的真的不多,很多都是自己水平还不到,当然有的就真的是坑,例如Python自带的那些库的命名。
    lincanbin
    lincanbin
    Jan 19, 2015
    55
    我再开个地图炮吧,我见过的很多用Python入门或者长期用Python的程序员码力都明显不足,C/C++入门的,平均水平上就明显高一级。
    人生苦短,多打好基础。
    spacewander
    spacewander
    Jan 19, 2015
    56
    @lincanbin 貌似大部分高校教的第一门语言就是C/C++(无论是计算机系还是什么电力机械自动化)。难道大部分人的平均水平上就明显高一级?
    cst4you
    cst4you
    Jan 19, 2015
    57
    是中文
    lincanbin
    lincanbin
    Jan 19, 2015
    58
    @spacewander 如果他们是科班出身,好好学了的话,是如此的,明显基础要好一些。
    如果是靠期末以应付考试为目的那就当他们没学。

    我们学校一些文科专业是教Python的。
    lingo233
    lingo233
    Jan 19, 2015 via Android
    59
    @lincanbin 那用汇编会不会飞上天^﹏^
    hahastudio
    hahastudio
    Jan 19, 2015
    60
    @lingo233 写过 CPU 岂不是就要到宇宙外了= =
    lincanbin
    lincanbin
    Jan 19, 2015
    61
    @lingo233 汇编是低级语言,用来为高级语言奠基没什么作用。
    lingo233
    lingo233
    Jan 19, 2015 via Android
    62
    @hahastudio 如何写一个CPU😦求指导
    acgeo
    acgeo
    Jan 19, 2015
    63
    rust欢迎你
    Lentin
    Lentin
    Jan 19, 2015
    64
    手语?
    hahastudio
    hahastudio
    Jan 19, 2015❤️1
    65
    @lingo233 Verilog= =
    lingo233
    lingo233
    Jan 19, 2015
    66
    @hahastudio 竟然还有这个先make,如果以后有机会会看一看^^
    GhostFlying
    GhostFlying
    Jan 19, 2015 via Android
    67
    @hahastudio 还是更喜欢VHDL
    wenketel
    wenketel
    Jan 19, 2015
    68
    _(:3」∠)_ 小害羞
    yqt
    yqt
    Jan 19, 2015 via iPad
    69
    老有人说js到处是坑,只能说坑都是人都人挖。Just use the good parts.
    wezzard
    wezzard
    Jan 19, 2015
    70
    Swift
    luo123qiu
    luo123qiu
    Jan 19, 2015
    71
    @zkd8907 我很认真的念了三遍。。。
    shyangs
    shyangs
    OP
    Jan 19, 2015
    72
    @lincanbin 有一些弱類型語言,比如說 PHP ,數值加法運算符 和 字串連接符 用了不同符號。

    "5" + 5 == 10
    "5" . 5 == 55
    shyangs
    shyangs
    OP
    Jan 19, 2015
    73
    @wenketel 妳来灌水的吗?
    wenketel
    wenketel
    Jan 19, 2015
    74
    @shyangs 好无情,说得我是个水笔一样。
    xpol
    xpol
    Jan 19, 2015
    75
    @skl Lua + 1
    xdf331
    xdf331
    Jan 20, 2015 via Android
    76
    Basic,n年前的老物
    shyangs
    shyangs
    OP
    Jan 20, 2015
    77
    @wenketel 因为我知道妳唯一有在使用的是汉语,显然不能讨论这个主题←_←
    xieyudi1990
    xieyudi1990
    Jan 20, 2015
    78
    @hahastudio 正在弄CPU的飘过, 毕业论文, 乱序超标量... 刚刚把DRAM内存控制器调通了... 接下来: 缓存是哪种结构的呢? 发射宽度要定位多少? 要多少个功能单元...
    ffffwh
    ffffwh
    Jan 20, 2015
    79
    @clino
    动态类型/静态类型是设计不同。而弱类型是公认的坑。
    clino
    clino
    Jan 20, 2015 via Android
    80
    @ffffwh 我猜浏览器这种场合,为了尽量能正常跑,弱类型可能是比较好的选择
    CrispElite
    CrispElite
    Jan 20, 2015
    81
    js 这不算坑吧…………
    bjzhush
    bjzhush
    Jan 20, 2015
    82
    坑多少无所谓,主要看你能跳过多少
    34
    34
    Jan 20, 2015 via Android
    83
    @wenketel 文科?
    zztczcx
    zztczcx
    Jan 20, 2015
    84
    @shadyxu 这个真的是个要注意的地方
    lch21
    lch21
    Jan 20, 2015
    85
    难道你不用lint 吗?
    flynngao
    flynngao
    Jan 20, 2015
    86
    又来开战?
    snopy
    snopy
    Jan 20, 2015
    87
    用python做开发的多么?
    oimotis
    oimotis
    Jan 20, 2015
    88
    我所知道的C#是比较少坑,静态强类型,大部分问题编译器都说给你听了。
    laomutuo
    laomutuo
    Jan 31, 2015
    89
    楼歪了
    jedihy
    jedihy
    Feb 4, 2015
    90
    这个必然是汇编了。。。
    DingSoung
    DingSoung
    Feb 8, 2015
    91
    写汇编的路过
    gbooks
    gbooks
    Oct 14, 2015
    92
    java 学生撸过
    XuAaron
    XuAaron
    Jul 15, 2018
    93
    怎么能说坑呢,这是 feature,是 feature 啊。
    charlie21
    charlie21
    Mar 18, 2023 via Android
    94
    python 那个行为是什么编程语言的通用语言特性吗? or 此君独有的
    搜了一下,好似很新颖
    https://developer.aliyun.com/article/727952
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2204 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 213ms · UTC 11:01 · PVG 19:01 · LAX 03:01 · JFK 06:01
    ♥ Do have faith in what you're doing.