V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
pythonee
V2EX  ›  程序员

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

  •  2
     
  •   pythonee · 109 天前 · 11467 次点击
    这是一个创建于 109 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    非编程语言的
    六边形架构
    reactor 背压
    TCP 粘包
    IO 多路复用
    可计算理论
    第 2 条附言  ·  108 天前
    C++模板元编程
    Continuation
    Channel
    异步
    并发&内存屏障
    第 3 条附言  ·  107 天前
    箭头函数
    无栈协程
    Delegate
    asycio
    139 条回复    2024-09-06 11:56:44 +08:00
    1  2  
    0x90200
        101
    0x90200  
       108 天前
    channel
    0x90200
        102
    0x90200  
       108 天前
    go 中的 channel
    mosfet
        103
    mosfet  
       108 天前   ❤️ 1
    多重指针吧
    看的头痛
    concernedz
        104
    concernedz  
       108 天前
    DDD 这套理解不了
    一直都还是用的 controller->service->impl->model
    pythonee
        105
    pythonee  
    OP
       108 天前
    函数指针
    左值右值
    传值、传引用

    虽然不难,但是也需要切换成计算机来思考
    ninjashixuan
        106
    ninjashixuan  
       108 天前
    channel 不难吧, 甚至这个逻辑上把 async 改成 sync 模式了我觉得是更好理解吧。
    echoechoin
        107
    echoechoin  
       108 天前
    @vfs #3 C 语言都可以返回函数。。。
    csys
        108
    csys  
       108 天前
    @Dcrclub 👍这辈子有了
    bugmakerxs
        109
    bugmakerxs  
       108 天前
    箭头函数。。
    macscsbf
        110
    macscsbf  
       108 天前
    1. atomic
    2. yield
    3. yield + 递归
    yanyoo2000
        111
    yanyoo2000  
       108 天前
    上下文。刚学编程的时候困扰我很久
    vfs
        112
    vfs  
       108 天前
    @ltyj2003 虽然说 c 语言的函数也能返回一个函数指针, 但是好理解。 类似 golang 之类的函数作为变量到处传,调用, 看着很乱
    vfs
        113
    vfs  
       108 天前
    @superhot 其实我是不懂闭包和函数式编程, 我只是在说支持这样的 feature 会让代码的复杂度迅速上升, 不直观。 至于你说 java 怎么实现的, 那是编译器和虚拟机的事儿, 我的代码中不会出现把函数作为返回值或者参数到处传递(但是我在用 java1.8 , 如果新版本有其他特性, 我不知道)
    vfs
        114
    vfs  
       108 天前
    @DOLLOR 其实个人也写好几种语言(c++/c,java, golang), 其中 golang 就是支持这种设计的。 我没有说这种东西绝对是坏的, 只是说引入这样的特性, 很容易写出复杂度比较高的代码, 个人是不会写这种代码的(即使语言支持)
    vfs
        115
    vfs  
       108 天前
    @qW7bo2FbzbC0 是啊, 这种代码就不容易读, 调试的时候也会更重乱跳,太动态了。
    vfs
        116
    vfs  
       108 天前
    @echoechoin 是支持, 但是真的在代码中大量写这种代码,感觉就会很复杂, 代码不容易读。
    HkMuxxx
        117
    HkMuxxx  
       108 天前   ❤️ 1
    asyncio
    junwind
        118
    junwind  
       108 天前
    @Dcrclub 很有同感,就是故意为之,比如 laravel 框架,什么任务调度,不就是定时任务吗,什么事件监听,不就是一种埋点吗,有些东西,换个名词,就高大上,很多所谓的专家就是吃饱了撑了,故意让你看不懂,然后提升自己的逼格。
    vfs
        119
    vfs  
       108 天前
    @jeesk golang 和 cpp 还行,js 还真是学不会
    shijingshijing
        120
    shijingshijing  
       108 天前
    @kinkin666 泛型还好,看到 C#后面的委托(Delegate)了吗?
    shiweifu
        121
    shiweifu  
       108 天前
    C++ 模板

    可以看看 C++ STL 源码, iostream 、vector 之类的感受一下

    印象中,还有虚指针、虚函数表啥的,C++ 语言特性太多了。当年知难而退,放弃了。

    PS:在咖啡店写代码,对桌的哥们抱着一本砖头厚的 C++ Primer 在做笔记
    kinkin666
        122
    kinkin666  
       108 天前
    @shijingshijing 当时没看明白,后面学 java 的时候认识了接口特别是 XxxxxxxListener 之类的事件接口的之后就没它位置了
    Donaldo
        123
    Donaldo  
       108 天前
    rust 的宏展开。。
    sanbuks
        124
    sanbuks  
       108 天前
    @CREEPER5 本质就是延长右值 (消亡值/纯右值) 生命周期,实现移动语义
    label
        125
    label  
       108 天前
    函数式编程 好久才弄明白这玩意, JAVA 仔
    Fallever
        126
    Fallever  
       108 天前
    @vfs 函数不能保存成变量有时候才别扭, c#发明了委托, 但它又关联参数类型, 比如你不能把重载函数赋值给原函数委托. 比如 Action<bool> a = Console.Write 它只能绑定 bool 参数的重载. 我想 a= Console.Write(int)啥的都不行...

    还有就是 离开了类就没办法使用函数, 所有的函数都得定义在类里面.
    ysc3839
        127
    ysc3839  
       108 天前
    @qbmiller
    Python 的异步 +1
    看上去像是无栈协程,但是用起来却和 JS 或 C++ 的无栈协程有较大区别。
    ysc3839
        128
    ysc3839  
       108 天前
    @inhzus C++ 的 coroutine 个人感觉挺好理解的,不涉及 promise type 的话,awaitable 对象其实就类似回调函数,对象被 await 时可以拿到 coroutine handle ,调用这个 handle 即可恢复执行。
    至于 promise type ,很多时候并不需要自己实现,直接用现成的库即可。
    tt67wq
        129
    tt67wq  
       108 天前
    python 的这个 async 和 yeild 这些卵子东西
    shantongxu
        130
    shantongxu  
       108 天前
    yield, 至今没用过也不懂
    Mandelo
        131
    Mandelo  
       108 天前
    @ixx #71 都是 java 的错,这就是 V 站的政治正确 🤣🤣🤣🤣
    snylonue
        132
    snylonue  
       107 天前
    dependent type
    msg7086
        133
    msg7086  
       107 天前
    点进来之前第一反应 monad 。点进来一看果然 monad 。看满离。
    importmeta
        134
    importmeta  
       107 天前
    阀值 阈值
    sampeng
        135
    sampeng  
       107 天前   ❤️ 1
    居然没人说面向对象本尊 OOP 。
    诸如凭什么说我抽象的就没你抽的好。。。
    诸如这什么💩抽象,难以理解,看我抽象到极致的抽象。。。
    诸如什么垃圾,套这么多层闹呢。。

    要碰巧看到合自己口味的 OOP 过的代码,简直是奢望。

    一千人有一千种封装抽象。。
    matate
        136
    matate  
       107 天前
    最近正好写了几篇文章,方便从程序员角度理解 Monad

    <https://www.vinoca.org/li-jie-dan-zi-shi-zi-han-zi-fan-chou-shang-de-yao-ban-qun-yi/>
    aliipay
        137
    aliipay  
       107 天前
    go yield
    aguesuka
        138
    aguesuka  
       106 天前
    sound
    decidable
    consistent
    canonicity
    ensonmj
        139
    ensonmj  
       106 天前 via iPhone
    @vfs 最近悟了,把他看成匿名类就好多了,但的确不直观
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1285 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 17:44 · PVG 01:44 · LAX 09:44 · JFK 12:44
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.