环法自行车赛,自行车手在部分赛段可以时速超过六十公里。
比我日常开车速度还快。
若不是直播时候看第一视角镜头,我也很难相信自行车可以骑这么快。
运动员确实很厉害。
我一个男的,一万都只能50min左右,一个女的45min,我直呼厉害
世界纪录的准确性并没有什么可质疑的地方。
从场地和器材的规范性、赛场环境监测、计时器材/裁判的专业性、赛前赛后多项药物/尿样检测、留下尿样/血液等以备多年后复查……保证了只要运动员拿到奖牌、尤其是打破纪录这样的成就,是肯定在符合各种严苛条件下,成绩才会被承认。
这问题挺有意思的,回答里尽量东拉西扯多说点和长跑有关的,
最后说下,
专业田径比赛里的计时,使用的是能精确到百分之一秒的电子计时器(Fully Automatic Time,简称FAT),从1977年开始就在世界各大田径场径赛投入使用了。
目前能提供田径/游泳比赛专业计时的品牌并不多,比如天梭、精工、欧米茄等(这些品牌在技术方面都是相当成熟的,大型比赛用哪家,只是赞助商层面的选择了)。
阿雅娜实现女子万米世界纪录的比赛是2016年里约奥运会女子万米决赛,从1932年开始奥运会采用的计时就由欧米茄提供。
欧米茄当时带了整整450人的计时员团队去巴西,使用的总计时设备达到480吨。终点处有个非常先进的光感应终点摄影机(scan'o'vision maria),每秒能捕捉多少张照片呢?
10000张……
所以别说计时了,就是选手在终点处身体哪个部位、具体在哪一毫秒碰线、撞线时与其它选手具体到厘米级的差距……全都清清楚楚。
而且这种纪录设备并非只放终点处,而是遍布整个体育场。配合其它监测设备,选手在整个比赛过程中的风速、速度、分段距离用时、即时速度、(短跑选手的)起跑反应时间……都逃不过这些设备的监控。
——所以质疑世界纪录的精准性或真实性,似乎并没有什么意义。
何况大型田径比赛,全场观众+全球转播,造假也没有可能。
这和网友动辄说自己百米跑11秒出头是完全不一样的。
倒是即便身经百战的这些长跑选手,偶尔也会出现瞠目结舌的失误。比如少跑一圈,比如误以为对手少跑一圈……
像下面这位表情难以言喻的罗娜·萨尔佩特↓↓
2018年欧锦赛5000米决赛(400米田径场跑12.5圈),一直到最后一圈,罗娜·萨尔佩特与第一名只差不到一个身位。然后还剩一圈的情况下,萨尔佩特以为自己已经跑完、她身边的哈桑是落后自己一圈的选手,就开始像一个完赛者一样冲线减速,表情浮夸面带微笑——前几天刚刚赢了10000米冠军,估计她心想这时候已经金银在握了。
结果发现一旁的哈桑怎么没停下脚步而是开始冲刺,场边裁判员也在朝她喊,萨尔佩特才意识到自己只跑了11.5圈……但经过这样一个暂停,想追回来是不可能的,维持了短短几米的第二后,萨尔佩特便迅速被后面的冲刺者超越。最终只以第四名完成比赛(关于这场失误,详见:体育史上有哪些让你「瞠目结舌」的经典失误? )
另外一个就是邢慧娜2004年雅典奥运会被迪巴巴误以为是套圈选手,直到完成比赛后都不知道、还在庆祝自己夺冠的故事:历史上有哪些精心布局却被对方一下破局的故事?
最后几圈邢慧娜还在第一集团,解说直到最后几百米对邢能拿第几名还显得底气不足:
“……还剩两圈,跟住了,还有拼的机会。”
“应该说在冲刺这块上我们是不占优势的。”
然后,埃塞俄比亚人显然以为最终角逐是自己人,最后两百米时有个人墙(两人并排)稍微挡了下后面选手,但也很快就自顾自冲刺了。而且可以看到,最后迪巴巴和基达内以为冠亚军是自己的,真算不上拼尽全力,有点互相收着看对方节奏,想伺机分个高下。
邢慧娜此时反而是非常强劲的冲刺,终于在最后不到100米时超了过去,第一个冲过了终点,30分24秒36也创造了她个人的最好成绩。
而迪巴巴被超过时好像一点都不紧张,还以为自己拿冠军了,冲线的时候还举手欢呼夺冠。反而是邢慧娜冲刺后没做什么胜利的表示。
更喜剧性的,迪巴巴甚至赛后很长时间内都不知道自己只是亚军,在路过混合采访区时还声称对这块“金牌”很满意,最终知道真相的她愣了半天没说话,随后痛苦表示,早知道这样在最后冲刺的时候就应该和邢慧娜拼一下。
所以说,
万米大型比赛,成绩的精准性和真实性都是毋庸置疑的;
绝不可能存在场地短个几米、选手少跑一圈、计时设备“减速”、时间造假……的可能。
再说下世界纪录的确认期。
就拿今天(2020年10月13日)举例。今天有三个世界纪录被确认。两个是9月5日莫法拉的一小时跑世界纪录(21330米),哈桑的一小时跑世界纪录(18930米),另一个是9月5日杰普切切1小时05分34秒的女子半马世界纪录(Wo,women-only,仅女选手、无男选手领跑的纪录)。
——可以看到,从9月5日三人刷新世界纪录到最终被正式确认,隔了超过一个月时间。
而这在世界纪录确认里面已经算非常短的时间了,动辄数月甚至超过半年都很正常。
世界纪录为何有确认期呢?
一来在比赛结束后,需要对选手进行反复的药物/尿样/血液检查,确保他们符合当下的规定,没有违规使用药物,纪录和成绩方可被认可。而尿样也需要一定时间去分析,这些也会分别保留,以备日后检查。比如尿样,一般AB两瓶(分别50ml、20ml),A瓶尿样检测呈阳性后,进一步检查B瓶确认。阳性结果48小时报告。
极端的情况,只要选手留有尿样/血液/药检样本,但凡该选手日后被检测出服用禁药,他过往的所有样本都会被提取出进行再次检查——所以咱先不管禁药和药检谁更魔高一丈的事,选手想在药检上作弊,在当下是极度困难的情况。一旦查出,万劫不复。
二来,这些大型田径比赛,不光在赛前需反复检查比赛要素,比如赛道、天气、海拔、风速、比赛装备、场地器械……等,在赛后也会复查,确认场地及外界环境符合比赛要求+破纪录的认可条件,才可以视为创造了纪录。
大型运动场的田径赛道往往不会有什么问题,而路跑的话,要求就严格得多。比如,赛道必须由A/B级世界田径协会认可的测量人员测量,长距离路跑高低落差不能超过0.1%(每公里1米),等等。如果比赛前没有测量,那比赛结束后必须尽快对路线进行验证(重新测量)。
在世界纪录的记录上,田径项目往往也会有非常详细的备注,比如,
等等。
——上述这些都会在赛后再逐一审核+确认。各种查验无误后,世界纪录才会被最终批准( ratified)。
那世界纪录是否可能被剥夺/收回呢?当然有可能。
比如牙买加短跑「黄金一代」,曾经在北京奥运会跑出4x100米的世界纪录(37秒10),结果2017年1月,其中一位接力队员,卡特尿样复查结果呈阳性,金牌和世界纪录就被剥夺了,博尔特也连带少了一块奥运金牌+世界纪录。
——比赛当天是2008年8月22日,药检结果确认+世界纪录作废是2017年,过去将近10年时间,依然被收回了(关于博尔特和他的牙买加黄金一代可以看看:历史上有哪些「吊打一个时代」的运动员? )。
回到女子万米纪录。
有史以来,合计有8人跑进过30分钟大关,这里包括了1993年的王军霞(29分31秒78),且保持了整整23年的万米纪录。
就顶级女性选手的万米能力而言,当下哈桑等选手都具备了万米跑进30分钟、且冲击世界纪录的可能——哈桑刚在雨中刷新了欧洲女子万米纪录(29分36秒67)。
我们可能有生之年都见不到女子万米跑进28分大关,但按当下世界田径尤其是长跑项目的突飞猛进,女子万米再次刷新纪录还是相当有希望的。
而在径赛场的各种严格限定下,不说世界纪录,只要按规定参赛,想作假的可能性都无限趋近于0。
普通人和顶级长跑选手的差距当然很大,大到看不见对方尾灯,很正常。这是《田径运动员技术等级标注》和《全国田径锻炼等级标准》↓↓
《田径运动员技术等级标注》针对职业/半职业选手,也就是说,当成绩达到三级,已经是可以被称为“运动员”了。而《全国田径锻炼等级标准》,更适合日常长跑爱好者,结合自己的年龄去衡量自己所处于的水准。
题目中“身边最快的女性万米能跑到45分左右”,已经达到三级运动员的标准,属于非常出色的一类,除非是日常一些长跑团体,否则真的并不多见。
除了观赏之外,世界纪录对普通人来说还有一个“参考价值”。你可以直接用世界纪录去衡量下自己的能力,是否属于比较不错的水准。
有个很粗略的换算方法:世界纪录x2
——即,径赛项目,基本普通成年人能在世界纪录x2的时间内完成,就相当出色了。当然距离越长这个评定越靠谱。最好是从400米往上开始算。
——这里所谓的「普通成年人」和「相当出色」的定义,就是指身边的普通人,他们未必像那些健身爱好者、长跑爱好者一样花费大量时间在运动上。
在知乎可能很多人本身经常运动、或者自己就是长跑者,会觉得不以为然,感觉这个“乘以2”的标准也太容易了。实际未必。
可以自己对照一下:
800米男子世界纪录是鲁迪沙的1分40秒91,乘以2,3分22秒;
800米女子纪录是克拉托奇维洛娃的1分53秒28,乘以2,3分47秒;
5000米男子,切普特盖,12分35秒36,乘以2,25分10秒;
5000米女子,吉迪,14分06秒62,乘以2,28分13秒;
10000米男子,切普特盖,26分11秒00,乘以2,52分22秒;
10000米女子,阿雅娜,29分17秒45,乘以2,58分35秒;
半马男子,杰弗里·卡姆沃尔,58分01秒,乘以2,1小时56分;
半马女子,杰普切切(Wo),1小时05分34秒,乘以2,2小时11分;
马拉松男子,基普乔格,2小时01分39,乘以2,4小时03分;
马拉松女子,布里吉德·科斯盖,2小时14分04秒,乘以2,4小时30分。
能全部满足的,在现实成年人中比例不见得有多高。
——全世界的知名马拉松、国内的大型马拉松,普遍完赛时间在4小时30分左右(女性选手还要再慢个约20分钟),这些人已经是日常经常跑步、且有针对性训练的(否则哪跑的下来)。
那按“乘以2”的标准,马拉松男子能在4小时左右、女子在4个半小时完成,已经是一个相当不错的水准了。
当然这一套很粗略的估算,只能作为简单的考量。
最后,很多世界纪录,尤其80、90年代的田径比赛,确实疑点重重,很多几乎当事人都默认了在那个阶段有吃药行为(比如当年的马家军),但毕竟年代久远也没有保留什么药检尿样之类,属于死无对证的那类了。
——比如上面提到的800米女子纪录,捷克的克拉托奇维洛娃,这个纪录是1983年创造的,至今已经整整37年了,是田径场上著名的僵尸纪录。
包括王军霞当年的万米,也定期被媒体拿出来鞭尸的话题,属于外媒质疑、内媒沉默、当事人心知肚明的那类,也是直到阿雅娜在里约破了纪录,才算消停了一波。
以前还有人提议把2001年以前的田径纪录全部作古、重新统计,这当然有点一刀切的意思,最后也不了了之。
职业竞技场是个讲相对公平的地方,并不存在绝对公平。也确实存在很多禁药的问题,但纪录们都是以秒、毫秒为单位去一点点提升,对业余爱好者只是个数字。
确实有一小撮地球人运动能力非常强大,确实有更小一撮人为了提升一丁点的时间用尽各种方法。职业竞技就是这样。普通人看得开心就好啦。
之前我们在虎扑发过一个投票,10000米/十公里的用时。在整体用户年龄偏年轻+男性的社区,无法跑完+50-60分钟的还是占了大多数。
——这也基本是当下普通人的情况,如果你日常经常长跑,有一定训练,万米跑进1小时还是比较可行的,但日常不跑步也不锻炼的话,10000米/十公里会是一个很大的挑战、完成也不见得那么容易。
姊妹问题:
还选个毛
几个老头,谁能活到11月谁自动当选
感谢
@sxc邀请。非常非常感谢。
为了防止邀请我的sxc老师撤销邀请,我不得不截图。
@朱峰女士,你的答案,为了防止你进行修改,我已经截图了。没错,如你问题当中所说,礼貌是不是软弱?
当然不是。
我自问是一个普通人,在知乎得到关注多,也只是因为我勤勤恳恳,一个字一个字写得多,仅此而已。
我去咕咚网之前,当过记者,做过公关,我也不是什么名校毕业,但是我深深知道,原创是品德,是节操。做记者,报道要如实,要客观,要中立,要还原事情的本来面目。
我为什么要在微信群“红包体育”里面和你抬杠,为什么要质问你,想必你已经不记得了,然而我记得清清楚楚。
我不关注你的微信号,那是有非常重要的原因的。朱峰女士,你说你没做过亏心事,那么想必在你看来,未经他人许可引用、转载他人原创的内容,不算是亏心事了。
你不记得的事情,我一点一点帮你回忆起来吧。事情当然没有这么简单。
当你加入“红包体育”的时候,我对群主说了一句话。【我很高兴,我有不删除任何聊天软件当中聊天记录的好习惯。】
这里截图当中的日期是一直就存在的。至今我的iPhone 4S也一直在用呢,不可能改掉。
你为什么和我说抱歉,你忘了?2015年3月3日你所说的,是真的都不记得了?
当时我的反应,算是很克制的了,毕竟当着“红包体育”群里这么多人的面。
为什么我过了这么久,才再次在“红包体育”群里质问你,我想你应该明白。我知道每个人做自媒体不容易,想靠着才华变现,更加不容易,当时你肯道歉,说你会改,那么我也就得过且过了。
问题的关键在于,你改了吗?如果你改了,你就不会不经过
@式微同意,转载她的答案,而且还将她列为“第二作者”。
你的所谓声明,夹杂在你的正文内容当中,而不是正式开辟一个子栏目道歉,被诸多的信息噪声遮盖着,这就是你的诚意?
上述三张截图,是2015年6月17日早上8:43时截的。我现在还很怕诸多水军说我图片造假呢。下面两张图,是2015年3月3日晚上20:49时截的。那个时候,你的微信ID还没有“太阳表情”。
这个总不能说我作假了吧?
而你在面对我的质疑的时候,说了些什么话,你还记得吗?这就是我为什么要截图的原因。
二次编辑加了些东西,就可以等同于你自己的原创,是吗?
事实证明我当初心一软得过且过,才是真的错误。
你说了“最初开时,格式内容混乱,但转载内容标明了作者”——我还是那句话:用了我的东西,问过我吗?
你说了“微信对于转载格式有了新要求后,我们也跟着学习,把之前来源不明的全部删除。之后再也没有出现不合规的转载“——来源不明?请看看截图,你自己说过的话,怎么就这么快忘了呢?”是从虎扑、知乎、直播吧很多来源的文章“,这还算是来源不明?
你说了“暴力行为冠以道德名义,缺又恰恰选择了一个认真做事的自媒体下手,无论是出于要稿费,还是炒作涨粉,都不会实现的”——暴力冠以道德的名义?我质问你,就是暴力,你不告而拿,拿了我的答案,也拿了知乎上别人的答案,这种偷窃行为,就是道德的?
另外,请弄清楚,到底谁在炒作?我只是把原文作者式微老师带到了“体育红包”群,让她自己和你说清楚,这就是炒作?式微维护自己正当权益没有成功,自己写了篇专栏,以正视听,这叫炒作?
你说了“另外。。。您在背后诽谤我的许多聊天截图我已经给了律师。我们没做亏心事,我们礼貌但不软弱,真的,用法律途径解决,只对我们单方面有利啊。但您若真的要这样苦苦相逼,请也不吝给我一个您的地址,给您去一封律师函”。
我在背后诽谤你?请把截图放出来,让知乎用户都看看,我到底怎么诽谤你了。
你没做亏心事?没做亏心事我会质问你为什么不经过我允许转载了我的内容?
说我苦苦相逼?到底谁逼谁?“咕咚-李旸”是我在“红包体育”群里的ID,那是因为之前说过要标清楚所在的企业、媒体和姓名,所以我这样写。
我再说一次:质问你,是因为你在知乎未经我许可,擅自转载和引用了我的内容;我质问你,是因为你在知乎未经式微老师的许可,擅自转载和引用了式微老师的内容。
知乎上的回答问题,是我业余时间所为,工作忙的时候我只能下班回答问题,晚上写公众号内容,或者把知乎的答案放到我自己的公众号上去。关于足球篮球的内容,和咕咚网没有一点关系,全部是我自己的业余创作。
而你,直接找到了咕咚创始人、CEO申波先生,也就是我的最高领导,去质问我的行为是代表咕咚,还是代表个人。
我在知乎的ID和个人说明写得清清楚楚,没有和咕咚有任何的关联。你没有经过我个人的允许,转载引用我在知乎的内容,被我质疑你转载了别人的内容,居然好意思说是“法律层面的诽谤”?居然还去和我供职的企业对质?
到底是谁苦苦相逼?
所谓认真做事的自媒体,是把知乎用户的文字答案,变成自己的声音和话语,放到视频当中去,是吗?
所谓认真做事的自媒体,是未经他人许可,擅自转载、引用他人在知乎的原创答案,是吗?
最后我很想问一句:你既然深知自媒体人的成长有多么不易,为什么你还要去做“未经许可,擅自转载和引用其他自媒体人的内容”这样的事情?
最后,是我放出的所有截图的具体信息。
我在这里声明:我是知乎用户李暘,在知乎的每一个答案,在知乎的每一篇专栏文章,不敢保证完美无缺,逻辑严密,没有错别字,但全部是我自己的原创内容,任何人未经我许可,转载、引用、抄袭我的答案,即为侵权行为。
为了看一个小时就能看完的电影,去充一个月的会员,很不合算。
其实如果能够便宜买断一部电视剧或电影的话,也不会到处去借会员。
而且爱奇艺、腾讯什么的视频网站会员账号,也不存在什么隐私信息,关系好借一下,也不太担心造成信息泄露或其他损失。
但比如知乎、B站、微博会员账号就不太好借了,尤其是写作、投稿比较多的,借给熟人都很有风险。
不过分啊,很合理的要求。
只不过男性那种收入又有房子的,恐怕更关心年轻漂亮或者心灵契合之类的的,不会那么关注女性的收入了。
男女双方在的择偶标准是不一样的。
不过分啊,很合理的要求。
只不过男性那种收入又有房子的,恐怕更关心年轻漂亮或者心灵契合之类的的,不会那么关注女性的收入了。
男女双方在的择偶标准是不一样的。
很少有人不基于框架直接写GUI界面啦,我这个回答就从GUI框架反过来推什么语言做GUI合适。(只聊桌面端GUI编程框架)
几乎是C++领域最流行的跨平台桌面端软件开发框架了,这个框架是两个挪威人在1995年创建的,发展至今可以说历史相当悠久,稳定性也很有保障。很多大公司都在用它做界面比如金山的WPS。
它内置了自绘引擎,也就是说界面上的一个按钮,一个文本框,都是Qt的引擎自己画的,这保证了基于Qt开发的软件界面在不同操作系统上看起来是一模一样的。
它提供了大量的与界面无关但与软件开发息息相关的API,比如、网络、文件系统、剪切板等,而且让这些API在不同的操作系统下都有效,这极大的节省了开发人员的时间。
但它也有一些缺点,比如在处理一些特殊需求上很不方便,比如:目前Qt有没有比较好解决高分屏下缩放显示的方案?,Qt没有真正完美的无边框解决方案吗?等,在一些组件的渲染上也会出一些隐藏的较深的问题(QListItem),一旦遇到,就很难解决。
Qt近年来不太专一,qml,qtquick等,搞了很多,而且这些新玩意儿一直不温不火,有些模块做了又废弃了,比如:qt script,搞来搞去,搞的模块繁多且复杂,用起来不是很舒服。
Qt有界面描述语言(XML描述界面),可以通过设计器拖拽空间设计界面,编译期界面描述语言被转义成C++代码,性能上没啥损失。
Qt商业授权不太友好,开发商业应用一定要谨慎,之前听说有公司为此付出了高额的版权费。个人开发者可以免费使用。Qt的免费版本不允许静态链接,会有版权上的限制,但开发者还是可以通过一些特殊的编译方法静态连接Qt的库的。
除了使用C++开发Qt应用外,开发者还可以使用其他语言开发Qt应用,最流行的就是使用Python基于PyQt做Qt应用了,其他语言的绑定不是很成熟,但PyQt仍然有版权的问题。
GTK是1997年创建的,也非常成熟稳定,是C语言开发的,但有很多语言的绑定,比如官方支持的JavaScript、Rust等,当然用C++语言操作GTK也很方便,它也有自绘引擎(Cairo),也提供了大量系统相关的API,商业授权也非常友好,基于GTK开发商业软件不用担心收到律师函的问题,虽然它是一个跨平台桌面软件,但它似乎只在Linux操作系统领域流行,有非常多的Linux桌面软件都是基于GTK开发的。
这也直接导致GTK的维护者很重视Linux领域的发展,而忽视Windows和Mac领域。这个框架提供的很多API,只在Linux下有,Windows和Mac下没有。这样的API数量众多。甚至在Windows下编译一下GTK的源码都要比Linux下难很多。而且GTK的渲染引擎在Windows下性能表现也不如在Linux下好。
GTK在Windows上也没办法静态连接,它到不是因为版权的问题,而是它依赖MSYS2的一些库,这个库用于在Windows上模拟Linux环境,这也是为什么GTK在Windows上表现不佳的原因之一。
另外,由于GTK是C语言开发的,所以开发风格也很C语言化,这对于部分开发者来说可能觉得繁琐。
wxWidgets是1992年英国的一个大学教授开创的跨平台GUI软件,也非常成熟稳定,商业授权非常友好。它没有自绘引擎,而是对不同平台下的界面API做了整合和封装,这样开发者在Windows下开发的软件看起来就是Windows窗口风格、Linux开发的软件看起来就是Linux窗口风格,这对于某些软件来说,正是他们想要的,但要想搞一些花哨的特效就没那么容易了。它同样也提供了大量的系统相关的API供开发者使用。
它是C++开发的,所以对C++开发者非常友好,除此之外它还支持静态连接,也就是说开发个应用不用分发给用户一大堆dll,当然Qt也支持静态连接,但是你得自己编译Qt的源码(不是很方便),而且Qt的授权规则也不允许普通开发者这么做。
它会有些小问题,比如我之前提的:wxEVT_NOTIFICATION_MESSAGE_DISMISSED event emit twice,但总体来说还是非常稳的。除了开发的界面比较死板外,没啥大的问题。目前使用这个框架开发软件的人越来越少了。
fltk是1998年创建的跨平台开源GUI框架,历史悠久,商业授权友好,而且C++之父也用它,它非常轻量级,支持静态连接,一个简单的应用编译后只有500K左右,非常赞,
它有自己的自绘引擎,没记错的话用的是OpenGL,但它的重绘机制是按区域重绘的,如果组件A所在的区域上存在组件B,那么A组件重绘时,会把B组件的给重回掉,开发者必须自己写代码处理这种情况。想象一下,如果你想实现一个A组件fade out的同时B组件fade in的效果,就会非常麻烦。
FLTK提供的一些组件样式都比较刻板,绘图API也比较少,你想实现一个漂亮一点的圆角按钮(它内置圆角按钮的圆角大小是不能改的),必须自己画,而且还得借助一些非常奇葩的手段才行(如果你想知道,可以联系我)
它是C++开发的,但API不够现代,用起来总体还算舒服的,它有Rust绑定:fltk-rs。它的用户比前面三个都少。它提供了一些与界面无关的操作系统API,但非常少,几乎可以忽略。
Duilib
是2010年国内一个开发者开发的GUI开发框架,因为底层基于DirectUI开发,所以只支持Windows平台,不支持跨平台,开源协议友好,商用没有任何问题(需要附加Lincence文件),国内有很多大厂基于这个技术做桌面端应用,比如网易、腾讯、百度,这个框架是基于C++开发的,对C++开发者友好。但框架本身还有一些问题,比如对高分屏支持不佳、特殊控件绘制上也有一些小问题,除了界面相关的API外,几乎没有提供系统级的API,作者纯粹是用爱发电来开发这个框架,所以更新不是很及时。
相对来说网易基于Duilib开发的分支更完善一些:NIM_Duilib_Framework,添加了高分屏支持、多国语言、整合了多线程处理的支持,但环境搭建相对比较麻烦。如果开发者要用这个框架,一定要用develop分支下的代码,master分支下的代码问题很多,这个框架看上去也是作者一个人努力的成果。
Sciter是2006年创建的跨平台闭源GUI框架,足够稳定,商业授权不友好,但个人开发者可以随便用(只能用动态链接库),一旦公司规模超过3人,就得买版权了(有权静态连接)。
它内部封了一个浏览器核心,让开发者使用HTML,CSS,JS来创建界面,但对这个浏览器核心做了大量的精简,不像Electron和NW.js动辄上百兆的体积,它只要6M就够了。当然这也意味着有些浏览器特性它是不支持的,比如CSS3的flex布局,它就不支持(但它提供了自己的flex布局实现方式)。以前它使用自研的一个脚本语言(和JavaScript很像),自从集成了Fabrice Bellard大神的QuickJs之后,就全面支持JavaScript了。它还对一些特殊的场景做了内置的支持,比如渲染大列表。
它使用C++开发,对C++开发者很友好,有Rust、go、Python等语言的绑定,但都是社区提供的,质量堪忧。有很多知名厂商都用这个库做界面,比如360、teamviewer、赛门铁克等。
RmlUi和Sciter很像,可以看成Sciter的替代框架,但RmlUi这个项目有三界作者,一个一个的弃坑不知道新任作者会不会弃坑,目前还不是很成熟,比如我正在尝试帮作者解决的CJK输入法的问题,目前还不推荐大家使用这个框架。
CEF是2008年创立的,基于Chromium的跨平台GUI框架,稳定且商业授权友好,国内很多大厂都用的CEF:比如微信桌面端、网易云音乐桌面端、QQ桌面端、微信桌面端、MATLAB、FoxMail、OBS Studio,装机量破亿。
由于它几乎封了一个完整的Chromium,所以体积非常大,但支持所有的HTMLCSSJS特性,它几乎不提供任何与操作系统相关的API,创建个托盘图标、读写个文件啥的,都要开发者自己完成,它是C/C++开发完成的,对C++用户非常友好,它有gopythonjava等语言的绑定,但都是社区提供的,质量值得担忧。
它对Chromium封装的很好,避免了开发者直接与Blink、V8、Chromium等复杂的代码打交道,很多功能都有默认实现方式,遵从约定由于配置原则,有经验的C++开发者可以很轻松的驾驭CEF框架。
由于Chromium是版本弟,所以CEF版本发布也非常频繁,很多被标记为稳定的版本,还是会出一些莫名其妙的问题,选一个好的版本非常重要。
与Electron一样,它也是分主进程和渲染进程的,所以开发者要非常娴熟的运用跨进程通信的技术,虽然CEF提供了跨进程相关的API,但复杂度还是有点高的,使用的时候要认真细心。
这是微软的跨平台GUI框架,不仅仅支持桌面端,还支持移动端,但官方并不支持Linux的桌面端(黑人问号,感觉与微软近些年向开放、开源的大方针相悖),这个框架新的狠,至今还没发布稳定版。目前还没什么人用。而且不知道将来会不会被微软放弃。
它是.NET平台下的GUI框架,有自绘引擎,对C#开发者很友好,界面依然是用XAML描述的,可能很多人一听到XAML就直接弃坑了。XAML表现力确实弱一些,我觉得WPF没火起来跟XAML有直接关系。
使用这个框架开发桌面应用得封一个.NET框架给用户,当然有了.NET框架应用程序访问一般的系统级API也就不成问题了。
这是JetBrains搞的跨平台GUI框架,也非常新,前段时间刚刚推出1.0.0版本,但这个版本还不是很稳,至少比Flutter Desktop的第一个稳定版要差很多。同样也几乎没什么人用。
它的自绘引擎用的是Google的skia,这个自绘引擎稳的很,Chrome和Flutter都是用的它,所以排版、绘制、渲染之类的工作不太会出问题。比Java生态圈里的Swing和JavaFx要好很多。
JetBrains的东西当然对Kotlin开发者友好啦,Java生态下的很多东西你都能用,访问系统级API也没啥大问题,同样也得考虑封一个JRE给用户。
这是谷歌的跨平台开发框架,开源、免费、文档齐全、投入力度大且持久,同样也新的很,Windows版本刚刚发稳定版,Mac版本还没稳定。
如果你完全没搞过移动端的flutter,想用这个框架开发桌面应用,那么意味着你要学的东西还挺多的。好在dart和flutter入门都不是很难,学习曲线比较平缓。
由于flutter在移动端积累了很多年,所以界面上的一些东西在desktop端都比较稳(skia自绘引擎),与操作系统相关的东西还不成熟,生态也不太好,比如你想订制一下窗口的标题栏,想访问一下注册表这类工作可能得自己想办法。不过它有类似FFI的支持,跟C/C++语言打交道很方便。
开发者直接使用Dart语言描述界面,这会导致众多大括号嵌套在一起的问题,可能很多开发者不习惯。
这是微软Edge浏览器团队推出的跨平台GUI引擎,是闭源的,目前只支持Windows,对C#和C++开发者友好,如果使用C#开发,就得考虑把.NET运行时分发给用户,如果使用C++开发,就得自己处理系统级API的操作,webview2本身是不对系统级API做封装的。
这个框架推出也没多久,很多API也还不稳定,更值得担忧的是这个团队,他们前不久刚刚放弃了自己的浏览器核心转而使用Chromium浏览器核心,不知道他们会不会放弃webview2这个框架。
它的优势是可以复用系统当中已存在的webview2二进制资源,也就是说它虽然封了一个Chromium浏览器核心,但如果你可以确定客户电脑已经存在了基于webview2开发的应用,你的安装包体积可以足够小。
它也是多进程架构,甚至比Electron还要多一个进程(为了复用二进制资源),资源占用比较多。
这个库使用操作系统的浏览器引擎来达到减小安装包体积的问题,Mac上使用Cocoa/WebKit,Linux上使用gtk-webkit2,Windows 10上使用Edge(也就是上一个小节里提到的webview2),它应该是不支持Win7的。开发者要考虑前端代码浏览器兼容的问题。
开源且免费(MIT)有go、Rust、Python等语言的绑定,不过官方支持的是go语言,C和C++,操作浏览器的API非常少,不支持自定义scheme,更别提系统级API了。
采用的技术方案与webview类似,所以安装包也足够小,非常新,还没发布稳定版,开源免费。webview框架碰到的问题TAURI都有,
使用Rust开发,将来会支持Deno,作者说将来会直接使用webview的技术来支持多平台,
NW.js最早把Chromium和Node绑定到一起,用前端知识做界面,用Node技术访问操作系统,最早叫node-webkit,在2012年创建。NW.js基于MIT开源,可以无忧使用。没记错的话,微信小程序开发工具是用NW.js开发的。作者是英特尔的员工,英特尔的一些工具也是用NW.js开发的。
除了Chromium和Node的能力外,NW.js自己也封装了一些系统级API,类似托盘图标、剪切板、系统菜单这种,但数量明显比Electron要少。
NW.js可以在多个窗口间共享同一个Node.js上下文,而且还可以通过配置让Node的上下文和Dom上下文混合,这给开发者带来了很多便利。心智负担减少很多。不像Electron要时刻想着进程间通信,哪些模块当前进程不能用这类问题。
NW.js虽然起步早,但奈何没有杀手级应用,周边的生态和工具链没发展起来。用的人越来越少,维护的投入也不如Electron大,再加上Chromium更新非常频繁,导致NW.js的有些API也不是很稳,恶性循环加剧。
Electron的作者曾经在NW.js团队工作过(NW.js项目贡献第二多的人就是Electron的作者),后来辗转到了github公司,于2013年在创建了Electron,也是个开源免费的产品。由于VSCode、slak等国际型产品都选择了Electron,所以从者甚众,生态和周边工具链也完善的多。虽然开发方式上有点蹩脚的地方(多进程架构及模块归属进程),但瑕不掩瑜。
Electron每创建一个窗口都会多一个进程,这使Electron创建窗口的效率不高(秒级),NW.js有复用进程的机制,即使新窗口加载完全不同域的页面也不会创建新的进程(毫秒级)。这也是为什么很多基于Electron开发的应用都使用Dom模拟弹窗的原因。
无论是浏览器相关的API,还是系统级API,Electron提供的都比NW.js多。
--------2022-02-25更新--------
这些框架除了对开发者使用的编程语言有要求外,还有一个重要的差异就是有没有独立的界面描述语言(也就是UI DSL),这非常重要,涉及到一个框架表达业务的重要能力。
类似XAML、qt的ui文件、HTML+CSS都是界面描述语言,下面这种也可以算界面描述语言,但我感觉它不够纯粹(flutter、qml和Compose Multiplatform都是类似这样的):
panel { row { checkBox(...) row { textField(...) // indented relatively to the checkbox above } } }
但无论如何,显而易见的是,没有任何一个界面描述语言能比的上HTML+CSS组合。想想看:HTML里各种花里胡哨的语义化标签和Dom操作技巧,CSS里的布局方式、伪元素、动画描述...,对比之下你就会觉得XAML、qml直流都是弟弟。
除此之外,一个优秀的GUI框架还有两个重要的需求,这里我简单聊聊:
强大的事件处理机制必不可少。
想想这些:鼠标事件、键盘事件、触屏事件...界面加载完成、媒体播放结束、元素大小改变...网络状态变更、数据段传输完成...另外,还得处理事件冒泡、事件捕获、事件分发吧...
qt的开发者曾经说过qt的SIGNAL和SLOT机制是有性能问题的(但影响很小)
强大的异步处理机制必不可少
你不能在用户处理业务逻辑的时候,让界面渲染工作阻塞,这就需要一个强大的异步处理机制,让开发者自己去开线程去完成业务处理,无疑是又麻烦又会增加开发者的心智负担。
我记得很早之前在C# WinForm应用中,点击一个按钮,如果不用Invoke执行逻辑处理的话,界面就会卡死。
这么看来,在你的GUI应用里包一个浏览器核心还是挺有必要的,这样你就可以用HTML+CSS强大的能力来描述你的界面,用JavaScript强大的事件处理机制和异步处理机制来完成用户交互。
可能有人会想,这会带来很多问题呀,比如应用体积会增大的100M以上、会占用更多的CPU和内存资源,还会更耗电等等。
确实,目前来看这些都是问题,但仔细想想,这些问题应该不会持续太久,网络会变的更快,用户的磁盘和内存会变得更大,CPU处理能力也会更好,耗电的问题当然会持续存在,甚至会愈发耗电,但电的供应会持续增长呀。
web相关的技术之所以胜出,并不是这些技术的设计者有多厉害,而是这20多年间,有大量的人涌入了这个领域,前赴后继的推动着它前进。其他任何一个领域都没有这么热火朝天的景象。推荐大家看看我的另一个回答:
------------2022-02-27更新----------
用Web相关的技术做GUI应用的优势是,让开发者可以把大部分精力投注在业务本身上,而不是处理与GUI相关的技术细节。
实际上所有的框架,都应该是这个目的,比如ORM框架,目的应该是让开发者把大部分精力投注在业务与数据之间的关系上,而不是管理关系型数据的技术细节。
当然这肯定是有损耗的,在性能、稳定性、资源消耗上,都会有所削减。而且,因为有框架的存在,开发者很难深入到框架内部做一些特殊的事情。比如,我们该如何修改HTML的排版渲染机制呢?
所以,有些框架注重性能,有些框架注重开发效率,开发者做选择题的时候也应该衡量这两个问题,你的应用对哪些方面要求多一些呢?
你如果要开发一个视频监控系统,没多少业务功能,但要24小时不间断的记录视频数据,随时调取某一段时间的视频数据,这种应用可能Qt是最好的选择。
你如果要开发一个类似飞书的团队协作应用,业务逻辑复杂的一塌糊涂,而且要在短时间内满足更多用户的需求,占领更多的市场,那么Electron可能是更好的选择(目前飞书已经不再用Electron了,他们自己编译了Chromium核心,自己封了一个类似CEF的框架)
目前微软、谷歌、JetBrains等公司都非常重视桌面端开发框架,也在推各自的框架产品,说明桌面应用领域并没有没落,反而应该更加受到重视。
虽然移动端应用大行其道,但我认为,只有生活、社交、轻娱乐等方向上的应用在移动端有较好的发展。文档协作、大型游戏、开发工具、专业管控软件等应用还是在PC端发展的更好一些,毕竟PC端有更多样的输入输出设备、更广阔的显示和交互的空间,更强的存储和计算能力。
希望桌面软件开发领域的从业者都能获得幸福。
满屏荒唐言,一把辛酸泪,一把辛酸泪,一把辛酸泪...
之前微博上有个lsp博主问:为什么每次做春梦都是在快要进入正题的时候就醒了?
有条评论说:系统无法加载未缓存文件
我觉得元宇宙也是,在人类未真正踏入星辰大海之前,元宇宙根本做不到完全模拟真实的宇宙。
在硬件尚未成熟的情况下提出元宇宙的概念,基本上可以和骗投资人的钱画等号。
而且在元宇宙中完全有可能出现《赡养人类》中哥哥文明的“终产者”,里面有一切的物品都需要用户付费体验
注意! 是体验而非获得所有权
甲可能因为需要续费才能继续使用他三个星期前刚换的发型
乙会遇到像《黑镜》中“两万五千英里”的主角一样在因为没钱屏蔽广告而吵闹里入眠的窘境。
总有人宁可在狭小破旧的飞船中忍受将他的尿液循环了上百遍的饮用水和吃腻了的食物,也不愿在虚假的世界中拥有整个宇宙。
向往自由的鸟儿是关不住的