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

UI 那么多年了,为什么没有一个标准能一统天下?

  •  1
     
  •   tool2d · 2022-09-19 16:29:46 +08:00 · 9271 次点击
    这是一个创建于 800 天前的主题,其中的信息可能已经有所发展或是发生改变。
    HTML 一个标准,安卓一个标准,IOS 一个标准,VC 一个标准,QT 一个标准,WX 一个标准。

    有 JSON/XML/PLIST 格式,反正大家都不服谁。这样对代码的移植,有很大的伤害。

    一般来说,界面设计在各个平台上都是相似的,都是按钮+窗体+子控件,只有具体逻辑运行指令是不同的。可行业几十年下来,就是无法做到互相兼容。
    76 条回复    2022-09-21 14:43:21 +08:00
    mainjzb
        1
    mainjzb  
       2022-09-19 16:35:33 +08:00   ❤️ 8
    本来快统一了,都用 html/xml 前后端分离。结果 flutter 出来捣乱(狗头
    qrobot
        2
    qrobot  
       2022-09-19 16:40:41 +08:00
    为啥要统一? GTK 和 QT 本身方向就不一样, HTML 是一个规范,目标是 WEB , 场景不一样作出的东西不一样, 我觉得完全没有统一的必要
    thinkershare
        3
    thinkershare  
       2022-09-19 16:43:16 +08:00   ❤️ 8
    全世界测量长度的单位这么简单的事情都无法统一, 更别说 UI 这种破事超级多,超级复杂的玩意了.
    kindjeff
        5
    kindjeff  
       2022-09-19 16:45:25 +08:00   ❤️ 13
    Metro / Modern UI / UWP / WPF / WinUI 表示很赞
    Vegetable
        6
    Vegetable  
       2022-09-19 16:45:53 +08:00   ❤️ 3
    让我想到了大一统理论。
    你说的这个大概就是笼罩在切图学的最后一朵乌云了 /doge
    Asimov01
        7
    Asimov01  
       2022-09-19 16:49:40 +08:00
    @kindjeff 哈哈哈哈 巨硬表示很淦!
    tool2d
        8
    tool2d  
    OP
       2022-09-19 16:50:57 +08:00
    @qrobot 隔壁游戏业的 imgui 就完美实现统一了,同一套 UI 代码可以不用修改,就运行在 wasm 浏览器上,win32 上,linux 上。
    Folderv
        9
    Folderv  
       2022-09-19 17:30:46 +08:00   ❤️ 1
    统一了 你就失业了
    charlie21
        10
    charlie21  
       2022-09-19 17:37:26 +08:00 via iPhone   ❤️ 1
    一统天下做什么
    让老板好招人吗
    or 方便大批新人以低门槛的姿态涌入
    看来还是没卷够阿
    msg7086
        11
    msg7086  
       2022-09-19 17:39:58 +08:00   ❤️ 45
    现在做这件事情有 69 个标准
    某:我要做一个能一统天下的标准
    现在做这件事情有 70 个标准
    kangyan
        12
    kangyan  
       2022-09-19 17:54:03 +08:00
    @msg7086 还真是,flutter 就是这样
    putaozhenhaochi
        13
    putaozhenhaochi  
       2022-09-19 18:49:28 +08:00 via Android
    哈哈 跨平台这事是不是也是这样
    gam2046
        14
    gam2046  
       2022-09-19 19:16:28 +08:00   ❤️ 10
    想想当年秦始皇是怎么统一度量衡的。那都是要用拳头打出来的。

    而现在,别说世界范围内想统一 UI 的设计。

    就是换个地市的健康码,它都不认。
    Jtyczc
        15
    Jtyczc  
       2022-09-19 21:18:33 +08:00
    @gam2046 哈哈哈哈真实
    datoo
        16
    datoo  
       2022-09-19 21:28:11 +08:00
    多样化比统一好。统一就没有活力
    ysc3839
        17
    ysc3839  
       2022-09-19 21:42:20 +08:00 via Android
    @shawndev plist 只是 xml 的子集,而且 plist 还有非 xml 的存储方式
    lyhiving
        18
    lyhiving  
       2022-09-19 21:46:43 +08:00
    主要是看浏览器,浏览器的演化还在继续
    shijingshijing
        19
    shijingshijing  
       2022-09-19 21:49:27 +08:00
    @kindjeff 没有 WinForm 和 MAUI 合适么?
    paradoxs
        20
    paradoxs  
       2022-09-19 21:50:34 +08:00
    为什么要统一啊


    如果 iOS 系统是你家的,你愿意和别人用一样的标准吗???????????
    exploreexe
        21
    exploreexe  
       2022-09-19 22:13:57 +08:00
    Mac 关闭在左边,Windows 关闭在右边,老子就是要跟你反着来。谁都不服谁。哈哈哈
    westoy
        22
    westoy  
       2022-09-19 22:19:29 +08:00   ❤️ 1
    统一标准不就是垄断标准么, 换个词就不认识了么......
    ngv2
        23
    ngv2  
       2022-09-19 22:46:13 +08:00 via Android
    统一的话怎么保证创造力?
    该统一的只有业界标准。
    haolongsun
        24
    haolongsun  
       2022-09-19 23:06:34 +08:00
    统一天下不就是按照明星整容一样,全是一样的脸,好看是好看了,就是感觉全都是,就脸盲了。
    审美这东西真的要雅俗共赏吧。
    panlatent
        25
    panlatent  
       2022-09-19 23:08:26 +08:00
    大概因为这天下从未被统一过
    tanranran
        26
    tanranran  
       2022-09-19 23:19:50 +08:00
    参考统一推送联盟
    linuxyz
        27
    linuxyz  
       2022-09-19 23:49:46 +08:00
    多样性是大发展的标志,等啥时候统一了也就一潭死水没有机会了。
    luckycat
        28
    luckycat  
       2022-09-20 00:51:02 +08:00   ❤️ 2
    UI 这种讲究艺术性的东西,怎么可能有大一统?

    你要让画家画出来的所有图,音乐家做出来的曲都一样吗?那人类离灭亡也不远了。
    Building
        29
    Building  
       2022-09-20 01:05:37 +08:00
    能统一的只有标准,即使标准统一了,实现方式还是各有各的区别
    UI 的本质是人机交互界面解决方案,解决方案哪来标准,你要是能拿出更好更傻瓜的交互,你就是标准
    akira
        30
    akira  
       2022-09-20 04:51:02 +08:00
    按钮+窗体+子控件 这就是标准了啊。

    人类有衣服都几千年, 按你的想法,是不是也要统一成一个标准
    skys215
        31
    skys215  
       2022-09-20 07:38:44 +08:00
    咋不说为啥没有统一的编程语言,现在有好几百种编程语言呢
    DiamondY
        32
    DiamondY  
       2022-09-20 08:45:50 +08:00
    人类吃食那么多年了,为什么没有一种食物一统天下?
    jjshare123
        33
    jjshare123  
       2022-09-20 08:47:59 +08:00
    现在知道商鞅、秦始皇、李斯多么牛逼了吧
    度量衡、武统、文统

    在 IT 、互联网的世界,view 渲染前的编码方式、data storage structure 层面的标准统一,其实是无所谓的,不影响客户使用,这里面重要的决定因素是商业化能力,一个标准对应一个组织或公司,这些组织或公司在推动着他们的出的标准在蔓延。
    对于普通应用层面的开发者,渲染引擎可渲染出的效果一致、数据转化引擎可把不同格式互相转化,就是兼容了。

    我在做一个会议会务的项目,以前我用 csv 格式导出数据,对程序员多么友好哇,随便几行代码即可解析。
    哈哈,SQL 格式也很友好哇,API 直接对接也不错哇。
    可惜客户不买账,不得不引入 ms-excel 的解析库,导出为 Excel 格式了。

    野蛮时代武统,资本时代钱统,兼容是爱,不兼容是常态。
    towry
        34
    towry  
       2022-09-20 09:31:30 +08:00
    各地的地铁标识都没统一。
    marcong95
        35
    marcong95  
       2022-09-20 09:32:19 +08:00
    Web UI 努力过,然后这站内有人就出来开喷 Electron 以及各种套壳 app 了。
    dk7952638
        36
    dk7952638  
       2022-09-20 09:42:34 +08:00
    其实还真的有人试图做这件事
    https://open-ui.org/
    a33291
        37
    a33291  
       2022-09-20 09:55:23 +08:00
    那可不,各地社保都打不通,别说世界范围了🤣
    gimp
        38
    gimp  
       2022-09-20 09:59:01 +08:00
    想想下面两个问题

    1. 吃不吃香菜
    2. 豆腐脑甜咸
    teasick
        39
    teasick  
       2022-09-20 10:02:44 +08:00
    参差多态乃幸福本源
    qqjt
        40
    qqjt  
       2022-09-20 10:14:22 +08:00
    你搞一个足够好的玩意,好到 80%的人都用,那就统一了
    pi1ot
        41
    pi1ot  
       2022-09-20 10:16:43 +08:00
    为什么要统一。
    shawnsh
        42
    shawnsh  
       2022-09-20 10:17:50 +08:00 via Android
    男女也统一了吧,搞一个性别,用的啥东西不用出男女两款了
    masterclock
        43
    masterclock  
       2022-09-20 10:18:43 +08:00
    我的 UI 192x64 点,黑白 2 色,用 html 行吗?
    React 倒是真的能用。
    yinzhili
        44
    yinzhili  
       2022-09-20 10:18:50 +08:00
    不可能,公交卡都没实现统一
    quan01994
        45
    quan01994  
       2022-09-20 10:19:25 +08:00
    原来有 4 个标准,现在需要统一标准,然后就有 5 个标准了。
    sunhelter
        46
    sunhelter  
       2022-09-20 10:23:34 +08:00
    需要把秦始皇挖出来统一一下
    HugoChao
        47
    HugoChao  
       2022-09-20 10:25:51 +08:00
    全网呼叫赛博秦始皇
    tysb777
        48
    tysb777  
       2022-09-20 10:38:42 +08:00
    用完 mac 的鼠标滚轮方向后,再用 windows 感觉反人类
    janus77
        49
    janus77  
       2022-09-20 10:42:58 +08:00
    有没有一种可能,别的也都没统一?
    lolizeppelin
        50
    lolizeppelin  
       2022-09-20 10:46:14 +08:00
    统一了挺好 .......马上做一个不一样的就能赚钱了!!!
    ericls
        51
    ericls  
       2022-09-20 10:50:14 +08:00 via iPhone
    Unity unreal godot 有话说
    777777
        52
    777777  
       2022-09-20 11:14:02 +08:00
    统一之后就是独裁
    yvescheung
        53
    yvescheung  
       2022-09-20 11:34:28 +08:00
    这就跟月饼有无数种馅一样,归根到底是没法找出一个大家都满意的解决方案
    Mark24
        54
    Mark24  
       2022-09-20 11:48:39 +08:00
    多样性在自然界的重要性。
    IvanLi127
        55
    IvanLi127  
       2022-09-20 11:51:57 +08:00
    因为谁也不完美。
    em70
        56
    em70  
       2022-09-20 11:54:45 +08:00
    @yvescheung #53 大家就需要无数种馅,老吃一种再好吃都会腻
    loryyang
        57
    loryyang  
       2022-09-20 11:56:58 +08:00
    为了大家都有饭吃
    yvescheung
        58
    yvescheung  
       2022-09-20 11:58:21 +08:00
    @em70 五仁馅吃了几十年了也没腻,就算腻了我也不会吃蟹黄馅:doge
    duanxianze
        59
    duanxianze  
       2022-09-20 12:23:04 +08:00
    始终牢记,没有银弹!没有能解决一切问题的方案
    Track13
        60
    Track13  
       2022-09-20 12:41:17 +08:00 via Android
    现有的这些里面有部分就是奔着统一来的吧。只是失败了。
    seakingii
        61
    seakingii  
       2022-09-20 13:04:04 +08:00
    地球那么多年了,为什么没有一个国家能一统天下?
    -
    我认为

    技术上来说,目前没有一个 UI 框架是完美的
    另外除非各个公司联合起来,不然谁也不敢把这个标准交给别的公司控制
    个人或者非公司要搞这个,实力又难以做到,因为跨平台 UI 框架是个非常复杂的工作
    SekiBetu
        62
    SekiBetu  
       2022-09-20 13:09:08 +08:00
    html 统一的前提是用的同一个浏览器啊,即使同一套代码,不同的浏览器展示效果不一定也一样
    qrobot
        63
    qrobot  
       2022-09-20 13:27:32 +08:00
    @tool2d 你说的这个和 gtk qt 这种 ui 框架有啥区别,gtk 也可以通过 port 来通过 webgl 投射到浏览器中, 这没有意义。
    kongkx
        64
    kongkx  
       2022-09-20 13:46:08 +08:00 via iPhone
    光界定 ui 的范围就已经不是一件容易的事情
    Jirajine
        65
    Jirajine  
       2022-09-20 14:04:53 +08:00
    Web 可以说是 GUI 领域的事实标准了。
    rpish
        66
    rpish  
       2022-09-20 15:15:28 +08:00
    @mainjzb 好事,两强争霸的结果就是快速稀释第三极。
    em70
        67
    em70  
       2022-09-20 16:04:05 +08:00
    @yvescheung #58 人衰老的标志就是拒绝尝试新事物,不淘汰这部分人世界就不能前进,这是死亡的意义
    wanguorui123
        68
    wanguorui123  
       2022-09-20 16:12:25 +08:00
    物种的多样性和优胜劣汰并不矛盾
    CodingIran
        69
    CodingIran  
       2022-09-20 16:13:17 +08:00
    没有人谈到,移动端和 PC 端等不同端设备的交互操作是不一样的,那其对应的 UI 就不可能是一套标准。
    UI 强如苹果,在 iOS 和 Mac OS 上在 Swift UI 之前都是两套 UI 库( UIKit 和 AppKit ),即便 Swift UI 同一套代码在 iPhone 和 Mac 上渲染出的效果也不尽相同。
    lidegao899
        70
    lidegao899  
       2022-09-20 16:24:55 +08:00
    我来,操作系统的大佬这么多都统一不了,搞前端的更没这个能力(狗头)
    Jooooooooo
        71
    Jooooooooo  
       2022-09-20 16:25:04 +08:00
    你可能没看过那个四格漫画

    "太多规范了, 我得搞一个统一的"

    "-尝试弄了一个统一的规范-"

    "*规范+1*"
    yvescheung
        72
    yvescheung  
       2022-09-20 17:02:54 +08:00
    @em70 尝试之后不喜欢就得被淘汰是吧(笑),那咱确实得赶紧给年轻人腾位置了
    em70
        73
    em70  
       2022-09-20 17:30:01 +08:00
    @yvescheung 尝试后不喜欢那就找另一个或者自己做一套,各行各业一味守旧肯定要被淘汰.所以大一统永远不会实现,总会有更先进的东西出来
    349865361
        74
    349865361  
       2022-09-20 19:28:10 +08:00
    谁都认为谁优秀 开发语言都不能统一何况 UI java 和 c++谁厉害
    secondwtq
        75
    secondwtq  
       2022-09-21 03:27:37 +08:00   ❤️ 2
    我不知道楼主说的“统一”是指不同平台的可移植性还是指库之间的可移植性

    首先 Qt 不是“一个”标准,分 QtWidgets 和 QML 。
    然后 iOS 也不是“一个”标准,分 Objective-C 和 Swift ,然后又分 UIKit 和 Swift UI 。
    MSVC 更不是“一个”标准,更像是“你是一个一个一个一个标准啊”
    就连 Java 这个一开始就打着“一次编译到处运( tiao )行( shi )”旗号的平台,自己都裂出了 AWT ,Swing 和 JavaFX 。
    Web 那边各种框架就不说了 ...

    Gamedev 里 dear imgui 目前主要用来做开发工具(这次 GTA6 泄露貌似就看到一堆),还没见过正经游戏 UI 流行 dear imgui 的
    说起游戏 UI 这又是一个大坑,你会发现它和传统 GUI 程序的 UI 根本不是一类东西,而 dear imgui 明显更适合做传统类型的(准确来说,是“游戏中的传统 UI”这一超级细分领域)
    这上面继续展开还有试图用猴版 HTML 做游戏 UI 的 libRocket 之类的存在。我最近也在搞 Unity ,你知道现在 Unity 作为最流行的通用游戏引擎,官方提供的 UI 框架就有俩么( UGUI ,UI Toolkit )。可见 Gamedev 自己也在试图分裂标准。还什么 Gamedev 已经统一了,上面有句好话是怎么说来着,“你说统一我都觉得有些好笑”。

    如果你仅仅是要跨平台可移植代码,我建议你一开始就在 Qt ,HTML ,Swing ,JavaFX 和 wxWidgets 里面选。这几个都是桌面平台间可移植的,不存在“对代码的移植,有很大的伤害”这种事。如果你还要兼容 Web 平台,那选择很明显了就是 HTML 。

    移动平台很明显目前较严重的偏离了桌面传统 WIMP 体系,不存在和桌面平台“统一”的基础,你要统一的话 HTML 和 QML 都可以,后者就是用于 application 的 HTML 。

    不说一堆 Qt 原生的软件,Beyond Compare 知道吧,人家是 Pascal 写的,把 Pascal 在桌面领域打出来的是 Delphi 7 ,这玩意当年是 Windows 上桌面开发的“瑞士军刀”(这词和 Delphi 7 流行的年代差不多 ...),但是现在能用 Locutus (划掉) Lazarus 做到跨桌面平台。Lazarus 做的事情其实和 wxWidgets 很像,它就是自己实现了 Delphi 的 API ,然后底下转成各种其他的库( Win32 ,Qt ,GTK 之类)。如果你用 Pascal ,那这就是你的首选——没有其他选择。
    (问题来了,现在还有几个人用 Pascal 呢?也许这就是 Pascal 用户“没有其他选择”的原因吧,反观 Web 和 Rust 的 GUI 场景那叫一个热闹)

    再说一遍,如果你一开始就选了 wxWidgets ,那直接就可以在桌面平台之间互相移植,不存在“对代码的移植,有很大的伤害”这种事。当然后来可能会面对要移植到 Web 的情况——问题是你一开始为什么不能预见到这种情况并在选型上做出调整?

    最后 HTML 本来是用来做“Hypertext”的,“Hypertext”就是“互相链接的文档”,不是用来做 GUI 的。有一部分人用 HTML 做 GUI (包括我 ...),这是削足适履。但实际上目前 HTML+CSS+JavaScript 是目前唯一能够勉强做到跨全平台的交互式布局方案,所以一堆人用 HTML 做 GUI 其实恰恰就是对“没有一个 GUI 标准能一桶浆糊”这一现状的反应。

    而且以上除了 HTML 一系之外都不能称为“标准”,压根就没有像样的 spec 文档。非要说的话早年 X ,OpenStep 倒是标准。

    不过说到正经的“标准”,桌面 UI 真正在库级别的统一标准目前还不存在,不过放到更低级别的话还是存在的。
    UI 的 WIMP 往下是绘制指令,这一层级的标准主要体现在 HTML Canvas 上(当然苹果好像也喜欢用 Display PostScript )。所有的 UI 元素都可以转化为一堆 Bézier Curve 和若干 bitmap 的组合。你会发现 HTML Canvas 和实现类似功能的库,比如 CoreGraphics ,Skia ,Cairo 和 GDI+ 的基本功能都是差不多的,核心概念也都是 Path ,Stroke ,Gradient 这些东西。这一层级可以方便地实现几乎所有的传统平面 GUI 。
    再往下,如果你使用 GPU 加速,那么有 3D API 标准给你用,Bézier Curve 最后会转换成 vertex 和 triangle (如果你没有偷懒直接用 NV_path_rendering 那个扩展的话 ...)。桌面平台基本都支持 OpenGL 和 Vulkan 。移动的话 GLES 凑合用,当然某个本站最喜欢的公司似乎不太喜欢 ... 这一层级也可以 cover AR/VR 的 UI 。
    再往后到屏幕上就是一堆像素,你输出个 PNG 就行 ...
    以上都是像模像样的标准,代码都是可移植的,比如 QML 的官方教程专门 address 了移植 HTML Canvas 代码的问题( https://www.qt.io/product/qt6/qml-book/ch08-canvas-port-from-html ),因为人家的 API 就 TM 跟 HTML Canvas 是一模一样的 ...

    层级越高越难统一,比如编译器底层可以统一 LLVM/JVM ,系统可以统一 Windows/Mac 或 Linux ,但是往上就不好说了,为啥编程语言不统一?为啥笔记软件不统一?为啥你不跟张小龙“统一”?
    seelight
        76
    seelight  
       2022-09-21 14:43:21 +08:00
    啊这,您这要求也太高了,Apple Google MS 这仨就不可能尿到一个壶里,反正现在流行的 UI 框架全部能写 MVVM 这点我已经很满足了,wpf 、前端、swiftUI 、Compose ,都挺好的。(可能是我被 delphi/winForm/jq 荼毒过,所以要求变低了)
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1231 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 18:07 · PVG 02:07 · LAX 10:07 · JFK 13:07
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.