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

不知道是不是学太少导致的错觉:感觉 Web 开发比原生开发体验更好?

  •  
  •   pocarisweat · 2023-09-04 23:26:21 +08:00 · 6411 次点击
    这是一个创建于 478 天前的主题,其中的信息可能已经有所发展或是发生改变。

    尝试过学习和使用 SwiftUI/UIKit/AppKit 开发一些苹果生态里的小 App ,虽然能使用的 API 比 Web 更广泛,但要考虑的东西也多了,而且即使是 SwiftUI 这种 MVVM 的框架,写起来感觉也不如 Web 一样简洁明快(即使不用 Vue/React 这类框架)。也在 Copilot 和 ChatGPT 的帮助下非常浅薄地体验了一下写 Android Demo ,感觉和 iOS 差不多。

    工具链层面差距可能更大了。iOS 开发就一个说不上哪里不好但用着仿佛隔靴搔痒的 Xcode ,AppCode 都停止维护了。而前端因为体系是开放的,不管 VS Code 、WebStorm 还是 Emacs 之类的写起来都很顺畅。

    之前还有过一个想法,就是像 TypeScript 这样的语言应该能编译到真正的 native 代码,这样就可以在此基础上用 FFI 绑定到各平台的原生 API ( Cocoa/WinRT/GTK...),再因为我们有 TSX ,所以能够实现用 Web 语言的方式写原生接口的应用的目的。不过这样……可能只是发明了又一个 React Native ?

    第 1 条附言  ·  2023-09-06 00:33:22 +08:00
    提这个问题的本意,是想从开发经验更丰富的 V 友那里了解,是不是 Web 这种繁荣的开放体系能够促使开发体验的进步。没想到话题似乎偏移到了另外的方向……不过也挺好的,感谢大家的热情回复。

    顺便这里冒昧 at 一下 @WildCat 这位 V 友,因为看他也聊到过类似的话题。
    69 条回复    2023-09-25 11:27:11 +08:00
    darkengine
        1
    darkengine  
       2023-09-04 23:45:48 +08:00   ❤️ 1
    可惜用户要的是使用体验, 不关心开发体验
    adoal
        2
    adoal  
       2023-09-04 23:54:49 +08:00   ❤️ 3
    浏览器引擎的开发商给你抹平了太多原生 UI 的细节。
    binfreeze
        3
    binfreeze  
       2023-09-05 00:02:08 +08:00 via Android   ❤️ 1
    我没写过 web 。写程序的 API 只用操作系统的 win32 和 C++ 标准库的。其他全都造轮子。
    个人感觉,你写代码时候,抽象层次越高,也就是下面一层又一层叠起来的框架越多。。你肯定写着越爽。因为你离硬件和操作系统的工作原理,越来越远了。
    这里有个问题,你这样写程序,掌握的好多知识,随着时间很容易贬值。
    虽然你的生产力提高了,老板高兴,你拿到钱也很爽。但你自己的工程能力呢,解决问题的能力呢,或者基础知识之类的。一些隐式的能力因为得不到足够的锻炼会很薄弱。然后 10 年以后,你看人家造框架的人干的事情,就像魔法一样。回顾自己的职业生涯,可能就觉得当时选 web 是个错误的决定了。
    binfreeze
        4
    binfreeze  
       2023-09-05 00:13:43 +08:00 via Android   ❤️ 4
    可以看看 Mike Acton 的演讲视频,有个 C++ 的,还有个讲游戏引擎工程师需要什么样的能力。都有点偏向于传授内功心法,编程哲学的。。即便是你不写 C++ 也会有启发。或者 John Carmack 讲解决 Fackbook VR 设备延迟问题的演讲,看看他解决问题的思路。再思考一下自己现在的这些问题,你可能会是不一样的看法。
    如果你对技术的视线充满好奇心,我估计没多久,你自己也受不了太高抽象层次的编程了,会转变职业路线。如果你只是为了赚钱,或者觉得不了解细节和无所谓,编程不就是个拿工资的工作而已嘛,那他们说的跟你也没关系了。毕竟不同抽象层次的工作,都要有人干,也没什么到底谁对谁错,个人选择罢了。
    binfreeze
        5
    binfreeze  
       2023-09-05 00:17:15 +08:00 via Android
    刚打了几个错别字,自己脑补一下吧。。总结来说,你这个哪个爽的问题。本质上就是编程的抽象层次问题。
    bluedawn
        6
    bluedawn  
       2023-09-05 00:24:50 +08:00 via iPhone
    @binfreeze 您讲的是事实,我以前用 win32 写过图形界面。冗长的代码确实能实现精细控制,但是代价是用三小时写了别人用 MFC 三分钟写完的东西。确实 MFC 作为上层建筑过时很久了,但是这并不能让我重拾 win32 的兴趣。所以我觉得这么底层的东西打基础练习可以,但是用它来做点什么实在困难。
    binfreeze
        7
    binfreeze  
       2023-09-05 00:28:36 +08:00
    有个写编译器, 游戏引擎, 3D 游戏的大佬 jonathan blow, 看待 Web, 写 UI 代码的. 都不认为他们是程序员. 当然有点极端了. 他自己直播过写一些原生程序的界面. OpenGL, Truetype 字体解析, 就够了. UI 框架是什么, 不需要的. 你就算用 Typescript 写得再爽, 也没办法获得他那种成就感. 这个写的爽, 和知道一切原理的爽, 到底哪个更爽呢.
    binfreeze
        8
    binfreeze  
       2023-09-05 00:38:32 +08:00
    @bluedawn win32 还相对简单一些, 用图形 API 调用 GPU 画界面更麻烦. 但你可以自己去封装这些, 让以后写这种程序, 也几分钟就结束. 类似 imgui 那样, 但规模更小一些. 程序员的职业生涯很长, 如果现在 25 岁, 那到 60 岁还有 35 年呢. 每个月抽出来点时间维护的自己的这个画界面的小工具, 可以用一辈子.. 也不是很难的一件事. 还能学到不少东西. 如果底层的都不接触, 等到退休那天, 发现好多地方自己看过去就像是黑盒一样, 不会感觉有些遗憾么. 我的意思是, 如果你有兴趣, 那么花时间进去是值得的, 麻烦一些也值得. 如果没兴趣, 愿意把人生的时间花在自己认为更有意义的其他方面, 那确实也没必要非要折腾自己了.
    binfreeze
        9
    binfreeze  
       2023-09-05 00:46:51 +08:00
    @bluedawn 这调用操作系统的 API 其实也是个黑盒. 毕竟看不到后面的源代码. 但写应用程序只能到这个程度, 毕竟是在人家微软的系统上跑. 图形 API 也没有完全反应显卡的工作原理.. 但至少解开了一些谜团.
    说个跑题的, 我觉得编程里面有好多地方, 会让人意识到, 所做的事情仅仅是因为某个人制定了一个规则, 哪怕这个规则的很糟糕, 也不得不忍受. 而有些地方, 比如一些算法什么的, 可能会更接近 "宇宙本质" 的一些东西, 更像是数学物理之类的. 我估计绝大多数人, 都不喜欢被别人的规则牵着走, 而更希望触及一些本质, 永恒不变的东西.
    zzzkkk
        10
    zzzkkk  
       2023-09-05 00:54:31 +08:00 via Android
    再底层是驱动

    任何底层 api 都是对驱动 api 的调用

    底层就直接是电路 人家硬件更看不起软件呢
    binfreeze
        11
    binfreeze  
       2023-09-05 00:54:36 +08:00
    @bluedawn 我觉得 CPU, 内存, 各种硬件. 就像是计算机内部的这个虚拟世界的物理规则. 我们虽然没有办法去直接触碰现实世界的物理规则. 但也可以在这个虚拟世界中, 用第一性原理一样的方式, 去解决一些问题, 也让自己爽一爽. 所以我觉得 Mike Acton 说的那些很有道理. 你在这个虚拟世界的内部爽够了, 也可以让你的这个小世界去触碰外部的世界, 比如各种机器人什么的, 那这就更爽一些了.
    binfreeze
        12
    binfreeze  
       2023-09-05 00:59:43 +08:00
    @zzzkkk 问题是, 程序员没必要非要把自己限制在一个层级内就不往下探索啊. 一个人可以工作用框架完成业务, 为了赚钱. 但他也可以满足好奇心, 一口气写到驱动, 甚至到电路上. 如果仅仅是弄个玩具一样的, 难道也是一个遥不可及的事情吗.
    binfreeze
        13
    binfreeze  
       2023-09-05 01:01:13 +08:00
    @zzzkkk 他甚至可以一边当程序员, 自己回家看看物理书呢. 没人规定他不能做这个事情.
    binfreeze
        14
    binfreeze  
       2023-09-05 01:08:50 +08:00
    借着你这个帖子, 我继续扯远点.
    200 年后的程序员, 他还是写这种 APP 吗.
    如果脑机接口可以往自己脑子里面输入信息了, 你是愿意直接操作硬件输入这个数据, 还是依赖于第三方的什么库完成这个事情呢, 在编码自己大脑的过程中, 你能信任微软吗.
    你有梦到过自己家里的家政机器人, 忽然变得不受控制, 开始攻击自己吗.
    你有好奇, 未来真正的人工智能到底是如何编写出来的吗, 他内部到底是怎么工作的, 为什么会产生意识, 或者是不是永远都不会产生意识?
    这个抽象层次的问题, 不仅仅是到底用不用框架, 哪个更爽这么简单. 它暴露的是更深层次的一些问题, 编程到底是什么呢. 自己作为控制机器的这个人, 当有了更多的可能以后, 愿意做什么呢.
    binfreeze
        15
    binfreeze  
       2023-09-05 01:13:32 +08:00
    我觉得对系统的完全控制, 可以是一种追求. 即便是完成这个事情很难, 不是一个人能做到. 但有这种向往, 去实现一部分, 也是一件值得做的事情. 至少对于我这个科幻迷是这样的.
    darkengine
        16
    darkengine  
       2023-09-05 01:17:43 +08:00
    @binfreeze 我觉得能用快捷的方案 (web, native app) 实现自己的一个想法, 满足自己的用户也是一件很有成就感的事情. 当然如果在工作中用 web/app 做一些自己都不认同的产品, 那肯定相当痛苦.
    binfreeze
        17
    binfreeze  
       2023-09-05 01:19:05 +08:00
    最后说一个睡觉了. 我这种玩论坛的方式应该是错的.. 把你这里当作自己抒发想法的地方了.. 你有想过, 高德纳的 TACOP 为什么是设计了一个虚拟的 CPU, 然后用这个讲算法吗. 这个方式合理吗?
    binfreeze
        18
    binfreeze  
       2023-09-05 01:25:56 +08:00
    SICP 的作者给惠普培训的时候, (具体哪个公司我也忘了), 他说天文学不是研究显微镜. 那研究硬件的工作原理, 是不是就像研究显微镜, 很没意义呢? 我对编程有很多疑惑, 内心也有很多声音在碰撞着. 我觉得很多答案需要用一生来探寻.
    binfreeze
        19
    binfreeze  
       2023-09-05 01:29:07 +08:00
    @darkengine 对啊. 实现业务也是一件有成就感的事情. 每个人都有自己认为有意义的事情. 或者说, 有没有意义, 只取决于你自己的意识. 跟这个世界上其他人的看法是没关系的.
    binfreeze
        20
    binfreeze  
       2023-09-05 01:35:19 +08:00
    回到话题本身. 这个 "爽" 如何去定义呢. 我觉得 "到底哪种方式更爽", 取决于说这个话的人, 他自己的灵魂.
    msg7086
        21
    msg7086  
       2023-09-05 04:44:38 +08:00
    @binfreeze #3 #4
    你说得对,这都看个人追求了。有人玩深度,有人玩广度。抽象和封装本来就是工程能力的一部分,把细节隐藏得越好,上层开发越舒服,说明你架构做得越好。现在写 C++的,也不太需要关心下面 C++到汇编的转译优化。写 CUDA 也不用关心显卡硬件是如何执行的。的确,总要有人做底层的工作,但是越底层的地方人越少,因为需求少。只要少部分人把底层打扎实了,剩下的 99%的人只要站在巨人的肩膀上就行了。
    Chad0000
        22
    Chad0000  
       2023-09-05 05:44:09 +08:00
    OP 可能在说 Native Script ,区别是它并不是编译成 Native 而已。
    Mutoo
        23
    Mutoo  
       2023-09-05 07:03:40 +08:00 via iPhone
    web ui 几乎是 gui 的最终形态。以至于 unity 这样的游戏引擎也把 web 的这套东西往引擎上搬: https://docs.unity3d.com/Manual/UIE-USS.html
    j
        24
    j  
       2023-09-05 08:20:58 +08:00
    觉得开发生态好,也可以说明这个领域已经是深红海了.
    binfreeze
        25
    binfreeze  
       2023-09-05 08:26:16 +08:00 via Android
    @msg7086 也看工作类型。因为编译器并不是魔法棒,在某些优化问题上,用 Mike acton 的话说,编译器只解决了 10%的问题,剩下的部分还得靠程序员自己的内功,理解汇编代码是如何生成的,硬件的原理。实时系统,追求一秒多少帧的,对这方面很苛刻。但如果程序是几秒钟和几分钟跑完,无所谓的,确实不需要关心这些优化问题了。我自己是写了 PNG 解码的时候意识到这个优化涉及到汇编和硬件的问题的,越是接近性能极限,你对相关知识的需求会越明显。
    binfreeze
        26
    binfreeze  
       2023-09-05 08:30:52 +08:00 via Android   ❤️ 1
    @msg7086 他们做游戏引擎的连 C++标准库都给换掉了,觉得标准库太慢。可是 C++作者写书的时候,说标准库很快,程序员不需要造轮子,直接用就好。其实谁都没错,只是谈论这个问题的时候,场景不一样。
    nicegoing
        27
    nicegoing  
       2023-09-05 08:33:01 +08:00 via iPhone
    原生开发本来繁琐钱少。比如安卓一个简单的网络请求,还得封装半天。组件多到记不住,微调组件的属性,还得找半天对应属性名称。
    sofukwird
        28
    sofukwird  
       2023-09-05 08:34:59 +08:00 via Android
    @binfreeze 很好,手搓 CPU 吧
    binfreeze
        29
    binfreeze  
       2023-09-05 08:39:03 +08:00 via Android
    @msg7086 我没写过 CUDA 。但是 Vulkan 调用显卡的时候,这个硬件的原理是避不开的。数据从内存到显存,这个过程的吞吐量,延迟之类的,乱七八糟跟硬件有关的,是避不开的。有些地方的代码,写的时候确实要考虑 cpu gpu 指令的时间开销。
    musi
        30
    musi  
       2023-09-05 08:51:32 +08:00
    @binfreeze 你说的都对,我都赞同,但是大部分人写代码就是为了混口饭吃,在这个社会兴趣爱好的前提也是能吃饱饭。会更底层的技术确实对个人技术能力的发展更有帮助,但是对混口饭吃的帮助可能就没那么大,不是所有公司都需要这样的人的,资本都讲究一个投资收益比,其实学习也讲究一个投资收益比,人的精力总是有限的,知识是无限的,肯定选对“自己”觉得帮助更大的知识学习。你觉得对自己帮助更大的就是学习更底层一点的技术,但是大部分人不是这样的。
    binfreeze
        31
    binfreeze  
       2023-09-05 08:52:25 +08:00
    @sofukwird 你这就纯抬杠了. 我只是借它这个话题讨论抽象层级有关的一些问题, 确实扯得远了点.. 不停地往上抽象, 封装, 确实就是会存在一些无法解决的问题, 尤其对于某些特定的领域. dx11, openGL -> dx12, Vulkan 为什么在减少抽象层级呢, 这都是有原因的. 只要一个人一直写代码, 他就会有一天意识到抽象带来的一些负面问题. 开始对这些问题产生思考.
    binfreeze
        32
    binfreeze  
       2023-09-05 08:57:23 +08:00   ❤️ 1
    @musi 是啊, 你说的这些没错. 人生有涯而知无涯. 我就是说一些自己的看法, 我自己也在兴趣和赚钱之间的时间分配上, 不停地做取舍.
    horizon
        33
    horizon  
       2023-09-05 09:04:07 +08:00
    忘记 native 吧,未来浏览器就是操作系统
    tool2d
        34
    tool2d  
       2023-09-05 09:25:16 +08:00
    @binfreeze "回顾自己的职业生涯,可能就觉得当时选 web 是个错误的决定了。"

    这是分人的。

    和游戏玩家原理一样,有些萌新只想轻轻松松通关,遇到复杂的游戏,根本不会玩。又有一些是 hardcore 玩家,他们会对高难度游戏赞不绝口,但毕竟是少数人群。

    写 C++就是核心玩家,在游戏工业高度发达的今天,普通学生只能用 lua 或者 c#写游戏脚本,很难像以前一样自己写自制框架。

    新时代的背景下,造就了 web 开发的成功之路。没有 webview 做不到的 app 。
    debuggerx
        35
    debuggerx  
       2023-09-05 09:36:37 +08:00
    就我个人体验来说,最大的问题就是 Xcode 太垃圾了,再好的语言和框架用它去开发,体验都和吃屎一样
    KT0J
        36
    KT0J  
       2023-09-05 09:39:35 +08:00
    体验确实更好。

    有的技术,语言,写起来就是繁琐。


    “像 TypeScript 这样的语言应该能编译到真正的 native 代码”

    之所以觉得写的爽,就是因为不用编译到 native 。

    在写 Flutter 时就能明显体会,为了性能,就没办法写的那么爽。
    比如一个 const ,就限制了很多爽。
    你当然可以不管性能问题,那直接填套 web 就好。
    xz410236056
        37
    xz410236056  
       2023-09-05 09:54:35 +08:00
    我觉得你不是专职开发 iOS 的。。。能比 xcode 好用的也就 VS 了吧,SwiftUI/UIKit 能直接拖组件你不知道吗?啥玩意开发有直接往画布上扔组件来的爽?
    CodeCodeStudy
        38
    CodeCodeStudy  
       2023-09-05 10:27:18 +08:00
    WebAssembly 可以做很多事情啊,比如在浏览器上实现 VSCode ,是完全在浏览器上运行的,而不是 Code Server 那种
    codehz
        39
    codehz  
       2023-09-05 10:48:43 +08:00   ❤️ 1
    @binfreeze
    很显然和所有工程一样,软件工程也是妥协的艺术,理想主义不能当饭吃,现实中就是会有多种相互冲突的需求,尤其是不同类型的项目,需求差异更是千差万别,代码设计的再好,用户也无法察觉,只能从主观上去评估,谁会在意点下按钮,需要用几个指令周期,访问几次内存,发送几个请求才能完成呢?
    说到底,最主要的问题就是,约束太多,而资源有限。就像现代无法复刻 2000 多年不倒的古罗马混凝土建筑一样,并不是现代人没能力做,而是不想分配几十万“人月”的资源去做,现代建筑设计寿命就几十年,你造 2000 年不坏的建筑有什么用呢
    就像混凝土的评价指标不止是持续时间一样,代码的评价指标也不止是性能,开发成本你当然也得算进去,还有更多的指标和具体目标相关,例如互联网领域你期待能快速变更以适配风口,2C 领域你期待能实现美观的界面,2B 领域你期待数据安全保障,工业领域你期待能持续维护
    当然不是所有的指标都互相冲突(比如你确实可以做得既优雅又漂亮,还有很高的性能,在主流平台都能流畅运行,还容易扩展,方便后期维护),但显然几乎所有其他指标都和开发成本/时间冲突,在成本固定,时间有限的情况下,某个方向追求越高,分配给其他方向的预算自然就更少
    binfreeze
        40
    binfreeze  
       2023-09-05 10:59:14 +08:00
    @codehz 你的理解比我深刻多了. 语言组织能力也很强. 佩服.
    FreshOldMan
        41
    FreshOldMan  
       2023-09-05 11:06:20 +08:00
    我从 native 开发,到前端开发,感受就是前端开发确实体验更好一点,可能和前端是开放的原因有关,首先 ts ,基本不用编译,所谓的编译只不过是转换一层而已,实时显示,开发工具多,包多,但是前端更偏向业务,稍微底层的东西要做好还是要 native 的
    whyrookie
        42
    whyrookie  
       2023-09-05 11:12:30 +08:00
    开发体验而言,前端确实会好很多
    binfreeze
        43
    binfreeze  
       2023-09-05 11:17:18 +08:00
    @codehz 其实你说的这些我也理解. 但我现在组织语言的能力太差了, 早期学习时候喜欢记笔记, 写心得. 后来渐渐为了效率, 就是想到哪里说哪里, 从折腾笔记工具过渡到只用 txt 文件一顿乱写.. 然后渐渐发现自己就不太会用长文字表达自己的一些想法了. 也是因为接触到的东西越来越多, 有点感觉时间不够用了. 我凭借记忆举几个你说各种指标冲突的例子吧. 我忘了是 Quake 还是 DOOM 的哪个版本了, 源代码被公开的一个. 里面有些功能的实现非常直白, 有一个计算机专业学生, 他觉得这个写的不好, 应该怎样优化, 就给 Carmack 他们发邮件. 结果对方说, 我们有很多的事情要做, 这个优化对于整个项目来说, 无关紧要. 后来我看 jonathan blow 回他母校做的演讲也提到了类似的事情, 比如不仅仅要关注程序的运行时间, 优化程序员自己的人生时间也同样重要. 我自己写代码的时候, 有些地方就会写的很直白, 傻瓜化, 追求未来的可读性而抛弃了一些优化. 你说的这些评价指标之间的取舍, 我能明白什么意思.
    heroin80s
        44
    heroin80s  
       2023-09-05 11:38:58 +08:00
    你的感觉是正确的。 应用层开发更关注问题域的逻辑,底层约束考虑较少(很多底层框架帮你解决了), 就更为自由。
    不了解也不影响你开发,但在某个时刻,你感受到了,就需要往底层看下去。
    操作系统,浏览器,IO ,网络,每一个都是天坑,这些更多的是计算机体系知识, 有个大概框架认知,遇到问题知道从哪方面去深入就可以了。 目前的发展程度,每一层都精通是不可能的。 需要有一个自己的精通层面,在这个基础上往上,往下都可以。
    binfreeze
        45
    binfreeze  
       2023-09-05 11:41:32 +08:00
    @codehz 我想起来一段话, 忘记是谁说的了. "你有一段代码, 一个功能, 你现在没有时间去优化它, 跟你没有能力去优化它, 这之间的区别很大." 我个人理解是, 我们写了一大堆代码, 这里面自己每一步都干了什么, 哪里损失了性能, 哪里损失了可读性, 哪里的结构不合理, 我们应该有一个认知. 而不是就算自己写了很慢的代码, 却以为它很快. 写了可读性很差的代码, 却觉得它很好, 结构不合理, 却觉得就应该这样. 在做出取舍的时候, 如果你明白自己在做什么, 你的取舍没问题. 可如果你压根意识不到问题的所在, 这个取舍的意义就不一样了.
    binfreeze
        46
    binfreeze  
       2023-09-05 11:57:50 +08:00
    @codehz 继续往下说. 当有一天, 我们遇到一个不得不解决的问题. 那种对很多问题有认知, 也能解决, 却选择没去做的人. 他可以消灭这个问题, 推进项目的进展. 而那种既没有认知, 也每次都选择节省时间的人, 他会被卡住.
    可能有些人会说, 卡住以后, 再花时间就是了, 不会可以学嘛, 可以研究嘛.
    但能力不是这样获得的不是吗? 他不是一天两天形成的. 这是一个长期的结果.
    这两种程序员, 随着时间的推移, 他们之间的技术差距会越来越大. 他对于一个企业的价值也变得天壤之别.
    binfreeze
        47
    binfreeze  
       2023-09-05 12:04:24 +08:00
    @codehz 我记得之前在知乎上看到一个人说, "写代码不值钱. 解决那种别人解决了无数遍的问题, 也不值钱." 当然, 说这个话的人, 看起来好像是有点水平的. 其实他的水平, 跟这个话也没什么太多关系, 他就是提出了一个观点.
    那我思考, 到底什么是值钱的? 什么样的能力是高价值的. 直到后来我看了 carmack 的那个演讲, 听他讲自己解决问题的时候, 才开始明白. "解决那种没人能解决的问题, 才是值钱的." 那个人所谓的值钱, 应该是指这个意思, 而不是能不能找到工作那么简单.
    那另外一个问题就出来了, 如何获得这种能力呢? 我们到底应该怎样磨练自己, 才能成为那样的人.
    binfreeze
        48
    binfreeze  
       2023-09-05 12:10:22 +08:00
    @codehz 我看了下你之前的帖子. 你也接触了 TCC, QEMU 的源代码了, 肯定也知道它们的作者 Fabrice Bellard 是谁. 那问题来了, 为什么他能做到这些事情呢? 我们如何让自己也变得这么强呢. 如果一切都是上天注定的, 先天智商决定的, 那似乎就没有讨论的必要了. 但我觉得智商并不是全部因素, 这里面一定有一些因素, 是我们可以通过后天努力而获得的. 那些优秀的人之所以优秀, 是不是因为他们的每一个选择, 都把他引向了一个成就他的路线上呢.
    binfreeze
        49
    binfreeze  
       2023-09-05 12:21:44 +08:00
    @codehz Linus 说, "没有什么语言比 C 更好, 他在看 C 代码的时候就像看汇编一样." 那我们看 C++ 代码的时候, 是什么思考方式呢, 我们能看到汇编吗? 更进一步说, 能潜意识地 "看到" 汇编的意义有多大?
    高德纳前两年接受 MIT 一个老师访谈的时候说过自己年轻时候跟图灵接触的一些趣闻, 他说图灵强迫自己用计算机的方式思考数字, 就大概强迫自己二进制那样思考吧.
    这些前辈们, 他们也有很多疑惑啊, 也在探索一些东西. 也在试图去训练自己, 让自己获得一些特殊的能力, 不然图灵他干嘛那样做. 当然, 这也可能只是我的错误理解.
    后翼弃兵 The Queen's Gambit 这个电视剧里面, 有展现那个主角思考国际象棋的方式, 或者顶级棋手的思维模式, 就是跟普通人不一样的. 有没有觉得这和 Linus 所说的看汇编有相似之处.
    所以, 计算机科学, 编程, 这里面就是存在一些神秘的地方, 值得让人思考, 让人探索的. 保持好奇心去学习, 去找到各种知识之间对自己的影响, 可能比知识本身, 有着更高的一些价值. 或者高不高已经无所谓了, 能看到一些隐藏的"东西", 是更重要的.
    StudentYanling
        50
    StudentYanling  
       2023-09-05 12:55:25 +08:00
    @binfreeze 老哥 4 楼提到的两个视频,可以给个链接吗?麻烦了🙇‍
    mokevip
        51
    mokevip  
       2023-09-05 13:32:45 +08:00
    一共 50 楼 @binfreeze 老哥独自包揽 27 楼

    我们理解你的意思了,很多人也做了总结和提炼了,不需要一直反复强调。。

    硬核玩家理所当然可以得到所有人的喝彩
    1002xin
        52
    1002xin  
       2023-09-05 13:35:55 +08:00
    你做的东西是给用户用的,还是给开发者看的
    horizon
        53
    horizon  
       2023-09-05 13:43:27 +08:00
    @mokevip #51
    这位老哥应该是对自己现在做的事很自豪
    binfreeze
        54
    binfreeze  
       2023-09-05 14:05:24 +08:00 via Android
    我也觉得有点说的太多了。我只是把自己想法,想到哪里说哪里,也没考虑那么多对别人的影响。但论坛不是这么玩的。这个论坛为什么不能删账号呢。我想回到自己一个人的小世界,不与外界沟通。我这几年都这样过来的,我每次试图表达什么,感觉最后都很招人讨厌。请管理员把我的账户删了吧
    TArysiyehua
        55
    TArysiyehua  
       2023-09-05 14:13:47 +08:00
    我主业是 android 开发,也开了一两年 web ,个人感觉跟你完全相反,web 开发完全做不到 android 开发这么顺畅,体验不如原生开发好
    DAPTX4869
        56
    DAPTX4869  
       2023-09-05 14:44:14 +08:00
    @binfreeze #54 没必要删号吧; 虽说看不懂大佬说啥
    jwautumn
        57
    jwautumn  
       2023-09-05 14:44:32 +08:00   ❤️ 3
    ?这个贴子谁是 OP ?
    AsZr
        58
    AsZr  
       2023-09-05 16:36:35 +08:00
    @jwautumn #57 hhhhhhhhh
    Canight
        59
    Canight  
       2023-09-05 16:51:53 +08:00
    @binfreeze 我觉得论坛就是这么玩的,看看别人在干啥,他们的思考,挺有意思的,讨人厌这个事情是很正常的,你不能让所有人都喜欢你,但一般发声的都是讨厌你的人,可能造就了你的错觉
    bigbigpeng3
        60
    bigbigpeng3  
       2023-09-05 17:28:56 +08:00
    理性讨论问题总是好事,尽量不要带情绪。我觉得这帖子很好,我也看到了更大,更清晰的世界。另外费曼学习法不就是让大家把自己学会的教给别人吗,才能记忆更持久。 @binfreeze 请多讨论,不要躲在一个人的世界。
    znye
        61
    znye  
       2023-09-05 17:57:46 +08:00
    @binfreeze 发言只要不违反规则不就是想怎么说就怎么说才对? 我觉得你的想法比较有意义, 请多讨论, 但是可以不分这么多条.
    zxCoder
        62
    zxCoder  
       2023-09-05 19:37:04 +08:00
    肯定的啊,开发体验 web 吊打原生几条街,但是原生据说性能更好
    pocarisweat
        63
    pocarisweat  
    OP
       2023-09-06 00:30:52 +08:00
    @binfreeze
    我自己的工作就跟这种底层开发有点关系。但其实写真的底层软件和这类图形界面程序还是很不一样,前者面临的东西虽然难,但问题相对是比较细的,GUI 程序范围就很大,做不到关注点分离。

    能够精细地管理内存处理事件很有意义,但是开发 GUI 程序似乎有些脱离这个层面的本质困难,所以直到现在都不断有人提出新概念去管理 GUI 开发里的各种复杂度。提这个问题,也是因为我感觉 Web 开发有今天的繁荣,不能完全用屏蔽底层接口来解释,它应该也是在其他方面做对了若干事情。

    我接触编程比较早,那会还是在中学,刚入门的语言是 C++,那会在网上和人争论胜过学技术本身。所以我很能理解你说有些话时候的心情。那会的我发自内心不喜欢 Python 、JS 这些「上层」语言,甚至还包括了 C#、Java ,回头看,当时的自己除了上论坛吹牛,自己也没做出啥有意义的东西,也没学多少真功夫。现在看,接触不同的技术对开阔眼界还是相当有价值。
    fenglirookie
        64
    fenglirookie  
       2023-09-06 16:29:21 +08:00
    @pocarisweat 所以你的意思是说越底层的语言开发者,眼界越广阔吗?我是真诚提问
    fenglirookie
        65
    fenglirookie  
       2023-09-06 16:30:31 +08:00
    @TArysiyehua 你和贴主关注点不一样,你关注的是用户体验,贴主关注的是开发体验
    TArysiyehua
        66
    TArysiyehua  
       2023-09-06 17:18:28 +08:00
    @fenglirookie 我说的就是开发鸭,我觉得移动端的开发体验比 web 的好多了,web 拉个 npm 没点本事都拉不下来,还没有本地缓存,每次都是从服务器拉的,脑残的一匹
    fenglirookie
        67
    fenglirookie  
       2023-09-07 15:34:16 +08:00
    @TArysiyehua 你这样说的话我每次想学习 Android 的时候也是倒在了包管理配置这一步,你不能把不同熟练度的放在一起比较吧?
    TArysiyehua
        68
    TArysiyehua  
       2023-09-07 17:41:12 +08:00
    @fenglirookie 虽然 gradle 拉包也挺脑残的,我没搞 web 之前一直骂 gradle ,知道我遇到的 npm/yarn ,我才知道原来脑残也是对比出来的。
    除了包管理这块,web 其他开发跟移动端比,唯一牛逼的就是热部署(不知道怎么说这个词),就是它不需要每次重新编译,或者说它仅编译修改的部分要比移动端要方便,要快。
    其他的确实没觉得哪里比移动端好,不管是工具,找错误,调试,断点,查源码,甚至具体到设计模式,代码管理等等,我都感觉移动端要好一点。
    学了 web 我的感觉就是:
    1. web 太自由,导致代码不好管理,也不好修改
    2. web 的历史包袱太重了,移动端一上来就用目前业内最好的解决方法
    fenglirookie
        69
    fenglirookie  
       2023-09-25 11:27:11 +08:00
    @TArysiyehua 代码管理和某个语言并没有什么关系,web 确实有很大的历史包袱,是因为基础语言都还在完善之中,相比起来,Android 有 java 作为前驱,语言已经稳定,Object-c 又有大平台做后盾。其实我只是想多,每个技术既然存在就有道理,能够出现必然是为了解决某一类问题的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3253 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 12:53 · PVG 20:53 · LAX 04:53 · JFK 07:53
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.