你们觉得哪个编程语言的坑最多? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
changwei
V2EX    程序员

你们觉得哪个编程语言的坑最多?

  • nbsp;
  •   changwei
    cw1997 2017-02-12 00:35:39 +08:00 10471 次点击
    这是一个创建于 3194 天前的主题,其中的信息可能已经有所发展或是发生改变。

    楼主昨天写 PHP 就碰到 PDO 扩展的一个大坑,详情 https://segmentfault.com/q/1010000008305175

    PDO 的参数绑定 bindParam 方法第二个参数是传递一个引用类型,而不是值,因为这个问题我前天晚上反反复复调试了半天,甚至去各大 PHP 群里面问了一些"资深大牛"都说不知道,看来现在的程序员确实都是用多了框架都忘记了 PHP 原生的各种坑啊。

    还有 Javascript 的 this 指向也让很多初学者摸不着头脑,不过这貌似是函数式编程语言的特性把,不知道算不算一种坑呢?

    话说别的编程语言有类似的坑吗?各位可以分享分享

    81 条回复    2017-02-13 21:20:31 +08:00
    hweining
        1
    hweining  
       2017-02-12 00:49:23 +08:00
    JS 的 callback hell 算吗?laravel:从入门到重装虚拟机;没有虚拟机环境, migragte 用不上,
    jarlyyn
        2
    jarlyyn  
       2017-02-12 00:57:49 +08:00   3
    php 和 js
    linboki
        3
    linboki  
       2017-02-12 01:00:26 +08:00 via Android   1
    c++
    zhuce1234578888
        4
    zhuce1234578888  
       2017-02-12 01:02:52 +08:00
    python 之外的任何语言
    ericls
        5
    ericls  
       2017-02-12 01:04:58 +08:00 via iPhone
    this 和 functional 有何关系?
    Jakesoft
        6
    Jakesoft  
       2017-02-12 01:12:16 +08:00 via iPhone   2
    文档中参数有&符号的,表明是引用传递。

    这怎么能叫坑呢,明显是卤煮没有仔细看文档。
    Jakesoft
        7
    Jakesoft  
       2017-02-12 01:16:45 +08:00 via iPhone
    引用传递特点有仨:
    函数会修改变量本身;
    不能传具体值,比如 func(12),如果 func 第一个参数是引用的话;
    不会新开辟内存,这应该都知道。
    just4test
        8
    just4test  
       2017-02-12 01:20:03 +08:00
    AS3 ( Flash )。编译器都不稳定。早期版本编译一个包里面元素多了就不能成功打包,需要拆成两个包。
    后来的版本经常有语法错误检查不出来能够成功编译,运行时候报错的问题(调用栈下溢听说过么)。或者偶尔出现代码完全没问题编译出来的程序运行时报错,重新编译就好了的问题。
    chairuosen
        9
    chairuosen  
       2017-02-12 01:29:51 +08:00
    js ,因为运行你代码的环境你不能控制
    Miy4mori
        10
    Miy4mori  
       2017-02-12 01:32:07 +08:00   8
    坑最少的肯定是 java ,但是人们总是嫌弃它。
    changwei
        11
    changwei  
    OP
       2017-02-12 01:49:24 +08:00 via Android
    @Jakesoft 我很少去查官方文档和用 ide ,由于现在还没工作,写 php 都是做点小东西玩玩。

    而且 pdo 作者为什么要把这个参数弄成引用传递?
    changwei
        12
    changwei  
    OP
       2017-02-12 01:51:23 +08:00 via Android
    @Jakesoft 因为我访问 www.php.net 很慢, w3c 也一样(因为 w3c 他引用了一个谷歌字体,我又没改过 hosts ),想问问国内还有什么比较快的在线查 php 以及常用扩展 api 的地方?
    scnace
        13
    scnace  
       2017-02-12 01:57:32 +08:00 via Android
    golang 昨天遇到一个 xml unmarshal 的时候 namespace 会莫名其妙消失的 bug 方的 issue 现在还开着 还好用第三方包解决了!
    tyrealgray
        14
    tyrealgray  
       2017-02-12 01:59:35 +08:00 via iPhone
    c++
    ryd994
        15
    ryd994  
       2017-02-12 02:01:23 +08:00 via Android

    脑残不能怪机器
    人傻不能怨语言
    Perry
        16
    Perry  
       2017-02-12 02:03:42 +08:00
    Java 的 Swing 。。。
    lhbc
        17
    lhbc  
       2017-02-12 03:14:22 +08:00
    大部分较流行的语言,都有很多水货码农,碰到这样的同事坑最多。
    wellsc
        18
    wellsc  
       2017-02-12 03:20:15 +08:00 via Android
    this 是 oop 的啊
    zhidian
        19
    zhidian  
       2017-02-12 03:21:37 +08:00
    this 只是作用域啊……
    patx
        20
    patx  
       2017-02-12 03:51:14 +08:00
    代码质量因人而异,别把锅甩给语言
    akking
        21
    akking  
       2017-02-12 03:53:12 +08:00
    this 奇怪的地方是因为人们误认为 JS 是 Class-based OOP 语言(比如 Java ),但 Javascrit 其实是 Prototype-based. 与其说是“坑”, 不如说是“特性”...
    murmur
        22
    murmur  
       2017-02-12 06:45:32 +08:00   2
    js 的 this 其实有一套很好的解决方案了, jquery 把所有的事件都绑定当前触发的元素作为 this ,然后虚拟了一个 data 方法直接可以在元素上“放”数据,这样只要元素对数据就肯定对
    可惜大神都鄙视 jQuery ,喜欢闭包什么的
    zgqq
        23
    zgqq  
       2017-02-12 08:17:50 +08:00 via Android
    @Perry 估计你没用过 javafx
    Khlieb
        24
    Khlieb  
       2017-02-12 08:46:14 +08:00 via Android
    要是能把坑填上,坑多坑小都不是问题
    ewBuyVmLZMZE
        25
    ewBuyVmLZMZE  
       2017-02-12 08:57:02 +08:00
    Lua
    mcfog
        26
    mcfog  
       2017-02-12 09:11:16 +08:00 via Android
    不是我说啥,碰到问题了都不好好看官方文档,换什么语言都没的治

    还有这种发帖的思路,你觉得你这样发帖,下面会出现有助于你的内容么?
    flydogs
        27
    flydogs  
       2017-02-12 09:30:09 +08:00 via iPhone
    查一下最终执行 sql ,再查一下 php 函数说明,就明白怎么回事了
    linxl
        28
    linxl  
       2017-02-12 09:47:40 +08:00
    楼主和我一样, 把不认真阅读文档当做坑.
    gouchaoer     29
    gouchaoer  
       2017-02-12 09:50:57 +08:00 via Android
    这个在 stackoverflow 上 vote 很高的,一开始是为了性能吧,后来为了兼容性就不改了。。。有很多有问题的函数在 php7 里面都留下来了,比如 parse_str 的覆盖全局变量的危险做法
    gouchaoer
        30
    gouchaoer  
       2017-02-12 09:54:40 +08:00 via Android
    php 的 unserialize 就是坑,估计以后还会爆漏洞

    别的坑的话,我暂时想不到了
    abcbuzhiming
        31
    abcbuzhiming  
       2017-02-12 09:54:44 +08:00
    第一名 C++,第二名 JS ,另外楼主,你这哪叫坑,你这分明是自己没认真看文档。我说的这两个,里面坑有些你去翻文档都翻不到,放狗搜半天才在某个叫角落里找到类似,“这是编译器实现问题”,“这是历史遗留问题”的坑
    ikaros
        32
    ikaros  
       2017-02-12 10:12:52 +08:00
    js 吧,灵活性越高的语言坑越多
    huntererer
        33
    huntererer  
       2017-02-12 10:23:02 +08:00
    js 应该不是坑最多的,不过确实有一些坑,毕竟是 10 天做出来的。不过好在来一次新 ES 就填不少坑。不过 this 这个和函数式没什么关系。
    huntererer
        34
    huntererer  
       2017-02-12 10:23:42 +08:00
    坐等说 python 的编码
    itfanr
        35
    itfanr  
       2017-02-12 10:35:18 +08:00 via Android
    js 为首
    ming2050
        36
    ming2050  
       2017-02-12 10:52:41 +08:00 via iPhone
    js......
    chenxu
        37
    chenxu  
       2017-02-12 10:59:33 +08:00 via Android
    js
    janxin
        38
    janxin  
       2017-02-12 10:59:40 +08:00
    C++、 Javascript 一定榜上有名
    Jackeriss
        39
    Jackeriss  
       2017-02-12 11:02:59 +08:00 via iPhone
    @huntererer 这个还好吧,统一编码就好了,而且 3 已经把坑填了。
    WispZhan
        40
    WispZhan  
       2017-02-12 11:05:37 +08:00   1
    如果单说语言,抛开开发环境与语言生态来看是: JS

    如果全带上,我选.NET ,对于 .NET 微软的坑太多。
    dorentus
        41
    dorentus  
       2017-02-12 12:52:07 +08:00 via iPhone   1
    gisonrg
        42
    gisonrg  
       2017-02-12 12:56:27 +08:00 via iPhone
    js 语法糖(keng)太多了
    oska874
        43
    oska874  
       2017-02-12 13:56:23 +08:00
    C
    编译器扩展,不同标准,各种未定义,各种优化,各种硬件相关,。。。。
    holy_sin
        44
    holy_sin  
       2017-02-12 14:02:42 +08:00
    汇编
    Doubear
        45
    Doubear  
       2017-02-12 14:09:10 +08:00
    有 go 语言坑么?啥玩意都要自己整一套,写起来真是蛋疼死
    fytriht
        46
    fytriht  
       2017-02-12 14:12:31 +08:00
    @hweining callback hell 是 ES5 时代的坑,现在都快 ES7 了...
    maomaomao001
        47
    maomaomao001  
       2017-02-12 14:12:36 +08:00 via Android
    js 挺好的,坑不多吧,理解 this ,原型链,闭包等一些概念, js 完全不是问题
    hwsdien
        48
    hwsdien  
       2017-02-12 14:15:56 +08:00
    C++
    SuperMild
        49
    SuperMild  
       2017-02-12 14:16:49 +08:00   2
    综上所述,人们习惯把自己不懂又不懒得去搞懂的知识点称之为坑。
    chengluyu
        50
    chengluyu  
       2017-02-12 14:22:36 +08:00
    Javascript 还好吧。新的 ES2015 、 ES6 和 ES7 所加的大部分特性也只是语法糖而已,基本就是读文档就能学会的东西;只有少数的东西去要专门花时间理解。
    chengluyu
        51
    chengluyu  
       2017-02-12 14:27:35 +08:00
    对了其实楼主说的这一点是不对的:

    > 还有 Javascript 的 this 指向也让很多初学者摸不着头脑,不过这貌似是函数式编程语言的特性把,不知道算不算一种坑呢?

    函数式语言的特征不是 this 指针的搞法……而是纯函数、副作用、高阶函数、柯里化那些东西,更不用说诸如 monad 、 dependent type 这些东西了。

    Javascript 能算函数式语言特征的就是 function as first class 和闭包。
    djFFFFF
        52
    djFFFFF  
       2017-02-12 14:57:59 +08:00   2
    二战梗:“你粉哪个国家,取决于对哪个国家了解更少”
    viosey
        53
    viosey  
       2017-02-12 15:06:34 +08:00
    js
    chemzqm
        54
    chemzqm  
       2017-02-12 15:33:19 +08:00
    @murmur #22 jquery 最大问题在于完全思路完全基于 DOM ,没有可控的组件化机制,业务代码与 UI 代码完全耦合,相比与通过特定接口交互所设计的组件,不利于多人协作以及相对复杂的页面交互场景。
    this 应该是做 OO 时用的,原型函数内定义的函数使用箭头函数就可以了,而不是 jquery 这种把 this 指向元素的做法,不是说操作元素就不好,而是这种方式如果跟面向对象的 UI 设计混用会很容易导致混乱。
    ragnaroks
        55
    ragnaroks  
       2017-02-12 15:36:48 +08:00
    @WispZhan #40 +1
    murmur
        56
    murmur  
       2017-02-12 15:51:41 +08:00
    @chemzqm 在那个年代这不是个问题,是现在前端要秒天秒地秒空气,通杀一切 UI 部分,这个还需要 webasm 来终结
    我要的是 Javascript 不是那个四不像的 es6 es7 什么

    讲个笑话, Javascript 有 oo ?
    那个箭头函数我认为是个败笔, js 小黄书关于 this 那本讲了 this 的四个原则,就是教你怎么去看 this 是啥,你设计太奇葩,大家都学会没啥了
    突然你又把 this 从运行时改成语义化,这就很操蛋了
    类似的还有循环类函数对 undefined 的处理
    fomenyesu
        57
    fomenyesu  
       2017-02-12 15:54:09 +08:00
    Java 的 swing +1
    raptor
        58
    raptor  
       2017-02-12 16:10:27 +08:00   1
    PHP 是最好的语言,怎么能说有坑呢?
    我觉得最坑的是 SHELL ,其次是 JS
    ifaii
        59
    ifaii  
       2017-02-12 16:14:34 +08:00
    在用过的当中, shell 最坑,无比难用,习惯了 Python 在用这玩意真是痛苦
    owt5008137
        60
    owt5008137  
       2017-02-12 16:34:13 +08:00 via Android
    比坑的话, c++一出,谁与争锋
    murmur
        61
    murmur  
       2017-02-12 16:35:11 +08:00
    @chemzqm 更正一下,是对 array 空白位的处理
    aploium
        62
    aploium  
       2017-02-12 17:33:00 +08:00 via Android
    @huntererer 觉得 python 编码坑的大概还停留在 2.x ,而且不会__future__吧
    willm
        63
    willm  
       2017-02-12 17:38:06 +08:00 via Android
    c++:你们都是来争第二的么?
    zhuangtongfa
        64
    zhuangtongfa  
       2017-02-12 17:43:09 +08:00
    函数式没有 this,this 是 OOP 的,ES6 以后 JS 就没啥大坑了
    chipmuck
        65
    chipmuck  
       2017-02-12 17:52:35 +08:00
    同事
    cchange
        66
    cchange  
       2017-02-12 20:14:46 +08:00
    要说语言 PLC 用的 STL 和 LAD 还有高级的 SCL ,坑是最少的,每个指令要得到的信息都是已知的,好多是硬件实现的

    语言这个东西 看使用场合吧
    xcodebuild
        67
    xcodebuild  
       2017-02-12 20:40:50 +08:00
    @hweining 虽然 js 坑是挺多的。。但是现在( 2017 年)还在抱怨 callback hell 实在是没说到点子上
    viator42
        68
    viator42  
       2017-02-12 21:06:04 +08:00   2
    bash ,语法格式各种反人类,不折腾一圈根本写不出东西来,写完的都留着不敢删因为没法保证还能再写出来
    zhuangzhuang1988
        69
    zhuangzhuang1988  
       2017-02-12 21:08:16 +08:00
    php.. 最坑了。。
    ZE3kr
        70
    ZE3kr  
       2017-02-12 21:12:25 +08:00 via iPhone
    php.net 每一个函数下面的用户评论,被顶起来的很多都是说这个函数有什么坑的
    wdlth
        71
    wdlth  
       2017-02-12 21:18:53 +08:00
    人说的话最坑……
    aliuwr
        72
    aliuwr  
       2017-02-12 22:47:37 +08:00
    居然没人提 Scala 啊,失望。
    果然是没人用么。。。
    AnyISalIn
        73
    AnyISalIn  
       2017-02-12 23:00:25 +08:00
    js
    mingyun
        74
    mingyun  
       2017-02-12 23:12:49 +08:00
    py2 编码坑
    MntCw
        75
    MntCw  
       2017-02-12 23:25:20 +08:00 via Android
    这叫坑?文档里有写清楚的能叫坑?
    xialdj
        76
    xialdj  
       2017-02-12 23:54:39 +08:00 via iPhone
    js 反正是奇技淫巧最多的语言 语言层面上历史遗留的问题就很多 有的坑还入了标准
    Gantz
        77
    Gantz  
       2017-02-13 09:16:21 +08:00 via iPhone
    @murmur 所以结论是你比较适合那个时代?
    murmur
        78
    murmur  
       2017-02-13 09:19:19 +08:00
    @Gantz 昨天看到一个笑话图, es3 的精髓是那么多, es6 的精髓还是跟 es3 一样多,实际上除了 es5 的 get/set 方法绑定之外,其余的都是跑在 polyfill 上的

    用 java 的没说用 java8 鄙视用 apache utils 的,但是前端文章动不动不用 es6 你就 xx 一样的标题
    messXD
        79
    messXD  
       2017-02-13 13:25:02 +08:00
    python?
    项目一大各种耦合搞死你
    irenicus
        80
    irenicus  
       2017-02-13 15:16:08 +08:00
    我会的语言不多,但据说是 C++

    我用 perl 用得神清气爽我会乱说?
    newtype0092
        81
    newtype0092  
       2017-02-13 21:20:31 +08:00
    @syhily 说来听听,看看我遇到过没有~
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1189 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 32ms UTC 23:36 PVG 07:36 LAX 15:36 JFK 18:36
    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