坑最少的语言是哪个? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
shyangs
V2EX    编程

坑最少的语言是哪个?

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

    语言或多或少都有坑。

    // 像 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 条回复    2023-03-18 07:00:57 +08:00
    skl
        1
    skl  
       2015-01-19 12:48:13 +08:00
    Lua, C#
    yakczh
        2
    yakczh  
       2015-01-19 12:49:03 +08:00
    php
    nicodelee
        3
    nicodelee  
       2015-01-19 12:49:27 +08:00   2
    语言的坑我不太了解。
    自己不坑自己才是
    tabris17
        4
    tabris17  
       2015-01-19 12:49:47 +08:00
    JAV、C#
    clino
        5
    clino  
       2015-01-19 12:50:14 +08:00 via Android
    估计lua会比较少

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

    就楼主的问题……

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

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

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

    输出:3
    wheatcuican
        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。”

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

    “下一行。”

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

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

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

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







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

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

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

    "5" + 5 == 10
    "5" . 5 == 55
    shyangs
        73
    shyangs  
    OP
       2015-01-19 22:21:17 +08:00
    @wenketel 来灌水的吗?
    wenketel
        74
    wenketel  
       2015-01-19 23:25:48 +08:00
    @shyangs 好无情,说得我是个水笔一样。
    xpol
        75
    xpol  
       2015-01-19 23:50:19 +08:00
    @skl Lua + 1
    xdf331
        76
    xdf331  
       2015-01-20 00:59:46 +08:00 via Android
    Basic,n年前的老物
    shyangs
        77
    shyangs  
    OP
       2015-01-20 01:00:48 +08:00
    @wenketel 因为我知道唯一有在使用的是汉语,显然不能讨论这个主题←_←
    xieyudi1990
        78
    xieyudi1990  
       2015-01-20 01:52:40 +08:00
    @hahastudio 正在弄CPU的飘过, 毕业论文, 乱序超标量... 刚刚把DRAM内存控制器调通了... 接下来: 缓存是哪种结构的呢? 发射宽度要定位多少? 要多少个功能单元...
    ffffwh
        79
    ffffwh  
       2015-01-20 03:10:12 +08:00
    @clino
    动态类型/静态类型是设计不同。而弱类型是公认的坑。
    clino
        80
    clino  
       2015-01-20 07:20:10 +08:00 via Android
    @ffffwh 我猜浏览器这种场合,为了尽量能正常跑,弱类型可能是比较好的选择
    CrispElite
        81
    CrispElite  
       2015-01-20 08:48:39 +08:00
    js 这不算坑吧…………
    bjzhush
        82
    bjzhush  
       2015-01-20 09:24:31 +08:00
    坑多少无所谓,主要看你能跳过多少
    34
        83
    34  
       2015-01-20 10:22:13 +08:00 via Android
    @wenketel 文科?
    zztczcx
        84
    zztczcx  
       2015-01-20 10:31:39 +08:00
    @shadyxu 这个真的是个要注意的地方
    lch21
        85
    lch21  
       2015-01-20 10:34:01 +08:00
    难道你不用lint 吗?
    flynngao
        86
    flynngao  
       2015-01-20 11:05:07 +08:00
    又来开战?
    snopy
        87
    snopy  
       2015-01-20 13:28:26 +08:00
    用python做开发的多么?
    oimotis
        88
    oimotis  
       2015-01-20 14:02:56 +08:00
    我所知道的C#是比较少坑,静态强类型,大部分问题编译器都说给你听了。
    laomutuo
        89
    laomutuo  
       2015-01-31 19:32:12 +08:00
    楼歪了
    jedihy
        90
    jedihy  
       2015-02-04 20:04:24 +08:00
    这个必然是汇编了。。。
    DingSoung
        91
    DingSoung  
       2015-02-08 22:22:50 +08:00
    写汇编的路过
    gbooks
        92
    gbooks  
       2015-10-14 20:48:57 +08:00
    java 学生撸过
    XuAaron
        93
    XuAaron  
       2018-07-15 02:50:44 +08:00
    怎么能说坑呢,这是 feature,是 feature 啊。
    charlie21
        94
    charlie21  
       2023-03-18 07:00:57 +08:00 via Android
    python 那个行为是什么编程语言的通用语言特性吗? or 此君独有的
    搜了一下,好似很新颖
    https://developer.aliyun.com/article/727952
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1229 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 17:23 PVG 01:23 LAX 10:23 JFK 13:23
    Do have faith in what you're doing.
    ubao 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