It has been a saga. A struggle. A double struggle. One about resisting changes and another about changing myself. When it comes to programming I am an old timer. Not an expert, just an old timer. I created my first program on my first computer a Commodore 64 like the one pictured in the photo at the top of the page.
That first program was created in Commodore BASIC, a programming language that was developed to be used on personal computers. BASIC is an acronym for Basic All-Purpose Symbolic Instruction Code. It was designed to be more human-friendly than earlier programming languages, with keywords such as PRINT, GO TO and such that humans could easily understand. As was true for most computer manufacturers Commodore had its own version of ‘flavor’ of BASIC. Apple had a version for use on the old Apple IIc and other pre-Macintosh systems. All of these early versions of BASIC used “in line” instruction format, meaning that a program started from the first instruction line and continued down to the last line.
Of course there was also a Microsoft BASIC from those early days. It continued to evolve with time and changes in technology. Sometime after Microsoft introduced the Windows platform, “Visual” BASIC appeared on the scene. This was revolutionary; it allowed programmers to design a graphical user interface (GUI) made up of “forms” (windows) and other controls that we all know well today. These include text boxes, list boxes, buttons, and other types of user controls that we see in virtually all types of devices. A typical computer user (including mobile device users) may not know the names of the controls but he or she uses them every day.
The revolutionary part was that Visual BASIC was “event-driven,” which meant that programs were no longer top-down and in-line as before. The “events” were things that happened, either when the person using the program clicked on the button with a mouse, selected an item in a list, etc. “Behind” the controls was one or more lines of instruction code to respond to or “handle” the event. The interface design was also much easier than with the old in-line programs. Text boxes, buttons and other controls could simply be placed in the desired location with the mouse–compared to the old days when X and Y coordinates had to be specified in the instruction code. I easily made the shift from the old BASIC to Visual BASIC, and thought it was the greatest thing since apple pie.
The .NET “Framework”
The next step in the evolution was the release of the .NET Framework in the early 1990’s This was of course built into Microsoft Windows. The important change was that everything was now “object-oriented” and there was a more fluid interaction between the computer’s operating system (Windows) and the program. Programming in the .NET Framework became known as object-oriented programming or OOP. The original Visual BASIC eventually became obsolete after being replaced by Visual BASIC.NET (VB.NET). There were thousands or millions of holdouts who didn’t want to give up the original Visual BASIC (including myself). But eventually it had to happen and new features built into VB.NET made it very attractive.
Then Along Came C#
About the same time as the release of the .NET Framework a new language also appeared on the scene. It was called C Sharp and usually written C#. Other versions of the ‘C’ language had existed for years. It was known as a “low level” language that allowed the programmer to do things that were not possible with BASIC. But C# was designed specifically to work in the .NET Framework and was a lot more programmer-friendly than earlier versions of C.
“Cool” programmers were adopting C# and using it in their work almost exclusively. But me–I again resisted. It was more cryptic than VB.NET. Gone were many of the keywords like GO TO. It was also case-sensitive, so ‘print’ and ‘Print’ gave different results. And on top of that it was finicky about punctuation and required a semi-colon at the end of every line.
Though I dabbled from time to time and started to learn and use C#, I saw little reason. I never became aware of anything that I could do with C# that I could not do with VB.NET. After all both languages were intended to create programs within the same .NET Framework and Microsoft Windows. So being the practical thinker that I am, I saw no reason to subject myself to the challenge of adopting C#.
Eventually I started to feel like I was being forced into a corner where I was going to have to give in and learn and use C#. All my programming work had been to create typical Windows “Forms” programs. But these programs, designed to be used on desktop (or laptop) computers only, were becoming obsolete as more and more people gave up their PCs and did their work on mobile devices like tablets and even mobile phones. It was easy to see the handwriting on the wall, saying that to produce anything meaningful in modern times would require using one of the newer “technologies” and leave Windows Forms behind. Better choices were ASP.NET, which creates web-based programs. Also Windows Presentation Foundation (WPF) that produces slick user interfaces with nice integration of animations and much more sophisticated graphics than could be included in a Windows Forms application. And finally “Universal Apps” came along at the time of the release of Windows 10. These apps are created once and easily adapt for use on virtually any type of device, including desktop/laptop computers, smartphones, and even the Xbox. I was very interested in learning to create apps for WPF and the Universal platform.
So great. I roll up my sleeves to learn these more modern technologies. But then…I realize that almost all of the instruction–tutorial exercises and such–use C#. Uuuufffff. Even though VB.NET can be used to create the new app types, there was almost no quality instruction available in VB.NET. I felt frustrated and even a little resentful at times. But there wasn’t much point in that; it got me nowhere.
I am happy to report that over the past couple of months C# and I have formed a new bond. This old timer has been transformed into a “cool” dude, capable of getting it done with the C# language. Onward and upward!