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

2023-09-04 23:26:21 +08:00
 pocarisweat

尝试过学习和使用 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 ?

6305 次点击
所在节点    随想
69 条回复
msg7086
2023-09-05 04:44:38 +08:00
@binfreeze #3 #4
你说得对,这都看个人追求了。有人玩深度,有人玩广度。抽象和封装本来就是工程能力的一部分,把细节隐藏得越好,上层开发越舒服,说明你架构做得越好。现在写 C++的,也不太需要关心下面 C++到汇编的转译优化。写 CUDA 也不用关心显卡硬件是如何执行的。的确,总要有人做底层的工作,但是越底层的地方人越少,因为需求少。只要少部分人把底层打扎实了,剩下的 99%的人只要站在巨人的肩膀上就行了。
Chad0000
2023-09-05 05:44:09 +08:00
OP 可能在说 Native Script ,区别是它并不是编译成 Native 而已。
Mutoo
2023-09-05 07:03:40 +08:00
web ui 几乎是 gui 的最终形态。以至于 unity 这样的游戏引擎也把 web 的这套东西往引擎上搬: https://docs.unity3d.com/Manual/UIE-USS.html
j
2023-09-05 08:20:58 +08:00
觉得开发生态好,也可以说明这个领域已经是深红海了.
binfreeze
2023-09-05 08:26:16 +08:00
@msg7086 也看工作类型。因为编译器并不是魔法棒,在某些优化问题上,用 Mike acton 的话说,编译器只解决了 10%的问题,剩下的部分还得靠程序员自己的内功,理解汇编代码是如何生成的,硬件的原理。实时系统,追求一秒多少帧的,对这方面很苛刻。但如果程序是几秒钟和几分钟跑完,无所谓的,确实不需要关心这些优化问题了。我自己是写了 PNG 解码的时候意识到这个优化涉及到汇编和硬件的问题的,越是接近性能极限,你对相关知识的需求会越明显。
binfreeze
2023-09-05 08:30:52 +08:00
@msg7086 他们做游戏引擎的连 C++标准库都给换掉了,觉得标准库太慢。可是 C++作者写书的时候,说标准库很快,程序员不需要造轮子,直接用就好。其实谁都没错,只是谈论这个问题的时候,场景不一样。
nicegoing
2023-09-05 08:33:01 +08:00
原生开发本来繁琐钱少。比如安卓一个简单的网络请求,还得封装半天。组件多到记不住,微调组件的属性,还得找半天对应属性名称。
sofukwird
2023-09-05 08:34:59 +08:00
@binfreeze 很好,手搓 CPU 吧
binfreeze
2023-09-05 08:39:03 +08:00
@msg7086 我没写过 CUDA 。但是 Vulkan 调用显卡的时候,这个硬件的原理是避不开的。数据从内存到显存,这个过程的吞吐量,延迟之类的,乱七八糟跟硬件有关的,是避不开的。有些地方的代码,写的时候确实要考虑 cpu gpu 指令的时间开销。
musi
2023-09-05 08:51:32 +08:00
@binfreeze 你说的都对,我都赞同,但是大部分人写代码就是为了混口饭吃,在这个社会兴趣爱好的前提也是能吃饱饭。会更底层的技术确实对个人技术能力的发展更有帮助,但是对混口饭吃的帮助可能就没那么大,不是所有公司都需要这样的人的,资本都讲究一个投资收益比,其实学习也讲究一个投资收益比,人的精力总是有限的,知识是无限的,肯定选对“自己”觉得帮助更大的知识学习。你觉得对自己帮助更大的就是学习更底层一点的技术,但是大部分人不是这样的。
binfreeze
2023-09-05 08:52:25 +08:00
@sofukwird 你这就纯抬杠了. 我只是借它这个话题讨论抽象层级有关的一些问题, 确实扯得远了点.. 不停地往上抽象, 封装, 确实就是会存在一些无法解决的问题, 尤其对于某些特定的领域. dx11, openGL -> dx12, Vulkan 为什么在减少抽象层级呢, 这都是有原因的. 只要一个人一直写代码, 他就会有一天意识到抽象带来的一些负面问题. 开始对这些问题产生思考.
binfreeze
2023-09-05 08:57:23 +08:00
@musi 是啊, 你说的这些没错. 人生有涯而知无涯. 我就是说一些自己的看法, 我自己也在兴趣和赚钱之间的时间分配上, 不停地做取舍.
horizon
2023-09-05 09:04:07 +08:00
忘记 native 吧,未来浏览器就是操作系统
tool2d
2023-09-05 09:25:16 +08:00
@binfreeze "回顾自己的职业生涯,可能就觉得当时选 web 是个错误的决定了。"

这是分人的。

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

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

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

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


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

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

在写 Flutter 时就能明显体会,为了性能,就没办法写的那么爽。
比如一个 const ,就限制了很多爽。
你当然可以不管性能问题,那直接填套 web 就好。
xz410236056
2023-09-05 09:54:35 +08:00
我觉得你不是专职开发 iOS 的。。。能比 xcode 好用的也就 VS 了吧,SwiftUI/UIKit 能直接拖组件你不知道吗?啥玩意开发有直接往画布上扔组件来的爽?
CodeCodeStudy
2023-09-05 10:27:18 +08:00
WebAssembly 可以做很多事情啊,比如在浏览器上实现 VSCode ,是完全在浏览器上运行的,而不是 Code Server 那种
codehz
2023-09-05 10:48:43 +08:00
@binfreeze
很显然和所有工程一样,软件工程也是妥协的艺术,理想主义不能当饭吃,现实中就是会有多种相互冲突的需求,尤其是不同类型的项目,需求差异更是千差万别,代码设计的再好,用户也无法察觉,只能从主观上去评估,谁会在意点下按钮,需要用几个指令周期,访问几次内存,发送几个请求才能完成呢?
说到底,最主要的问题就是,约束太多,而资源有限。就像现代无法复刻 2000 多年不倒的古罗马混凝土建筑一样,并不是现代人没能力做,而是不想分配几十万“人月”的资源去做,现代建筑设计寿命就几十年,你造 2000 年不坏的建筑有什么用呢
就像混凝土的评价指标不止是持续时间一样,代码的评价指标也不止是性能,开发成本你当然也得算进去,还有更多的指标和具体目标相关,例如互联网领域你期待能快速变更以适配风口,2C 领域你期待能实现美观的界面,2B 领域你期待数据安全保障,工业领域你期待能持续维护
当然不是所有的指标都互相冲突(比如你确实可以做得既优雅又漂亮,还有很高的性能,在主流平台都能流畅运行,还容易扩展,方便后期维护),但显然几乎所有其他指标都和开发成本/时间冲突,在成本固定,时间有限的情况下,某个方向追求越高,分配给其他方向的预算自然就更少
binfreeze
2023-09-05 10:59:14 +08:00
@codehz 你的理解比我深刻多了. 语言组织能力也很强. 佩服.

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/970912

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX