范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

为什么微软力推XML?而谷歌则力推代码描述界面kotlin?

  其实微软当年的MFC更接近于"代码描述界面",Delphi等反而是通过专门的配置文件.DFM来描述窗体……
  比如,这个来自CSDN的截图就是一个典型.DFM文件内容:
  Delphi项目构成之窗体文件(Form Files).DFM_weixin_33904756的博客-CSDN博客
  事实上,这并不应该叫"代码描述界面",而是"窗体布局独立于程序设计"。
  把窗体布局独立出来有极多好处。
  1、集中管理,方便用程序自动维护,从而可以"所见即所得"。
  相比之下,MFC经常一开始还是可以用窗体编辑器维护界面的;但做着做着……代码中到处改吧。
  反之,如果窗体编辑器可以一直保持跟踪,而且允许你随时随地的想改代码改代码、想改布局改布局,会不会好很多?
  但,如果代码和布局混合,实现起来就太麻烦了……
  尤其是,当时的各种编程语言并不普遍支持现在烂大街的嵌套声明类/函数,也大多没有闭包、lambda等概念。这就使得代码结构天然和窗体结构不同;这种状况下,想要维护窗体之间的关系,实在太难。
  2、窗体布局和程序设计脱耦。
  于是,设计窗体的可以专心设计窗体、修改视觉表现;写程序的专注程序逻辑——将来只要按照约定,比如文本框输入框名字吻合,程序就能正常运行。
  3、窗体布局文件独立。
  更进一步的,还可以把窗体布局文件都独立出来、甚至在运行时加载——这就支持了"换肤"。
  事实上,只要你懂开发、只要你的应用不是太小太垃圾,哪怕仅仅"脱耦"一个好处,就值得你投资这项技术了。
  因此,并不仅仅是微软,业界绝大多数的GUI框架,从微软的WPF到Qt的QML、GTK的Glade XML,以及Android早期的界面描述文件,全都是独立的。而且大都采用了XML格式。
  早期的确有一些采用了文本格式,如ini或其他格式。但做过界面的都知道,这玩意儿就是一层套一层来回套;可ini或者别的格式,包括json,想要清晰的表达这种嵌套关系,那就麻烦的很了。
  而XML格式虽然繁琐,但它的格式足够规范,拿来表示这种嵌套关系,那是简单明了、一目了然。
  那么,既然XML布局文件这么好,现在为何又回归了呢?
  1、一直没有XML布局标准
  这就使得,每一种编程语言、每一套GUI库,就有一套自己的XML格式约定。
  它们自带的XML布局图形编辑器……只能说是差强人意。
  简单说,你不可能不借助Photoshop/gimp之类东西,就搞定一个漂亮的界面;然后,哪怕已经有了photoshop做的漂亮界面图片,你要把它做成符合要求的、可缩放的、能够直接放程序中使用的XML布局描述……慢慢学习吧。
  遗憾的是,绝大多数的界面设计师并不会编程。让他学会使用当前团队使用的某种语言的界面布局编辑器,这是个很难的任务……
  换句话说,最终,界面布局还是得程序员做,很难做到"UI设计师和程序员分工合作,一个提供XML布局文件、一个专注程序设计"。
  如果有XML界面布局标准规范,那么或许Photoshop或别的公司不介意做一个支持xml布局的、标准的图形工具;UI设计师只需学会使用这个工具,就可以和任何团队配合无间。
  很遗憾。做不到。他必须为配合每个团队从头学习不同的界面设计工具,而这显然是不可能的——尤其是,他还得保持不同版本界面中输入框/文本框之类组件名称的对应关系,哪怕差一个字符都不行。
  很遗憾,和被迫染上了"变量名/函数名必须规范"强迫症的程序员不同,UI设计师真没有这个习惯。
  2、编译器设计水平提升
  和早期C++标准难产多年不同,现在编译器设计已经走向成熟。
  IDE中,你敲一个字符,它做一遍语法分析成为可能;同时,编程语言的发展,使得嵌套声明被普遍支持——于是,窗体布局和代码结构就很自然的对应起来了。
  你看,不需要把布局文件独立出来,一样可以实现"所见即所得"。
  如此一来,和xml布局强迫性的"文件和代码相分离"相比,反而更清晰、更方便也更灵活了。
  事实上,无论是微软的WPF还是Qt、GTK或者其他,它们都允许程序员直接用程序生成窗体。
  而且,这些GUI库本身其实也是按照XML里面的声明、自动调用API生成了窗体。
  既然编译器已经可以支持,既然UI设计师和程序逻辑分头各自开发并不现实——那么,为何不合并起来呢?
  程序员直接用代码生成窗体——或者,UI编辑器直接拖放产生代码(而不是先生成XML、后把XML转换成代码)——不再需要一会儿看看XML、一会儿看看代码逻辑、生怕一个名字敲错引用了错误控件……这会不会更方便一些?
  3、做出一个好的抽象,极难
  总之,一切的核心,就是方便做事。怎么方便怎么来。
  而不同的阶段、不同的技术、不同的计算能力,决定了具体的实现思路可行与否、难度/复杂度如何。
  这也正是人们发明了无数种编程语言、试图从根本上解决某些工程难题的原因——如果你真的深入了解过、写过相关领域的典型应用,就会知道,那些看起来不起眼的"语言基础设施",的的确确会改变工程思路、影响开发难度。
  当然,这种"每种语言都有一技之长"的状况,只在二十年前明显;之后,随着计算能力的提升、编译器设计水平提高,几乎所有语言都相互汲取了其他语言的长处。
  其中的典型,就是C++这种"特性泛滥"的语言。
  这使得之后很多年里,除了性能和开发难度,所有语言看起来就没什么差别了。
  毕竟大家互相抄,你有我有全都有。
  但这种泛滥的特性其实只是一种堆砌。堆砌的极致就是C++,以至于后来业界的共识就是禁止在一个不大的项目里同时使用所有C++特性,而是根据业务范围选择其中部分子集,以免复杂度失控。
  xml布局其实也是一种"所有语言都在堆砌"的特性;它和语言的结合并不好,两张皮,这带来了额外的复杂性、且很难达到宣称的效果。
  kotlin其实是一种尝试,尝试把"界面布局"直接整合于语言中——这个特性不再是和其他部分毫无瓜葛的、可以剥离的特性,而是和语言其他成分水乳交融的一部分。
  说的更抽象点:过去,各种特性的堆砌其实是"非正交"的,不同特性要么格格不入、谁都不碍谁;要么一旦产生了交互作用,那么你就必须动用类似placement new这样的"非常手段"——也就是封装发生了泄露。
  而更理想的设计是,语言中的每一个特性都是独立的、可以和其他特性自然互动的。不至于两张皮一样。
  比如,过去,你在程序中create了一个view,但没人知道、其他组件也无法和它自然交互。除非你主动通过某种奇怪的机制把这个view呈现出来,否则在程序执行到这个位置之前,这个view就不可见。也就是这个view和程序其他组件之间,是缺乏联系的,非正交的。你必须通过某些"泄露封装"的东西,把它显式的添加到某个窗口,否则这个view甚至都无法正常交互;不仅如此,你还需要通过独立的布局文件把它单独列出来,否则就无法可视化的编辑它。
  而真正正交的、相容的设计里,你create一个view,这个view马上就可以呈现在可视化编辑器里;而且,它也可以很自然的被其他窗口/view使用——不需要复杂的、啰嗦的、奇特的语法或者布局文件帮助,而是简单的把它赋给另一个窗口/view中的某个变量,马上就能看到最终的效果了。
  当然,作为一个用过很多蹩脚库的人,我知道很多这种设计只是取巧——其中的重灾区就是微软。
  这种取巧,使得你在做一些简单、常见的工作时方便快捷;却会给稍微复杂一些工程带来巨大的麻烦、表现出库设计者的思维缺陷——它只能解决表面问题,看起来"很好很强大",但根本就不是深思熟虑的结果。
  嗯,举一个容易理解的典型案例吧:win10早期的网络控制面板隐藏了ip、子网掩码、网关、dns等等配置信息;你想解决网络问题,它会告诉你"正在联网寻求解决方案"——网络不通了,它去联网寻找解决方案!
  这就是典型的"看起来很美"的封装——对小白来说,现在你不需要自己手动配置ip、网关、dns了,微软可以自动帮你搞定,爽吧?
  但当实际环境出现意料之外的问题时(对我来说,是win10的驱动无法正确驱动我的笔记本网卡),对专业人员来说,看一眼ip、gateway、dns配置,故障在哪就了解的七七八八了。
  可为了避免"吓到小白",它把这些信息藏了。藏在九曲十八弯的很多个分支之后;而一旦你选错了分支,它就"联网寻求解决方案"——锁死窗口,关都关不掉,一定要耗上若干分钟!
  这就为专业人员寻找问题根源、彻底解决问题人为制造了极大的麻烦。
  这个状况的根本原因是:它根本就没有完成"网络配置"这个任务的全部封装工作、做不到"自动解决一切问题"同时又"不掩盖一切必要的信息";却又装的好像自己把问题解决了一样、不留"窥探内部"的机会(或者把窥探内部做的复杂而曲折)——换句话说,就是相关业务的所有逻辑回路尚未闭合,因此,这种方案能解决80%的问题,但却使得另外20%的问题更加的难以解决、甚至彻底无法解决。
  很显然,"完美的封装"要求对相关领域的"完美掌控";要对这个领域的一切业务完美支持——无论是简单的、小白的业务,还是复杂的、专业的业务,都要用同一个思路一揽子解决,都要一视同仁的提供便利。
  而这,并不是微软的长项。
  就好像MFC时代,微软就率先给出了一个很烂但能用的、被人讥讽为"没有封装"的"封装"一样。
  不过,同时代,能给出漂亮封装的并不多,也就Borland做的最成功。
  在无数次失败之后,业界才找到了MVC这个近乎完美的架构。
  所以,我一点都不奇怪微软不去引领架构设计/编程语言发展的方向。它并不擅长这个。
  至于Google……这个倒是符合它的一贯形象;但能否成功,还得看实践效果——看它能不能在开发任意复杂的程序时、仍然保持界面开发的简洁性和直观性。

旋复花与经方治疗噫气肝着两首方剂介绍吴文博河北省石家庄市中医院旋复花旋复花为菊科植物旋覆花或欧亚旋覆花的头状花序。其味咸性温。主结气胁下满,惊悸,除中上二焦结闭之疾。除水,咸能润下。去五脏间寒热,五脏留结不通所生之寒裤子别再卷裤腿了,2022流行这样穿,时髦高级,谁先穿谁先美新的一年新气象,为了迎接新的一年,穿搭也要变,毕竟时尚是一年变多次,一个季节有一个季节的变化。新的穿搭庆祝我们2022年有个新的开始,好看依旧要继承原来的本质,增加新颖元素,美的新高圆圆打破形象壁垒,环肥燕瘦在酒吧里媚笑2月15日,高圆圆工作室发布了一段老板拍戏的花絮。只见高圆圆身着银色亮片吊带裙,一颦一笑都女人味十足。高圆圆还说,当一个酒吧小白在酒吧拍摄,假装娴熟实则却没怎么来过,就是坐在这里装21世纪进球最多的五位边后卫!卡洛斯独一档,至今无人超越近年来足球已经有了很大的发展,球员在球队中的角色不再是单一的。教练希望他们的前锋从前场防守,门将在脚下控球,后卫从后场开始组织比赛。正因为如此,我们看到了像拉莫斯范迪克和马科斯阿隆首秀435!交易加盟火箭,彻底沦为替补,大合同真没戏了北京时间2月15日,NBA常规赛继续展开,交易截止日一共发生了10笔交易,新球员也纷纷迎来新东家的首秀,火箭与凯尔特人达成交易,送出泰斯,得到了施罗德。这笔交易火箭也是为了摆脱泰斯八年,不忘先夫庄则栋遗志,她年过七旬仍为乒乓精神传承奔走华夏中国第一位乒乓球三连冠乒乓外交第一人国家体委主任取得诸多瞩目成就的庄则栋本应是天之骄子,却受时代背景更迭变化影响,仕途与情场都多有波折。然而祸福相依,正在这段最为困难的时间里,庄则吴冠希张常宁喜结连理!他能迎得爆发,还真少不了排球女神鼓励佳偶天成!一直在甜甜蜜蜜恋爱的张常宁和吴冠希终于官宣结婚了。情人节那天,现效力于江苏肯帝亚的主力中锋吴冠希也更新了自己微博,宣布自己将和女排国手张常宁在6月份举办婚礼,而之后张常宁冬奥智能餐厅高效抢镜科技赋能显身手Flashversion9,0orgreaterisrequiredYouhavenoflashplugininstalledDownloadlatestversionfromhe动脉硬化危险多,如何及时发现?从手脚状态就能知道血管是否健康动脉粥样硬化,是一个三高病人们都不陌生的词,当高血脂发展到一定程度,就有可能引起动脉粥样硬化,而动脉粥样硬化又会带来冠心病脑梗死等一系列危及性命的心血管疾病。但注意了,我们这里说的建议大家养生,少吃保健品,多吃5菜2米,身体轻盈面色好养生保健,是现在好多人都追求的生活方式。不管是朝九晚五的年轻人,还是退休在家的长辈们都讲究养生之道。但好多人在养生这一方面,似乎都比较追求保健品的效果。于是好多人不谈价格高低,家里小行星2020XL5新发现的地球伴侣天文学家使用位于智利CerroPachn的4。1米SOAR(南方天体物理研究)望远镜证实,2020年通过PanSTARRS1调查发现的一颗名为2020XL5的小行星是地球特洛伊木马
大衣哥儿子低调再婚,新娘表情暴露真实想法,网友这也太敷衍了文阅栀编辑阅栀任谁都没有想到,一个地地道道的农民,能在网络保持热度十余年,经久不衰。出名后的大衣哥一言一行一直被媒体关注着,一有点风吹草动便会被媒体昭告天下。2023年1月7日,农第六届平遥国际电影展将于1月14日至19日举办第六届平遥国际电影展将于1月14日至19日在山西平遥古城举办。来自中国法国意大利葡萄牙哥伦比亚等多个国家和地区的影片将进行展映。据悉,本届电影展将延续原有架构,围绕展映产业教育学术乡村爱情15观众到底做错了什么,要被这样的烂剧暴击?进入2023年播出的一众剧作,依然出现了品质参差不齐的现象,比如行业剧向风而行就受到了一致好评。这部剧作展现了飞行员在职场上的困境,也将许多现实的问题摆在台面上,从根源上就杜绝了假意甲1终结尤文8连胜10分优势领跑北京时间1月14日凌晨3点45分,202223赛季意大利足球甲级联赛第18轮迎来一场焦点战,领头羊那不勒斯主场对阵排名积分榜第二的尤文图斯。上半场,奥斯梅恩传射建功,克瓦拉茨赫利亚9084上海胜江苏,10985山东胜广厦,CBA四强最终排名或如是!1广东2辽宁3山东4上海上海,三外援布莱德索特林布尔奥布莱恩特,真给力!关键时刻神勇强悍。本土球员王哲林闫鹏飞,真无敌!关键时刻不掉链子。上海内外双收,四强大有可能!山东,丁伟执教取消交易计划,火箭队锋线215碾压探花,新核心三双重组内线天赋取消交易计划,火箭队锋线215碾压探花,新核心三双重组内线天赋7连败之后,火箭队迎战国王队,这场比赛球队的状态有所恢复,和对手打到了最后一节,后半段才逐渐的崩盘,虽然还是难逃八连败数量位居全市第一!苏州工业园区16个项目获江苏省科学技术奖近日,江苏省科学技术奖综合评审结果公示,苏州工业园区共16个项目获奖。其中一等奖1项,二等奖6项,三等奖9项,创历史新高,列全市第一。江苏省科学技术奖是为推动科学技术进步,调动科学北疆5,南方人疑惑新疆的冬还有两副面孔?迷恋一个季节,不舍一段时光。你喜欢冬天吗?四季轮转,一季有一季的美。冬季的美含蓄别致多情。而在新疆,有两个不一样的冬,两种不一样的美。南疆温暖神秘天山以南,强冷空气被天山山脉阻挡在杜锋惜才曾凡博,男篮最强天才真该去广东,3个优势必能助他起飞北京时间1月12日,曾凡博真的应该留在北京吗?现在看或许并非如此。对辽宁他8次出手砍下19分,队友却不给他传球,各种无视曾凡博,各种排挤打压他。主教练解立彬还说,曾凡博对球队的帮助新疆加时险胜深圳,29次失误险被逆转,法尔2019周鹏176丢绝杀头条创作挑战赛CBA第25轮的比赛继续进行,新疆男篮对阵深圳男篮,这是两队本赛季的第二次交手,对新疆男篮来说是一场复仇之战。这场比赛的强度非常大,虽然新疆男篮的失误依旧比较多,不过罗体罗马对热那亚赛前,将为世界杯冠军迪巴拉举行庆祝仪式直播吧1月12日讯据罗马体育报报道,罗马在主场对热那亚的意大利杯比赛前,将为迪巴拉举行夺得世界杯冠军的庆祝仪式。北京时间1月13日凌晨4时,意大利杯18决赛,罗马将在主场迎战热那亚