tags:

views:

176

answers:

8

What are your recommendations for setting up a development environment in Windows, especially when not using an IDE. I am attempting to familiarize myself with Windows, and I feel a bit lost. What do developers commonly work on, especially when developing in multiple languages (e.g. Java, Python, C) in the same time.

So far, I have been a hardline using Mac+Linux environments where I love my command line a lot. I pretty much run all my compilations, testing, code repository commands in the terminal and have multiple terminals all the time. Terminal features (e.g. integrated bash completion, easy copy&paste, easy to setup environment variables) and package management tools (e.g. apt-get, port, fink) are quite handy. I dislike hunting down different websites to install their latest binary build.

Coming back to my question. My question is two fold:

  1. What's commonly used? Do developers on Windows commonly use command line, or just be satisfied with an IDE?

  2. For comers from Linux/Mac world: what do you recommend to get up to speed?

NOTE: I realize that a lot of Windows developers haven't used Linux, so they may not know what I'm talking about when it comes to Linux environment.

+6  A: 

It's almost unheard of to not use an IDE for Windows development.

I started programming in the early 80's so grew up on the command line, but nothing beats a modern IDE for productivity.

By far the most common choice is Visual Studio, though I have also used #develop (open source) and find it a fine platform to get up to speed with.

I have used Eclipse extensively (on Linux and Windows) and find Visual Studio to be easier to use. I especially miss options for debugging under windows such as moving the instruction pointer around during debug and change-and-continue (change the code, within limits, while debugging, move the instruction pointer back if necessary, and keep debugging).

If you have used Eclipse, Visual Studio or #develop will not be that hard to get used to.

Eric J.
So how do deal with the case when you want to use a tool with no IDE support yet (e.g. git, mercurial for awhile)
notnoop
"It's almost unheard of to not use an IDE for Windows development." Thats making the assumption that a person is coding business apps. It isn't as unheard of in areas where people do systems development of some form or another.
sparks
Well you can work outside the IDE for things like source control and builds, but I'm not sure how you would manage a codebase of any size without an IDE. How would you refactor anything?
JC
To echo the post below, you definitely want to install cygwin. I use cygwin to get at the basic tools (sed, awk, shell scripts) when they're called for.
emptyset
There are plugins for common tasks (I use AhnkSVN to integrate SVN for example. Works great, easier than command line.) You can integrate external tools using the Tools / External Tools command in Visual Studio. You can pass arguments to the tools such as the path to the current item, target path, etc). I do have Cygwin installed but rarely use it anymore. For GIT integration look at this post: http://stackoverflow.com/questions/507343/using-git-with-visual-studio
Eric J.
+5  A: 

I tend to install cygwin, which is a unix emulation layer and includes many of the standard unix utilities (grep, awk, sed, etc). You can use bash or any other unix shell with cygwin to basically give yourself a unix environment on windows.

There are some downsides, paths are a good example. Windows programs expect windows paths while the unix tools expect unix paths. You can convert between the two using the cygpath program, but sometimes its tricky to know when to use it.

Another thing I do fairly often is create a bunch of batch files that load different programs onto my path. This allows me to have different version of say java installed and I can pick the version I want to use for any given shell session. I link a bunch of these together so that I have a full environment for the program I'm working on. For example, if I require java 1.5, maven, subversion then I would have a batch file to load each into the environment, then have a master file that loads all of them for a standard environment.

This approach gives a lot of flexibility and is really easy to maintain and work with different environment simultaneously.

Bryan Kyle
And if you install Mintty, it looks nice too! ;DOn question: I would install... Netbeans full (Java, JS, Ruby, PHP support, among others) and VS2008. Together with cygwin, you can pretty much do everything you need.
wtaniguchi
I hadn't heard of mintty, I'll be sure to check it out!
Bryan Kyle
+3  A: 

Most windows developers that develop on the microsoft stack of products probably use Visual Studio. For windows development without Visual Studio, SharpDevelop is the current most popular alternative.

However if you are looking for a user experience more similar to linux you can always use windows command prompt and all of the command prompt compilers still exist. Just like with linux you'll have to modify your environmental variables to make everything work you you'd like it to.

If that still isn't close enough to the feel on linux, you can try out Cygwin.

Many of your common utilities from linux like gdb do have windows builds as well.

And of course there is the Eclipse IDE that is used for many languages, by many people, on multiple platforms. It is very extendable.

Some other tools you may be missing:

Hopefully that covers most of your basic tasks.

sparks
Also check out NAnt as an alternative to MSBuild. http://nant.sourceforge.net/
TrueWill
+1  A: 

In addition to Cygwin, there are ports for a lot of the GNU utilities and toolchain to Windows. GnuWin32 seems to be a more up-to-date version than UnixUtils. MSYS is essentially a port of BASH to Windows, but it's fairly useless without the MinGW userland.

R. Bemrose
+1  A: 

C++ / .NET Development: Visual Studio 2008
Java / PHP Development: Eclipse IDE, which also supports C/C++.

For a non-IDE solution, Notepad++ is a very good code highlighter that supports many languages.

Will Eddins
A: 

Simply install cygwin. The quality has improved dramatically in recent years. I'm currently running cygwin x64 on Vista, and it's great.

One thing to especially take note of in cygwin is your path. Most troubleshooting with scripts and installed software should begin there.

The other tip I'd give is to use the rxvt terminal over the standard issue cygwin terminal. It might be installed by default nowadays, but check to make sure.

emptyset
+1  A: 

Microsoft now has a real shell for Windows: Windows PowerShell.

TrueWill
A: 
  • Visual Studio for .net/C++ (even the express editions are useful)
  • The sysinternals tools rock, especially Procmon and process explorer.
  • If you do native/C++ work knowing windbg can be helpful
  • Notepad++ and gvim are my preferred editors
  • For doing command line/shell stuff I often use python to write short scripts (for anything but the simplest batch file)
  • If you are familiar with .net then learning powershell isn't much of a stretch and there is a ton of functionality available
nick