跟个风,2025年开发独立软件,用什么语言、技术合适?

2025年开发独立软件,用什么语言、技术合适?
这个问题问100个人,可能有很多种答案。
这里我给出一个好的方案,甚至我自己都想实行的方案,
可能会让你们吃惊到掉大牙,但是确实可行。

结果就是:VB6.0
优点:不需要臃肿的 .net framework,非托管程序,无法反编译,程序非常小。
VB语言简单易学,VB6.0实际上可以实现大部分VC6.0的功能,VB6.0的门槛比VC6.0要低一大截,VB6.0的程序也可以通过一些方式往后兼容,可以读取C#.NET生成的DLL等等。

缺点:报毒(即使你写一个开源的,可反编译的托管.NET程序,一样可能被报毒,这是所有软件开发者都会面临到的问题。)缺少ocx,dll,这个可以解决,另外VB6.0已经没有官方支持了。

关于win10和win11运行,是可以运行的,如果微软继续兼容32位程序,也许win12,win13也能运行。

VB 现在还不如易语言吧,虽然是垃圾,但起码有活跃用户群。Go 也很简单,也不需要运行时,不过桌面生态还不成熟,对新手不友好。我觉得目前 Windows 上最合适的还是 .NET Framework,虽然需要框架,不过系统预装的有,问题不大。反编译的问题加壳也可以解决(比如 .NET Reactor),大部分独立软件的价值都不够逆向的成本。

1 Like

你说VB6是垃圾,我是不承认的,VB6是微软可视化编程的先锋,我个人觉得VB6比.NET强不少,易语言的话,除了国产中文编程,其它都是学的VB6,为什么VB6还有用户群,因为它是微软开发出来的,.NET不是说它不好,微软在上面做了太多东西,很多没多久就抛弃了,臃肿无用作废的东西太多,另外是托管程序,加壳一样可以反编译,.NET程序最大的威胁就是随随便便可以被反编译。

我第一句话指的是易语言,VB 当然不是垃圾,而且用户群也不活跃吧。关于“加壳一样可以反编译”,脱离成本谈安全是没有意义的,原生程序,比如 C++、VB、Go、Rust,没有一个是不能反编译的,只是成本比 .NET、Java、Python 这种字节码程序高很多,加壳后的 .NET 程序是可以比原生程序更安全的,况且 .NET 也不是不能编译成原生程序。我建议你先反编译个 .NET Reactor 保护后的程序看看,比如这个

N年前我就用过 .NET Reactor,老版本的早就可以去壳,代码完完全全的反编译了,而且代码几乎一模一样的反编译出来,新版本的不知道,但是迟早也可能能够反编译的,早晚的问题。
加壳还有一个代价,你不知道吗?不加壳报毒5,60%,加壳了100%报毒。

“因为这件事曾经发生过,所以它未来也一定会发生”是没有价值的推测,.NET Reactor 最新版是可以把保护程序编译成原生程序的,这已经从根本上解决了你所说的反编译问题。报毒的问题确实存在,但如你所说,VB 也会报毒,解决报毒问题的正确方法是向官方申诉,或者交保护费买证书,而不是靠折腾技术栈,花费大量的开发成本来躲避。

2 Likes

我用新版本的 .NET Reactor,甚至还没加壳,WindowsDefender就报毒了,你说还怎么玩,加壳那更不要玩了。

1 Like

高人真多,各个都能指点江山,这个是垃圾,那个是垃圾。
也不知道这个垃圾的标准是什么?按照这个标准哪些不是垃圾?说这个垃圾那个垃圾的,自己有没有能力写一个比这个垃圾更好的东西?

3 Likes

我最早就是vb6

vb也需要运行库, 叫做 runtime, 打包发布的话, 程序不小(看跟谁比).
而且ocx组件分享后还需要注册, 否则无法绿色使用.

我当年用vb开发的软件现在网上还有:

< 电脑爱好者 > 2004年21期 曾经推荐过. :stuck_out_tongue_winking_eye:

https://mydown.yesky.com/pcsoft/33469002.html

1 Like

VB6有没有可能,不需要runtime,或者注册ocx运行exe?

没可能. 你的程序, 就算是打开一个文件对话框, 也是需要ocx的.

除非你纯调用系统API, 而不是用封装的功能.

但是, 那也需要 runtime, 其实 vc++ 也需要, 只是系统内置了.

1 Like

我记得我以前做过有些程序,dll和ocx不用注册,直接放在exe文件夹,也可以运行。
不是VB6的,但是确实是需要注册的dll和ocx,我只是放到exe同一个文件夹下了,
不知道VB6能不能这样。

这个垃圾的标准是我个人的标准。我对一个好语言的标准是,有语言标准,语言设计不差,有开源实现,有良好生态。易语言没有语言标准,语法也很不完备,很多操作都需要置入机器码来实现(与此同时还不支持内联汇编,只能靠第三方来逆向实现),也没有开源实现,官方实现的维护还几乎停滞,社区虽然比较活跃,但质量相比其它语言的也不高,并且二进制源码格式极大限制了开源协作。

在我的标准下,不止易语言是垃圾,C++也沾点,虽然很大一部分是历史包袱的结果,但语言设计得实在很难用,并且标准委员会太过民主,2022年了还没把网络库推进标准;另一方面,生态也很混乱,新手调个库都可能掉进坑里,虽然这点已经在逐渐改善了,不过跟其它语言还是差得很远。

当然,语言垃圾并不代表不能用,易语言在某些情况下,比如快速写一个不依赖运行时的小型桌面程序,确实是比其它语言都好用的,C++也是如此,但这不妨碍我认为它们总体上垃圾。

每个人评判事物的标准都有不同,我只是发表我的看法。至于我有没有能力写,确实没有,这方面我写过最复杂的也不过是半个C语言解释器,连头文件都不支持,但不会做饭难道就不能说不好吃吗?

运行库系统安装一次就行了.

image

你看vc的也是这样.

那挺麻烦的,现在人都很懒的,要人为了你的软件去装东西,注册都不想做。

哦?那请问按你的垃圾标准,vb为啥不是垃圾呢?

不能这么简单类比.

如果一个人说, 菜里放辣椒, 就是垃圾, 放糖也是垃圾, 汤菜是垃圾, 馒头是垃圾.

那很可能并不是事实.

没有垃圾语言, 只有适用和不适用.

以前有人还觉得 javascript 是垃圾. 现在真香.

linux 的作者觉得 C++是垃圾. 最后觉得 linux 也是垃圾.

尽管我认为他偏激, 但人家好歹是大佬 :rofl:

VB 6 是 1991 年发布的,1998 停止更新,拿今天的标准来评价的话显然没有意义,况且 VB 是有 VB.NET 这个后继的。如果硬要评价的话,VB 6 有语言标准,语言设计从易用的角度是成功的,没有开源实现,生态方面起码还有人在招,也不存在二进制源码这种奇葩操作。

1 Like

哦哦,您这个垃圾的标准看来还是蛮灵活的。
明白了,感谢指点 :sweat_smile:

1 Like

我说的垃圾是它们在大部分情况下,甚至在自己的生态位里都不好用,像“垃圾 JS 写不了驱动”这种莫名奇妙的批评我肯定不会支持。

拿易语言来说,它的语言设计到处都是大洞,除了上面内联机器码的例子,它的模块不支持通用型和变长参数,支持库却支持,但支持库又不给易语言提供 SDK,只能用 C++ 写(后来第三方有了一个易写易库);另外,它的结构必须嵌套初始化,这就导致易语言自身写不出链表,而且还不支持 sizeof,调用 Windows API 时需要手算结构大小(这里面还有 ABI 的问题,这虽然不算是易语言的锅,但对性能影响不小)。

二进制源码格式就不说了,它的编译器也非常魔幻,不止缺少常规优化,甚至还会用浮点运算来算整数,这不止导致性能下降,还会导致长整数某些情况下运算出错。

桌面开发是它的生态位之一,可它官方的组件库都不支持 Unicode 编码(语言对 Unicode 的支持甚至都是用的字节集),对高 DPI 毫无适配,甚至编写组件都没有提供易语言接口,用模块组件库就不得不放弃官方的可视化。此外,很多库都不是多线程安全的,并且还缺乏文档说明,必须要依赖第三方实现,而这些实现的质量又由于生态原因参差不齐。

最后一点则是它的官方,5.11 之后维护还不如业余软件频繁,并且更新的还都不是重点,现在又搞起了 C++ 转译,火山,根本不关心易语言的发展。

易语言确实也有优点,比如中文语言对新手友好;自带可视化 GUI 设计;模块的设计,虽然存在代码重复和源代码泄露的问题,但起码比 C++ 来回倒腾头文件、源代码和静态库强(虽然 C++20 也有模块了);表格化代码对于新手也有帮助,虽然也造成了一些限制;以及题主比较关心的不依赖运行时(实际上依赖 VC 6,不过 Windows 早早预装了,可以当作不依赖)。但这些优点对我来说,并不足以改变我对它的总体评价。

2 Likes