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

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

  •  1
     
  •   tool2d · 263 天前 · 8190 次点击
    这是一个创建于 263 天前的主题,其中的信息可能已经有所发展或是发生改变。
    HTML 一个标准,安卓一个标准,IOS 一个标准,VC 一个标准,QT 一个标准,WX 一个标准。

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

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

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

    就是换个地市的健康码,它都不认。
    Jtyczc
        15
    Jtyczc  
       263 天前
    @gam2046 哈哈哈哈真实
    datoo
        16
    datoo  
       263 天前
    多样化比统一好。统一就没有活力
    ysc3839
        17
    ysc3839  
       263 天前 via Android
    @shawndev plist 只是 xml 的子集,而且 plist 还有非 xml 的存储方式
    lyhiving
        18
    lyhiving  
       263 天前
    主要是看浏览器,浏览器的演化还在继续
    shijingshijing
        19
    shijingshijing  
       263 天前
    @kindjeff 没有 WinForm 和 MAUI 合适么?
    paradoxs
        20
    paradoxs  
       263 天前
    为什么要统一啊


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

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

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

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

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

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

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

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

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

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

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

    首先 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  
       261 天前
    啊这,您这要求也太高了,Apple Google MS 这仨就不可能尿到一个壶里,反正现在流行的 UI 框架全部能写 MVVM 这点我已经很满足了,wpf 、前端、swiftUI 、Compose ,都挺好的。(可能是我被 delphi/winForm/jq 荼毒过,所以要求变低了)
    关于   ·   帮助文档   ·   博客   ·   nftychat   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2605 人在线   最高记录 5634   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 58ms · UTC 02:05 · PVG 10:05 · LAX 19:05 · JFK 22:05
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.