16年后微软的“古董”复活!开发者用C#重构经典VB6 IDE,网友:遗留的“屎山”代码有救了...
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
16年后微软的“古董”复活!开发者用C#重构经典VB6 IDE,网友:遗留的“屎山”代码有救了...的更多相关文章
- 微软的决心,开发者的信心!惊喜的 Connect(); // 2016
		
微软的决心,开发者的信心!惊喜的 Connect(); // 2016 Visual Studio for Mac 2014 年 11 月 13 日,微软宣布 .NET 开源与跨平台.两年后的今天 ...
 - 微软在Build 2016开发者大会中发布 “认知服务”,牛津计划有正式名字啦!
		
2016年3月30日:微软在Build 2016开发者大会中发布“认知服务”. 在Build 2016开发者大会中,微软发布了新的智能服务:微软认知服务(Microsoft Cognitive Ser ...
 - 微软 Build 2016年开发者大会发布多项功能升级
		
微软Build 2016开发者大会在美国旧金山的莫斯康展览中心开幕.本次大会对一些重点功能进行了完善.如手写笔支持技术Windows Ink.语音识别Cortana应用集(Cortana Collec ...
 - 【干货】前端开发者最常用的六款IDE
		
一.Visual Studio Code 下载地址:https://code.visualstudio.com/ 功能介绍: 微软在2015年4月30日Build 开发者大会上正式宣布了 Visual ...
 - C/C++开发者必不可少的15款编译器+IDE
		
1)Best IDE for C/C++ – kDevelop(http://kdevelop.org/) Kdevelop是一个专为C/C++及其他语言的开源扩展插件IDE.它基于KDevPlat ...
 - 提供给开发者 10 款最好的 Python IDE
		
Python 非常易学,强大的编程语言.Python 包括高效高级的数据结构,提供简单且高效的面向对象编程. Python 的学习过程少不了 IDE 或者代码编辑器,或者集成的开发编辑器(IDE).这 ...
 - 转载文章之提供给开发者 10 款最好的 Python IDE
		
Python 非常易学,强大的编程语言.Python 包括高效高级的数据结构,提供简单且高效的面向对象编程. Python 的学习过程少不了 IDE 或者代码编辑器,或者集成的开发编辑器(IDE).这 ...
 - 一个前端开发者换电脑的过程(IDE篇)
		
一台全新的电脑,需要做出怎样的改变,才可以摇身一变成为前端开发者能用的电脑呢.首先,我们需要安装一个编辑器,这里我们选择目前最火的vscode. 先去到它的官网,把对应版本的vscode下载下来. 然 ...
 - Chrome开发者工具详解(一)之使用断点来调试代码上
		
1.断点调试是啥?难不难? 断点调试其实并不是多么复杂的一件事,简单的理解无外呼就是打开浏览器,打开sources找到js文件,在行号上点一下罢了.操作起来似乎很简单,其实很多人纠结的是,是在哪里打断 ...
 - 12月16日 增加一个购物车内product数量的功能, 自定义method,在helper中定义,计算代码Refactor到Model中。
		
仿照Rails实战:购物网站 教材:5-6 step5:计算总价,做出在nav上显示购物车内product的数量. 遇到的❌: 1. <% sum = 0 %> <% current ...
 
随机推荐
- .NET SDK样式项目打包时如何将引用项目打进同一个包
			
此篇为上一篇[<.NET SDK样式项目打包时如何将项目引用转为包依赖>](https://www.cnblogs.com/cnsharp/p/18819771 ")的姊妹篇. ...
 - P5995 [PA2014] Lustra
			
提供一种极易理解的纯模拟做法. 虽然时空都不是很优秀,但是距离时空超限还绰绰有余.并且没有运用什么深奥的算法与技巧,非常适合算法初学者,并且还留有极大的优化空间. 理解题意,题目要求我们求出是否有工厂 ...
 - 生活中有苦难却没有人可以倾述?来看看AI树洞吧!
			
本文由 ChatMoney团队出品 介绍说明 在如今繁忙喧嚣的世界中,我们时常渴望能有一个安全且私密的空间,让我们毫无顾忌地袒露心声.AI 智能体树洞便是这样一个独特的存在. 它并非传统意义上的树洞, ...
 - 突发,CSDN 崩了!程序员们开始慌了?
			
继前两天 B 站雪崩事件之后,国内最大的程序员站点 CSDN 居然也翻车了! 话说 CSDN 在程序员届的知名度甚至大于 B 站,我估计没有朋友没用过吧,来,先请大家用 4 个字来形容 CSDN _ ...
 - 一个基于 .NET 开源、模块化 AI 图像生成 Web 用户界面
			
前言 今天大姚给大家分享一个基于 .NET 开源.模块化 AI 图像生成 Web 用户界面:SwarmUI. 项目介绍 SwarmUI (原 StableSwarmUI)是一个基于 .NET 开源(M ...
 - CAE科普!电池仿真的必要性
			
在当前高油价与低排放的双重挑战下,新能源汽车以其动力电池驱动的特性成为了低碳环保.节能减排的必然选择.然而,电池系统性能的好坏直接关系到新能源电动汽车的行驶里程和使用便利性,其中充电时间.效率.能量密 ...
 - Elastic学习之旅 (11) .NET 6应用集成ES - 上
			
大家好,我是Edison. 上一篇:Logstash数据采集 写在开头 有了前面10篇的基础,我们大概清楚了ES的基本概念和使用(主要是查询),这也是我们作为Developer应该了解的范畴,而至于更 ...
 - java工具类集合(一)
			
所介绍的工具包均可直接新建工具类丢在包下面. 1.在使用Controller向Ajax传参时常常使用JSON来完成传参,所以写了一个工具类,将返回的数据封装成JSON格式. 1 package com ...
 - 剑指offer  22 链表中倒数第K个节点.
			
简介 链表中倒数第K个节点. 思路 双指针, 然后一个指针延迟运行. code class Solution { public: ListNode* getKthFromEnd(ListNode* h ...
 - Economics-Industries-Chemical: 化工+材料 行业 : 海外化工巨头的一步步强大
			
一文详解:海外化工巨头的一步步强大 详解美国Dow&Dupont.美国3M.德国BASF.Covestro四大海外巨头材料企业, 他们的公司起源.发展历史和竞争战略,提炼企业特征和行业的共性. ...