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

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

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

    楼主昨天写 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 为首
    mringg
        36
    mringg  
       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   ·   实用小工具   ·   1378 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 17:20 · PVG 01:20 · LAX 09:20 · JFK 12:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.