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

C++ 和 C# 哪个容易开发出用户体验好(占用资源小&好看&稳定&反应快)的跨 macOS/Windows 平台的桌面程序?

  •  
  •   rv54ntjwfm3ug8 · 2022-03-20 00:15:46 +08:00 · 13013 次点击
    这是一个创建于 982 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Electron 不考虑,没见过用 Electron 写的用户体验好的程序,公认优化好的 VS Code 启动也很慢,剩余内存一不够就卡得要死。

    目前是有一点 C++ Qt 和 C# WinForm 开发经验。想写一个桌面程序,因为比较喜欢 C#(很多功能都不用自己实现,而且我更熟悉一点),而且听说 C# 的 Avalonia 框架可以用来非常方便地开发好看的跨平台 GUI 程序,于是打算用 C#来写。但 Google 了一下,很多人说 Avalonia 在 macOS 上有很多 non-native 行为,例如复制键变成了 Control-C 而不是 macOS 默认的 Command-C ,而且不是很稳定,经常崩溃,也没有什么知名开源项目在用,资料不好找。想问问 C++ 和 C# 哪个容易开发出用户体验好(好看&稳定&反应快&占用资源小)的跨 macOS/Windows 平台的桌面程序?或是还有什么更好的方案?

    好看很重要,最好能方便地实现一些过渡动画。

    131 条回复    2022-09-06 13:43:19 +08:00
    1  2  
    secondwtq
        101
    secondwtq  
       2022-03-20 20:06:05 +08:00
    @agagega WASM 的出现与本主题中某人强相关。
    同理,我很纳闷为什么 aardio 没有在 #59 就出现。
    g00001
        102
    g00001  
       2022-03-20 20:11:52 +08:00
    @duke807
    "恶心" 到你的 aardio 官网文章,在微信公众号上是高赞文章。
    不过你 “恶心” 没错,请继续 “恶心”,支持并赞同你,没毛病。
    duke807
        103
    duke807  
       2022-03-20 20:14:28 +08:00 via Android
    @g00001 不顯示點踩數,那麼點讚數則無意義
    g00001
        104
    g00001  
       2022-03-20 20:23:02 +08:00
    @duke807 是的是的,就算 aardio 的文章在微信上是高赞,在知乎上是高赞,那都是没有意义的 …… 就算 aardio 作者用了 17 年开发了 aardio 给大家免费使用 …… 也都是没有意义的,把你 “恶心” 到了,这是最严重的问题,没人跟你争,你棒棒的。
    g00001
        105
    g00001  
       2022-03-20 20:36:35 +08:00
    @FrankHB

    aardio + Python 不是在降低门槛,
    也不是要求别人会 Python 才能使用 aardio 。
    aardio 支持十几种编程语言,不等于要会十几种编程语言。

    至于你说的“你要提供一种新的方案当作选择没什么问题,但是没解决原有的问题还会有效添乱的话,那我自然不会有什么好话。”……

    那么你在搜索引擎扒了 aardio 那么久,
    没 Google 一下 Python + aardio 的文章?!
    这是没有解决原来的问题?!
    这是“添乱了”?!

    aardio 写的录屏工具,780 KB ,没解决原来的问题吗?!


    aardio 写的桌入法工具,960 KB , 解决原来的问题吗?!


    这些软件都是由 aardio 实现,没有用到 Python ,aardio 并不依赖 Python ,只是可选项。
    这些软件都是开源的,你都说了人类命运共同体嘛,是不是?!

    说实话你的帖子写得太长,我没仔细看,你似乎在表达 aardio 不适合你,不够这好那好 …… 没毛病,我又没说 aardio 比别的语言好,也没说 aardio 适合你。

    任何国外的编程语言都比 aardio 好一万倍。
    国产语言能好到哪里去?!本来也没人反对你啥。
    saturn7
        106
    saturn7  
       2022-03-20 21:16:08 +08:00   ❤️ 2
    如果有能力,上 wxWidgets 。
    KoMAsS121
        107
    KoMAsS121  
       2022-03-20 23:32:08 +08:00
    @g00001 ???阴阳啥啊,了解过价格嘛。VMP 最贵的版本,三端加起来一起买 8000 多港币,你要不买三端,Linux 不买,那就 6000 港币,只买 Win ,那就 4000 港币。你一家公司,这都出不起?这价格你司程序员一个月的工资都不到呢。还是买断的,不用你一年一年的交。并且说真的不少商业库都比这个贵了吧。。。
    KoMAsS121
        108
    KoMAsS121  
       2022-03-20 23:41:40 +08:00
    @g00001 并且你在这里脑补什么啊?把别人的发言极端化?在这阴阳怪气,哪里有问题吗?
    商业程序加壳不是正常的操作。。。你用啥语言,只要不想被破解,想维护自己利益,大都会去加壳的啊。
    所以在这种情况下,.net 程序会被很容易的反编译本来就不是啥大问题啊。。。安卓那边不加壳也是随便拖呢。但你看有多少人拿 NDK 开发完整的程序。。。
    KoMAsS121
        109
    KoMAsS121  
       2022-03-20 23:49:03 +08:00
    @g00001 并且就我浅薄的认知,我就来提个很主观的观点吧。我个人觉得 C# .net 平台这边怕是商业库搞的最起劲的几个平台之一吧,有一堆优秀的闭源库,还有一堆开源库都有商业版本。。。这或许说明了啥,.net 这边怕是真的有人买,真的能赚钱,所以咋人家开发商业库的就没你这么在乎这点,毕竟按你的想法,作为商业产品能被随意反编译是不可接受的,那应该没啥人来开发商业库啊。。。毕竟会没客户买啊。。。
    INCerry
        110
    INCerry  
       2022-03-21 10:15:53 +08:00   ❤️ 1
    @daokedao 实测 Electron 启动慢,内存占用大,C# 这种编译型的语言性能好很多。
    C#这边跨平台用 Avalonia 还不错的,对标 Sketch 的软件 Lunacy 去年就从 WPF 迁移到 Avalonia 了
    你提出的几个需求里面,说说优劣势吧。
    占用资源小:C++框架肯定资源占用小一些
    好看:C#上面 WPF 库 Avalonia 主题库都挺多 挺好看的
    稳定:C#好一些 C++容易写出不安全的代码
    反应快:C++胜一筹 但是差距不是很大 C# jit 出来的也是优化后的汇编代码
    具体就看楼主选择了,也可以像其它人说的,用 C#写界面,复杂的缓慢的核心计算逻辑用 C++。或者先用 C#快速出活,后面慢慢优化性能,是在不行的地方用 C++
    g00001
        111
    g00001  
       2022-03-21 13:16:55 +08:00
    @KoMAsS121
    我从来没有怀疑过你买得起 VMP ,
    更没有把你的发言极端化。也没有与你探讨别人应不应该去加壳。
    别人的公司有没有钱,加不加壳,不是你该去管,或者你该去嘲笑的事,管好你自己就行了。

    我只是说了一下 C# 写的程序往 ILSpy 里一拖源码就可以导出来,这是一个纯技术问题,你是如何扯到别人公司有没有钱上面?!你的意思是伟大的 ILSpy 是专为穷人开发的?!

    根本就没有人跟你争任何东西。
    至于你是不是阴阳怪气,根本就没有人在乎,你不需要解释一大堆。
    g00001
        112
    g00001  
       2022-03-21 13:19:30 +08:00
    微软自己写的很多程序,
    都是往 ILSpy 里一拖源码就出来了,这是因为微软买不起 VMP ?!这是因为微软没你家公司有钱?!

    我有说过这是坏事吗?!
    源码一拖就出来,多好的事,就像楼上那位说的,人类命运共同体嘛!!!

    别人的意思都没看懂,就骂起来了,戻气这么重?!
    g00001
        113
    g00001  
       2022-03-21 13:47:25 +08:00
    刚刚随手搜了一下,看到大家在讨论可以成功还源 VMP 保护的 .Net 源代码,并且工具都写出来了,好吧,我对 .Net 不熟,也没多大兴趣研究这种事,只是前几天刚好看到一个人在网上说用 C# 写了个软件,写完了才很惊讶地发现别人可以轻松地导出 C# 源代码甚至是工程文件,所以我才好心提醒了一下,如果我的好心误伤到了你,那么这不是我的本意。
    FrankHB
        114
    FrankHB  
       2022-03-21 18:06:05 +08:00
    @g00001

    > aardio 支持十几种编程语言,不等于要会十几种编程语言。
    至少还是要会其中任何一种语言吧,否则就只能用 aardio 了。
    那么找开发资料会有潜在困难,这个问题上面说了。
    只会 aardio 的专业人士我也还没看见,所以交流也是个问题。

    > 这是“添乱了”?!
    只是提供选项,增加选型成本(起码需要花时间了解 aardio 能干什么)而无助于解决 OP 这样的问题,结果上看就是添乱了。
    如果只是要针对非专业人士提供工具,那就找准定位,划清界限,而不是全都要。

    > aardio 写的录屏工具,780 KB ,没解决原来的问题吗?!
    > aardio 写的桌入法工具,960 KB , 解决原来的问题吗?!
    我太不清楚你所谓的“原来的问题”是什么。
    我的问题就是嫌弃半吊子方案太多了,没有在业界形成共识,导致各种不痛快。
    基于很明显的理由,既然 aardio 连能定制核心的源码都没给,那就没半点解决问题的资格。
    我的问题不算数的话,要么你问 OP 去。
    g00001
        115
    g00001  
       2022-03-21 18:52:57 +08:00
    @FrankHB

    不清楚 780 KB 的 Gif123 解决了什么问题?!
    不清楚 960 KB 的 WubiLex 解决了什么问题?!

    好吧我来告诉你解决了什么问题,这些软件都是非常受欢迎的桌面软件,
    由 aardio 编写,开发速度快,代码少,现代化的界面,体积非常小,单文件绿色软件,
    无任何外部依赖,兼容 XP ,Vista ,Win7 ,Win8 ,Win10 ,Win11 …… 等所有流行桌面操作系统。

    还不清楚 aardio 解决了什么问题,看一下真正 aardio 用户写的感言:
    ------------------------------------------------

    感谢 aardio 作者,我是刚开始用 aardio 写界面(实在不想用 pyqt 了),
    python 写数据处理业务,感受到了 aardio 的强大和奇妙。我想把 python 数据处理过程的信息反馈到前端界面中,
    《这回让我们把 Python 玩出花来》看完后,用了几分钟搞定!!!实在令人惊讶 aardio 的强大!!!再次感谢 aardio 作者的奉献!!!

    我是非专业的,疫情以来这两年就想做点文件处理的工具,
    主流软件都摸索了一遍,今天发现了 aardio ,学了一天就整出来了一个工具,
    正是我想要到效果。真是相见恨晚啦,太感谢作者大神了,中国人的思维太了不起了。
    功能强大而直观,不像所谓到那些主流语言弯弯绕太多。

    ------------------------------------------------
    解决了他们的问题了吗?!
    给他们添乱了吗?!

    还不清楚 aardio 解决了什么问题。
    Google 一下 Python + aardio ,看看为什么很多 Python 用户会推荐 aardio 。

    看起来你只会用百度。
    你在 “百度” 上扒到了有几个老鼠在喊着要打 aardio 。
    这种低质量的文章只有百度会推到首页,在 Google 上是找不到的。
    ------------------------------------------------

    至于你说 aardio 半点解决问题的资格,这就很可笑了。
    你是程序员,还是小公主?!谁告诉你 aardio 需要向你申请解决问题的资格?!

    VC++ 不开源,所以没解决问题的资格?!
    Delphi 不开源,所以没解决问题的资格?!
    VB 不开源,所以没解决问题的资格?!

    好用的桌面开发工具基本都不开源,所以都没解决问题的资格?!

    任何编程语言都需要花时间学习,
    你扣了一个 “最起码先要了解 aardio 是做什么”的帽子,就总结出 “添乱”了的罪名?!
    请问你什么编程语言不需要花时间学习?! aardio 可能是学习成本最低的。

    aardio 支持其他语言,你怪要学其他编程语言有成本。
    跟你说其实不需要学习其他语言,你又在怪 “那就只能用 aardio 了”。
    这就很有意思了,这也不行,不这样也一定是错的 ?!
    g00001
        116
    g00001  
       2022-03-21 19:06:51 +08:00
    我只是说了一句 “C# 写的程序往 ILSpy 里一拖就能还原出源代码”,就被上升到人类命运共同体的高度。
    还有人自己脑补出 “毕竟按你的想法,作为商业产品能被随意反编译是不可接受的...... " ,我原话有这意思?!

    我只是好心提了一个技术问题,提供了一个解决方案,
    压根就没兴趣跟你争论这个语言好那个语言不好。争来争去都是别人写的编程语言,你又不是 C# 作者,你也不是 aardio 作者,别搞得自己跟个编程大师似的,膨胀到忘记自己是谁了。

    已 Block !
    timpaik
        117
    timpaik  
       2022-03-21 20:16:34 +08:00 via Android
    @FrankHB 对于你关于 aardio 不开源的回答,其实大部分没啥问题,不过我个人觉得吧,aardio 这种纯靠 win32 api 实现绝大部分功能的类 lua 软件,开源也基本不可能移植到 mac/linux 就是了。单论 win 桌面开发小工具,aardio 效率还是没得说的,性能上勉勉强强看得过去,主要是调用 win32 的 api 方便,标准库够用,缺点就是各家厂商报毒(
    @g00001 感觉推广 aardio 和这个帖子主题没啥关系,这样推荐容易让很多人对 aardio 产生不好的影响,我建议言辞请舒缓些

    顺便,我其实推荐 tauri (当然如果你会用 rust 的话,个人项目可以用用),优点是清真,缺点是 webview 可能需要下载
    业界跨平台成熟方案是 qt/cpp 和 electron ,c#基本没有生产可用的跨平台框架,生产环境还是建议用成熟的。
    gaodeng
        118
    gaodeng  
       2022-03-21 20:33:01 +08:00
    跨平台和用户体验好本身就是矛盾的,不可能同时存在啊
    g00001
        119
    g00001  
       2022-03-21 23:01:00 +08:00
    @timpaik

    我的第一贴根本就没有提 aardio ,仅仅是没有说了几句与跨平台有关的建议,要不您再回去看看?!
    然后有人纠结 C# 源码被 ILSpy 反编译的话,我说了句用 aardio + C# 可以比较简单地避免这个问题。

    然后某人开始疯狂扒 aardio 的负面文章,”没有解决问题了还添乱“,”简直是老鼠过街、人人喊打“ …… 这些言辞非常的不舒缓,您可以回去仔细看看到底是谁不舒缓?!

    我再说一次,类似前面有人说 “毕竟按你的想法,作为商业产品能被随意反编译是不可接受的...... " ,
    我压根就没说过这话 …… 我的原话是非常简单的一句 ”提醒下 C # 写的程序往 ILSpy 里一拖就可以还原源代码“。

    我觉得您更应当担心一下,
    这么过激地 ”推广“ .Net 容易让很多人对 .Net 产生不好的影响。
    毕竟 .Net 在国内的现状不是很乐观。

    ————————————————————————————————————

    至于你担心有人对 aardio 产生不好的影响。
    在知乎上有人曾经问过这么一个问题,为什么同是国产语言,aardio 在网络上的评价一直很好,而某些国产语言的名声就很差,既然经历十几年风雨的 aardio 都没有被不好影响,所以我们也没必要高估在这里喷几句的影响力?!

    V2 不是一个问答网站,作为一个开放论坛,在讨论中可能出现跑题现象,例如楼上跑题到人类命运共同题,VMP ,公司有没有钱 …… 你都没有提到?!但是你却注意到了这个讨论桌面软件开发的帖子里不该提到一个专注桌面开发工具:aardio ?!

    ————————————————————————————————————


    至于你说的:” aardio 这种纯靠 win32 api 实现绝大部分功能的类 lua 软件 “
    ————————————————————————————————————

    这我就要纠正你一下了:

    1 、所有在 Windows 上运行的软件,都要调用系统 API ,即使是跨平台的方案都一样。
    Win API 是公共 API ,这又不是只有 aardio 才知道去使用,你认为那些开源的、跨平台的组件他们不知道,或者不需要调用 Win API ?!

    Python 的很多界面库都是基于 C++ 的组件,这些组件都在大量调用 Win API ,多调几句 Win API 就能解决 Python 写桌面图形界面的难题谁不原意干?!

    2 、aardio 并非纯靠 API 实现大部分功能。
    恰恰相反,aardio 的大部分功能是纯 aardio 源码实现的。
    aardio 的界面库也是纯 aardio 源代码实现 —— 也就是标准库的 win.ui ,完全开源。

    虽然 Python 的很多界面库是基于 C++ 的组件,
    但是这个纯 aardio 源码实现的界面库,仍然吸引了很多 Python 的用户,所以你能搜到非常多 Python + aardio 的分享文章。

    aardio 大部分功能由标准库实现,
    而 aardio 的整个标准库都是开源的,或者说 aardio 的大部分功能都是开源的。

    3 、aardio 编写的软件对系统的依赖较小

    例如 Python 3.5 不支持 XP ,Python 3.9 不支持 Win7 ,估计后续版本还有可能不支持 Win10 ,Win11…… 然而 aardio 直到最新版本都可以完美兼容 XP ,Vista ,Win7 ,Win8 ,Win10 ,Win11...... 就是因为 aardio 的大部分功能是由纯 aardio 源码实现,对系统的依赖非常小。

    ————————————————————————————————————

    回到你的问题,aardio 为什么不开源,
    应当去看看官网的文章,不要自己在那里 ”瞎猜“ —— 不好意思,用力太猛了一些,可能不够舒缓了,抱歉抱歉。
    g00001
        120
    g00001  
       2022-03-21 23:37:09 +08:00
    很多人对跨平台明显有误解,不调 Win API 你连个创建窗口都干不了。

    你怎么跨平台,在 Windows 上还是要单独编译 EXE 这种专用格式。你的桌面软件写完了以后,你还是不得不被迫与很多系统专有的接口打交道,我举个简单的例子。来个系统夺权,aardio 写就一句

    import thread.trustedInstaller;
    thread.trustedInstaller(
    function(){

    }
    )

    你打算怎么跨平台?!

    来个 UAC 免警告启动,aardio 就一句:

    import sys.runAsTask;
    var task = sys.runAsTask("WifiRepaire","无线网卡修复程序");
    task.register("/task");

    你打算怎么跨平台?!这样的例子我可以举出一大堆。

    你跨平台你好多东西做不了,或者做起来麻烦。
    对于桌面软件,跨平台是个伪命题,别忘记一个最简单的事实,macOS + Linux 的桌面市场份额小于过气的 Win8 。

    除了那种打包式无脑跨平台,还有一种部分跨平台。
    例如 Python 是跨平台的,而 aardio 是 Windows 专有开发工具。
    可以用 Python 写大部分跨平台的代码,但是在 Windows 上使用 aardio 编译为 Windows 软件,实际上这样搞的人也不少。

    这只是举个例子,aardio 里可以调用十几种编程语言或这些语言的组件。
    而且这种调用特别简单,像 aardio 里直接就可以调用所有 Python 函数,在 Python 里也直接可以调用 aardio 函数,你都不需要写什么中间封装代码。

    再例如 C# /.Net ,在 aardio 里直接就可以调用 C# 的对象、函数,反过来 C# 也可以直接调用 aardio 函数,就是很直接的使用那种,例如我前面发的那个调用 .Net 组件,你用 aardio 去调 .Net 组件,都看不出跟 C# 去调用这些组件有什么太大的区别。关键是 aardio + C# 还不挑 .Net 版本,可以内存加载 DLL 程序集,非常方便的生成独立 EXE 。

    再或者说调用 PowerShell ,你可以直接在 aardio 里调用 PowerShell ,你也可以在 PowerShell 里直接调用 aardio 的对象、函数,非常简单,不用去搞太多的封装,直接调。

    …… 不好意思,嗯嗯,一不小心又帮 aardio 推广了一下,罪过罪过。
    angrylid
        121
    angrylid  
       2022-03-21 23:53:16 +08:00 via Android
    桌面端选型都快成 V 站月经问题了。这个问题我没有话语权,但是我推荐你用 Qt + CEF
    timpaik
        122
    timpaik  
       2022-03-22 00:23:14 +08:00 via Android
    @g00001 第一贴就专门提到 Gif123 和 WubiLex 了其实,不过我想说的是后面提 aardio 算 OT 了,并不能解决楼主的问题。其他跑题的我没提是因为你回复了我,就提了一嘴关于 aardio 的(

    关于 win32 ,当然没啥不好的,我甚至觉得 win 开发就应该用 win32 ,而不是 qt 的重写的那堆库

    aardio 绝大部分就是 aardio 写的这当然很好,开源也很好文档很全
    至于系统依赖嘛。。有些库的 XP 支持还是不太好,inet 有些东西会崩(不过没啥人用 XP 是真的,我就是闲的没事试试)

    现阶段,跨平台的主要概念是帮开发者屏蔽系统的底层差异,这个东西会让开发者很舒服,但有利有弊,专用于 win 的 aar 在 win 舒服,跨平台的 qt 强大

    然而我目前是个 archlinux user ,没啥好的 aardio 替代品,就写 gtk 了( x

    不过,还是说,没有其他的意思啊,我为什么感觉,这语气好像校长( aardio 公众号运营者官方)啊,真的好像啊

    遣词用句,感叹号和问号,都简直一模一样
    就是那种,真的很像
    g00001
        123
    g00001  
       2022-03-22 00:56:30 +08:00
    已经 Block 这货了,为什么还能 @我?!
    又变成了我不该提 Gif123 , 不该提 WubiLex ?!这些都是很受欢迎的软件,很多大网站都卖力的免费帮推广啊,开源免费的软件我提了一下,这么洁癖?!

    还我用了感叹号就像校长了?!校长是谁啊?!蔣校长,还是王校长啊?!
    你很熟悉校长的语气吗?!喜欢校长也不用舔到这个程度吧,一大堆的 BB 这些东西就跟主题有关了?!

    我的身份是谁关你毛事?!你谁啊?!你真实身份又是谁啊?!我管你是谁,别再
    g00001
        124
    g00001  
       2022-03-22 00:59:19 +08:00
    我管你是谁,别再 @我,BB 个没完,你烦不烦?!理你你又说我不该向你推广,又不停换小号 @我,@我,今天一天都 @来 @去,特别骚扰到我了,明白吗?!别再 @ 我 !!!! 不喜欢我说的话,Block 不会?!你要网上人人说话让你喜欢,你谁啊?幼稚不幼稚?!
    g00001
        125
    g00001  
       2022-03-22 01:25:52 +08:00
    aardio 对 XP 支持不太好,inet 会崩 …… ?!
    为什么不直接发代码?! aardio 别的不行,最强的就是几句代码就是一个独立程序,发代码没难度吧?!

    既然关注了 aardio 公众号,看样子还每天舔作者写的文章,很熟悉作者的语气,
    那么为什么不直接去反馈 BUG ,却跑到 V2 来讲这事?!对于这么 “关爱” aardio 的家伙来说不合理啊。

    我管你跟作者有什么私人恩怨,我就一普通爱好者,别乱开地图炮。
    FrankHB
        126
    FrankHB  
       2022-03-22 06:46:58 +08:00
    @g00001 我不清楚 xxx KB 的 yyy 解决了什么问题和这里的问题有什么关系;我也没这种问题。我就知道 OP 想跨平台,你的方案都不合适。
    但是既然你一直想发散,那我只能指点出你的常识性错觉。

    >“开发速度快”
    熟练的和不熟练的可以差很多。
    还是那句话,搜索资料的成本都有潜在风险。据我搜到的东西来看,我没法相信新手算上学习熟悉的时间后能快哪去。

    >“代码少”
    怎么说呢……虽然一般算是优点,但非得强调小到几百 K 的话,除了网络攻击渗透作弊之类的非常规的“专业细分”市场,小到这个程度是普遍很不被的用户在意的,如果不是反而可疑的话。
    大部分的桌面用户,不是要求折腾 Qt 的 debug 库之类的玩意儿,一般桌面大个几百倍也不是不能接受。
    所以你能确保把几 G 砍到几十 M 这个算是活菩萨,但接着砍到几百 K 这就算是大部分用户基本无感知而不那么值得解决的问题。

    >“无外部依赖”
    真依赖系统调用接口写应用虽然不是不可能,但很脱离实际。而且一但依赖的真出问题,要做安全更新之类的就蛋疼了。
    所以实际上,跟智子锁死百度 GCC3.3 的笑话一样,基本只能实现强迫用户使用系统自带的低版本用户空间古董依赖罢了。
    另一方面,这也是在纵容旧版本系统和过气的软件实现栈。
    Web 就不说了,主流桌面开发者也很烦这个。这不仅在现在的 Windows 阵营很不受待见,别的生态也一样,特别是没第一方维护的版本,连带系统(比如 CentOS )和专业倒腾这种环境的开发者一起鄙视。
    所以不说还好,一股吹起来,这个越看越是缺点。

    其实无外部依赖这点我和不少最终用户也不那么在意。一点相关的题外话:我倒是会例行鄙视刻意鼓吹“无运行时依赖”的语言设计:说得好像操作系统提供的运行时和 CPU 提供的硬件运行时就都不是运行时依赖的一样。
    硬件提供的撑死了只是方便部署,也就是在包管理之类的系统部署方案残疾的环境中才会有原则性区别。部署有问题不想着怎么取解决反而砍功能需求,这也是活久见。
    (点名批评静态链接党,包括传统意义上的 cat-v 逗比以及 go 和 rust 之流的。Aardio 如果只是擅长在这里做文章的话,就很荣幸跟这些货色并列被婊了。)
    同样的道理,这些语言也就是吹“写小工具”的时候,这类不灵活的缺陷才能接近于零。软件规模往上堆,被坑是迟早的了。

    > VC++ 不开源,所以没解决问题的资格?!
    倒不是说资格的问题,而是除了为了错误的选型等历史包袱买单,没理由去用。
    VC++的 C++实现长期被开源实现吊打,直到最近微软的 C++标准库实现开源以后才在进度上扳回一城。

    > Delphi 不开源,所以没解决问题的资格?!
    > VB 不开源,所以没解决问题的资格?!
    这俩字面意义上地过气了。如果开源的话,可能还能抢救一下。
    虽然也就是抢救一下。
    FrankHB
        127
    FrankHB  
       2022-03-22 07:15:00 +08:00
    @g00001 哦,我上面那个“代码少”主要只是目标程序的。虽然你没明确说源程序,我还是先澄清一下我从来就没觉得少。
    你拿库举例虽说是显示跨平台意义可疑,但刚好这方面有点搞笑,所以我借用一下:基本上随便一个通用点的语言都能这样写,就是看包装库的工作量。
    ( Aardio 的库基本全是第一方提供的,以至于库是不是容易让一般用户写得出来就成了疑问。这反倒是在给语言的抽象能力打反广告。)

    不但不少,我还嫌弃一些重复废话多。
    比如你先前贴的有几行 dataTable.Columns.Add 重复的源代码。这个要是窗体设计器生成的还好说,让人手写就别说少了,实在没下限。
    你要能改写出这种:
    map dataTable.Columns.Add ("名称", ("计数", System.Type.GetType("System.Double")), ("选择",System.Type.GetType("System.Boolean")))
    然后确定 map 这种高阶函数之类的不是语言内置特别开洞的规则或者“关键字”,而是开发者自己也能轻易实现的,那才算真的有资格说能“代码少”,否则适应性太低了。(但是这样其实基本规则不会简单到哪去。)
    也就是类似的原因我很早就对 RAD 界失去兴趣了。
    这倒也不是针对 Aardio 这样的具体方案。地图炮撂这儿:大多数画窗体和表单走量的,自己整不出框架的,都对估计源代码复杂性一样少跟筋,口味也属实有问题。

    话说回来,硬要把 TrustedInstaller 这种无中生有的接口移植到不支持的环境也行,报错得了嘛……当然看上去有点蠢,做无用功。
    但比起支持可移植性,对大多数一般开发者来讲,首先支持 TrustedInstaller 这种旮旯才显得更离谱。
    这种非通用机制本就不常用,再好用也掩盖不了你一个开发工具在最重要的“提供通用抽象”的问题上的无能——基本功就是干掉不是用户自己主动引入的平台依赖。

    其实只要别往这种一般需求上凑热闹,你只要承认 Aardio 脱离 Windows 一大半活就开发者自己都实现不出来也没啥子嘛。没那么通用罢了。
    我觉得你好像就不会用“胶水语言”这个调调来包装——其实这才算是 Aardio 看上去比较正常的定位。但这样就是在抢 Python 饭碗了;是不是觉得大不敬,不敢造次了?
    FrankHB
        128
    FrankHB  
       2022-03-22 07:45:29 +08:00
    说到 VC++,倒是想起了个亲身经历的笑话(?)——某个 CAD 软件的扩展 API 只提供静态库并且只支持 VS2008SP1 的 libcmt ,搞得扩展项目连 msvcrt 都链接不上去。为了复用另外更多的其它组件( C++标准库),不得不同时安装 VS2010 ,另外糊了一坨 nmake 才自动化。
    如果一开始给源码而不是静态库的话就不会是这个光景了。(甚至只给 dll 都比给静态库强。)
    VC++的 V 的部分:简单来说就是被 VC#去掉 C#以后的部分吊打的份,不用自取其辱了,余略。
    Delphi 么,想黑 ObjectPascal ,又不值这铜币,也略。

    @g00001 “别忘记一个最简单的事实”之前你得记得更简单的常识:指名道姓地惦记具体系统的支持总是比无视差异更累。
    凭什么开发者就得记住这种所谓的事实才能开发出桌面应用?注意,就说开发出能用,不说优化适配。
    除了系统厂商本身始作俑者,还不就是因为看到跪舔具体几个“占有高”的实例偷换桌面系统的概念的开发工具作者多了,搞的平台差异千疮百孔不但没尽本分掩盖住反而更随便就暴露了,才逼得下游开发者鸟这个问题,进一步让最终用户吔翔的么。
    系统不是你造的也就算了锅不都该你背,但什么时候劣化这种局面还光荣了?扯远点说,用户对 Linux QQ 矮痤丑的怨气,你这样跳出来不务正业强辩的,也是得老实接住的(而不是数落 Linux 社区无能,毕竟丫一开始就没打算对 userland 负责)。
    g00001
        129
    g00001  
       2022-03-22 12:04:12 +08:00
    @FrankHB

    我已经说了不要再 @我,
    你把这个贴子里的人几乎 @遍了,也没有人理你,有意思吗?!

    你所谓:不适合你
    ---------------------------------

    V2 每个人回复一个贴子都要适合你?!

    你可以在网上 Google 到很多人用 aardio 用得舒服的案例,适合别人就行了。

    你这只用百度扒负能量贴子的坏习惯能不能先改改?! 用用 Google 吧。


    你所谓:aardio 与跨平台无关
    ---------------------------------

    谁这样糊弄你的?! 你还就真信了?!

    EXE 能跨平台吗?!

    所有跨平台的开发工具都要生成 EXE ,这说明所有跨平台开发工具都与跨平台无关?!

    Java,Python 可以跨平台吗?!

    你可以 Google 到非常多 aardio + Python 开发的文章分享。

    aardio 可以非常方便的与非常多的跨平台语言混合开发,并且带来巨大的好处。


    你所谓:没解决主题的问题
    ---------------------------------

    V2 是一个问答网站吗?!

    不能解决主题问题不能发?!你自己解决啥问题了?!

    或者你自己开发的桌面软件在哪?!

    人家这不行那不行,你自己的成功案例在哪?!


    你所谓:你没法相信新手算上学习熟悉的时间能快哪去
    ---------------------------------
    也没有人让你相信啊,可这就是事实啊。

    你没看到别人写的心得用 aardio 分分钟上手啊,

    这种反馈在网上能搜到很多啊,你百度这么利索,尽扒人家负面的消息,

    正能量的你一个都看不到,一个都不相信?!人家需要你相信吗?!


    你所谓:你所谓你不相信 aardio 开发速度快
    ---------------------------------
    你不相信有啥用?!

    aardio 开发速度就是快啊,

    去看看 aardio 首页的 aardio 几句代码能做什么。

    看看我上面发的开源软件,WubiLex 这些,你觉得人家不快,你做一个试试?!你可能要花 10 倍的时间,做出来的软件可能还有 10 倍的体体。

    你所谓:代码少体积小用户普遍不在意
    ---------------------------------
    全世界的用户就这么被你代表了?!

    你可以搜索一下整个网络有多少人在抱怨 Electron 生成的软件体积太大,他们都告诉你他们不在意了?! GitHub 上还有作者说用了 QT 4 年,写一点东西就 60 MB ,还没有多少功能,最后换回 aardio ,要不了几句代码就完成要写的软件,体积还非常小 ……他们都跟你说了其实他们不在乎体积?!

    你所谓:无外部依赖也算缺点
    ---------------------------------
    这一段你写得最长,可是逻辑错乱,不值一驳。

    你所谓:VC++ 也没理由去用,也没解决问题的资格,也被吊打
    ---------------------------------
    你真的膨胀得要上天了。

    你去看看那些开源的跨来台的解决方案,有哪个离得开 VC++。

    不开源就没解决问题的资格,

    你忘了 Windows 就不开源?! Windows 都没解决问题的资格?! Windows 都没资格你在这里大谈桌面软件开发?!

    你所谓:BB 这么长了还觉得不够要补刀,库多就可以代码少?!
    ---------------------------------

    C++ 的库比 aardio 多一万倍,要不要我发几个 aardio 范例让你翻译一下? BB 你没完没了,写代码真的行不行?!


    你所谓:dataTable.Columns.Add 窗体设计器生成让人手写就别说少了,实在没下限。
    ---------------------------------
    你眼神是不是有点问题?!

    我有说 .Net 自己窗体设计器生成的代码少?少不少跟 aardio 有什么关系?!

    C# 的窗体设计器生成的代码,可以直接放到 aardio 里 —— 这才是我要说的特性。

    我说的是不需要中间层封装的代码,能听懂?!

    觉得 aardio 代码不少?!你用任何一个非 .Net 语言试试能不能像 aardio 这样简单、方便地调用 .Net 控件?!

    你所谓:TrustedInstaller 这种无中生有的接口
    ---------------------------------
    TrustedInstaller 叫无中生有的接口?!谁给你的勇气?!

    完全跨平台的方案,注定不可能封装所有专有平台特性的接口。这样的例子很多。

    你用跨平台的开发工具写一个 WubiLex 试试看看会不会把你自己累哭?!

    或者你去把 aardio 里面的范例一个个翻译到你所谓跨平台的开发工具,看看会不会把你自己累哭?!
    g00001
        130
    g00001  
       2022-03-22 12:51:47 +08:00
    都 Block 你了还要连珠炮地 @ 我,别再 @ 我了,真想写,别 @ 我。

    小号习惯分析:
    ————————————————————————————————
    1 、一个小号连续发言的时候,另一个小号会进入静默,衔接时间以分钟计。小号在遇到尴尬问题的时候,会突然短暂失去应有的活跃度,换账号发言。

    2 、不同小号会伪装出不同的发言风格,但攻击的对象和维护的根本立场不变。

    3 、喜欢用小号的人,在同一个网站会有不同小号,在不同的网站也喜欢上不同的小号,这些小号有一个他自己往往特别不会注意到的一个特征,点击他们的发言记录,在同一个网站的活动频率基本接近,另外,这些人活跃度通常超过普通账号。


    至于有人在那暗戳戳暗示我是小号。
    我 2013 年注册,将近 10 年这是我在 V2 的唯一账号。


    有人试图在这里代替 V2 站长制定新的社区行为准则
    ————————————————————————————————
    1 、既然要以行为准则约束他人,就先要约束你自己,准确而清晰的定义你的行为准则,例如我上面举的例子,如果只提到国外的语言,是否侵犯你的行为准则?!还是你的行为准则只针对特定的语言,只针对发言人特定的身份?!

    2 、关于扣 “推广”的帽子,给别人扣帽子不能乱扣,同样应当有清晰的准则,如果我提到了一个完全开源免费、很多网站都在积极推荐,干净得没有一个字广告的软件 —— 这叫推广。 如果我提到了一个开发了 17 年,完全免费,一个字的商业广告都没有的几近公益的软件 —— 这也叫推广。 如果我在一个讨论桌面开发的主题里 —— 提到了一个好用的桌面开发工具 —— 这也叫推广。 那么在你的准则里,什么不叫推广?!你要在 V2 行为准则里加上不能提及国产软件吗?!

    3 、关于扣没解决主题问题的帽子,
    请问哪位解决了主题的问题?! V2 是问答网站吗?还是那句话,EXE 不跨平台,所有跨平台开发工具都要生成 EXE ,然后所有开发工具都与主题无关了?! Python,Java 可以跨平台,这些跨平台的语言都可以用于 aardio 生成 EXE ,更好地解决跨平台语言适应专用平台的问题,例如网络上就能搜到大量 Python + aardio 的分享文章。Python 的应用也与跨平台无关吗?!

    扣的这几顶帽子你自己都解释不通
    ————————————————————————————————
    别!!!再!!!@!!!我!!!
    ajan
        131
    ajan  
       2022-09-06 13:43:19 +08:00
    点赞 aardio !
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4747 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 09:53 · PVG 17:53 · LAX 01:53 · JFK 04:53
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.