Recommend me THE progamming software.

I took a class this quarter that taught students how to design some basic progams with Visual Basics .NET. To make long story short, programming is hella fun! I really enjoyed the time I spent designing such exciting games as "Yahtzee!" and "TicTacToe!" and would like to learn more.

Alongside the C++ class I'll be taking next quarter, I wish to do some personal side projects, starting with very simple calculation tools for whatever purposes, and see where I can go from there. Luckily, my school's CS department has a deal wtih certain online store (e-academy), which means students like me are able to download a selection of expensive softwares for FREE. But I don't know where to start, so it'll be great if some of the experienced goodjer programmers can provide some advice on what software to get.

I'm looking at two things in particular: Visual Studio 6.0 Professional and Visual Studio .NET Professional 2003. For the life of me, I can't tell the difference between those two, whichever one's better for me etc. , and embarassingly, I don't even know if they're made for programming. Um...help.

EDIT: Maybe there are something valuable in the list that I should download no matter what before I leave college...

Exchange Server 2003 Enterprise Edition
MapPoint 2004 North America
MSDN Library for Visual Studio 6.0
MSDN Library for Visual Studio .NET 2003
Project Professional 2003
SQL Server 2000 Enterprise Edition
Visio Professional 2003
Visual Studio .NET 2003
Visual Studio 6.0
Windows Server 2003 Enterprise Edition
Windows Services for UNIX 3.0
Windows XP Pro

Visual Stuio 6 is old. 2003 is newer. 2005 (not available on e-academy MSDNAA) is the newest. The MSDN library are like massive help files that have code examples and stuff. Map Point is like google maps. Exchange is email server. You will probably need SQL server some day (database server) for some things in Visual Studio .NET. The rest I'm pretty sure you can figure out.

Check out these starter kits. They even have code samples up.

If you want to program in Visual Basic, then Visual Studio .NET (Professional 2003, or 2004, or whatever) is probably your best (and as far as I know, your only) choice for an IDE (integrated development environment - basically a program with a large set of tools for writing, compiling and testing programs.) When you get to C++, it'll be able to handle that too. I think Visual Studio might be a must for MFC or whatever they're currently calling Window's standard set of GUI objects, so if you're into Windows programming, Visual Studio scores again.

I'd be amiss if I didn't tell you that there a large number of free programming environments that have essentially same functionality. I'm a fan of the Eclipse IDE. It's extensible, well supported, plenty fast and supports a number of programming languages. Netbeans is also a pretty good IDE (web apps, particularly) but only supports Java.

Install Visual Studio .NET and MSDN, and start playing around with C#. It's got the same libraries as Visual Basic (so all of the Windows Forms stuff, graphics, networking, etc.), but the language is a lot better. Also, C# is close to C++, so you'll be able to take some of what you learn in one and apply it to the other.

Also, if you have a spare box, you can install Windows Server 2003 and start playing around with the IIS 6 (the built-in web server), and programming web applications in C#. It's a lot of fun as well.

VS .NET is a later incarnation of VS 6. Both of them are powerful code developement environments. If you are going to to program in C# or VB .NET i say go with VS .NET. VS 6 is no longer actively supported (I believe) and VS. NET has many improvements and new features that VS 6 doesn't have.

Another good programming environment that I would recommend is SlickEdit.

VS .Net, and VS 6 are by far the easiest to get started and start making and testing programs. They come with all the debugging tools and default compilers, so very little setup is needed on your end of things.

But if you just want to write code though, nothing beats the simplicity of notepad and a compiler
(harder to setup initially then
Couple very good programmer's editors: pspad, [url=http://www.jedit.org/]jedit. Of course Vim and Emac are supposed to be the most popular editors that hardcore programmers all use. But either case requires you to memorize a LOT of commands.

I use a editor called ultraedit 32 it is not free, but I found it to be worth the money.

For a list of compilers : http://www.compilers.net/. For free compilers for C/C++ gcc is pretty widely used. I have also heard of good things about open watcom C++

In short just download the Visual Studio .Net that will start you off fast.

.NET if you're going MS.

Actually, if you've got the time, bandwidth, and disk space, download all of them and back them up.

But if you're wanting to pick just one to keep - VS.NET.

Isn't this something that would go in tech? Sorry, I don't mean to nag, I find this stuff fascinating so please keep explaining things. Eclipse is looking interesting.

Since you're just starting out, I would use none of them.

I would acquire Visual Studio .NET and the appropriate MSDN library, and hold onto them. My CS department has the same MSDN Academic Alliance deal.

For beginning programmers, I would recommend nothing more than gcc. In a Windows environment, you can avoid the command line and use a nice and easy IDE in the form of Dev-C++.

Also, I may get tarred and feathered by the MS faithful, but IMO, all student programmers should take advantage of the world of Linux, GNU, etc. And more generally, I think it is a crime when student programmers DON'T gain experience in anything other than a homogenized Windows environment - or any single environment for that matter. Check out Linux, check out the Mac, check out everything you can.

EDIT: And Danjo is right, this DEFINITELY belongs on the Tech board.

*Legion* wrote:

For beginning programmers, I would recommend nothing more than gcc. In a Windows environment, you can avoid the command line and use a nice and easy IDE in the form of Dev-C++.

Also, I may get tarred and feathered by the MS faithful, but IMO, all student programmers should take advantage of the world of Linux, GNU, etc. And more generally, I think it is a crime when student programmers DON'T gain experience in anything other than a homogenized Windows environment - or any single environment for that matter. Check out Linux, check out the Mac, check out everything you can.

All very true. Programming sans IDE is the best way to learn why IDEs exist.

I wouldn't blame you if you just took my word that they're usually a good thing and just moved on, though.

IDEs are great for developing a project that has, say, more than one file of source code. But for the beginning programmer just doing programming exercises, an IDE is a hassle, not a help. But at least a lightweight one like Dev-C++ can keep the learning curve as low as possible and keep the student away from the scary "command line" stuff

(There is a part of me screaming that any student programmer that doesn't start at a UNIX shell and learn with a text editor and gcc should be slapped to death, but I know that's mostly just personal bias raging like an inferno )

*Legion* wrote:

IDEs are great for developing a project that has, say, more than one file of source code. But for the beginning programmer just doing programming exercises, an IDE is a hassle, not a help. But at least a lightweight one like Dev-C++ can keep the learning curve as low as possible and keep the student away from the scary "command line" stuff

(There is a part of me screaming that any student programmer that doesn't start at a UNIX shell and learn with a text editor and gcc should be slapped to death, but I know that's mostly just personal bias raging like an inferno )

Reminded me of my first time using VS .Net.
Me:*Okay I want to just start a blank C file to test some code*
VS: *please choose the type of file you want to create*
Me:*err there is no blank file option... How about I just start a blank class...*
Me:*holy cow, what are all these files and code that just got generated?*
Me:*never mind I will just use notepad and gcc...*

yes I was and still am such a noob

Visual Studio is an incredibly powerful tool and the kind of software that shows how great of an applications development company Microsoft can be.

But, just as I wouldn't start a student pilot on an F-16, I wouldn't start a programmer on Visual Studio or most other powerful IDEs.

*Legion* wrote:

Since you're just starting out, I would use none of them.

I would acquire Visual Studio .NET and the appropriate MSDN library, and hold onto them. My CS department has the same MSDN Academic Alliance deal.

For beginning programmers, I would recommend nothing more than gcc. In a Windows environment, you can avoid the command line and use a nice and easy IDE in the form of Dev-C++.

Also, I may get tarred and feathered by the MS faithful, but IMO, all student programmers should take advantage of the world of Linux, GNU, etc. And more generally, I think it is a crime when student programmers DON'T gain experience in anything other than a homogenized Windows environment - or any single environment for that matter. Check out Linux, check out the Mac, check out everything you can.

EDIT: And Danjo is right, this DEFINITELY belongs on the Tech board.

Actually, he really ought to ignore Linux entirely and jump straight to Mac OSX, solely because XCode + IB will teach him a healthy condescension of everything else. Really, using any framework after Cocoa is -hard-.
Then, all those fresh skills can be transplanted to GNUstep on Linux.
It also has the side benefit of teaching a proper OO language, Objective C. C++ has more industry support, but after C# and ObjC, you'll see it for the abomination it truly is.

And really, the more people we keep away from the agonizing pain of makefiles and the commandline, the better. That's just cruel to subject them to.

Really, though, Thirteenth, VS .NET is what you want. It does all the heavy lifting for .NET-level coding. VS 6 is C++-focussed.

And really, the more people we keep away from the agonizing pain of makefiles and the commandline, the better. That's just cruel to subject them to.

makefile? what makefile? there is no makefile, just like there is no spoon

*Legion* wrote:

Also, I may get tarred and feathered by the MS faithful, but IMO, all student programmers should take advantage of the world of Linux, GNU, etc. And more generally, I think it is a crime when student programmers DON'T gain experience in anything other than a homogenized Windows environment - or any single environment for that matter. Check out Linux, check out the Mac, check out everything you can.

Yes, exactly! It's crucial to become proficient, or at least familiar, with all the major approaches. There are a lot of different languages out there, different APIs and component libraries, different debuggers, IDEs and build systems - and all of them influence what programs one can write and how they will be written. Breadth of exposure leads to the breadth of experience.

At the same time, I'd say that if you've already played with VB and liked it, stick with Windows and Visual Studio - it's powerful but approachable, and the advanced options can easily be ignored until they become useful later on. There will be time for other systems and languages later.

(As for general intro to programming, I'd personally recommend starting with a functional language like Scheme, but that's just my bias... )

Thanks for the advice guys. I'll start with VS .NET, and check out some of the other IDEs and options as I gain more exp.

doihaveto wrote:

(As for general intro to programming, I'd personally recommend starting with a functional language like Scheme, but that's just my bias... )

You, sir, have earned much respect.

doihaveto wrote:

(As for general intro to programming, I'd personally recommend starting with a functional language like Scheme, but that's just my bias... )

Didn't we have a thread about that a while back? Someone's blog post about what's wrong with CS or something, recommending starting students in Scheme with that MIT Press book (one which I got as an undergrad, but not in the intro courses). I wouldn't argue against that.

I recommend SML_NJ Speaking of which, I need to dust off my scheme book, functional languages are so much more fun to program with

Staats wrote:
*Legion* wrote:

For beginning programmers, I would recommend nothing more than gcc. In a Windows environment, you can avoid the command line and use a nice and easy IDE in the form of Dev-C++.

Also, I may get tarred and feathered by the MS faithful, but IMO, all student programmers should take advantage of the world of Linux, GNU, etc. And more generally, I think it is a crime when student programmers DON'T gain experience in anything other than a homogenized Windows environment - or any single environment for that matter. Check out Linux, check out the Mac, check out everything you can.

All very true. Programming sans IDE is the best way to learn why IDEs exist.

I wouldn't blame you if you just took my word that they're usually a good thing and just moved on, though. ;)

In the last 3 years, I've worked with about 15 "programmers".
About 3 of them know how to function without Intellisense or code colorization or the debug window.

Listen to Legion on at least 1 point: Learn to do it without an IDE.
IDEs will make you a weaker programmer if you don't understand - and know how to manually do - what's going on behind the scenes.
Nothing gets me cranky at an alleged fellow programmer than seeing them stymied, not by a program that's not doing what they think it should do, but by not knowing how to find out why. It's easy: PRINT. Every language has an analog of this command, thoough it's not always called PRINT.

To get your feet wet in what Legion is suggesting, you can get all the GNU tools for windows, though I've forgotten what it's called now. You get a full shell with all the *nix CLI goodness without the hassle of actually setting up a *nix box.

So, yes, get VS.NET, but don't use it - yet.
Get EditPlus or some other full-featured _text editor_ and learn to work without a net.

As far as language goes, I'd suggest Perl. It was the first one I learned _professionally_ and I still use it whenever I need to prototype/hack/glue something up/together.

For folks that just wanna try out some code in .NET, there's a nifty little tool called Snippet Compiler that let's you do just that. Throw in a snippet of code and see how it runs.

Don't get too caught up on language, but don't start with C++ or Java, IMO. Start with a scripting language like Perl, Lua, Python, etc. These languages may not be the daily bread and butter of professional programmers, but you'll use them throughout your career for gluing dissimilar systems/apps together or just creating nice little tools for yourself(I made one in perl that takes a directory, opens each Powerpoint file, exports them to PNG in separate folders, opens Photoshop, opens each PNG, indexes the color, resizes, and exports to either GIF or JPG, long long ago) and others.

Learn to work without a net - no IDE, no debugger, no Intellisense/code completion/code colorization/highlighting - you'll be a much better programmer for it, assuming you can think critically - which is the most lacking skill in professional "programmers" today.

Many good points there duckilama. At my work, i just switched from a editr + compiler environment to the .NET environment. And I am finding increasingly difficult to not use all the fancy Intellisense, function tracing functionalities. I really hate the thought of relying on those things

Many good points there duckilama. At my work, i just switched from a editr + compiler environment to the .NET environment. And I am finding increasingly difficult to not use all the fancy Intellisense, function tracing functionalities. I really hate the thought of relying on those things

Out of curiousity, do you guys all use Vim or Emac? I never could sit down and learn all the commands, i rather just spend the time to program. Plus, being a gamer, I am finding it difficult to adjust to the "hjkl" of vim...

Notepad

lethial wrote:

And I am finding increasingly difficult to not use all the fancy Intellisense, function tracing functionalities. I really hate the thought of relying on those things :(

Give in. They're good things.

I don't think I saw it mentioned here, so: Microsoft is currently giving away free copies of "Express" (limited) editions of Visual C# 2005 and equivalents in Visual Basic .Net, C++, and J#. Check them out here: http://msdn.microsoft.com/vstudio/express/

Anyone who wants to take a look at Visual Studio but doesn't have access to a discounted "full" version might find these useful.

duckilama wrote:

Listen to Legion on at least 1 point:

Your steadfast support of me moves me to tears.

About 3 of them know how to function without Intellisense or code colorization or the debug window.

I saw that in other students when I was an undergrad.

To get your feet wet in what Legion is suggesting, you can get all the GNU tools for windows, though I've forgotten what it's called now.

Cygwin.

All of the rest of your advice was spot-on too. "Don't get hung up on language" is an important one.

*Legion* wrote:

Cygwin.

All of the rest of your advice was spot-on too. "Don't get hung up on language" is an important one.

Cygwin works, but isn't great.. Interix (Windows Services for UNIX) is a better choice for a full UNIX environment to work in.

Msys+mingw can create native win32 binaries, that don't require the use of cygwin1.dll to operate - it's much more of a thin unix-y layer over Win32 than Cygwin or Interix provide.

Hey Azure Chicken, I am curious about Interix. Can you give me some of your personal opinions about it, and why it is a better Unix env for windows? i am always on the look out for something new

lethial wrote:

Hey Azure Chicken, I am curious about Interix. Can you give me some of your personal opinions about it, and why it is a better Unix env for windows? i am always on the look out for something new :)

Quite simply, Cygwin was developed as a compatibility layer on top of Windows to build Linux software. It is slow and kind of a huge kludge, really.

Interix is, in a nutshell, OpenBSD wrapped around the NT kernel. It exists at a much lower level than Cygwin does - it is effectively a peer to the entire Win32 space. It is, quite literally, UNIX with the NT kernel. As such, I hear tell that you cannot link to Win32 code from inside Interix, and it requires a custom loader to execute Win32 binaries.
Though, this might be a misnomer, as it allows one to run an NFS client/server that standard Windows can talk to, as well as registers itself as a Service. I don't pretend to understand the cutoff.

It comes with a wide assortment of GNU tools, and it is capable of running NetBSD's package collection, pkgsrc. Cygwin can't, afaik.

And it's fully free-as-in-beer.

I don't care so much about Win32 binaries when running a Unix shell, i will definitely check it out. Cygwin at work can really bog down the system sometimes. Thanks Azure.

Never tried Internix. Next time I'm in Windows I'll check it out.