• 请不要在回答技术问题时复制粘贴 AI 生成的内容
pythonee
V2EX  ›  程序员

你遇到过哪些比较难理解的编程语言概念

  •  2
     
  •   pythonee · Sep 3, 2024 · 19261 views
    This topic created in 795 days ago, the information mentioned may be changed or developed.

    我先来:递归 -> Y 组合子 -> Monad

    Supplement 1  ·  Sep 4, 2024
    本来是面向编程语言,但话题扩展,不过也好,补充几个大家提到的
    yield
    协变、逆变
    lisp 的宏
    闭包
    所有权
    cps
    prototype
    大 O 表示法

    非编程语言的
    六边形架构
    reactor 背压
    TCP 粘包
    IO 多路复用
    可计算理论
    Supplement 2  ·  Sep 4, 2024
    C++模板元编程
    Continuation
    Channel
    异步
    并发&内存屏障
    Supplement 3  ·  Sep 5, 2024
    箭头函数
    无栈协程
    Delegate
    asycio
    139 replies  •  2024-09-06 11:56:44 +08:00
    1  2  
    ❮ ❯
    liudewa
    liudewa
    Sep 3, 2024
    1
    异步
    liudewa
    liudewa
    Sep 3, 2024
    2
    @liudewa #1 递归 +1
    vfs
    vfs
    Sep 3, 2024
    3
    一个函数返回另外一个函数,一个函数的参数时另外一个函数。 这绝对是取乱之道
    superhot
    superhot
    Sep 3, 2024 via Android❤️2
    4
    @vfs 不懂闭包与函数式编程就别乱说话 你 Java 的接口回调本质上也是把函数作为参数传递 没见你说 Java 乱
    ltyj2003
    ltyj2003
    Sep 3, 2024 via Android
    5
    @vfs c 就没这个烦恼,啥都可以是指针,是指针就能传。
    Maboroshii
    Maboroshii
    Sep 3, 2024❤️1
    6
    yield 绝对算一个
    Building
    Building
    Sep 3, 2024❤️9
    7
    Process 懂了
    Thread 懂了
    Queue 懂了
    Group 懂了
    Atom 懂了
    Lock 懂了
    Await/Async 懂了
    Promise 懂了
    Callback 懂了
    当你把他们放在一起的时候...
    nagisaushio
    nagisaushio
    Sep 3, 2024 via Android❤️3
    8
    难懂概念千千万,rust haskell 占一半
    zeonluang
    zeonluang
    Sep 3, 2024❤️1
    9
    js 里的原型和 promise 把
    pisc
    pisc
    Sep 3, 2024❤️1
    10
    Monad 有啥难理解的? A monad is just a monoid in the category of endofunctors, what’s the problem?

    想要实用一点的理解? A monad is just a typeclass with the three laws !

    还是不太好理解? A monad is just the bind/flatMap !!!
    0d
    0d
    Sep 3, 2024
    11
    tokio
    JackYao
    JackYao
    Sep 3, 2024
    12
    @Maboroshii +1 当年理解这货 废了我好多脑细胞
    passive
    passive
    Sep 3, 2024 via Android
    13
    cps 、monad 这些都简单。

    #define 宏替换比较绕
    kissmenow
    kissmenow
    Sep 3, 2024
    14
    golang 的指针传参
    dapang1221
    dapang1221
    Sep 3, 2024
    15
    yield ,最开始接触的时候寻思这是啥破玩意,理解之后恍然大悟,惊为天人
    lonelee
    lonelee
    Sep 3, 2024
    16
    自旋锁/偏向锁
    csys
    csys
    Sep 3, 2024
    17
    Wh1t3zZ
    Wh1t3zZ
    Sep 3, 2024
    18
    yield
    caqiko
    caqiko
    Sep 3, 2024 via Android❤️1
    19
    泛型类和具体实现类
    看的迷迷糊糊的
    PTLin
    PTLin
    Sep 3, 2024
    20
    学 c 的时候是指针。
    学 python 的时候是 generator 和 async await 。
    学 rust 的时候是所有权和生命周期。
    学 Haskell 的时候是 reader applicative/monad/,monad transformer 。
    AV1
    AV1
    Sep 3, 2024❤️7
    21
    @vfs
    如果你从来只写过 java ,可能确实就会觉得函数作为返回值、参数、变量,是无法理解的事情。
    反过来也一样,学过其他语言(尤其函数是一等公民的语言)的人看 java ,也会很困惑 java 这边为了传递 callback ,还要整出依赖注入、控制反转这些设计模式。
    netabare
    netabare
    Sep 3, 2024 via iPhone
    22
    DDD 和六边形那套东西,函数式编程的概念反而没什么难的
    GuardX
    GuardX
    Sep 3, 2024
    23
    reactor 那套,比如背压。。
    jeesk
    jeesk
    Sep 3, 2024 via Android
    24
    @vfs 这都嫌弃乱,那 golang 和 cpp 不适合你,连 js 都不适合你
    xuanbg
    xuanbg
    Sep 3, 2024
    25
    其实不是概念难以理解,更多的是名词难以理解。譬如 JS 的原型链和闭包
    wangjh0802
    wangjh0802
    Sep 3, 2024❤️3
    26
    就没人提 控制反转 和 依赖注入吗 哈哈哈哈哈哈哈
    Kaiv2
    Kaiv2
    Sep 3, 2024
    27
    @DOLLOR 不能这么说返回参数是函数和函数参数是函数,当作是匿名 class 就理解了。而且 Java8 就有了 lambda
    TWorldIsNButThis
    TWorldIsNButThis
    Sep 3, 2024 via iPhone❤️1
    28
    闭包是穷人的对象 对象是穷人的闭包
    nagisaushio
    nagisaushio
    Sep 3, 2024 via Android
    29
    楼主想要讨论编程语言概念,但楼上说的有些并不是编程语言概念
    johnhsh
    johnhsh
    Sep 3, 2024
    30
    闭包
    R4rvZ6agNVWr56V0
    R4rvZ6agNVWr56V0
    Sep 3, 2024
    31
    C++ 的模版、预编译指令
    povsister
    povsister
    Sep 3, 2024
    32
    Makefile
    cookii
    cookii
    Sep 3, 2024
    33
    @GuardX reactor 绝对是 java 程序员的噩梦
    rabbbit
    rabbbit
    Sep 3, 2024❤️1
    34
    指针
    函数式编程
    ts 类型体操
    M4n5ter
    M4n5ter
    Sep 3, 2024
    35
    第一眼看到 go1.23 有些丑陋的迭代器和其文档中给出的 example 时
    adoal
    adoal
    Sep 3, 2024
    36
    @ltyj2003 然后发现很多程序员看不懂 Linux 举的那个编程品位例子里的二阶指针
    levelworm
    levelworm
    Sep 3, 2024
    37
    @ltyj2003 像我这种小白就喜欢 C 。简洁,没那么多花招。函数式编程实在是超过了我的智商。
    echoless
    echoless
    Sep 3, 2024
    38
    我觉得没有难的概念, 只是大部分人(包括很多知名教授)没有把一个概念解释清楚的能力.

    我看递归, Monad, 都是看多个资料慢慢懂得.

    你要懂 C. 可能需要你先了解 A, B, 但是你可能不懂 A, 或者你知道 B’.

    但是很多资料(或者老师), 给所有人直接讲 C.

    那么就是恰好了解 A, B 的人明白了 C.

    因为你不懂 A, 了解 B’, 又干扰了你了解 B. 所以会觉得 C 很难.

    教学是 1 对 1 的. 需要知道学习的人的状态, 要学习的概念. 跟化学反应一样, 要把所有的条件都达到, 才能进入下一步.
    echoless
    echoless
    Sep 3, 2024
    39
    @levelworm #37 这个绝对是那些追求 Pure functional 的把函数编程给弄的阳春白雪了. pure functional 代价很大.
    但是函数编程思想倒是很容易理解, 根本在于对状态(state)的处理上. C 语言可以 OOP 也可以 FP. 追求 pure OOP 或者 pure FP 就意义不大.
    echoless
    echoless
    Sep 3, 2024
    40
    插一句, 我想象中科班和非科班的 CS 区别, 在于编程语言理论, 计算理论. 但是实际上, 无论科班和非科班, 99.99%的人都是刷题, 被八股文, 搞我这个非科班的也可以滥竽充数.
    user1284
    user1284
    Sep 3, 2024
    41
    今天看 go 那个生成器看晕了, 最后才发现我看漏了, 是个语法糖
    user1284
    user1284
    Sep 3, 2024
    42
    @M4n5ter 我也是, 感觉说不出的难受, 但是总比 java 好点
    user1284
    user1284
    Sep 3, 2024
    43
    @M4n5ter 我去, 这么巧, 我今天也是看的这个东西, 最后发现就是个语法糖, 还很丑陋
    aliensb
    aliensb
    Sep 3, 2024
    44
    erlang 这都是啥
    Acsw
    Acsw
    Sep 3, 2024
    45
    闭包,内存屏障
    kinkin666
    kinkin666
    Sep 3, 2024
    46
    高三结束准大学生的时候去新华书店看《 C#入门经典(第四版)》看到第六章泛型,卡在那里卡了一个星期,有一天一瓶可乐干下去,悟了,这就是把类型当参数!!!

    下一次再这么悟是在学高数下册和离散数学的时候,高数里三层积分里面那个函数我就当它是回调函数了、离散数学和线性代数里那些东西我就当他是 C++里的运算符重载了

    haskell 、scala 、f#、pearl 这些东西没用过,粗看一眼看不懂
    raptor
    raptor
    Sep 3, 2024
    47
    印象中第一个这种坎是二十多年前在汇编语言的保护模式,后来搞懂了。第二个这种坎是十几年前 C++的 TMP ,后来放弃了 C++。
    purringpal
    purringpal
    Sep 3, 2024 via iPhone
    48
    可以考虑备注一下大学专业和工作年限,作为科班毕业来说,完全 get 不到楼上说的这些困扰~
    yafoo
    yafoo
    Sep 4, 2024 via Android
    49
    yield
    qinfensky
    qinfensky
    Sep 4, 2024 via iPhone
    50
    Macro
    spidah
    spidah
    Sep 4, 2024
    51
    monad
    levelworm
    levelworm
    Sep 4, 2024
    52
    @echoless 我一直觉得函数式编程是需要一定智商的,我这种还是就 C-like 吧。。。
    NoOneNoBody
    NoOneNoBody
    Sep 4, 2024
    53
    堆、栈 其实至今只能说知道大概
    iintothewind
    iintothewind
    Sep 4, 2024
    54
    CPS (Continuation-passing style)
    HOF(Higher-order function)
    还有些其它的,

    总之就是函数式编程真的很费脑子,不过挺好玩,逼格确实挺高的,就是工作中几乎用不上。
    busuzhike
    busuzhike
    Sep 4, 2024
    55
    python 的装饰
    ZGame
    ZGame
    Sep 4, 2024
    56
    @superhot 喷的好
    ZGame
    ZGame
    Sep 4, 2024
    57
    @echoless #39 应该是说能把函数式写明白很难。函数式增加了很多约束,如果编程的时候按照相关规范去做,思维负担会减轻,局部查看每个函数的时候只用关系入参和出参对不对。 然后现实是因为约束的原因,取巧或者工期赶,有的变量直接就透传进来,然后就变成了使用函数式的方式,写出了非函数式的代码,反而加重了局部查看代码时候的混乱度。另外类似 java 后端 rjdbc 函数式的 zip,merge 等等响应式的 api 在进行调试的时候,我个人感觉也没有传统的编程方式那样好调试
    ZGame
    ZGame
    Sep 4, 2024
    58
    @echoless #39 不过前端领域目前函数式 hooks 那套结合的算是现实里的表率了,很赞。
    nutting
    nutting
    Sep 4, 2024
    59
    js 的底层。异步啥的那些有点别扭
    test4zhou
    test4zhou
    Sep 4, 2024
    60
    js 一些底层原理
    diroverflow
    diroverflow
    Sep 4, 2024
    61
    指针这个概念主要是名字起的不好,其实不就是内存地址吗?学过汇编的都能理解
    querysecret
    querysecret
    Sep 4, 2024❤️1
    62
    协变、逆变
    dododada
    dododada
    Sep 4, 2024
    63
    设计模式,太多了,很多死搬硬套,最怕那种一开口就是我觉得这个用什么什么模式比较好的,以前有个同事,不管什么语言,上来就是设计模式,头大
    a1b2c3T
    a1b2c3T
    Sep 4, 2024
    64
    我感觉大部分设计模式都不是太好理解,可能单独看示例 i 还可以,但是自己用的时候就不大行了。
    Bologna
    Bologna
    Sep 4, 2024
    65
    闭包
    xntzmk
    xntzmk
    Sep 4, 2024
    66
    @Maboroshii 赞同,还好后面 async 冒出来了
    lew1
    lew1
    Sep 4, 2024
    67
    套接字
    shangyu7
    shangyu7
    Sep 4, 2024
    68
    "对象"
    theprimone
    theprimone
    Sep 4, 2024❤️1
    69
    ”运行时“,本科相当长一段时间没懂啥意思 😅
    CREEPER5
    CREEPER5
    Sep 4, 2024
    70
    右值引用,每次看的时候觉得自己理解了,事后发现并没有
    ixx
    ixx
    Sep 4, 2024
    71
    @superhot 特意去翻了翻这老哥以前的帖子和回复 也没看出来是搞 java 的吧 咱话题都跑 java 上来了🤣
    p1gd0g
    p1gd0g
    Sep 4, 2024
    72
    刚入行搞不懂 interface ,业务写多了自然也就明白了
    Fallever
    Fallever
    Sep 4, 2024
    73
    逆变和协变 对于人来说这是很自然的转换. 但是到泛型里再加上拗口的翻译 真的绕晕了
    coderzhangsan
    coderzhangsan
    Sep 4, 2024
    74
    @theprimone +1
    runtime 看中文教材很难理解,可能是最早接触并翻译的人,没有系统性的理解,犯了民科的毛病,类似的还有所谓 TCP 粘包。
    sunrain
    sunrain
    Sep 4, 2024
    75
    刚学 OC 的时候吧,这是什么鬼?!
    L5tEU4WX072p5P42
    L5tEU4WX072p5P42
    Sep 4, 2024 via Android
    76
    我自己最近的新发现:
    符号越多,看着越难
    直接用关键词,就好理解多了
    RainCats
    RainCats
    Sep 4, 2024
    77
    @DOLLOR 还好,我经常搞 lamdba 函数,然后当成其他方法的入参
    qW7bo2FbzbC0
    qW7bo2FbzbC0
    Sep 4, 2024
    78
    @vfs 我在 go 里面遇到这种情况最多。。。
    jheroy
    jheroy
    Sep 4, 2024
    79
    过程式编程都不算啥,去看下 erlang 这种纯函数式编程才知道啥叫难理解,什么高阶函数什么单次赋值就不说了,就尾递归这概念就比较难理解。虽然纯函数编程数学上完美,就是不是按人好理解设计的,不过学数学专业出身的应该很喜欢。
    loryyang
    loryyang
    Sep 4, 2024
    80
    c++ 元编程见过吗?
    aleimu
    aleimu
    Sep 4, 2024
    81
    一通百通
    opengps
    opengps
    Sep 4, 2024
    82
    竟然没人说:完成端口
    neimengwuyanzu
    neimengwuyanzu
    Sep 4, 2024
    83
    @csys lambda 真的就是 写时候还行 写完过段时间在回头看 自己写的读起来有点费劲
    LitterGopher
    LitterGopher
    Sep 4, 2024
    84
    套接字+句柄


    (我觉得是翻译问题,你要说是网络通讯和指针我当场就能理解)
    me1onsoda
    me1onsoda
    Sep 4, 2024
    85
    自从我开始写 go ,我发现我对 interface 一无所知
    davin
    davin
    Sep 4, 2024
    86
    说多了都是语法糖
    javazero
    javazero
    Sep 4, 2024 via Android
    87
    rust 的特征?我不是科班出身,只会 Python 。想学点底层的,看到特征想着以后再看,结果再也没看过了哈哈
    EndlessMemory
    EndlessMemory
    Sep 4, 2024
    88
    promise.then
    Subfire
    Subfire
    Sep 4, 2024❤️1
    89
    "你们自己先入为主地错误地认为 send 与 recv 是一一对应的, 从而生造出"TCP 黏包"这种东西, 还有理了吗?"
    aloxaf
    aloxaf
    Sep 4, 2024
    90
    Memory Order
    inhzus
    inhzus
    Sep 4, 2024
    91
    C++ coroutine 提案
    winglight2016
    winglight2016
    Sep 4, 2024
    92
    scala 的柯里化阻止了我学习 Scala
    leona723
    leona723
    Sep 4, 2024
    93
    递归,每次做这个我感觉我就进入了无限循环的时空里
    yazinnnn0
    yazinnnn0
    Sep 4, 2024
    94
    谁能解释一下 call/cc

    看过一些解释 call/cc 的文章, 我对这个概念的理解还停留在 "砸哇噜多" 阶段
    besto
    besto
    Sep 4, 2024
    95
    @yazinnnn0 你说出了我心里话,我找了一圈居然上面没有人说 call/cc 的。。。
    KFCVIVO50
    KFCVIVO50
    Sep 4, 2024
    96
    异步+事件循环
    FYFX
    FYFX
    Sep 4, 2024
    97
    continuation ,
    qbmiller
    qbmiller
    Sep 4, 2024
    98
    python 的异步
    17681880207
    17681880207
    Sep 4, 2024
    99
    @kissmenow
    传指针其实就是传内存地址吧,这么理解
    Dcrclub
    Dcrclub
    Sep 4, 2024
    100
    难以理解的东西, 基本都是故意为之, 目的就是增加编程的入门门槛, 很多能用白话解释的东西. 故意弄个晦涩难懂的词,搞到这里, 有的还是用英文表示. 显得很高大上
    1  2  
    ❮ ❯
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1710 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 205ms · UTC 12:02 · PVG 20:02 · LAX 04:02 · JFK 07:02
    ♥ Do have faith in what you're doing.