不知道是不是学太少导致的错觉:感觉 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 ?

6306 次点击
所在节点    随想
69 条回复
znye
2023-09-05 17:57:46 +08:00
@binfreeze 发言只要不违反规则不就是想怎么说就怎么说才对? 我觉得你的想法比较有意义, 请多讨论, 但是可以不分这么多条.
zxCoder
2023-09-05 19:37:04 +08:00
肯定的啊,开发体验 web 吊打原生几条街,但是原生据说性能更好
pocarisweat
2023-09-06 00:30:52 +08:00
@binfreeze
我自己的工作就跟这种底层开发有点关系。但其实写真的底层软件和这类图形界面程序还是很不一样,前者面临的东西虽然难,但问题相对是比较细的,GUI 程序范围就很大,做不到关注点分离。

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

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

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

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

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

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

© 2021 V2EX