16年后微软的“古董”复活!开发者用C#重构经典VB6 IDE,网友:遗留的“屎山”代码有救了...

news/2024/11/15 12:14:21/文章来源:https://www.cnblogs.com/chinasoft/p/18547710

http://ide.vb6.pro/

 

出品 | CSDN(ID:CSDNnews)

C# 发展多年以来,很多程序员喜欢用它来编写各种工具类软件。近日,向来奉行「Talk is Cheap,Show me the code」的程序员又开始了新一轮的“整活”,其中一位名为 Bartosz Korczynski 的软件工程师心血来潮地用 C# 重建了 16 年前被微软废弃的 Visual Basic 6(简称 VB6)IDE。

对他个人来说,最初只是出于兴趣,想要开发一个“有趣的玩具项目”。但没想到,项目刚搞定并在 GitHub 上开源(https://github.com/BAndysc/AvaloniaVisualBasic6)之后,便一举登上了 HN(Hacker News)的头条,引发了大量开发者的关注,甚至不少人留言,“希望这个被作者视为小玩具的项目能够持续下去,因为现在的我仍然必须定期与非常大的 VB6 代码库进行交互”。

 

 

用 C# 重构 Visual Basic 6

作者 Bartosz Korczynski 在 GitHub 上介绍道,这个项目被其命名为——“Avalonia Visual Basic 6”,采用 MIT 许可证,允许任何人免费使用、修改和分发相关软件。

只不过需要注意的是,此项目不具有任何商业目的,因为 Visual Basic 名称、图标和图形的所有权利均归微软公司所有。

最新复刻的 IDE 是基于 Avalonia 框架开发而成,这是一款开源、跨平台的 UI 框架,98% 的代码也是用 C# 语言编写的。类似于微软 WPF(Windows Presentation Foundation),Avalonia 专为 .NET 生态系统设计。与 WPF 不同的是,Avalonia 可以在 Windows、macOS、Linux、iOS、Android 上运行,甚至可以通过 WebAssembly 在浏览器里使用。

这也是当前 Avalonia VB 6 项目能在浏览器里运行的主要原因之一。

在浏览器里打开这款 IDE(https://bandysc.github.io/AvaloniaVisualBasic6/),还是让不少人感到惊喜,因为对比微软当初发布的 Visual Basic 6,这款重构后的 Avalonia Visual Basic 6 几乎有着相同的界面。

 

微软发布的 Visual Basic 6

 

Avalonia Visual Basic 6

功能上也大同小异,Avalonia Visual Basic 6 拥有:

可视化设计器(Visual Designer):提供了图形化的拖拽式界面设计器,开发者可以直观地布局应用程序界面,无需手写界面代码,类似于传统 VB6 的界面设计体验。

 

支持 VB6 格式的项目保存与加载:项目可以按照 VB6 兼容的格式保存和加载,确保使用者可以轻松地进行项目的存储和再次编辑。只不过当前浏览器中运行时,Avalonia VB 6 无法加载或保存项目。

运行项目:此 IDE 允许开发者直接在设计环境中运行项目,测试应用程序的基本功能和界面效果,使开发过程更为高效。

支持部分 VB6 语言特性:尽管语言支持还不完全,这个项目提供了一定的 VB6 语言兼容性,使得开发者可以使用经典的 VB6 语法编写应用程序。

这些功能让该项目不仅可以复刻 VB6 开发体验,还能够更好地适应现代跨平台开发需求。

 

对此,也有开发者尝试借助 Avalonia VB 6 在 Mac 上运行 Visual Basic 6 IDE,其表示,「我们在 Apple Silicon 的 Mac 上编译并运行了这个项目,看着熟悉的界面重现出来,让人又感叹又觉得恐怖。感叹的是它模仿得真像,几乎和原版一模一样。恐怖的是,仿佛看到当年 VB 6 的种种限制:用在大项目时,代码容易变成“意大利面条”式的混乱代码。」

 

借助 Avalonia VB 6 在 Mac 上运行 Visual Basic 6 IDE 的实现

不知你是否也有这样的记忆?

 

项目作者:复现只是为了好玩与怀旧

之所以开发这个项目,Bartosz Korczynski 表示,“如果重现老旧的用户界面可以算是一种爱好,那这就是我的爱好...开发这个项目纯粹就是好玩和怀旧!这是一个玩具项目,没有其他用途”,但殊不知他的这个爱好同时解决很多人的痛点问题。

回看 Visual Basic 6 (VB6) 的发展,其整个历程充满了创新与挑战。它是微软在 1998 年推出的一款可视化编程工具,是当时非常流行的开发环境之一。

作为经典 VB 系列的最终版本,VB6 的到来象征着一种简单、高效的应用程序开发方式的巅峰。最初,Windows 桌面应用开发要求开发人员具备复杂的 C 或 C++ 编程技术,以及对 Windows API 的深入了解,而 VB 则彻底改变了这一点。

VB6 拥有图形用户界面(GUI)和快速应用开发(RAD)系统。通过简单的拖放操作,开发者可以快速创建窗口、按钮、文本框等控件,直观地设计应用界面。同时,这款 IDE 也以简易的图形用户界面和对数据库的支持(如 ADO 和 DAO)闻名,尤其适合开发商业应用。

正因此,VB6 当时一经发布,便迅速受到开发者青睐,特别是在企业软件开发领域,被视为易于上手的高效开发工具。

遗憾的是,微软在 2002 年发布了 VB.NET 对 VB6 带来了巨大的冲击,前者是基于 .NET 框架而非传统的 Windows API 构建,且语言语法和 VB6 存在显著差异,导致 VB6 应用程序很难直接迁移到 VB.NET。这一改变使部分开发者感到失望,因为他们需要投入大量精力重写代码。

论及微软为什么非要放弃 VB6,而选择 Visual Basic .NET?

前微软高级科学家 Daniel Tallentire 早些时候在问答社区 Quora 做过回应,其表示:

“.NET 解决了 VB6 存在的许多底层问题。微软不想维护太多不同的语言,最终 VB.NET 占了上风。

我能想到的一些具体问题包括:

DLL / OCX 问题——在部署甚至开发时,DLL 或 OCX 文件常常出现问题,可能由于 OCX 文件损坏,或系统上的 Office 安装出现问题,导致某些功能无法正常工作。

项目文件中的二进制组件——表单文件中包含无法用于源码管理的二进制组件。如果你使用了错误版本的 .frx 文件,必须回退并重新做 UI 更改。

表单、类、对象和单例——这些问题虽然可以解决,但 VB6 的面向对象编程(OOP)实现不够清晰,导致表单和内存管理经常出问题。

线程处理——VB6 没有可行的多线程支持。”

 

在这些原因驱使下,微软愈发专注于 .NET 平台,VB6 的开发生态逐渐式微,社区也逐步转向支持更现代的编程语言和框架。最终,微软在 2008 年 4 月 8 日停止支持 VB6 IDE,将其降级为旧版。微软 VB 团队仍然通过其在受支持的 Windows 操作系统上的“It Just Works”程序保持对 VB6 应用程序的兼容性。

 

仍有大量的遗留程序和代码存在于现实项目中

时至今日,VB6 已经停用了多年,但不容忽视的是仍有大量遗留应用和忠实用户在依赖 VB6,且至今 VB6 应用依然存在于一些传统业务系统中。

Bartosz Korczynski 如今复现了 VB6,也让人颇为兴奋。对此,外媒 Devclass 评价道,「如果 Bartosz Korczynski 或其他人能找到一种办法,让 VB6 应用能够跨平台运行,或者把它们迁移到 C# 语言中以方便后续的维护和功能扩展,市场上可能会有不少人感兴趣,因为目前依然有很多公司在使用这些旧应用。」

此外,也有开发者表示:

Bartosz Korczynski 的这种努力或许会为数百个遗留代码库带来新的活力。

这真是太疯狂了。我有太多的程序是用 VB6 编写的。VB6 是我精通的第一批编程语言之一——事实上,我在 20 多年前用 VB6 写的一些软件到今天还在我的工作站上运行。不过,VB6 的开发环境(IDE)在现代 Windows 上运行得并不顺畅——这个新项目可能为数百个遗留代码库的编辑和编译带来更便捷的途径。

真是酷。我几乎希望这不只是个玩具项目(不是对项目开发者施加压力,这只是我个人的愿望),因为我仍然需要定期处理一个非常大的 VB6 代码库。幸运的是,我们已经成功停止了新的 VB6 开发(是的,直到一两年前我们还在用 VB6 开发“新”项目),但我们仍然有很多遗留客户和代码需要维护。

面对开发者的热情评论,项目作者也对一些常见问题进行了解答:

问:Repo 链接?

答:https: //github.com/BAndysc/AvaloniaVisualBasic6

问:有网页版链接吗?

答:https: //bandysc.github.io/AvaloniaVisualBasic6/

问:哪些功能可以用?

答:可以创建窗体、编写 VB6 代码、运行程序、保存和打开项目,并生成项目(可以实际生成一个 .exe 文件!)。

问:为什么要做这个项目?

答:纯粹是为了乐趣和怀旧!这是个玩具项目,没有其他用途。

问:VB6 代码是编译成本地代码还是至少 IL(中间语言)?

答:不是,VB6 代码是解释执行的。不过运行时兼容 NativeAOT,因此当你“生成项目”时,会得到一个解释 Visual Basic 6 代码的原生 EXE 文件。

问:是否支持完整的 VB6 语言?

答:完全不支持。只支持一部分 VB6 的功能,但我计划增加更多的语言特性支持。

问:是跨平台的吗?

答:是的!界面是用跨平台的 Avalonia 做的,所以 Avalonia Visual Basic 6 也支持跨平台。

问:看起来很有趣,我可以贡献代码吗?

答:当然可以,欢迎 PR!

问:微软会起诉你吗?

答:微软,请不要这样 ;___;

参考:

https://www.reddit.com/r/dotnet/comments/1goevsy/comment/lwi00df/

https://devclass.com/2024/11/12/visual-basic-6-recreated-as-a-cross-platform-ide-in-modern-net-just-for-fun/

https://github.com/AvaloniaUI/Avalonia

https://github.com/BAndysc/AvaloniaVisualBasic6/blob/master/README.md

https://www.quora.com/Why-has-Microsoft-abandoned-Visual-Basic-6-in-favour-of-Visual-Basic-NET
————————————————

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/csdnnews/article/details/143756475

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/833960.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

“亦”真“亦”假?——MXsteerWheel与DYNA4的强强联手

高性能力反馈方向盘MXsteerWheel作为线控转向开发的新帮手,在北汇信息的展台上一直是大家关注的焦点。由于它简练出众的外表与真实阻尼的手感,吸引参展的朋友都乐此不疲地进行尝试。而后又不禁感叹,亦真亦假!图1 桌面式驾驶模拟器 一、系统组成整体来看,驾驶模拟器由CANo…

c++_primer之第四章

4.1 节练习 练习 4.1 在算术运算符中,乘法和除法的优先级相同,且均高于加减法的优先级。因此 上式的计算结果应该是 105,在编程环境中很容易验证这一点。 练习 4.2 在本题涉及的运算符中,优先级最高的是成员选择运算符和函数调用运算符, 其次是解引用运算符,最后是加法运…

Docker Kubernetes

Docker镜像与容器 Docker 中有两个重要概念。 一个是容器(Container):容器特别像一个虚拟机,容器中运行着一个完整的操作系统。可以在容器中装 Nodejs,可以执行npm install,可以做一切你当前操作系统能做的事情 另一个是镜像(Image):镜像是一个文件,它是用来创建容器…

thinkphp升级后报错Declaration of think\app\Url::build() must be compatible with think\route\Url::build():

​ 将源码中的thinkphp升级后,发现了错误:Declaration of think\app\Url::build() must be compatible with think\route\Url::build(): string 出现这个错误的原因是,你通过命令“composer update topthink/framework”只升级了框架,没有更新多应用扩展模块。 只需要compo…

为什么 PHP 在 2024 年会越来越受欢迎:经典语言的意外回归

2024 年,PHP 出人意料地卷土重来,这得益于重大的性能改进、现代功能和蓬勃发展的生态系统。 在 Laravel 等框架的引领和广泛的托管支持下,PHP 已成为强大、快速且可靠的 Web 开发选择,这些证明它远未过时。 二十多年来,PHP 一直是 Web 开发的基石,为数百万个网站和 Web 应…

linux终端美化 oh-my-bash安装

之前一直在用zsh终端,然后安装oh-my-zsh,配置后感觉特别清爽,于是想bash终端下是否存在类似的软件,找了下发现了oh-my-bash。特记录下安装使用过程 oh my bash官网:https://ohmybash.nntoan.com/ oh my bash github:https://github.com/ohmybash/oh-my-bash系统终端SHELL…

MATLAB R2023b for Mac(专业的编程和数学计算软件)v23.2.0.2428915激活版

MATLAB R2023b是MathWorks公司推出的一款专业的数值计算和数据可视化软件,它是MATLAB软件系列的最新版本。该软件在科学、工程和金融等领域的数据分析和模拟方面表现出色,具有强大的功能和工具。MATLAB R2023b引入了更强大的并行计算功能,提高了工作效率,使得用户可以更快地…

好用的视频照片格式转换软件Permute 3你用了吗?

Permute 3是一款功能强大的媒体文件格式转换软件,它以其简洁高效的界面和丰富的功能赢得了用户的青睐。该软件支持视频、音频、图片等多种文件格式的转换,包括但不限于MP4、AVI、MOV、MKV等视频格式,以及MP3、WAV、AAC等音频格式,还有JPEG、PNG等图片格式。用户只需将文件拖…

空壳分身产品之路:直面自身的缺点

这大概是极少见的官方展现自身产品缺陷的文章,旨在帮助用户从多个维度快速判断该产品是否符合个人需求,以避免浪费时间和精力在不必要的下载、安装和使用上。这大概是极少见的官方展现自身产品缺陷的文章,从产品体验,功能设计,技术方案和未来规划的角度,阐述空壳产品的做…

一文解读GaussDB(DWS)监控运维诊断优化能力

帮助开发者分析执行计划,分析SQL语句执行性能消耗,提升租户侧自运维能力。本文分享自华为云社区《GaussDB(DWS) 监控运维诊断优化,历史查询诊断》,作者: yd_219384351。DWS历史查询诊断,基于DWS集群历史topsql,提供异常诊断能力。提供SQL趋势统计分析曲线图,展示SQL历史…

Git进阶实用命令

总结最常用的git命令操作。Mac推荐可视化软件Sourcetree1. 本地仓库git init # 初始化本地git 以下所有操作的前提条件git add -A # 添加当前所有变动文件到本地缓存区 git commit -m <commit-word> # 提交缓存区内容到本地仓库 git commit -am <commit-word> # 上…

go fiber: 抛出自定义异常

一,代码: 1,自定义错误类: package configimport ("fmt" ) //定义错误代码和错误信息 type MyError struct {Code intMsg string } //需要定义通用的Error()方法 func (e MyError) Error() string {return fmt.Sprintf("Code: %d,Msg: %s",e.Code…