Click here to Skip to main content
15,861,168 members
Articles / Desktop Programming / Win32

Visual Basic 6.0: A giant more powerful than ever

Rate me:
Please Sign up or sign in to vote.
4.91/5 (110 votes)
14 Jan 2014CPOL9 min read 422.4K   59   156
When discussing VB6, we should look at the reality of the situation and not on preconceived opinions. New source code projects are made daily in Visual Basic 6.0. The paper proposes the reintroduction of Visual Basic 6.0 on the market, in parallel with Visual Studio line.

Introduction  

Released on the market in mid 1998, Visual Basic 6.0 (abbreviated VB6) has been and it still is the most successful version in the history of Visual Basic. The VB6 compiler has been designed to satisfy the slow processors of the late 90’s (800MHz – 1300MHz). Fortunately, compilers do not get old (ie. ADA – an "old" compiler underlying F22's raptor on board equipment, or Fortran and COBOL - which are widely used)1-3 .  This throws us into an older conclusion, namely if it is new it is not necessary better. 

Nevertheless, at the time, VB6 designers were true visionaries, who have done an incredible job which has withstood time. With the increase of the processor speed, compiler designers have become increasingly careless, overestimating the hardware power. These bad habits have probably been taken from the 3D game industry where the size of the game was almost always confused with its complexity and novelty. 

Why is VB6 still successful ?! 

There is no great secret that VB6 gets along very well with embedded machine code and the assembly language. VB6 advanced programmers are usually advanced assembly language programmers also. They have propelled VB6 programming language to the very top. Nowadays, through a simple copy and paste of the myriad of functions created by advanced programmers for VB6, an intermediate level programmer can create VB6 applications that run faster than those designed in C++ (no joke there).

Microsoft should perhaps listen to the hundreds of thousands of programmers who demand the introduction of VB6 to the market . It seems that no other programming language has created more scandal than VB6, culminating in a very serious petition to Microsoft made by programmers (14627 signatories including 265 Microsoft MVPs) from around the world4,5 . The phrase that is most heard from other internet VB6 programmers in small talk discussions is: "if there is no more VB6 then I will move to Linux, I know most programming languages anyway ..." otherwise a troubling phrase for Microsoft. 

Both I and other VB6 programmers, do not understand why Microsoft does not redesign a parallel version of VB6, ("Visual Basic 6.0 phoenix" would probably be a good name taking into account the circumstances). Most companies take care of their fans and designers. Personally I do not see anything harmful or threatening in a new separate VB6 programming language for the Microsoft grand plans. 

Some VB6 open source projects in 2013 

With an average of 7 posts a day, VB6 programmers brought in 2013 about 2500 open source projects on Planet Source Code alone. What is interesting is the high quality of the projects made in VB6 in recent years.  Listed below are some very serious VB6 projects that have ignited my interest and imagination: 

Visia Compiler 4.8.7.1 (a professional programming language - made in VB6) 

Description: 

Visia Compiler is a native x86 compiler for Windows 32 platform (update #4). This great project is made by Kinex (with thanks to Mark Chipman, Mordred (nick name), Tommy Lillehagen and Jordi Enguídano). It is written in Visual Basic 6.0 but compiles directly into machine code without the need of any runtime libraries or other dependencies. The language supports GUI creation, API, pointers, inline assembly (FASM must be installed). It may build and include libraries, include source headers (inc), custom entry point and dynamic arrays. Syntax is only little similar to basic-like languages as coding structure is near to C than Basic. 

 

PhotoDemon 6.2 (a Photo Editor as powerful as Photoshop is, - made in VB6) 

Description: 

08 JAN 2014 UPDATE. This update includes a new content-aware resize tool (also known as Liquid Rescaling). Content-aware resizing uses seam carving (http://en.wikipedia.org/wiki/Seam_carving) to rescale images by removing unimportant areas while preserving important ones. It wasn't added to Photoshop until CS4, so it's a relatively cutting-edge technique, and I think this is the first-ever VB implementation. Feedback welcome! Try it from the Image -> Content-aware resize menu. This update also includes many minor bugfixes, optimizations, and other improvement. As the title says, PhotoDemon is a fast, powerful, VB6-based photo editor focused on usability. Despite being coded in VB, many of its filters and tools outperform those in other free photo editors (GIMP, Paint.NET, etc).

Key features include: 100+ filters and tools, macro recording, batch processing, automatic update notifications, real-time effect previews, EXIF and XMP metadata handling, RAW format support, color-managed workflow, and much more. Compile for best results. Thank you to all the PSC projects whose work helped PhotoDemon exist; full credit and links to those projects can be found in Help -> About. 

 

Advanced mathematical functions (made in VB6)  

Description:    

Here I upload 102 modules containing several hundred advanced mathematical functions written by Sergey Bochkanov between 2005 and 2013 (some of these functions are not found even in C or C++). Some of the functions , include:

  • Decision forest classifier (regression model)
  • K-means++ clustering
  • Linear discriminant analysis
  • Linear models
  • Logit models
  • Basic neural network operations
  • Neural network ensemble models
  • Neural network training
  • Principal component analysis
  • Ordinary differential equation solver
  • Fast real/complex convolution
  • Fast real/complex cross-correlation
  • Real/complex FFT
  • Real Fast Hartley Transform
  • Adaptive 1-dimensional integration
  • Gauss-Kronrod quadrature generator
  • Gaussian quadrature generator
  • Inverse distance weighting: interpolation/fitting
  • Linear and nonlinear least-squares solvers
  • Polynomial interpolation/fitting
  • Parametric spline interpolation
  • Rational interpolation/fitting
  • 1D spline interpolation/fitting
  • 2D spline interpolation
  • Level 2 and Level 3 BLAS operations
  • Bidiagonal SVD
  • Eigensolvers
  • Sherman-Morrison update of the inverse matrix
  • LDLT decomposition
  • Determinant calculation
  • Random matrix generation
  • Matrix inverse
  • Real/complex QR
  • LQ
  • bi(tri)diagonal
  • Hessenberg decompositions
  • Condition number estimate
  • Schur decomposition
  • Determinant of a symmetric matrix
  • Symmetric inversion
  • Generalized symmetric eigensolver
  • Condition number estimate for symmetric matrices
  • Singular value decomposition
  • LU and Cholesky decompositions
  • ASA bound constrained optimizer
  • Conjugate gradient optimizer
  • Limited memory BFGS optimizer
  • Improved Levenberg-Marquardt optimizer
  • Nearest neighbor search: approximate and exact
  • Dense linear system solver
  • Symmetric dense linear system solver
  • Airy functions
  • Bessel functions
  • Beta function
  • Chebyshev polynomials
  • Dawson integral
  • Elliptic integrals
  • Exponential integrals
  • Fresnel integrals
  • Gamma function
  • Hermite polynomials
  • Incomplete beta function
  • Incomplete gamma function
  • Jacobian elliptic functions
  • Laguerre polynomials
  • Legendre polynomials
  • Psi function
  • Trigonometric integrals
  • Binomial distribution
  • Chi-Square distribution
  • Pearson/Spearman correlation coefficients
  • Hypothesis testing: correlation tests
  • Descriptive statistics: mean
  • variance, etc.
  • F-distribution
  • High quality random numbers generator
  • Hypothesis testing: Jarque-Bera test
  • Hypothesis testing: Mann-Whitney-U test
  • Normal distribution
  • Poisson distribution
  • Hypothesis testing: sign test
  • Student's t-distribution
  • Hypothesis testing: Student's t-test
  • Hypothesis testing: F-test and one-sample variance test
  • Hypothesis testing: Wilcoxon signed rank test.

Libry Compiler 4.1 (made in VB6)

Description:

Libry Compiler is a 32-Bit programming language which compiles directly into machine code and produces a small PE file (runtime independent EXE's). Libry's syntax resembles C language style (I accidentally deleted the original post). 

OpenStreetMap (made in VB6)

Description: 

Read and visualize OpenStreetMap files. Plus a simple Dijkstra algorithm. UPDATES: V1.1-Improved LAT LON to meters conversion function. 

 

VB6 the king of the jungle   

Microsoft "thinkers" probably "thought" that if VB6 is no longer supported, then programmers will be forced to move to the .NET environment. This was, undoubtedly, a wrong assumption, because it seems that in 2013 (and no doubt in 2014),  VB6 is once more in the top of open source projects (see Figure 1). After the programmers petition4,5 , and many articles in the media6-15, several years ago VB6 was again supported by Microsoft (and still is). 

 

Figure 1.  Best programming language in the world in 2013 - 2014. The figure shows the number of "source code" keyword appearances for some of the most popular programming languages6 . These proportions reflect the actual number of open source projects for each programming language. The methods after which these calculations were made, can be found here.

VB programmers do not particularly like VB. NET and don't like any other versions of VB after VB6. Why? VB6 is dependent on a single file, namely: msvbvm60.dll. On the other hand, VB .NET is dependent on the .NET Framework environment, which inhibits the individualism of the programmer and this is not consistent with the human nature. 

The silent VB6 war  

Certain VB6 applications (compiled EXE's) are in conflict with some antivirus companies. The reasons behind this conflict are not yet known. VB6 is too strong and it has the most programmers, this may be a good reason for conflict, or, another reason would be the incompetence of these companies in extracting relevant signatures. There are rumors throughout the VB6 community that many customers uninstall the antiviruses of some security companies due to false detections on VB6 applications (VB6 executables). Let us remember, Microsoft has not perhaps realized that antivirus companies have buried Visual Basic Script (VBS). However, Visual Basic Script did not have hundreds of thousands of programmers worldwide as VB6 has.  

If Windows 7 is criminaly ensane-smart and beautiful (Windows 8 being just smart) and the team dealing with it did a great job, the team (department) that decides the fate of Microsoft programming languages does not, still, understand the force of Visual Basic 6.0.  Paul Yuknewicz is (as I understand) the Lead Program Manager on the Visual Studio team. He invites us to use VB6 inside VMware in the future!16 . It says this in an online movie viewed by 45,841 VB6 programmers, 45,841 souls. Now, is not this a lack of respect for the entire VB6 community ?! just a thought ...  

The humble request of programmers  

We have to force Microsoft's hand to reintroduce VB6 to the market, of course, under the same name and fully compatible with future Windows OS’s! As long as the programmer feels like in VB6 and the classic VB6 source codes work, everything will be fine and everyone will be happy. Increasingly more and more applications are made in VB6. We will not be ignored ! 

I will end this article quoting Karl E. Peterson: "Microsoft had never rendered any of their customer's data unusable. Not once. Why they did it first to the users of the world's most popular programming language ever, the product the company was founded upon and that may have had more impact on their overall corporate position than any other, is extremely puzzling. After years neglecting the VB6 community, Microsoft seems to be missing something. Us!"16 

References 

1.  http://en.wikipedia.org/wiki/Ada_%28programming_language%29 

2.  Ganssle, Jack (2013-05-29). "Ada Resource Association - News and resource for the Ada programming language". Adaic.org. Retrieved 2013-06-14. 

3. http://content.time.com/time/nation/article/0,8599,1912084,00.html 

4.  http://classicvb.org/petition/  

5. http://www.informationweek.com/developers-petition-microsoft-to-continue-support-for-vb6/d/d-id/1030929? 

6. http://vb6awards.blogspot.com/2014/01/best-programming-language-in-world-in.html 

7. http://www.computerworld.com/s/article/100367/Update_Users_push_Microsoft_to_extend_VB6_support?taxonomyId=079

8. http://www.vb6.us/articles/microsofts-killing 

9. http://www.schwieb.com/blog/2008/05/13/saying-hello-again-to-visual-basic/

10. http://www.itwriting.com/frozenvb6.php 

11. http://developers.slashdot.org/story/12/06/09/0240204/why-visual-basic-6-still-thrives

12. http://msdn.microsoft.com/en-us/magazine/jj133813.aspx

13. http://visualbasic.about.com/od/imhoinmyhumbleopinion/a/VB6Petition.htm

14. http://visualbasic.about.com/od/imhoinmyhumbleopinion/a/VBRunRev_2.htm

15. http://visualstudiomagazine.com/articles/2009/10/27/microsoft-vb6-support-strategy.aspx 

16.  http://channel9.msdn.com/Blogs/funkyonex/What-is-Microsofts-Visual-Basic-6-Support-Strategy  

 

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



Comments and Discussions

 
GeneralMy vote of 5 Pin
Jack Spade17-Feb-14 18:56
Jack Spade17-Feb-14 18:56 
GeneralRe: My vote of 5 Pin
ISpliter19-Feb-14 10:55
ISpliter19-Feb-14 10:55 
GeneralMy vote of 5 Pin
daveecarter15-Feb-14 10:53
daveecarter15-Feb-14 10:53 
GeneralRe: My vote of 5 Pin
ISpliter19-Feb-14 10:54
ISpliter19-Feb-14 10:54 
GeneralSome observations on VB6 from the author of PhotoDemon Pin
Tanner H15-Feb-14 2:52
Tanner H15-Feb-14 2:52 
GeneralRe: Some observations on VB6 from the author of PhotoDemon Pin
ISpliter19-Feb-14 10:49
ISpliter19-Feb-14 10:49 
GeneralMy vote of 5 Pin
Ștefan-Mihai MOGA14-Feb-14 17:09
professionalȘtefan-Mihai MOGA14-Feb-14 17:09 
GeneralRe: My vote of 5 Pin
ISpliter19-Feb-14 10:19
ISpliter19-Feb-14 10:19 
Thank you for your kind words Mihai, these are greatly appreciated, especially because they come from a very experienced CodeProject member Smile | :)

Multumesc Mihai Smile | :)
QuestionVB6 Phoenix Pin
daveecarter11-Feb-14 16:00
daveecarter11-Feb-14 16:00 
AnswerRe: VB6 Phoenix Pin
ISpliter19-Feb-14 10:12
ISpliter19-Feb-14 10:12 
QuestionThank you for a very interesting article Pin
Howard Cox11-Feb-14 12:07
Howard Cox11-Feb-14 12:07 
AnswerRe: Thank you for a very interesting article Pin
ISpliter19-Feb-14 9:53
ISpliter19-Feb-14 9:53 
QuestionI have a soft spot for VB6 Pin
Megan Thron10-Feb-14 19:06
Megan Thron10-Feb-14 19:06 
AnswerRe: I have a soft spot for VB6 Pin
ISpliter19-Feb-14 9:47
ISpliter19-Feb-14 9:47 
QuestionVB6 is elegant Pin
David Yolovitz10-Feb-14 12:47
David Yolovitz10-Feb-14 12:47 
AnswerRe: VB6 is elegant Pin
Megan Thron10-Feb-14 19:08
Megan Thron10-Feb-14 19:08 
AnswerRe: VB6 is elegant Pin
ISpliter19-Feb-14 9:45
ISpliter19-Feb-14 9:45 
QuestionVisual Basic 6.0 creates robust, reliable, high-performance app's ! Pin
Adam one10-Feb-14 11:15
Adam one10-Feb-14 11:15 
AnswerRe: Visual Basic 6.0 creates robust, reliable, high-performance app's ! Pin
David Yolovitz10-Feb-14 12:54
David Yolovitz10-Feb-14 12:54 
AnswerRe: Visual Basic 6.0 creates robust, reliable, high-performance app's ! Pin
ISpliter19-Feb-14 9:43
ISpliter19-Feb-14 9:43 
QuestionI've seen amazing things done in VB6! Pin
Mobius Scutav9-Feb-14 14:23
Mobius Scutav9-Feb-14 14:23 
AnswerRe: I've seen amazing things done in VB6! Pin
David Yolovitz10-Feb-14 12:56
David Yolovitz10-Feb-14 12:56 
AnswerRe: I've seen amazing things done in VB6! Pin
ISpliter19-Feb-14 9:41
ISpliter19-Feb-14 9:41 
QuestionThere are many, many huge and complex systems written in Visual Basic 6.0 Pin
Irina Volkof9-Feb-14 13:54
Irina Volkof9-Feb-14 13:54 
AnswerRe: There are many, many huge and complex systems written in Visual Basic 6.0 Pin
David Yolovitz10-Feb-14 13:18
David Yolovitz10-Feb-14 13:18 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.