TANSTAAFL is Virtually Untrue

Robert wrote:
> As someone points out, this is super depressing that an experienced
> C++ developer can't afford a copy of VS.net.
> May be, your company or your friends have a trial copy of VS.net
> already since M$ mail them out to developers like there is no
> tomorrow.
 
Before everyone jumps on Microsoft for not making VisualStudio.NET Enterprise Architect free, let's all remind each other that the .NET Framework SDK is free. 
 
See
and
 
Context:  we are discussing the needs of someone who wants to learn .NET programming.
 
While Visual Studio.NET may make development easier, by writing a lot of code behind the scenes and by integrating lots of useful features into the IDE, it is not necessary.  You have everything you need to write and debug perfectly workable .NET code right there in the SDK.  You can use Notepad, Vim, Emacs, or any other editor to write the code.  In fact, I strongly recommend learning to write .NET code without using Visual Studio.NET so you really learn what's going on.  Sometimes tools do too much for you, particularly when you're learning.  After you learn, you can better appreciate the value of the tool.  After you learn, you are silly not to *use* the tool. 
 
If I had my way, you would only get your scientific calculator after you learned to do a square root and at least one Taylor Series expansion by hand!  Once you know what you are really calculating and what's underneath the calculations, you would probably be horribly inefficient not to use the calculator (or computer).  The “probably” leaves some room for special cases like Turing.
 
I'm pointing to the difference between a cookbook engineer and one that knows where and why the formulas work and where and why they don't.  If you just want to be a drag-and-drop programmer, you can ignore all of this.  If you want to be able to do deep debugging and to code for .NET intelligently, then you may gain some value from this suggested approach.
 
Warning!  When you are behind on a project with a hard deadline, forget all of this nonsense and make your company buy Visual Studio.NET for you.
 
For investigating database programming, you have ADO.NET in the SDK, including access to a number of ODBC and OLEDB providers.  You may be able to install and investigate MSDE, as long as you obey the "Appropriate Use" guidelines (http://www.microsoft.com/sql/msde/howtobuy/msdeuse.asp).  If nothing else, you can use MSDE with WebMatrix (see below).
 
You can even write make files and build scripts to package your code.  See the .NET Framework SDK samples for plenty of examples.  You get nmake.exe free with the SDK.
 
You can get a great free-as-in-beer-but-also-Open-Source IDE for C# and Visual Basic.NET on the .NET Framework at http://www.icsharpcode.net/OpenSource/SD/ -- complete with a GUI builder and unit testing framework (although I prefer the also-free NUnit: http://www.nunit.org/ for that).  Other free IDEs exist "out there."
 
If you want to learn and play with and develop on ASP.NET, then just go to http://www.asp.net/ and download the free WebMatrix IDE (http://www.asp.net/webmatrix/default.aspx?tabIndex=4&tabId=46). 
 
If you are an advanced C++ developer, you can certainly learn Managed C++ for the .NET Framework using cl.exe, the free command-line compiler that comes with the .NET Framework SDK.  Please see http://winprog.org/tutorial/msvc.html for details.  Also, see your equivalent of the C:\Program Files\Microsoft Visual Studio .NET\FrameworkSDK\Samples\Technologies\CrossDevLanguage\Readme.htm example in your .NET Framework SDK for a cross-language sample using both Managed C++ and C#.  Visual Studio.NET is not required.
 
You can find many, many other resources elsewhere. 
 
With this information, you should be too busy programming to complain about the fact that Microsoft charges for Visual Studio.NET.
 
Key takeaways:
 
1. Thank you, Microsoft, for the .NET Framework SDK and all of the free-as-in-beer tools and documentation you have provided!
 
2. Thank you, .NET Community for so many other wonderful free tools, including Mono, various language implementations, a plethora of code editors, IDE's, utilities, sample code, and everything else!
 
-----
 
P.S.  Here is a link to the thread that motivated this article.  The thread also includes a lot of response and discussion around it.  My original message was Number 9 in the thread.
 
 
I have edited this article based on some of the feedback and may edit it further if the discussion continues. 
 

6 Comments

  • Good response. I've tried each of these solutions and highly recommend learning the framework initially by NOT using VS.NET. Particularly if you're a professional C++ developer - you should have little problem using command lines and you'll gain a better understanding of the depth and detail of the entire framework.



    That said, I didn't see the original comment. But you it was NOT inferred that VS.NET should be for free. As I read it, the complaint is that VS.NET Enterprise is too expensive. Considering that VS6 cost about 50% of what VS.NET retails for, I do think there is some validity to this argument.



    Remember when VS.NET 1.0 ( I prefer calling it VS.NET 2002) was released? There was much talk from MS about an SP1 release. Instead, they gave us VS.NET 2003 - and forced most everyone to pay a nominal fee on top of it.



    Now, what is one to expect when Whidbey is released?



    First off, you have this lingering issue of service packs. Obviously MS is so hyped on 2.0 this and 2.0 that they will likely NOT release anything to fix those pesky VS.NET 2003 bugs.



    Next, consider the .NET version of DLL Hell. VS.NET 2003 pretty much forced any enterprise to do an all or nothing upgrade. So what's it going to be? Pay YET AGAIN to gain the considerable advantages of Whidbey Enterprise or slog along with outdated .NET systems?



    So now we have MS releasing VS.NET Enterpirse versions in 2002, 2003 and 2004. Orcas is being timed with Longhorn in 2005/2006. No SPs for existing versions.



    Compared to pre-dotnet days this IS quite a change - and a costlier one too.



  • That premise is so bogus. How about paraphrasing it like this. To learn to drive a car, I'd really suggest you remove the engine so you can learn how the car moves. Nuff said. The point is this: tools are for a programmer's benefit. At the end of the day, your paycheck is based on your productivity. If a tool increases your productivity, you need to learn how to use it. I have programmers still using notepad taking forever to write simple apps on company time. Now, that there, aint right.

  • If by "that premise" you mean my comments Alvin, reread what I said. I _never_ recommended doing your 'day job' with Notepad. I merely said to LEARN the framework by INITIALLY getting your hands dirty.



    I've run across way too many so-called programmers who think that just because they used VB4 and the old VS6 scripting data ontrols they were real programmers. These 'tools' made them productive - and also caused some of the least scalable and most bloated code I've ever seen.



    If a tool increases your productivity, by all means learn to use it. But when you have problems with your VS.NET apps because you put your business logic into a web service (and not wrap a web service around your classes) or you overuse Viewstate or never take the time to learn one-touch deployment of your WinForm apps... don't be too surprised.

  • the notepad/car thing above is incorrect. it should be "your first car doesn't have to be a Porshe, a Chevette will get you there. Your first .Net IDE doesn't have to be VS.Net Enterprise Architect Edition, C# Standard Edition is only $99 and probably does what you need, if you can't afford that, there are plenty of even cheaper methods".

  • I probably didn't copy in enough of the user group message to give full context. The gist of a long thread, and I have seen many others like it, was that a poor advanced C++ programmer simply could not *learn* .NET programming because nobody would give him a copy of Visual Studio.NET (whatever edition) for free.



    Generally, but not always, professionals who develop world-class .NET software *do* use Visual Studio.NET. Normally, but not always, they work for companies that can afford Universal Subscriptions and the like. Exceptions exist and many individuals and small companies do magic with almost no resources.



    <RantWarning

    type="WhenDinosaursRuledTheEarth">

    My programming history dates from 1962, when we had to learn programming by running most of our algorithms on the cerebral computer under OS-Thinking before we were allowed anywhere near the decidedly non-plastic hardware.

    </RantWarning>



    My real point is that it is entirely possible for anyone with a reasonably adequate PC, Windows 2000 or above, and the .NET Framework SDK to *learn* .NET programming without additional cost. It is also entirely possible to *produce* excellent .NET software without Visual Studio. In fact, you don't even need Windows 2000. Put a free *NIX on some hardware and you can learn .NET via Mono.



    Inside and outside the .NET community, let it be recognized and appreciated that many great projects, some Open Source and some not, were accomplished by out-of-work engineers who could hardly afford a cup of coffee.



    Bottom line, my thesis is simply that it is nearly impossible to stop, or even slow down, a sufficiently motivated engineer!

  • I have made no claim that you can do actually or virtually "anything" for free without Visual Studio.NET. Many tasks remain beyond the reach of the .NET Framework SDK, SharpDevelop, Mono, and other free tools.



    Actually, what is surprising, given Microsoft's history, is *how much* you can do for free!



    As I wrote, above, "My real point is that it is entirely possible for anyone with a reasonably adequate PC, Windows 2000 or above, and the .NET Framework SDK to *learn* .NET programming without additional cost. It is also entirely possible to *produce* excellent .NET software without Visual Studio."

Comments have been disabled for this content.