This post is just some notes regarding the coding style used in the
AGKWorkbench Project...
The first question that most likely arises, especially from younger developers, is why the use of VB.NET instead of C#. This is a very legitimate question given the emphasis on C# by Microsoft and its decision to discontinue its evolutionary development support for VB.NET.
Yet, the simple answer is that I prefer the syntax of VB.NET to the curly-braces and semi-colons of C#. Though I am just as fluent in C# as I am in VB.NET, the primary reason for using VB.NET is simply personal preference. This preference developed over the years of my professional development career using a variety of the DBASE Languages in the 1990s. In those years, these 4th generation languages were very popular and were also the best way to develop database applications at the time.
With the introduction of Visual Basic in 1991, many of us slowly moved to this platform for such development as the SQL server database engines grew in popularity. Once .NET was commercially available in 2001, it was again the Visual Basic Language in the form of VB.NET that was emphasized. The C# language was initially developed to attract developers from the popular Java platform, which it eventually did.
In the past decade or so, as newer and younger developers entered the field, many preferred the newer C# language along with the rickety JavaScript language for web development. As to the latter, in reality, the VBScript language has always been far superior to the JavaScript language as it was far easier to learn given the adaptation of the earlier Visual Basic and was even superior to JavaScript in terms of capabilities since it had been the basis for Classic ASP web development. However, Microsoft, in their constant attempts to maintain their dominance in the software development environments refused to Open Source VBScript when it was to the company's advantage. JavaScript, which had been Open Sourced early on simply won out with developers in terms of its usage. And the rest is history.
Nonetheless, to this day, JavaScript is seen by many professionals as an aberrant, cranky language that has been patched to death to provide it with the features developers wanted over time for their web development projects. As of the last reports on this process, the older, more useless aspects of JavaScript, as far as I know, have yet to be removed from the language's base, which would make it more efficient than it is.
Microsoft's discontinuation of evolutionary development of VB.NET is another advantage to its use. This is because, Microsoft has been continuously adding what more than a few professionals have seen as nothing but "fluff" attributes to the C# language adding more syntactical complexity than is necessary over the course of its evolution. As a result, today, one can see technical articles with C# syntax that looks as arcane as it is ambiguous. VB.NET's verbosity has avoided a good part of this detrimental aspect to the evolving C# language, making VB.NET an easier selection for APPGameKit developers who are interested in moving to the .NET Platform and the AgkSharp SDK for their development endeavors.
In addition, game developers cannot afford the constant technical churning that is common in the business, enterprise environments. Simply put, no one would ever get a game developed if they did. So staying with a mature language and even the more mature original .NET Frameworks makes a lot more sense for having a stable development environment than that found in many business development environments today.
This doesn't mean that one should avoid the newer technologies. However, the reality is that neither C# or the .NET Core Frameworks are finished products. C# is still seeing features added to it, most in my view, that are good for specific purposes but not general development while the .NET Core Frameworks appear to still be in unfinished phases while leaving out much of what made the original frameworks so powerful. A lot of this is the result of stupid management decisions by Microsoft's management and has little to do with actual development capabilities of either.
For example, using the newer Visual Studio 2022 for most general development and even game development provides little to no advantage over Visual Studio 2019 aside from access to the most recent language and framework updates. Other than that, if you are contemplating the use of MadBit's AgkSharp SDK, you will find that using VS 2022 instead of VS2019 will yield little in terms of actual development advantage. You will still be required to perform the same development tasks with .NET Framework 4.6 for example, as with .NET Core 7.0.
My own coding style, I imagine, will be seen in some cases as inefficient and downright old. However, this style provided for many years of production applications that rarely if ever provided issues to maintenance technical teams and others who were required to update my code. I have never had an application "blow up" during production processing as a result. And compared to the increasingly atrocious web development we are seeing in the public spaces today, my style of code as well those styles used by my colleagues at the time never would have yielded the bug-ridden public Internet systems many of us are encountering in our daily lives.
This doesn't mean that I am not aware of where a number of these inefficiencies appear. For example where I insert\update the database records in the actual AGKWorkbench Project (the master project in the solution) could surely use a review of its efficiency but for now the code works well as it is and has provided no issues in terms of data errors.
The Firebird Database Engine also has the capability of using an "INSERT OR UPDATE" statement within its stored procedures that allows you to have a single stored procedure for both tasks. However, for the many years that I have programmed for SQL database engines, the use of these SQL tasks as individual stored procedures has simply become second nature to me, so that is how I have programmed them.
The Firebird Database Engine today has moved way beyond the version 2.5.9 that I and quite a few Firebird developers are still using. The engine is currently in 5.x version development and at some point I have every intention of upgrading this aspect of the project to the latest stable version of this database before it goes out of support completely. However, this will entail a lot of development effort to make such an upgraded implementation seamless to you the user.
I could tell those who may be interested in doing this manually how to go about it but I believe your time would be better served to wait until the project itself has been upgraded successfully. And if we were all in a business environment here, the chances that this would have already been accomplished would be quite high. However, we aren't in that type of environment with the game development genre. And as I said earlier in these notes, if we were, most of us would be taking many steps backwards simply to go forward.
With all of this said, I welcome any and all suggestions to this project. And don't be afraid to point out inefficient areas in it. If any of you have better suggestions for such areas or just questions, please post them here or send me an email at
blackfalconsoftware@outlook.com
Until next time, stay well...
Steve Naidamast
Sr. Software Engineer