The .NET Framework, discussed by us before, is a software technology actively developed by Microsoft since the the 1999s to now. Although we really believe that many of Microsoft's products and services are excellent in value and quality, we strongly believe that the .NET framework is not living up to its full potential; at least for end-user software developers like us. So our short answer is no, do not use the .NET Framework for software developing, especially for Windows desktop applications.
But what's our problem with the .NET Framework? We can think of a few. As a matter of fact, we will list them, report-style. Source code security The .NET Framework is not very secure when it comes to protecting your source code. Sensitive data and routines such as password generation, license validation, etc can be easily, and I mean easily, modified with 3rd party tools that a computer novice can get started with. Why is this so? Because Microsoft did not add an option to natively compile your source code. Instead, Visual Studio converts your source code to a weak Intermediate Language form. I call it weak because it can be easily, and again, I do mean, easily, converted back to C# or VB code. So, with that in mind, we can see how hackers/crackers and even competitors can easily decompile your code, and modify or steal your algorithms and data. .NET Framework as a dependency The .NET Framework is big. Very big, if you normally distribute 5mb software installers like us and therefore, is a liability. Why? Imagine distributing an application you developed in VB or C# which is about 1mb in size. Not a problem right? No. If you used the .NET Framework, you just supersized your setup file by about fifty times. That's right, the .NET Framework ranges from 50mb to 200mb depending on its version and machine architecture. Imagine asking people to download that! Of course, most computers around the world have .NET Framework installed by default. However, the problem is that they are usually different versions. For example, Windows XP users may find themselves with no .NET Framework by default. Windows 7 users may find themselves having .NET 2.0 and 3.0, but not 4.0 or 4.5. Windows 10 users may have .NET 4.6 or 4.5, but not 2.0, 3.0 or 3.5. As you may have infered, there are in total, around seven different versions of the framework, and they are all scattered around the world on computers that run differing versions of Windows. This problem exists because, for some reason, versions of Windows only include the latest versions of the framework at that time. This is good in a forward thinking context, but very bad as they do not support programs compiled against older versions of .NET. This leads to the downloading and installing of a 100mb runtime, for every new user that uses software made on older versions of .NET: and trust me installing the framework is not a quick process. Installation hassles Installing the .NET Framework may be quick initially. However after the framework is installed, you may see a process called mscorsvw.exe running in the background, eating away at your CPU. This is because it is preparing and also natively compiling the entire runtime! Besides downloading the framework, and installing it, the framework will also need to compile itself! The total process can take from five minutes to an hour depending on the computer's specifications. So why Microsoft? Why won't you just make a native compiler that complement's .NET's application development productivity? Why won't you just make it possible that can statically link desktop applications against the .NET libraries so that it does not have to be shipped with it. Why won't you include support for previous versions of .NET on newer versions of Windows? If you did those things, VB/C# would definitely be the #1 development languages of choice for programmers around the world! So in conclusion, we do not recommend you to develop on the .NET Framework if you intend to target end users. Although development on the .NET Framework is easy, rapid and effective, the framework itself possess liabilities that, in our opinion, outweigh all those perks. Stick to Delphi, C++ Builder or even Visual Basic 6. Those programming languages have a lot of support from the online community and builds native programs that you can easily ship on a floppy disk or two. So you finally decided to just jump in to it. You are going to make an app on Windows. But there's just one problem: you don't know much about programming or even computers. What should you do? Being a software developer myself, I can still recall how I got in to developing software. At first, I was just really bored. So I spent my time playing around with windows, creating folders, shortcuts, etc; until I got bored of that. That was when I decided to just jump in and learn how to code. When starting to learn code, the best way to keep yourself interested and motivated is to start with something that's easy and simple. I personally recommend downloading Visual Basic and playing around with it. Start off by just adding buttons and texts to your program's window and personalising it with things you like. For example, I created my own bank account management system, with just two buttons for withdrawing and depositing cash. Soon after you've mastered these baby steps, move on to more advanced endeavours. For me, it was creating a program that scrambled any text I typed in and unscramble any scrambled text that was fed back. I also developed a calculator. After a few months of messing around with VB and making the apps that you have interest in developing you will begin to develop a strong sense of familiarity and excitement with coding. Give it another few months or so and you will begin to envision all sorts of programs to develop; virtually anything you can imagine. After mastering the basics of Visual Basic, try to learn more versatile languages such as C, C++, Java or C#. So what are you waiting for? Get started now by downloading the latest version of Microsoft Visual Studio and get started. Remember success is not a destination: it's a journey. Here is the code to recursively sort an unique array of integers in Java. public static int[] recursiveSelectionSort(int[] list, int n) { if (n == list.length - 1) { return list; } int temp, lowestIndex = n; for (int i = n + 1; i < list.length; i++) { if (list[i] < list[lowestIndex]) { lowestIndex = i; } } temp = list[n]; list[n] = list[lowestIndex]; list[lowestIndex] = temp; return recursiveSelectionSort(list, n+1); } To test this method, use the code below.
public static void main() { int[] arr = {-1, 10, -999, 20, 1, 2, 3, -100, 200, 20000, 99999, -99999}; System.out.println(Arrays.toString(recursiveSelectionSort(arr, 0))); } Note: Imports java.util.Arrays; is needed at the top of the class file. Happy coding. Recently, there have been some requests on code that sorts an array of unique integers in ascending order using recursion. public static int[] recursiveBubbleSort(int[] list, int n) { if (n == 1) { return list; //finished sorting } int temp; for (int i = 0; i < n-1; i++) { if (list[i+1] < list[i]) { temp = list[i]; list[i] = list[i+1]; list[i+1] = temp; } } return recursiveBubbleSort(list, n-1); } To test this method, use the code below.
public static void main(String[] args) { int[] arr = {-1, 10, -999, 20, 1, 2, 3, -100, 200, 20000, 99999, -99999}; System.out.println(Arrays.toString(recursiveBubbleSort(arr, arr.length))); } Note: Imports java.util.Arrays; is needed at the top of the class file. Happy coding. |