百科问答小站 logo
百科问答小站 font logo



为什么现在的大学生辩论赛观赏性降低了? 第1页

  

user avatar   zhang-jun-42-62 网友的相关建议: 
      

本文为招黑文,但对于喷子们,恕不回答。不是太有逻辑,想到哪里写到哪里。

首先辩论虽然是语言思想游戏,常常被人指摘为纸上谈兵坐而论道,可未必辩论就会不精彩好看。

比如波士顿法律、李狗嗨的辩论精彩异常,古装剧里商鞅、张仪、孔明、司马的辩论也是荡气回肠,早期的国辩和今天的奇葩说辩得也很好看。

那么为什么大学生辩论,不好看了?

一、先得能看懂

先讲个简单的例子:

今天少林派和武当派打架,只见双方各路高手奇上阵,各种武功招式眼花缭乱,接着有一方被转眼击溃……观众直呼,过瘾!痛快!

可是,如果我们今天换一个画风:

双方打的很激烈凌乱,观众看的很晕。这时有一个画外音,少林这是在战场推进,武当这个叫强拆,战场推进对强拆,按照惯例应该……得分。

你还会觉得精彩吗,你搞不好一口老血喷出来,我呸。

这是岚星前辈常说的一个例子,类似的例子还比如足球,你不需要多懂足球,但那谁一脚射进球门,你还是会浑身激动!

可是辩论赛,什么叫射进球门?请听评委某大神解读。

所以辩论赛要想对大众而言精彩很难,因为你首先得能!看!懂!当然对以懂辩论而优越感爆炸的那群人来说,辩论依然是好看的。

辩论已经形成了一套独特的话语体系和审美体系,形成了一套丰富复杂的技战术系统,而这相对于大众是疏远的隔阂的不接地气的。

这就很像围棋,懂的人觉得简直是全世界最厉害了的活动,可吃瓜群众基本是懵逼的。

这是很可怕的,辩论本来是一项入世的活动,讲的是思考说服争取大众的艺术,如果有一天因为一群人自娱自乐的所谓专业主义,搞得和围棋一样,只有懂的人才懂其精彩,那真是……

更何况,论智慧博弈,今天大陆的校园辩论赛恐怕还根本还根本不能和围棋相提并论。

精彩不精彩?战场推的很精彩,逻辑拆得很精彩,事实排得很精彩……

老百姓:不好意思,你在说什么?

二、核心看点

一场辩论为何好看呢,我一般总结为4点。

一是绝妙的观点。意料之外情理之中,让你惊呼我靠他怎么能想到,就是这么回事我怎么就没想到!!!

二是动人的表达。无论精准表述充满力量的金句,还是搞笑或感动的画面,最后都是要你惊呼!这个点我也想到了,可是他怎么能说的这么好!!!

三是交锋中的急智。看起来不能反驳的问题,他居然就接住了!瞬间出现的破绽,他一下子抓住了!平淡无奇的提问,忽然出现致命圈套,然后对方还跳了出来……总之就是让你惊呼,我靠这回该死了吧,我去居然逆转了!!!

四是辩手的人格魅力,基本就是某某好帅好有气场思想!!!

可是经过这些年的发展,结果会怎样呢?

绝妙的观点?哎呀基本都是立论套路定义战啦!

绝妙的表达?基本都是辩论腔,机器人一样,僵化刻板,对方辩友这一点是不是有共识,对不对?

交锋的急智?有交锋?都在各自推战场扣帽子吧。而且各个队也都会套路了,再像早期国辩那样一个碾压另一个已经不可能了。

人格魅力?怎么好多人都是一个模子刻出来的?

四大看点成这样了……

三、人才流失

以前,基本各个高校,最优秀的人才基本都在辩论圈,辩手当上学生会主席、校长助理那太正常,辩论圈也是帅哥美女云集之地。

现在呢?不能说没有最优秀的人才了,但你要说还是都在这里那就自己打自己嘴巴了。

创业大赛,挑战杯,英语……更多的人才在分流。

即便优秀的人在这里,生命周期也大大缩短,很多人大三考研淡出。可是要知道,大三一般一个辩手才刚刚成熟啊。

结果就是,一个学校没有大三大四上场,比赛质量就不顶级。后来的人以前年校赛最高水平要求自己,肯定质量就一年不如一年了。

四、评价机制

以前我们都说,辩论要说服观众,观众不必懂辩论,就像陪审团不必是法学专家。

但是现在,我们说观众就是社会裁,是外行的,我们内行要看门道。

于是评委都成了辩手,每一个辩手都在想着怎么按照老妖怪的标准理念去打,结果老妖怪们很喜欢,可是普通观众呢?

这就好像体制内写文章,总是讲所谓高度水平,其实怎么评价高度水平呢,就是领导和一个圈子的人认,这就叫自娱自乐,意淫自嗨。

可是后来你知道的,这种文章拿给普通大众都是惨不忍睹,看阅读量嘛。

五、舞台经验

前几年,有真正央视举办的全国大赛,现在呢更多是网辩和各个爱好者组织办的比赛。

怎么说呢,电视辩论和在教室里辩论还是很不一样,没有这方面经验,确实很难做好。

六、审美习惯

辩论的审美,无论价值辩的开宗明义,还是政策辩的需根解损,其实都是80年代90年代的话语习惯和审美习惯。

同样的还比如写诗,比如朗诵,比如演讲比赛,不是现在的演说哈,这些其实都是那个时代的话语体系。

特点就是讲究逻辑和线性,讲究严谨精致厚重,有一点端有一点装有一点中二有一点仪式感。

但是拜托,现在社会的审美结构,无疑是消费主义,是一切都被解构的,是讲梦想意义都要被骂装逼的,大众早就习惯了碎片化和娱乐嘲讽,再看当年的东西,真心不行呀……

明明是世界在下沉,我们在狂欢,你偏要给我来个事实胜于雄辩、价值的升华……

这是一个厌恶理中客端着的时代,这是一个讨厌教我做事的时代,这是一个不喜欢很普通还很自信的时代,这是一个被杠精吓傻的时代……不好意思,这些毛病辩论中都很常见。

七、年轻人变了

以前人见到黄执中,他好厉害,我很崇拜他,我一定要努力,有一天超过他!

现在人见到黄执中,他好厉害,我很崇拜他,我要佛系追星,黄执中给我签名吧!

以前人准备辩论赛,埋在图书馆通宵达旦系统专业反复训练。

现在人准备辩论赛,我们百度下别人的辩词吧,辩论之外还有学习和生活呀,这个比赛就别报了太难,我们去参加xx网辩当大王吧。

以前人打辩论,女辩手中美女太多,可他百花从中过,片叶不沾身。

现代人打辩论,女生就那么几个,辩论很重要?但是更要撩妹呀……

八、外在支持消失

90年代到21世纪初,辩论的爆发得益于举国体制。而武大、南审这类辩论传承非常好的学校,政治资源背书也是非常重要的。

但是对大多数高校来说,辩论赛给团委老师带来的政绩实在是投资回报率太低,要投入很多,结果却九死一生,即便夺冠效益也未必高得过体育英语挑战杯之类。

所以老师的不支持,是常态。

那么商业支持?怎么说呢,商业的追求就是投资回报率,那辩论的表现太够呛。

就算我不让你卖东西,我就按广告赞助,可好歹你流量得高啊。结果往往是几万花出去,换来千级别的流量,还只是植入曝光,还不是真的能转化,这效率还不如做搜索结果优化呢。

我同样的钱请个小网红,估计流量能多出几十倍呢。

商家为什么没情怀?你做生意你试试呀。

当然,不排除现在一些比赛找到了人傻钱多有钱任性的赞助商,但总体来看占比很小,投入金额也非常有限。

最关键的,恕我直言,市场从来都是一个公平的筛选器,所有不合理的,不论泡沫多大炒得多火,最后都会回归原形的。

政治支持少,商家赞助回报率低,固然辩论赛要比理想精神和情怀,可完全没有钱或者穷的叮当响,要想很好看只怕很难。

其实现在的辩论有没有不精彩,有一个办法很简单。各位骨灰级辩手们,你们入戏太深了,如果你们像我一样离开辩论一段时间,就半年行不行,在正常社会里正儿八经地做你的事半年别问辩论,你再来高校看。

到时候,你如果不觉得哪里别扭,不觉得听不下去,你找我。


user avatar   niepanlong 网友的相关建议: 
      

噢…

其实是这样,不仅辩论赛,现在小说也不如以前的好看,散文也是,电视剧电影都是…

美国有一个作家叫怀特,有过这样一个说法:当代艺术和文学,有一个很大的变化,那就是“批评家的消亡”。

京剧也是这样,没有批评了。以前的票友,那可是不依不饶地盯着角儿,才有了梅兰芳。

以前在每一个领域,基本上都有严肃的批评,有一群批评家(或许有派别,或许没有),这不稀奇。有趣的是,作家、演员,居然还愿意被批评。不管批评对不对,只要是跟戏有关的,梅先生都愿意听一听,人家吃这碗饭,您是观众您说不好,他就想想是不是真的不好,觉着没有不好,那也是自己放心。

现在可不是了。现在,批评者或许还有,但被批评者没有了。所有被批评的人都认为自己是“被攻击”的人。

所有领域都一样,不分中外。

有一个例子是绝佳的。大约十几年前,有人说郭德纲哪天哪个相声如何如何不好,郭德纲的回复是很礼貌地,说会努力进步。现在可不了,谁说他不好,他就说你不懂,你是外行,你是同行的攻击,你是别用有心的抹黑……这个过程,就伴随着郭德纲的相声越来越难听。(我可没说一定的什么因果啊,报道上不要出偏差)


辩论嘛,谁要是敢说哪个队不好、哪个辩手不好、哪个比赛不好,我的天……这个是大大地搞事情。以后碰到,要申请比赛回避的!或者要匿名骂你。

别说是其他学校的了,就算是自己队里的小孩,教练有几个敢直言不讳?还没说话呢自己就先怕起来,会不会伤害到自尊心啊?会不会打击到自信心啊……

做评委?哈哈,有几个评委敢点评说正方太差了?

前两年有一句很著名的话,若批评不自由,则赞美无意义。

辩论圈是这样的,看到有人说我不好,首先看这个人是谁,然后把他归入一个派别、团体,然后找出那个派别和我的利益冲突或者恩怨历史,然后终于得出这个人的动机,然后抛出他的黑点,也就是反击。至于这个人到底说了什么,有没有几分道理,who cares ?

甚至就有很不错的辩手说,你们网民就是不配评论我们高贵的辩论赛。(类似于,你们知乎这些loser辩手不配……)

一个不接受批评的圈子,走下坡路,是天道。

试想,如果这个问题是“社会人士”也就是非辩手问的,或者有非辩手来吐槽辩论赛不好看,会怎样呢?远的不用说了,不妨想想一个月前的梅西事件?什么叫群起而攻之,那就叫群起而攻之。

大致如此。

谢邀。


user avatar   huang-min-da-66 网友的相关建议: 
      

偶然在时间线上看到 @木川 的回答,也聊一聊我的想法。

正巧这个问题我自己也思考过。前段时间辩论世界杯决赛的时候,因为朋友圈讨论的很热烈,我专门翻出决赛视频看看。辩论题目是“21世纪青年人做加法/做减法更幸福”,刚听了正方一辩立论,就觉得有点没意思。

当然,不是说辩手发挥的不好,切割定义、排布论点都中规中矩。更多的可能还是我自己的原因,我对这种定义迷糊、讲人生追求的辩题一向提不起兴致来。

我当时就隐隐有种感觉,现在的辩论赛通行的评判标准里,对于“审美”的要求是缺乏的。或者说即便评委对于辩论赛有审美的要求,其审美标准也和“辩论圈”外的一般人有很大差异。

看了这个问题下面的一些知名辩手的回答,我这种感觉更加强烈。比如 @郭航初 的回答:

到了我这个年龄段的辩手反而更想打出一些精彩的比赛,但长年累月的训练让我在想说漂亮的话的时候必须得符合攻防和论证,但我自己的能力又很难做到打出一场攻防和观赏度兼备的比赛,这也是我自己的瓶颈所在。

我不认识郭航初,但是我听说过他是近几年非常优秀的辩手。连他都这么说,大概正是在评委和辩手对于所谓逻辑和攻防的重视,而让辩手逐渐放弃了“说漂亮话”。

这种重逻辑轻表达(姑且这么归纳)的评判标准,几乎成了现在“辩论圈”的通行标准。但这种标准是天然正确的吗?

除开大学生辩论赛,我其实经常看一些政治辩论。在某不存在的网站上,1994年台北市长的电视辩论视频点击率始终居高不下,甚至比很多地区领导人选举辩论都要热门。

在这次辩论里,陈水扁用发华不分的蹩脚普通话,温和低调的陈述要治理臭水沟、建设市政等等。而赵少康正气凛然地抨击,选民进党就是要搞台独。陈词的最后,赵少康连呼三声“中华民国万岁”,陈词结束后仍余音绕梁。

这种辩论的表达,其实仔细一想就是反逻辑的:

万岁是什么意思,是要复辟搞封建吗?为什么“中华民国”要万岁,考虑过台独的感受吗?“中华民国”怎么万岁,联合国都退出几十年了,世界上绝大部分国家都不承认?“中华民国”万不万岁,跟选台北市长有什么关系?

但是陈水扁一旦这么问,立马堕入下风。

再比如美国总统选举的时候,川普霸气地说上台之后第一件事就是要把希拉里关起来。而不管是他,还是希拉里,都知道川普是不会这么干的。

等等等等,这大概就是所谓的“漂亮话”,但这又是一场老百姓看起来精彩的辩论赛所不可或缺的部分。

还记得我大一的时候,接受冯若谷师兄的指导。他有一句话我至今记忆犹新,大概是对方如果提两个黄鹂鸣翠柳,你就一定要接一行白鹭上青天,否则就接不上。

这大概就是辩论除了逻辑和论证之外的审美之所在。

基于类似的理由,我坚决反对所谓“白纸裁”。因为世界上所有人,不管是有没有某方面的专业知识,对于某个问题都是有成见的。对于一般人来说,轻狂就是轻浮狂妄的意思,没那么多工夫和精力去仔细分辨词语的深意。辩论赛基于这些大众既有的认知出发才有意义,否则就真成了纯比拼逻辑的口水仗了。


user avatar   just-65-67 网友的相关建议: 
      

很少有人不基于框架直接写GUI界面啦,我这个回答就从GUI框架反过来推什么语言做GUI合适。(只聊桌面端GUI编程框架)

Qt

几乎是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

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

wxWidgets是1992年英国的一个大学教授开创的跨平台GUI软件,也非常成熟稳定,商业授权非常友好。它没有自绘引擎,而是对不同平台下的界面API做了整合和封装,这样开发者在Windows下开发的软件看起来就是Windows窗口风格、Linux开发的软件看起来就是Linux窗口风格,这对于某些软件来说,正是他们想要的,但要想搞一些花哨的特效就没那么容易了。它同样也提供了大量的系统相关的API供开发者使用。

它是C++开发的,所以对C++开发者非常友好,除此之外它还支持静态连接,也就是说开发个应用不用分发给用户一大堆dll,当然Qt也支持静态连接,但是你得自己编译Qt的源码(不是很方便),而且Qt的授权规则也不允许普通开发者这么做。

它会有些小问题,比如我之前提的:wxEVT_NOTIFICATION_MESSAGE_DISMISSED event emit twice,但总体来说还是非常稳的。除了开发的界面比较死板外,没啥大的问题。目前使用这个框架开发软件的人越来越少了。

FLTK

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

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

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,但复杂度还是有点高的,使用的时候要认真细心。

MAUI

这是微软的跨平台GUI框架,不仅仅支持桌面端,还支持移动端,但官方并不支持Linux的桌面端(黑人问号,感觉与微软近些年向开放、开源的大方针相悖),这个框架新的狠,至今还没发布稳定版。目前还没什么人用。而且不知道将来会不会被微软放弃。

它是.NET平台下的GUI框架,有自绘引擎,对C#开发者很友好,界面依然是用XAML描述的,可能很多人一听到XAML就直接弃坑了。XAML表现力确实弱一些,我觉得WPF没火起来跟XAML有直接关系。

使用这个框架开发桌面应用得封一个.NET框架给用户,当然有了.NET框架应用程序访问一般的系统级API也就不成问题了。

Compose Multiplatform

这是JetBrains搞的跨平台GUI框架,也非常新,前段时间刚刚推出1.0.0版本,但这个版本还不是很稳,至少比Flutter Desktop的第一个稳定版要差很多。同样也几乎没什么人用。

它的自绘引擎用的是Google的skia,这个自绘引擎稳的很,Chrome和Flutter都是用的它,所以排版、绘制、渲染之类的工作不太会出问题。比Java生态圈里的Swing和JavaFx要好很多。

JetBrains的东西当然对Kotlin开发者友好啦,Java生态下的很多东西你都能用,访问系统级API也没啥大问题,同样也得考虑封一个JRE给用户。

flutter-desktop

这是谷歌的跨平台开发框架,开源、免费、文档齐全、投入力度大且持久,同样也新的很,Windows版本刚刚发稳定版,Mac版本还没稳定。

如果你完全没搞过移动端的flutter,想用这个框架开发桌面应用,那么意味着你要学的东西还挺多的。好在dart和flutter入门都不是很难,学习曲线比较平缓。

由于flutter在移动端积累了很多年,所以界面上的一些东西在desktop端都比较稳(skia自绘引擎),与操作系统相关的东西还不成熟,生态也不太好,比如你想订制一下窗口的标题栏,想访问一下注册表这类工作可能得自己想办法。不过它有类似FFI的支持,跟C/C++语言打交道很方便。

开发者直接使用Dart语言描述界面,这会导致众多大括号嵌套在一起的问题,可能很多开发者不习惯。

webview2

这是微软Edge浏览器团队推出的跨平台GUI引擎,是闭源的,目前只支持Windows,对C#和C++开发者友好,如果使用C#开发,就得考虑把.NET运行时分发给用户,如果使用C++开发,就得自己处理系统级API的操作,webview2本身是不对系统级API做封装的。

这个框架推出也没多久,很多API也还不稳定,更值得担忧的是这个团队,他们前不久刚刚放弃了自己的浏览器核心转而使用Chromium浏览器核心,不知道他们会不会放弃webview2这个框架。

它的优势是可以复用系统当中已存在的webview2二进制资源,也就是说它虽然封了一个Chromium浏览器核心,但如果你可以确定客户电脑已经存在了基于webview2开发的应用,你的安装包体积可以足够小。

它也是多进程架构,甚至比Electron还要多一个进程(为了复用二进制资源),资源占用比较多。

webview

这个库使用操作系统的浏览器引擎来达到减小安装包体积的问题,Mac上使用Cocoa/WebKit,Linux上使用gtk-webkit2,Windows 10上使用Edge(也就是上一个小节里提到的webview2),它应该是不支持Win7的。开发者要考虑前端代码浏览器兼容的问题。

开源且免费(MIT)有go、Rust、Python等语言的绑定,不过官方支持的是go语言,C和C++,操作浏览器的API非常少,不支持自定义scheme,更别提系统级API了。

TAURI

采用的技术方案与webview类似,所以安装包也足够小,非常新,还没发布稳定版,开源免费。webview框架碰到的问题TAURI都有,

使用Rust开发,将来会支持Deno,作者说将来会直接使用webview的技术来支持多平台,

NW.js

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

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端有更多样的输入输出设备、更广阔的显示和交互的空间,更强的存储和计算能力。

希望桌面软件开发领域的从业者都能获得幸福。

满屏荒唐言,一把辛酸泪,一把辛酸泪,一把辛酸泪...





  

相关话题

  如何评价综艺《奇葩说 第六季》第二期? 
  为什么现在的大学生辩论赛观赏性降低了? 
  如何有力反驳「诉诸伪善」谬误? 
  如何反驳文言文无用? 
  为什么辩论一定要穿西装,不能穿汉服? 
  举个事例:我对父母说:「闯红灯犯法。」父母就答:「法律叫你吃翔你就吃翔?」我该如何反驳? 
  辩论赛赢了但是我自己很难受是怎么回事? 
  如何看待华语辩论世界杯「传统偶像/虚拟偶像更能满足当代人的精神需求」辩题中正方和评委的态度? 
  “你先是个人,才是个中国人”这句话对吗?如果不正确该怎样反驳? 
  辩论最可怕的是什么? 

前一个讨论
如何评价电影《阿修罗》全体投资方决定撤档停映?
下一个讨论
二战苏联能否凭借一己之力战胜德国?(关键点:租借法案,英美战略轰炸,开辟西线战场)?





© 2024-05-16 - tinynew.org. All Rights Reserved.
© 2024-05-16 - tinynew.org. 保留所有权利