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

微软定义了一些有科学道理的标准,为什么却被各种国际标准联盟抛弃

  •  1
     
  •   changwei ·
    cw1997 · 2019-04-10 16:13:43 +08:00 · 7966 次点击
    这是一个创建于 2046 天前的主题,其中的信息可能已经有所发展或是发生改变。

    比如说 IE 的 box 模型,明明微软标准是符合人类认知直觉的标准(现实中一个盒子的宽高指的就是盒子内部实际容积加上盒子本身的厚度以及内边距,这个厚度可以理解为 css 的 border,内边距则可以理解为盒子里面保护内件的缓冲泡沫),结果被 w3c 认为是不标准的,还有人给他起个名字叫做“怪异模型”,明明是 w3c 的标准比较怪异吧。结果最后 w3c 在制定 css3 标准的时候再弄出一个 box-sizing 来重新回到老 IE 的 box 模型,而且事实确实是用 box-sizing 模型比较多吧。

    还有 BOM,明明是一个很好的东西来解决文档编码以及字节序声明的方案,如果大家的编译器解析器都按照这个标准来设计,理论上是不会有那么多的编码问题。结果被各种开源社区抛弃,反而日常有人吐槽微软的 BOM 害得他们代码上线出 BUG。这明明是一个可以解决问题的方案,只是开源社区都不遵守导致的,结果现在微软还得背锅。

    66 条回复    2019-04-11 16:15:55 +08:00
    forestLittleBear
        1
    forestLittleBear  
       2019-04-10 16:20:48 +08:00
    开源社区为什么要遵守一个公司提出的标准?
    hakono
        2
    hakono  
       2019-04-10 16:27:02 +08:00 via Android   ❤️ 1
    开源社区凭什么要遵守一个公司提出的标准?
    gitbug
        3
    gitbug  
       2019-04-10 16:28:50 +08:00
    开源社区干什么要遵守一个公司提出的标准?
    CallMeReznov
        4
    CallMeReznov  
       2019-04-10 16:30:49 +08:00   ❤️ 16
    微软是原罪.
    这叫"根不正苗不红"
    lihongjie0209
        5
    lihongjie0209  
       2019-04-10 16:32:46 +08:00   ❤️ 2
    如果我们遵守的微软的标准, 那么每次微软抛弃一些技术的时候整个开源社区是不是也要跟着地震啊?

    今天大力推广,明天直接抛弃就是微软的一贯作风
    kaneg
        6
    kaneg  
       2019-04-10 16:39:44 +08:00 via iPhone   ❤️ 7
    微软不遵循惯例,自己作的怪的也不少:换行符用\r\n,文件分隔符用反斜杠,不知坑了多少代程序员
    7654
        7
    7654  
       2019-04-10 16:41:50 +08:00
    就因为他是微软
    zhangsimon
        8
    zhangsimon  
       2019-04-10 16:42:10 +08:00   ❤️ 1
    @hakono 换个 UP 主的提问方式。有一个比较科学的标准,为什么开源社区不采用?难道就因为这个标准是谁提出的?
    freefcw
        9
    freefcw  
       2019-04-10 16:43:42 +08:00
    IE 的 box 模型也有他的问题,我个人还是更喜欢 w3c 的模型,只能说各有所爱

    另外微软一家决定的东西,和社区几家讨论选择出来的东西……社区的选择未必就一定是最好的,但可能更多人愿意接受
    sugars
        10
    sugars  
       2019-04-10 16:46:38 +08:00
    别提 IE 了 罪恶之源
    iConnect
        11
    iConnect  
       2019-04-10 16:47:09 +08:00 via Android
    微软确实有不是好东西,主要是以前 diss 开源太厉害了,情绪摆在那。
    Hoshinokozo
        12
    Hoshinokozo  
       2019-04-10 16:48:21 +08:00
    在盒模型这个点,我还是挺巨硬的,W3C 的盒模型才是“怪异”,根本不符合人的思维模式。
    Tuuure
        13
    Tuuure  
       2019-04-10 17:05:27 +08:00 via Android
    打个比方,对外国老哥来说,微软=<Mr Robot>中的 E.Corp
    marsgt
        14
    marsgt  
       2019-04-10 17:10:32 +08:00
    这是民主。民主经常和效率背道而驰(起码看上去是这样)。
    Tink
        15
    Tink  
       2019-04-10 17:15:55 +08:00 via iPhone
    因为微软以前不支持开源
    dexterzzz
        16
    dexterzzz  
       2019-04-10 17:27:08 +08:00 via Android
    嫉妒心
    sneezry
        17
    sneezry  
       2019-04-10 17:28:30 +08:00   ❤️ 45
    @kaneg 你这个例子举的不好。我来科普下\r\n 的根源。

    大家都知道打字最早是用打字机的,QWER 键盘也是从打字机那里沿用的。这种奇怪的键位设计就是避免出现打字时两个相邻的键被连续按下去导致打字机的连接杆相互碰撞。

    在打字机输入下一行文本时是两个操作,第一个是将敲击头推到最左侧进行复位,那个敲击头叫 Carriage,复位就是 Return,连起来就是 Carriage Return,简称 CR。然后再把纸往外拉一拉,开始新的一行,叫 Line Feed,简称 LF。

    只做 LF,两行文字就会重叠,只做 CR,多行文字就会呈阶梯排列。

    所以在打字机时代,完整的下一行操作就是 CRLF。

    微软使用\r\n 来 follow 打字机的标准,这和现在 QWER 键盘排列是一个道理。
    guyujiezi
        18
    guyujiezi  
       2019-04-10 17:30:26 +08:00   ❤️ 4
    为了反对而反对的“政治正确”
    HuasLeung
        19
    HuasLeung  
       2019-04-10 17:30:54 +08:00 via Android   ❤️ 1
    参考微软收使用安卓系统的厂商专利费(其中包括通讯录更新、软键盘输入法、远程获取和显示含画面的文本等令人匪夷所思的专利)事件,就知道微软本质上是邪恶的,哪天微软把 box 标准申请专利,这也是有可能的……国际标准联盟的考虑是长远的
    sneezry
        20
    sneezry  
       2019-04-10 17:31:59 +08:00   ❤️ 2
    @sneezry

    <<<<<<<< OLD

    只做 LF,两行文字就会重叠,只做 CR,多行文字就会呈阶梯排列。

    ========

    只做 CR,两行文字就会重叠,只做 LF,多行文字就会呈阶梯排列。

    >>>>>>>> NEW
    Narcissu5
        21
    Narcissu5  
       2019-04-10 17:33:28 +08:00
    @kaneg 不成立吧,实际上 http 头也是\r\n 换行的,telnet 好像也是。好多东西成为主流其实是很晚的事情,比如 POSIX,要让微软遵守也很为难他吧
    silencefent
        22
    silencefent  
       2019-04-10 17:34:50 +08:00
    学诺基亚舔到最后一无所有?
    ysc3839
        23
    ysc3839  
       2019-04-10 17:35:09 +08:00
    @sneezry 而且 RFC 一些标准也使用 CRLF,比如 HTTP/1 系列。
    guyujiezi
        24
    guyujiezi  
       2019-04-10 17:37:44 +08:00
    @kaneg 文件分隔符这明明是 IBM 的锅,不关微软的事儿
    realzsy
        25
    realzsy  
       2019-04-10 18:17:42 +08:00
    @lihongjie0209 今天大力推广,明天直接抛弃?这不是谷歌吗?
    glasslion
        26
    glasslion  
       2019-04-10 18:44:37 +08:00
    @kaneg Window 用 CRLF 是因为 CP/M 就用了 CRLF
    catalina
        27
    catalina  
       2019-04-10 19:06:25 +08:00 via Android
    因为反对微软是政治正确
    (当然,我可没说我赞成这么做)
    glasslion
        28
    glasslion  
       2019-04-10 19:08:43 +08:00   ❤️ 7
    第 1 个问题,W3C 的 CSS1 标准发布在前, 微软的 IE 实现在后。

    第 2 个问题
    1. BOM 不是微软的发明
    2. BOM 只适用 Unicode, 根本不能解决主流的 Latin-1, GBK, Big-5 编码识别问题...
    3. MS 和开源社区的争议在于 UTF8 要不要加 BOM. UTF8 最大的优势就在兼容 ASCII,加上这这狗尾续貂的 BOM ,就不兼容了, 那还有啥意义
    agagega
        29
    agagega  
       2019-04-10 19:25:55 +08:00 via iPhone
    微软的风评是从 Satya 上台之后才好的,鲍尔默时代程序员对它的印象好才有鬼了。换在当年你能想象 RedHat 被 IBM 收购之后员工抱怨说希望被微软收购吗?( IBM 也是冤大头,不知道怎么了,讲道理对开源社区的贡献一点都不少,可很多人就是对它印象不好)
    Biebe
        30
    Biebe  
       2019-04-10 19:50:55 +08:00
    好的东西不一定流行啊
    allor
        31
    allor  
       2019-04-10 19:52:13 +08:00   ❤️ 2
    对棋子而言,最科学的标准就是最好的标准;
    对棋手而言,最好的标准就是我自己的标准。
    xuanbg
        32
    xuanbg  
       2019-04-10 20:03:33 +08:00
    在开源界,和微软对着干就是政治正确,微软就是原罪。
    westoy
        33
    westoy  
       2019-04-10 20:05:29 +08:00   ❤️ 1
    巨硬本来就是原罪啊

    IE4、IE5.01 、IE5.5、IE6、IE7、IE8, 要实现一致的效果, 针对每个版本都要写不同的 css hack, 有时候同一个版本不同的补丁版都会搞出差异

    好日子过多了想恢复当初被巨硬支配的恐惧?
    sunocean
        34
    sunocean  
       2019-04-10 20:11:57 +08:00 via iPhone
    你猜为啥 windows phone 会死?为啥大家都不愿意给它写程序?
    KuzhiBake
        35
    KuzhiBake  
       2019-04-10 20:14:59 +08:00 via Android   ❤️ 7
    看了开头的杠精三连,你应该能一窥其中奥妙。
    geelaw
        36
    geelaw  
       2019-04-10 20:20:03 +08:00
    就楼主所说的问题,是因为恨微软是一种时尚。

    至于 box model,我觉得取决于需要,多数时候 IE 早期默认的模型是好用的,但是在没有 calc 又希望使用不同长度单位的时候可能 padding box 更好用。

    @lihongjie0209 #5 然而我也没见哪个地方的兼容性比微软好。

    @kaneg #6 已经有人给您科普 \r\n 和打字机的流传了,反斜线是因为 / 已经在最初的 DOS 时代被预留给开关了,例如 dir /w,在 DOS 支持非根目录的时候只好用另一个字符表示分割。

    @HuasLeung #19 这个推理方式可以推理成所有资本家都是邪恶的,当然你要是自由软件斗士那我无话可说。

    @westoy #33 我不确定你说的是什么,你完全可以 IE=6 永远使用一个固定版本的引擎。
    kindjeff
        37
    kindjeff  
       2019-04-10 20:31:58 +08:00 via iPhone
    楼主现在去用 powershell 还来得及(逃
    Fule
        38
    Fule  
       2019-04-10 20:53:18 +08:00
    怎么看起来似乎是一种“因为是一个(大)公司提出的标准,所以就算它合理开源社区也不应该遵守 /采用”的味道?另外,如果那个(大)公司抛弃了原来的标准,开源社区就一定也要抛弃吗?如果不是,何来“地震”之说?
    chouchoui
        39
    chouchoui  
       2019-04-10 21:05:47 +08:00 via iPhone   ❤️ 3
    前三楼完美展现所谓开源的嘴脸
    okoook
        40
    okoook  
       2019-04-10 21:08:06 +08:00 via iPhone
    @lihongjie0209 这不是 Google 的作风么
    HuasLeung
        41
    HuasLeung  
       2019-04-10 21:19:41 +08:00
    @geelaw 上面的例子来推断微软是邪恶的确实不太成立,其实我想用它来说明的是微软的一些专利(上面说到的通讯录更新、软键盘输入法、远程获取和显示含画面的文本等)在法律程序、形式上是合法正规的,但在有些人看来是“匪夷所思的”,借此来推断微软把 lz 列的一些标准(BOX 模型、BOM 等)申请专利进而敲诈勒索开源社区的可能性
    charlie21
        42
    charlie21  
       2019-04-10 22:20:33 +08:00 via iPhone   ❤️ 2
    开好车的就一定是好人吗?
    w3c 就是好人吗,开源社区就是好人吗,搞笑
    ysc3839
        43
    ysc3839  
       2019-04-10 23:01:08 +08:00 via Android
    @glasslion 加了 BOM 不会不兼容 ASCII 吧? BOM 本来就是一个 Unicode 字符,这就等于在文件首部有个 Unicode 字符。如果因此而不兼容的话不就说明 UTF-8 设计得不好吗?
    jydeng
        44
    jydeng  
       2019-04-10 23:03:00 +08:00
    人多就是正义
    ericguo
        45
    ericguo  
       2019-04-10 23:07:31 +08:00
    楼主你觉得微软好就赶快学微软的技术,COM/.NET/ActiveX/Silverlight/WPF/WCF/WF/ADO.NET/ASP.NET CORE/ASP.NET MVC/UAP,慢慢学,不急的

    至于我,我就学 HTML+CSS+JavaScript。

    然后我们比比工资?
    ericgui
        46
    ericgui  
       2019-04-11 00:19:35 +08:00
    @lihongjie0209 我还以为你说的是 Google 呢
    lastpass
        47
    lastpass  
       2019-04-11 00:40:05 +08:00 via Android
    抱歉,我从从最开始就非常难以理解微软的"怪异模型"。
    这玩意儿是人类想出来的吗?各种对不齐简直逼死强迫症(╯°Д°)╯︵┴┴
    ra1983
        48
    ra1983  
       2019-04-11 06:36:00 +08:00 via Android
    @ericguo

    这些我都会,还可以加上 sharepoint,vba 啥的
    但是不想和你比工资😂
    liwufan
        49
    liwufan  
       2019-04-11 08:38:48 +08:00   ❤️ 1
    @sneezry 如果用 tty 术语中的 CRLF 来解释,是不符合机械打字机使用者习惯的,有些机械打字机的步骤也可以是先推纸再回纸轴,甚至回车符号↵也是先下再左而不是先左再下.实际上,回车杆已经把所谓的 CR 和 LF 这两个操作机械联动了,也就是说 CRLF 对与打字员只有推杆这一步实际操作.后来到了电传打字机时代,人们开始将回车杆做到键盘区域然后用 return 表示.其实这才是出现分歧的时候,这时候人们才发现输出设备需要一些看似‘透明’实际上有用的计算机通用符号.遵循传统的类 unix 操作系统表示,既然 return 指代回车杆这一个单独设备,那么存储档案时只用 CR 或者 LF,然后让以后发明的输出设备来自己处理排版问题.其实在这里颠覆传统的真的是微软、电传打字机和 CRLF
    jonechenug
        50
    jonechenug  
       2019-04-11 09:09:14 +08:00 via Android
    一个叫 typescript 一个叫 vscode ,都微软出的,特别是 vscode 的语言插件规范怎么有人用呢 /斜眼笑
    charlie21
        51
    charlie21  
       2019-04-11 09:12:59 +08:00   ❤️ 1
    讨论钱钱钱的,不觉得很幼稚吗 还没让你去跟知乎三大软狗温赵轮比比工资呢
    真正的大牛都是发 paper 的,IEEE 会员资格,国际论坛 ... 那都是早就横跨了这些鸿沟的
    这些是人类文明的基石

    开源社区才火了几年? github 也就 2008 年成立的,就小虾米抱着这个玩,弄的跟追星族看偶像歌手似的,天天要整个大新闻
    格局阿。
    你要比工资阿?一个开源项目 5k stars 的作者的工资,去比比一个微软 MVP 的工资,去比一比一个给 IEEE 投稿发论文的人的工资?

    说这些 又要弄得你很难过了,又刺痛你的小心脏了是不是?天天整个大新闻,搞笑,为什么不抱着学习的心态呢?
    这就是你
    kaneg
        52
    kaneg  
       2019-04-11 09:15:49 +08:00 via iPhone   ❤️ 1
    统一回复一下楼上各位,的确换行符和文件路径分隔符微软都不是始作俑者,但是在 Unix 已经在当时很流行的情况下,微软选择了一条与众不同的路,或许当时因为它只是一个无足轻重的小公司,这些选择是无意的,但事实上在其今日成长为一个巨无霸公司之后给业界造成的标准上的分歧则是不争的事实。
    huobazi
        53
    huobazi  
       2019-04-11 09:19:45 +08:00
    别吵了,开市了,昨夜美股涨了,你们不知道吗?
    mooncakejs
        54
    mooncakejs  
       2019-04-11 09:32:22 +08:00
    @lihongjie0209 今天大力推广,明天直接抛弃就是**微软(划掉)**谷歌的一贯作风
    yujincheng08
        55
    yujincheng08  
       2019-04-11 09:42:39 +08:00 via Android
    c++20 的协程标准就是微软起草的。
    neoblackcap
        56
    neoblackcap  
       2019-04-11 09:44:44 +08:00
    @yujincheng08 微软养着一大堆 C++委员会的人,它起草不是很正常么?
    eliteYang
        57
    eliteYang  
       2019-04-11 09:46:52 +08:00
    微软很多提案都进了标准的,只不过很多人不知道,并且因为微软换了 CEO 后才开始拥抱开源了,以前微软的态度不友好,别人也不跟它玩儿而已
    nannanziyu
        58
    nannanziyu  
       2019-04-11 09:49:52 +08:00
    @ericguo
    好啊,来比工资啊
    ericguo
        59
    ericguo  
       2019-04-11 10:49:53 +08:00
    @nannanziyu 自己开公司的大佬比不了。(逃
    darknoll
        60
    darknoll  
       2019-04-11 11:04:12 +08:00   ❤️ 1
    微软粉丝还是这么多,跟韭菜一样,割了一茬还有一茬。。。
    hoyixi
        61
    hoyixi  
       2019-04-11 11:04:51 +08:00
    @agagega #29

    曾经在 18M 呆过一段时间,感觉 18M 太大了,比如有做科研的部门,有做开发的,有做实施的,有做外包的,有做咨询的,好像还有做投资的,每一个部门单拿出来,其实都是一个大公司了。

    所以,对个人来说,单说 18M,和自己体验最近的,是哪种印象,就不好说了。比如做科研的部门,肯定极少的人接触过。
    Counter
        62
    Counter  
       2019-04-11 11:10:53 +08:00
    很多领域,微软不是开创者,而是后来者,并且不想妥协,也有这方面的原因
    whosesmile
        63
    whosesmile  
       2019-04-11 11:34:48 +08:00
    微软的技术没的说,但是居然会在浏览器上挺微软?不是搞前端的吧?接上面一句话:前端好日子过多了?
    fecho
        64
    fecho  
       2019-04-11 13:32:55 +08:00
    肠胃大神提的问题就是有水准!
    jswh
        65
    jswh  
       2019-04-11 15:55:20 +08:00
    后来微软出了个 language server 协议,真香。
    JohnSmith
        66
    JohnSmith  
       2019-04-11 16:15:55 +08:00
    开源世界里也是存在市场竞争的,叫好不叫卖的现象在市场中不是经常出现的嘛
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2211 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 00:27 · PVG 08:27 · LAX 16:27 · JFK 19:27
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.