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

随便扯几个前端糟粕 ✅

  •  
  •   fulvaz · 2022-08-10 10:15:49 +08:00 · 11549 次点击
    这是一个创建于 870 天前的主题,其中的信息可能已经有所发展或是发生改变。

    月经贴看到从 xx 开始学前端觉得不适。

    哎,都没骂对点上,让我好着急,我来替你们说。

    以下情况的语境都是浏览器上。(在 Node 想做啥就做啥,有什么好骂的

    不支持多线程

    eventloop 一看到巨型应用立刻躺平摆烂:“老夫不行了,你自己想办法拆任务到其他 frame 执行吧”。

    好家伙,这是赤裸裸威胁,要么等久一点(递归 MessageChannel ),要么卡成狗(阻塞主进程),8 核 CPU 硬生生变成单核。

    WebWorker ?整挺好,就是 IPC 通信也是要时间的,想想序列化一个对象意味着什么。

    SharedArrayBuffer 这个不错,就是要想想怎么操作二进制。

    瘸腿的异步任务管理

    异步任务,比如 promise ,setTimeout 触发的,不去 monkeypatch 或者改业务代码根本不知道他们要执行多久,什么时候开始执行。

    ok ,大型应用一堆业务一起做异步任务,哦吼,卡成狗。

    面对一堆无法感知的任务,在风中凌乱。

    无法监控的 OOM 和卡死

    懂的都懂。

    我觉得,如果一个开发愿意舔着脸求客户提供 chrome 日志去查问题,那么雇佣这个开发的企业应该给他发双倍工资。 ( PS:我没求过)

    如果那个开发还能分析 chrome 日志并定位问题,那么应该给他发三倍。

    多出来的一倍拿去植发。

    可能 chrome 老哥觉得重启挺好的。

    其他 (给某些老哥的素材)

    求求了,什么时候有优先队列?都叫 java ,怎么多了几个字母还变菜了,是不是写前端的数据结构不会用? (狗头保命

    PS:别骂 0.1+0.2 = 0.30000000000000004 了, 当年都不知道是谁这么腹黑,放这么直的钩。

    就酱,希望大家在前端娱乐圈玩得开心~

    第 1 条附言  ·  2022-08-10 10:51:18 +08:00

    还可以补充:

    ##有 wasm 真的是救星吗?

    IPC 通信:达咩

    https://surma.dev/things/js-to-asc/index.html (性能还没 js 好的菜鸡,接着狗头保命

    以及为什么 vscode 没用 c++ 写,写了,但是不行,还是 js 大法好

    https://code.visualstudio.com/blogs/2018/03/23/text-buffer-reimplementation

    chrome 你都守护了什么啊?

    100 条回复    2022-08-12 10:38:29 +08:00
    rodrick
        1
    rodrick  
       2022-08-10 10:20:24 +08:00
    和楼下 /t/871818 可以作为一个主题
    erguotou521
        2
    erguotou521  
       2022-08-10 10:21:02 +08:00 via Android
    好了,知道了,继续干活吧
    PTLin
        3
    PTLin  
       2022-08-10 10:21:13 +08:00
    腥风血雨不可避了今天
    Hanggi
        4
    Hanggi  
       2022-08-10 10:22:15 +08:00
    如果你无法改变它,那么规避和解决这些问题就是你要做的工作。
    slipkinem
        5
    slipkinem  
       2022-08-10 10:24:46 +08:00 via iPhone   ❤️ 17
    吐槽这些的基本都不是搞前端的,我都希望前端就这么烂甚至更烂,让你们一个个都别来沾边,这样才能凭我的经验涨工资。
    waiaan
        6
    waiaan  
       2022-08-10 10:26:53 +08:00
    @PTLin
    确实,今天冒出来那么多批判前端的帖子。
    stoluoyu
        7
    stoluoyu  
       2022-08-10 10:27:20 +08:00   ❤️ 4
    最烂的难道不是 js 这门语言就很烂么,修修补补,tc39 还总选很丑的语法; css 也很烂; HTML 5 以后还好了(纯吐槽
    DOLLOR
        8
    DOLLOR  
       2022-08-10 10:27:35 +08:00   ❤️ 4
    我们还是讨论一下 gou 、jvav 、phph 哪个更适合写业务吧🐶
    jones2000
        9
    jones2000  
       2022-08-10 10:32:35 +08:00
    性价比高呀,一个前端页面外包也就 2 ,3 百块钱。要功能全的可以用 c++ QT 做,多线程,日志什么都有,开发成本就不一样了。 只要钱给足,前端要什么功能都可以上。
    lambdaq
        10
    lambdaq  
       2022-08-10 10:32:43 +08:00   ❤️ 4
    前端的糟粕在于。。。非得去跟桌面应用较劲,然后做出来一个碳排放巨高无比开发起来巨麻烦的巨难用的解决框架。
    rekulas
        11
    rekulas  
       2022-08-10 10:33:19 +08:00   ❤️ 1
    我也是服气 如果你按照 npm 标准流程开发,那就保证了你永远不知道某个项目在什么时候会突然出错
    参考 https://www.v2ex.com/t/870920
    bao3
        12
    bao3  
       2022-08-10 10:36:47 +08:00 via iPhone
    “前端,你给调优一下,太占内存了”
    “现在内存都 1T 、2T ,你怕啥”
    66beta
        13
    66beta  
       2022-08-10 10:36:54 +08:00
    人家就是一个木工,为什么非要指责他不会设计火箭???
    wangtian2020
        14
    wangtian2020  
       2022-08-10 10:38:13 +08:00
    😅后端怎么又给我传个字符串时间戳,dayjs 解析出来个奇怪的日期,害我 debug 半天
    yaphets666
        15
    yaphets666  
       2022-08-10 10:39:46 +08:00
    我觉得 web 都可以做出文档和游戏这种东西,瓶颈不在技术,而在用的人
    wangtian2020
        16
    wangtian2020  
       2022-08-10 10:41:26 +08:00
    前端原生操作 json 还好,java 后端搁那天天往 pgsql 存 json ,搞个 json 对象搞半天,这大伙不都一样动态类型了
    zooeymango
        17
    zooeymango  
       2022-08-10 10:44:23 +08:00
    浏览器就那样,web 访问的机制就是那样,谁来写个颠覆世界的规则和引擎,救救前端 er
    wu67
        18
    wu67  
       2022-08-10 10:44:24 +08:00
    @lambdaq 用前端来做什么, 其实前端仔做不了太大决定, 那时老板拍板觉得前端可以做, 当然也跟前端界乱七八糟造轮子有关. 两者结合, 才造就了这个‘大前端’怪圈
    HiCode
        19
    HiCode  
       2022-08-10 10:46:02 +08:00   ❤️ 1
    昨晚想自己打包一下有赞的 vant2 ,结果遇到一个第三方包升级后出错的问题。

    找到这个第三方的包,很多人都遇到并提出 issues ,但看官方的态度就是不管,真是恶心了。

    前端的生态看似丰富,实际上就是在火堆上跳钢管舞,看着热闹,惹上了容易冒火,还是避远远的好。
    musi
        20
    musi  
       2022-08-10 10:47:30 +08:00
    @bao3 #12 不懂就问,啥电脑内存 1T
    HiCode
        21
    HiCode  
       2022-08-10 10:47:44 +08:00   ❤️ 5
    就求前端们别玩那么多胡里花俏的玩意,踏踏实实把一个东西打磨好了,用负责的态度去写代码,而不是用“吸引注意力”的方式去创造垃圾!
    javaisthebest
        22
    javaisthebest  
       2022-08-10 10:50:56 +08:00
    其他的倒是无所谓。

    前端的包玩意 你们是真的能玩

    一个打包工具 不停出轮子。。

    就不能像 java 一样统一下打包工具吗?

    java 到现在好像就 maven +gradle 用来打包。

    前端你们数数你们到底用了多少种?
    wanguorui123
        23
    wanguorui123  
       2022-08-10 10:59:09 +08:00   ❤️ 2
    用的多的语言才有人吐槽,其他语言只有摆烂
    rodrick
        24
    rodrick  
       2022-08-10 11:01:37 +08:00
    @javaisthebest 前端目前来说有深度的技术+业务场景有但是不多 那么绝大部分人为了工作中体现 kpi 价值还是需要通过铺开广度(造轮子)来创造 大环境问题 也真没办法 学的也累..
    icyalala
        25
    icyalala  
       2022-08-10 11:05:52 +08:00   ❤️ 2
    其他不说。。
    多线程操作 GUI 很容易出问题,大部分 GUI 系统的设计比如 Winforms 、Android 、iOS 同样也只允许主线程操作 UI 配合 eventloop 。这个问题已经被反复讨论很多了: https://news.ycombinator.com/item?id=10490627
    andyskaura
        26
    andyskaura  
       2022-08-10 11:06:10 +08:00
    @javaisthebest webpack 工程师=-=
    Mark24
        27
    Mark24  
       2022-08-10 11:10:50 +08:00   ❤️ 8
    [Imgur]( )
    Mark24
        28
    Mark24  
       2022-08-10 11:12:32 +08:00
    单线程没得黑。

    处理交互这个事情,你要试过做做游戏、游戏引擎、交互式应用。不要用任何框架自己码,从零开始造框架,你会发现,单线程是解决之道。
    youyaang
        29
    youyaang  
       2022-08-10 11:21:02 +08:00
    不同意第三点,现在很多前端监控解决方案了,与其等用户反馈问题,不如主动发现问题。
    说到底还是工程化或工具的使用问题
    kera0a
        30
    kera0a  
       2022-08-10 11:36:50 +08:00
    Mac Pro
    kera0a
        31
    kera0a  
       2022-08-10 11:37:06 +08:00
    @musi Mac Pro
    awesomes
        32
    awesomes  
       2022-08-10 11:39:46 +08:00
    吐槽完了就继续干活吧,反正你也改变不了什么
    Rrrrrr
        33
    Rrrrrr  
       2022-08-10 11:39:53 +08:00
    又不是不能用
    bthulu
        34
    bthulu  
       2022-08-10 11:57:03 +08:00
    js 不是能用就行吗, 要求这么高干嘛, 你还真拿来开发公司的核心服务啊?
    noreplay
        35
    noreplay  
       2022-08-10 12:00:38 +08:00 via Android
    @javaisthebest 还有 ant 打包
    yohole
        36
    yohole  
       2022-08-10 12:04:10 +08:00
    技术发展和迭代快本身是一个好事,但是很多人吐槽前端的原因是因为方向都在一些轮子和花里胡哨的东西上面,而核心和主方向相对缓慢,造就了现在外界看上去非常卷的现象,

    我觉得前端从业者对这个其实很没力的,主要靠的还是 核心工具链、主流框架、语言设计作者那些处于食物链顶端的人,他们的克制和引流潮流和方向非常重要,别一言不合就搞新的,这就很离谱
    darknoll
        37
    darknoll  
       2022-08-10 12:24:39 +08:00
    界面本来就要用单线程,这吐槽毫无道理。
    uni
        38
    uni  
       2022-08-10 12:32:51 +08:00   ❤️ 1
    长见识了,第一次听说 vscode 嫌弃 c++性能低才用的 js
    acerest
        39
    acerest  
       2022-08-10 12:34:25 +08:00
    可以,很强,我喜欢看这种帖子。op 加油。(百无聊赖的生活多了一丝波澜
    Asimov01
        40
    Asimov01  
       2022-08-10 12:45:31 +08:00
    V8 和 Node 面世以后,沉寂已久的 js 语言突然迎来了史上最快的发展期,最近这 10 年的发展超过了以往所有时期之和,群雄逐鹿,自然免不了割据混战,当年 java 也是什么个都做( web 、client 、server )的语言,我觉得对语言发展来说未必不是好事,但我个人更愿意选择一门稳定后的语言作为谋生手段。
    bthulu
        41
    bthulu  
       2022-08-10 12:51:49 +08:00
    @Asimov01 那当前稳定后的语言是什么呢
    churchill
        42
    churchill  
       2022-08-10 12:57:26 +08:00   ❤️ 1
    @uni 见鬼了,原文说的是“there are JavaScript <=> C++ round trips and given the number to round-trips, they slowed everything down.”

    到你这就变成了 c++性能低,这种长见识的方式太可怕了
    Asimov01
        43
    Asimov01  
       2022-08-10 13:07:55 +08:00
    @bthulu 稳定的(不怎么爆发式发展)语言挺多的,比如 C 、Scala 、Perl 、C++、Java 、Ruby 、Objective-C ,选一门生态齐全、久经考验、热度不错的语言就好,比如我选 Java
    catinsides
        44
    catinsides  
       2022-08-10 13:09:53 +08:00
    ...都没骂对点上...

    结果第一条是 不支持多线程,

    ???,(不是支持多线程的意思,是想说为什么是单线程肯定有什么原因吧
    mxT52CRuqR6o5
        45
    mxT52CRuqR6o5  
       2022-08-10 13:10:41 +08:00
    Javascript 是花 10 天设计出来的,你要是从这个角度去看,一切的糟粕也可以理解了
    fulvaz
        46
    fulvaz  
    OP
       2022-08-10 13:15:39 +08:00
    @youyaang 愿闻其详,哪个? 我去看看
    Envov
        47
    Envov  
       2022-08-10 13:17:50 +08:00
    这种帖子多来点,我爱看
    AmiKara
        48
    AmiKara  
       2022-08-10 13:18:20 +08:00
    多线程 web 可以参考小程序,开发体验 ——
    iapplebear
        49
    iapplebear  
       2022-08-10 13:22:59 +08:00
    好家伙,不敢说话了。
    cydysm
        50
    cydysm  
       2022-08-10 13:24:53 +08:00
    @Mark24 水印瞩目
    nexo
        51
    nexo  
       2022-08-10 13:33:10 +08:00
    @musi Mac Pro 二三十万 顶配版
    phyzoo
        52
    phyzoo  
       2022-08-10 13:35:32 +08:00
    自己菜非要怪语言
    Thymolblue
        53
    Thymolblue  
       2022-08-10 13:36:03 +08:00 via Android
    确实,哥们一个 Cpp 程序员最近碰了下 JavaScript ,可把我恶心坏了
    newmlp
        54
    newmlp  
       2022-08-10 13:46:08 +08:00
    一个脚本语言还想多线程?
    bigbigpark
        55
    bigbigpark  
       2022-08-10 13:48:34 +08:00
    JSON 之父:JavaScript 已非常复杂,我们能做的最好的事情就是让它退役
    https://news.cnblogs.com/n/726211/
    moell
        56
    moell  
       2022-08-10 13:52:55 +08:00
    @DOLLOR jav 还能写业务吗? 手动狗头
    npe
        57
    npe  
       2022-08-10 13:54:52 +08:00   ❤️ 1
    JSON 作者都建议废弃掉 Javascript 了
    qrobot
        58
    qrobot  
       2022-08-10 13:54:56 +08:00   ❤️ 3
    @fulvaz 你这明显没黑到点子上

    你说的不支持多线程, 在 web 上本来就有 WebWorker 和 webassembly, 基于 eventloop 来说, 对单线程利用率最高,基本上不存在性能问题, 除非是音频和视频解码和编码,或则需要并发计算的,否则基本上在项目中 eventloop 就够用了, 如果真的很大 WebWorker 就能满足了, 至于你说的 IPC 通信需要时间, 我给你科普一下,在大部分场景下,多线程慢单线程, 因为单线程无需上下文切换, 而多线程会切换上下文

    多线程下会消耗以下资源


    1. 切换页表全局目录
    2. 切换内核态堆栈
    3. 切换硬件上下文(进程恢复前,必须装入寄存器的数据统称为硬件上下文)
    ip(instruction pointer):指向当前执行指令的下一条指令
    bp(base pointer): 用于存放执行中的函数对应的栈帧的栈底地址
    sp(stack poinger): 用于存放执行中的函数对应的栈帧的栈顶地址
    cr3:页目录基址寄存器,保存页目录表的物理地址
    ......

    4. 刷新 TLB
    5. 系统调度器的代码执行


    其次在异步任务管理上, 是可以看到这些代码执行了多久, 打开 f12 选择 performance 即可. OOM 和 卡死的问题直接就可以 通过 performance 查看就好了


    你这个黑点完全没黑到地方。 要是我黑肯定是


    1. 大多数浏览器不符合 W3C 的标准, 例如以前 sort 的返回值
    2. css 在不同浏览器上差异太过于明显
    3. 不支持并发计算
    4. 没有内置好的时间处理函数
    5. 没有内置常见的例如 sha rsa ecc base64 等常用加密算法, 例如 btoa 就不能加密中文, 目前都还没解决这个问题
    6. 没有好的布局方式 grid 和 flex 等等布局都不是很满意,因为嵌套太深,andoird LinearLayout 似乎不错
    npe
        59
    npe  
       2022-08-10 13:56:04 +08:00
    @phyzoo 哟,小伙子,能否看看你的作品?
    andyxic
        60
    andyxic  
       2022-08-10 14:07:54 +08:00
    好家伙...别搞 B/S 架构不就好了。不用浏览器,你就没有痛点,整什么前端后端的,还不是自己菜,没拦着你用别的语言写 GUI 啊,讲白了,想站着把钱挣了。
    fulvaz
        61
    fulvaz  
    OP
       2022-08-10 14:14:01 +08:00
    @qrobot 哎呀,你没理解对。

    1. 足够复杂的业务构造 fiber 树的计算量不比音视频小。 我骂 js 不支持多线程需求,肯定是因为有需求需要共享内存+并行,上下文切换的开销怎么会没想到呢。
    2. performance 查看。你想得太简单了,线上问题没路径你怎么复现?你最多能用 worker 做心跳发现有问题,却不知道哪里有问题。另外心跳的开销要不要考虑?

    其他提的问题首先去骂库克,为什么要弄 WKWebview
    fulvaz
        62
    fulvaz  
    OP
       2022-08-10 14:15:18 +08:00
    @fulvaz 还有别问为什么要用垃圾 react 不直接干 DOM 。一时半会我改不了。
    qrobot
        63
    qrobot  
       2022-08-10 14:31:15 +08:00   ❤️ 1
    @fulvaz 如果是为了构建 fiber 树,例如做 react 或则 vue 这种框架,本身的 eventloop 性能完全足够. 共享内存本身就是一个非常错误的一种解决方案, 共享内存就存在 lock 的问题。其次日志的问题难道不应该先记录到 indexdb 之后在空闲的时候上传到服务器


    performance 就能很好的分析内存泄漏的原因, 通过记录用户的操作方式就可以正确的复现出来对应的内存泄漏问题。 如果一直都复现不出来问题, 建议直接联系客服

    其次你要是真的觉得 js 的性能你不满意, 欢迎来到

    1. (C/C++) Emscripten
    2. Rust
    3. Go
    4. Kotlin
    5. Swift
    6. D
    7. Pascal
    8. Zig
    9. Grain
    10. C#
    11. F#
    12. gtk

    你会其中一门语言就可以达到你说的, 支持多线程,没有瘸腿的异步任务管理。 这些都是可以运行在浏览器端的
    qrobot
        64
    qrobot  
       2022-08-10 14:32:05 +08:00
    @fulvaz 然后你换个其他语言,写到最后发现 嗯,JavaScript 真香
    qrobot
        65
    qrobot  
       2022-08-10 14:44:18 +08:00   ❤️ 7
    @qrobot 最后发现 嗯,eventloop 真香. 我跟你举个例子。

    我是不是可以使用多线程来执行代码? 嗯, 是的可以用多线程,来进行共享内存

    Yes , 我写了一个多线程来来操作内存,但是我发现内存会被其他的进行修改, 我感觉很苦恼
    Yes , 我写了一个 Lock 可以锁住这一块内存, 来控制多线程访问的问题,但是我发现了速度很慢
    Yes, 我写了一个 Lock-Free 大幅度提高了锁的性能问题,但是我发现不停的创建线程,销毁线程。 这样消耗很大
    Yes , 我写了一个线程池来解决了线程销毁和创建的问题, 但是我发现,如果 IO 很慢的情况下, 线程就会被占用,导致一个请求就一个 IO 这样程序太慢了。
    Yes, 我写了一个微任务解决了这个问题, 这样我可以在一个线程上执行多个任务, 这样线程就不会被 IO 阻塞了,我很开心的解决了这个问题, 并且设计出来了, 我给他取了一个好听的名字叫做 Microtask, 和 Microtask queue 。并且给了一个 Work 来单独的执行其他线程的问题。 但是 Work 的开销太大了, 并且没有多线程,共享内存
    YEs, 我写了一个多线程来来操作内存,但是我发现内存会被其他的进行修改, 我感觉很苦恼
    LinYa
        66
    LinYa  
       2022-08-10 15:05:34 +08:00
    fulvaz
        67
    fulvaz  
    OP
       2022-08-10 15:21:13 +08:00
    @qrobot 哎,无聊

    我有个需求适合多线程+共享内存来写,也没现成安全问题,你说这玩意不好。

    - - 你是来吵架的吗
    jamosLi
        68
    jamosLi  
       2022-08-10 15:27:29 +08:00
    他本来就只是一个两缸的拖拉机,虽然魔改的很厉害,但是你成天说他没有卡车拉得多,没有跑车跑得快。到底是他菜。还是你有什么不对劲
    qzhai
        69
    qzhai  
       2022-08-10 15:55:17 +08:00
    我觉得你看的教程太老了。
    你说的这些问题除了极个别的,其他放在现阶段都不是很致命的问题。
    前端的优势就是多端。这是其他任何语言都没办法颠覆的。
    能解决用户问题的语言才是最重要的。
    其他的都不重要。
    DICK23
        70
    DICK23  
       2022-08-10 16:01:00 +08:00
    感觉 OP 说的挺有道理的,光一个优先队列就感觉 JS 低人两档
    Robertwhite
        71
    Robertwhite  
       2022-08-10 16:24:19 +08:00
    存粹好奇楼主是做什么业务的,到底是啥复杂的场景...
    essicaj
        72
    essicaj  
       2022-08-10 16:56:30 +08:00
    eventloop 性能足够好我真是难以苟同,像网页打开大表格,全局搜索,批量替换场景。分分钟就卡死了 eventloop ,然而这种大数据又没办法很快速地在 WebWorker 中同步
    hangbale
        73
    hangbale  
       2022-08-10 16:59:43 +08:00
    最大的问题: 受限于浏览器
    hLc1
        74
    hLc1  
       2022-08-10 17:34:42 +08:00 via Android
    @essicaj eventloop 和密集运算有啥关系?快速同步啥意思?
    hLc1
        75
    hLc1  
       2022-08-10 17:37:43 +08:00 via Android
    异步任务管理为啥需要知道什么时候开始?什么时候结束?
    DrakeXiang
        76
    DrakeXiang  
       2022-08-10 18:06:19 +08:00
    单线程和任务管理这两个难道 node 里面就没问题?如果 node 没问题,为啥浏览器会有问题。另外 js 当初设计就不是为了执行你说的这种复杂任务的吧,java 当年也可以在浏览器里面执行,不还是被淘汰了
    belowfrog
        77
    belowfrog  
       2022-08-10 18:40:59 +08:00
    @lambdaq 现在有 tarui 了,用系统自带的 webview ,挺好的
    agagega
        78
    agagega  
       2022-08-10 18:48:47 +08:00 via iPhone
    多线程要安全要么像 Rust 严格检查所有权,要么学 Swift 把 actor 和 async/await 结合到一起。传统方法必然会出问题
    Shiu
        79
    Shiu  
       2022-08-10 19:09:44 +08:00
    Brendan Eich 拉了一坨屎,多年之后他们开始在屎里面盖房子了
    luguozmy
        80
    luguozmy  
       2022-08-10 20:17:34 +08:00   ❤️ 1
    这槽吐得连台湾政客都不如,也是酷炫
    alphardex
        81
    alphardex  
       2022-08-10 20:58:44 +08:00
    前端要那么多干什么?没了这些就写不出漂亮的界面了吗?写不出炫酷的效果了吗?写不出富有交互性的游戏了吗?
    jsq2627
        82
    jsq2627  
       2022-08-10 21:42:21 +08:00 via iPhone
    多线程共享内存在 go 和 rust 也不被提倡,这应该是业界踩了几十年坑后的共识
    虽然有时候共享内存确实很方便,最近我有个业务用 web worker ,要自己花很大精力封装 rpc 和序列化,头大
    pigspy
        83
    pigspy  
       2022-08-10 22:35:47 +08:00
    js 有的地方也是挺好的,比如声明一个对象用个大括号就行了
    Aloento
        84
    Aloento  
       2022-08-10 22:39:32 +08:00
    SharedArrayBuffer 默认禁用
    dcsuibian
        85
    dcsuibian  
       2022-08-10 23:25:52 +08:00
    多线程、监控 OOM 、优先队列,你是要用浏览器挖矿么?
    前端没有这些的最大原因是不需要,不要用后端的思想去想前端。

    如果你要拿 js 做计算密集型任务,那就是做不了的。
    但一般 web 场景本就不是对性能要求特别高的场景。网页加载完后,大部分时间 js 都是空闲的,而加载时,网络 IO 则更容易成为木桶的短板。甚至很多后端程序的执行时间也是花在了 IO 、数据库查询而不是计算上。

    安迪比尔定律:硬件给的,都会被软件消耗掉。如果是几十年前,那 cpu 资源确实是很宝贵的。但现在就不一样了。
    js 这样的高级语言之所以能流行,一方面是因为计算机的性能太快了,另一方面是因为他们的应用场景确实也不需要什么性能。
    高级语言就是把计算机时间浪费了,把程序员的时间省了。
    dcsuibian
        86
    dcsuibian  
       2022-08-10 23:36:33 +08:00
    另外,多线程会很大程度上提高应用的复杂性。对它的看法也越来越谨慎,原来你有一个问题,引入多线程,你就有两个了。已经不再被视为一个通用好用的解决方案。
    js 对异步的支持是非常好的(应该算是被单线程倒逼的)。使用 js ,就不应该用阻塞的写法,延迟执行和网络请求都是异步的。以前还有回调地狱,现在有了 promise 和 async/await 就好很多了。对比 C#
    dcsuibian
        87
    dcsuibian  
       2022-08-10 23:36:49 +08:00
    @dcsuibian 参考 C#
    RoshanWu
        88
    RoshanWu  
       2022-08-11 00:05:28 +08:00
    simply make it popular
    akira
        89
    akira  
       2022-08-11 00:54:21 +08:00
    你们是把浏览器当成操作系统来用了吧。。
    Solael
        90
    Solael  
       2022-08-11 08:11:22 +08:00
    正是有各种坑各种问题才好不停地造新轮子创造需求,给高级开发的钱就是这么来的。凡人跟着走就行了,只要前端这行还有钱赚就行
    laolaowang
        91
    laolaowang  
       2022-08-11 08:34:14 +08:00
    这是来了一个八卦论坛么??
    hoopan
        92
    hoopan  
       2022-08-11 08:46:38 +08:00
    前端的历史包袱比较重,技术迭代不可能跟后端语言一样快
    macha
        93
    macha  
       2022-08-11 09:01:17 +08:00
    来桌面客户端试试,国内的环境下,C++用到天荒地老。
    用 electron ?客户会说,包太大。
    用 C#? 客户会说,我不想要依赖。
    好吧,只有 c++能满足你了。

    所以国内现在要么
    是 QT ,要么是魔改的 Duilib 。
    Felldeadbird
        94
    Felldeadbird  
       2022-08-11 09:22:01 +08:00
    楼主吐槽的这几个点我就都没遇到过这种业务环境。可以看出楼主日常用前端很重度了。
    Narcissu5
        95
    Narcissu5  
       2022-08-11 09:38:34 +08:00
    @slipkinem 当年搞 flash 的也差不多这种想法,然后被整锅端了
    xingyuc
        96
    xingyuc  
       2022-08-11 09:48:03 +08:00
    就这?为什么不提各种小程序
    James369
        97
    James369  
       2022-08-11 10:01:28 +08:00
    Web 设计之初就这样了,谁知道网线什么时候可以变成总线呢
    lanten
        98
    lanten  
       2022-08-11 10:15:57 +08:00
    吐槽 promise 那一段相当诡异,还 monkeypatch 你还真是着了道了,程序设计成一坨屎应该怪语言吗?
    cmdOptionKana
        99
    cmdOptionKana  
       2022-08-11 10:22:41 +08:00
    @Solael

    > 正是有各种坑各种问题才好不停地造新轮子创造需求,给高级开发的钱就是这么来的。凡人跟着走就行了,只要前端这行还有钱赚就行

    说得太对了!如果是自己业余玩,不喜欢 js 完全可以玩桌面软件或手机 App ,如果是工作赚钱,前端问题多反而是大优点,有问题才有需求,赚钱不就是拿钱办事吗。
    shunia
        100
    shunia  
       2022-08-12 10:38:29 +08:00
    千人千面,每种语言应该都有值得被某个个体喷的缺陷。
    你不说你遇到的问题,直接说这个东西本身有问题,或多或少也是有点找杠了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4010 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 05:22 · PVG 13:22 · LAX 21:22 · JFK 00:22
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.