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

坑最少的语言是哪个?

  •  1
     
  •   shyangs · 2015-01-19 12:40:37 +08:00 · 7474 次点击
    这是一个创建于 1582 天前的主题,其中的信息可能已经有所发展或是发生改变。

    语言或多或少都有坑。

    // 像 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 中的变量不需要声明(或者说,赋值的同时也声明了)避开了这个坑。

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

    93 回复  |  直到 2018-07-15 02:50:44 +08:00
        1
    skl   2015-01-19 12:48:13 +08:00
    Lua, C#
        2
    yakczh   2015-01-19 12:49:03 +08:00
    php
        3
    nicodelee   2015-01-19 12:49:27 +08:00   ♥ 2
    语言的坑我不太了解。
    自己不坑自己才是
        4
    tabris17   2015-01-19 12:49:47 +08:00
    JAVA、C#
        5
    clino   2015-01-19 12:50:14 +08:00 via Android
    估计lua会比较少

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

    就楼主的问题……

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

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

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

    输出:3
        43
    wheatcuican   2015-01-19 16:30:11 +08:00   ♥ 12
    一天我路过一座桥,碰巧看见一个人想跳河自杀。我跑过去对他大喊道:“别跳,别死啊。”

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

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

    “有吗?比如说?”

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

    “程序员。”

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

    “软件。”

    “我也是!PC 还是 Web?”

    “PC。”

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

    “Linux。”

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

    “C++。”

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

    “2011 年的 C++ 11。”

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

    “下一行。”

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

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

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

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







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

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

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

    "5" + 5 == 10
    "5" . 5 == 55
        73
    shyangs   2015-01-19 22:21:17 +08:00
    @wenketel 妳来灌水的吗?
        74
    wenketel   2015-01-19 23:25:48 +08:00
    @shyangs 好无情,说得我是个水笔一样。
        75
    xpol   2015-01-19 23:50:19 +08:00
    @skl Lua + 1
        76
    xdf331   2015-01-20 00:59:46 +08:00 via Android
    Basic,n年前的老物
        77
    shyangs   2015-01-20 01:00:48 +08:00
    @wenketel 因为我知道妳唯一有在使用的是汉语,显然不能讨论这个主题←_←
        78
    xieyudi1990   2015-01-20 01:52:40 +08:00
    @hahastudio 正在弄CPU的飘过, 毕业论文, 乱序超标量... 刚刚把DRAM内存控制器调通了... 接下来: 缓存是哪种结构的呢? 发射宽度要定位多少? 要多少个功能单元...
        79
    ffffwh   2015-01-20 03:10:12 +08:00
    @clino
    动态类型/静态类型是设计不同。而弱类型是公认的坑。
        80
    clino   2015-01-20 07:20:10 +08:00 via Android
    @ffffwh 我猜浏览器这种场合,为了尽量能正常跑,弱类型可能是比较好的选择
        81
    CrispElite   2015-01-20 08:48:39 +08:00
    js 这不算坑吧…………
        82
    bjzhush   2015-01-20 09:24:31 +08:00
    坑多少无所谓,主要看你能跳过多少
        83
    Taosky   2015-01-20 10:22:13 +08:00 via Android
    @wenketel 文科?
        84
    zztczcx   2015-01-20 10:31:39 +08:00
    @shadyxu 这个真的是个要注意的地方
        85
    lch21   2015-01-20 10:34:01 +08:00
    难道你不用lint 吗?
        86
    flynngao   2015-01-20 11:05:07 +08:00
    又来开战?
        87
    snopy   2015-01-20 13:28:26 +08:00
    用python做开发的多么?
        88
    oimotis   2015-01-20 14:02:56 +08:00
    我所知道的C#是比较少坑,静态强类型,大部分问题编译器都说给你听了。
        89
    laomutuo   2015-01-31 19:32:12 +08:00
    楼歪了
        90
    jedihy   2015-02-04 20:04:24 +08:00
    这个必然是汇编了。。。
        91
    DingSoung   2015-02-08 22:22:50 +08:00
    写汇编的路过
        92
    gbooks   2015-10-14 20:48:57 +08:00
    java 学生撸过
        93
    XuAaron   309 天前
    怎么能说坑呢,这是 feature,是 feature 啊。
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   4017 人在线   最高记录 5043   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 28ms · UTC 08:31 · PVG 16:31 · LAX 01:31 · JFK 04:31
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1