Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 7 years ago.
Improve this question
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:
What's commonly used? Do developers on Windows commonly use command line, or just be satisfied with an IDE?
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.
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.
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.
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:
GCC - Available Via Cygwin
MS Build can give you similar functionality to what you had with make (I'm not sure if nmake is still used/supported)
Vi/Vim
Grep
SysInternals will have lots of various file/process monitoring utilities to hopefully adequately replace what you miss being able to simply get from /proc
Wireshark(or ethereal) to replace well... wireshark/ethereal/
Tail is available in the Windows Resource Kit
Emacs
Hopefully that covers most of your basic tasks.
Microsoft now has a real shell for Windows: Windows PowerShell.
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.
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.
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.
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
what's a good way to scripting or creating programs unders windows?
How about python?
You will need Notepad, and to learn JScript (not Javascript... JScript), VBScript or Batch. Then you can easily create small scripts, somewhat equivalent to bash shell scripts on Linux.
For the first two, you can read the Windows Script Host documentation.
Windows Powershell is becoming the new Windows scripting language. Being a full .NET language, it is inevitably much more powerful that the horrible old batch scripts one used to have to write (and still retains much of the syntactic sugar of scripting/shell languages).
You can do VBScript without the need to install anything.
Open notepad and enter the following text:
MsgBox "Hello"
Save it as filename.vbs
Double click the file you just created, congratulations - you just created and ran a VBScript.
I'd like to plug AutoIt. It's a free download and comes with it's own editor that can be quickly/easily installed anywhere. The language is very rich and comes with a large library of user defined functions. Integrated context-sensitive help with syntax display. There's even a GUI editor. A final plus is that it compiles to .exe so will run on any win2k/xp/vista/2k3/2k8/7 PC.
I always use Python for scripting on Windows.
A vague question usually gets a vague response.
Download a compiler or interpreter and find a tutorial.
With more information we can better point you in the right direction
I would say there are three clever choices here:
Scripting: Use JSCRIPT because much of what you learn about JSCRIPT can be used in Javascript. You can either graduate to Javascript/AJAX in the browser, or Microsoft .HTA apps.
Or, you could use Python because it has standard modules to do just about anything a sysadmin would do plus addons to access Windows .COM objects and WMI. You can then either graduate to Python on a UNIX platform, Jython (which is Python in the JVM) or IronPython which opens up the entire world of .NET for you.
And there is of course, the non-scripting choice which is about creating programs under Windows. If you choose this you probably have an end-game in mind that is beyond scripting, so start with SharpDevelop and IronPython. Then, as you gain confidence, start working with C# still using the same Sharpdevelop toolset. With this choice you can also graduate to UNIX applications using the MONO .NET environment although if you want to do GUI apps on UNIX you will need to use GTK# instead of Windows Forms.
I'd like to do some light data processing - a little binary data manipulation followed by conversion to text serialization. The result is written to a file, and processed by an external program (run by my program). The data processing is more than I'd care to consider doing in batch files.
I'd prefer to use a scripting language, but not have to install the language first. The target computers are mostly older Windows boxes, which are disconnected from the network (no updates, such as PowerShell)
I'm not familiar with the various language's tools for creating EXE files. Which ones have solutions that work well and don't produce huge files? (i.e., whole interpreter package plus my script.)
For my money (its free) AutoIt 3 is exactly what your looking for. AutoIt produces relatively (250k is the standard overhead) small stand alone exes. It has a full perl like regex engine so your light data processing should be a breeze (I've written some pretty heavy data processing scripts in it myself). When downloading autoit be sure to get the full version including Scite this makes compile to exe a one click operation.
I know I might get flamed for this, but VB 6 is a viable option. Since XP SP2 (I think, possibly earlier), Windows has come with its runtimes installed. Not sure about vista.
Theres also the Windows Scripting Host that uses VBScript and JScript.
http://en.wikipedia.org/wiki/Windows_Script_Host
Lua is an excellent choice for that kind of stuff. You can integrate it in your executable or use the standalone Lua interpreter to run your scripts.
While waiting for answers I ran across Shoes, which can make Ruby .exe (I'm most familiar with Ruby) I got it mostly working, although the size of 2.4MB was a bit larger than I'd like. However, I found that it would crash when changing application focus.
I switched to a 'regular' terminal script, and found rubyscript2exe, which, after working around a problem with rubygems, seems to work, and creates a ~700kb file.
I did rather like some of the options presented, but it's not worth redeveloping at this point.
Python with py2exe. Depends on what you mean by small though.
Would using PowerShell script be something you've considered. The data processing might be richer there.
Why not knock up a .NET application? There are free editions of the IDE, and the Framework comes with Windows as a standard component (which also includes a C# compiler, as it happens.)
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Questions asking us to recommend or find a tool, library or favorite off-site resource are off-topic for Stack Overflow as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it.
Closed 9 years ago.
Improve this question
Some of the most efficient engineers, developers and IT professionals I know usually carry around a common "toolkit" of useful programs, add-ins or utilities which help them for day-to-day debugging, developing or designing.
The question is:
What is in your utility toolkit.. What tools couldn't you live without?
Unix Utilities for Windows
Ack
Its like grep, but better, faster, and does more what you want to generally do with large source collections. Written in Perl, and does complete PCRE because of this. Recursive traversal is default, and it intelligently skips files that are unlikely to match using file-type identification to short cut.
( This means it automatically avoids traversing .svn/.hg/.git directories and thus gives massive speedups )
ack "function\s+foo\s*\(" --php
# find the definition of "foo" in all php files
# decendant of the current directory
Total Commander (GREP, FTP, ZIP, it's all here...I'm not even starting on this one)
Notepad++
WinMerge
Python. Seriously. I use it for a lot of small stuff. I also like to use the command line module for creating easy little project specific "shells" that I drop in frequently used queries etc. (show all tables in the projects db, search for stored procedures etc. - yeah, doing a lot of t-sql lately...)
I tend to accompany big c#/t-sql projects with a little python script that extends the cmd.Cmd class to give me a small collection of helpful queries etc. that I can use to poke around in the database.
Also, I often use python to modify input data (often csv files, but any junk will do) into insert statements etc. Or do plausibility tests on that data.
Currently on my thumbdrive (not ALL software):
Notepad++
.NET Reflector
develop (incase I need a quick IDE setup on a different computer)
C# Default Keybindings pdf
Math tables pdf
Boo Primer pdf
MSDN C# & VB Example projects
My Utility toolkit would have:
1.) Hex Editor - XVI32, or any other
2.) Beyond Compare - Comparison of files
3.) Cygwin shell installable complete with perl, gcc,gprof,gcov,gdb and related tools,bash,vim, development/debugging tools
4.) A model makefile for *nix platform
5.) Winzip utility
6.) Source insight or any other good code browsing tool
7.) Ghostscript and GSView
8.) PDF reader
9.) Good quick antivirus tool/exe
-AD
Currently in Thumbdrive\Tools.
"Edit Plus 3" - lightweight editor that I've been using for ages.
"F# - 1.9.6.2" - great for when I need to throw something togheter since it's usable without an IDE, also a great language for many tasks.
"ildasm"
"Sysinternal Procmon" - great for debugging and getting a feel for what the machine is really doing.
I have the following tools on my USB thumd drive:
SysInternals Suite All their great troubleshooting tools in one download, in case I might need a tool that I didn't download before
WireShark setup
VNC binaries (so I can run the viewer directly from USB) and setup
A couple of Portable Apps:
Notepad++ Portable
Putty Portable
FileZilla Portable
7-zip Portable
Sumatra PDF Portable
WinMerge Portable
I use/carry with me:
.Net Reflector
The SysInternals
Suite (particularly Process Explorer, Debug View etc)
Exescope
Orca (Windows Installer)
Depends
Spy++ OleView
Resourcer
Ethereal
IE Dev toolbar
Depends .Net
DocView
LDP (For LDAP)
Just to name a few
I do a full install of cygwin. It gives me 95% of the stuff I need and hard drive space is cheep. It's a lot easier to install everything then get emacs, gcc, gdb, perl, utilitys such as grep and awk, not to mention the servers it comes with like Apache and MySQL if you want to try something out quick.
grep gives you the biggest bang for the buck. You can use it to search on any type code and many forms of data. It is fast, and very powerful. In code it can locate what you're looking for in variables and function names, but also in comments. You can also pipe results into it, and can thus enhance the utility of many tools available on site.
With some clever hints you can easily make grep search for a specific type of an identifier. For instance, "^function_name" will often find in C code a function's definition, because these start with the name of the function at the beginning of the line. If a search pattern gives you too many false matches, you can filter those out, by piping the result through grep -v.
Many years ago I was stranded debugging COBOL programs on a 1970s-era Perkin Elmer machine running OS/32. The machine lacked programming tools, but had an ancient C compiler (so old, it would accept =+ as the original form of the += operator). I ended up writing a rudimentary grep program, which immensely improved my productivity.
Notepad ++
FF + Firebug
Jquery + bunch of plugins
DBManager
Cygwin for error tracking
Google for help
Docs in CHM & Cheatsheets
I always seem to have a bootable Linux Distro on me in SOME form or other. Whether it be the bootable Pen Drive I keep attached to my Keys, or the multitude of LiveCDs I have for various "diagnostics" - I find that if I am in a situation, generally, where I'd need some sort of tools... a reboot into a Live environment provides me with near enough everything I need, and more
PE Explorer
FAR Manager (great file manager especially when working with lots of ftp sites)
FlexHex
Ida
OllyDbg
Emacs. It's my "does list of things" tool, helpful with quick calculations, with mangling configuration files (I work as a network engineer, there is an awful lot of configuration to be done, lots of it bordering on trivial to generate with either small snippets of code or careful use of keyboard macros).
Here's the tools I use to make Sharepoint solutions:
Visual Studio Team Suite 2008
VSTS Database Edition GDR
Sandcastle
DocProject for Sandcastle
.net Reflector
GhostDoc
CSS Vista
Sharepoint Inspector
Sharepoint Explorer
EditPadPro
CodeSmith 2.6 Freeware (with my own .net 3.5 SP1 gui)
Indigo Rose MSI Factory
Wix
Nmap
Wireshark
Fiddler
Adobe Photoshop CS3
Expresso (Regex tool)
VMRCPlus
Powershell 2 CTP
Quest PowerGui for Powershell
IIS Resource Kit
HyperV
Tools I use because you do not have to install, just drop on system and use:
Agent Ransack
7-zip
PSPad
Robocopy : Need to extract from Windows 2003 resource kit (just grab the .exe)
Fast image viewer that has been around for a long time and proven to work.
IrfanView
ide: visual studio / netbeans (zip file!, almost portable)
editor: notepad++ (portable) with monaco font
file comparison: winmerge (portable)
source control: subversion, tortoise
ticket control: redmine
file manager: free commander (portable)
explorer: IE, FF (portable), chrome (portable), iron (chrom without google crap, also portable), qtweb, arora,
FF plugins: firebug, web developer, xmarks
imclient: pidgin
mail client: gmail
download manager: free download manager (portable)
sites: STACKOVERFLOW!!!, gotapi... and google, all the time...
miscelaneous: launchy (can't live without it!)
virtualization: virtual box (I have a machine image for every environment)
office: openoffice (portable)
lamp stack: xammp (portable!)
disk usage: windirstat (portable), scanner (portable)
pdf viewer: foxit (portable), sumatrapdf (portable)
uncompressor: 7-zip portable
M$ sql comparison tool: sql delta
M$ sql management: visual studio sql manager
mysql
mysql management: phpmyadmin, manager provided with mysql
uninstaller utility: revo unistaller (portable)
registry cleaner: ccleaner (portable)
ftp: filezilla (portable)
as you may have noticed, I have a special predilection for portable applications...
gVim
VS2010 Express
Firefox + Firebug
System Rescue CD
A collection of very useful utilities on a Live CD
There are two tools I simply can't work without
PowerShell
GVim (or really any vim style program)
These tools are so heavily ingrained into my daily routine and greatly increase my productivity.
Since I'm often working on different workstations, I've got into the habit of tagging the stuff that I install on delicious:
http://delicious.com/DavidSchmitt/stdsw
wc.exe (from http://unxutils.sourceforge.net/) so handy.
WinRAR and puTTY. That is all I need (i'm assuming internet doesn't count).
.Net Reflector
Powershell
Stackoverflow.Com
I like to program in Python so I have created a portable Python programming environment on a thumbdrive.
Portable Python 1.0
SPE Python editor
wxPython in Action ebook
Python How to Program ebook
Several Python ebooks from O'Reilly
Various tutorials for Python tools I don't use often
Development Tools
Subversion
Tortoise SVN
Useful tools/utils
Virtual Cd Control Tool
Linq Pad
Reflector
Subversion Commit Monitor
BGInfo
SourceGear Diff Merge
Unlocker
MWSnap
Paint.NET
WinRar
FireFox Add Ons
Firebug
ColorZilla
Visual Studio Add Ins
GhostDoc
The utility toolkit or the Tools List that every developer should have described in the following link from Scott Hanselman:
Scott Hanselman's Ultimate Developer and Power Users Tool List for Windows
I use Espresso (I got it with the MacHeist bundle!), and Firebug for coding. I use Photoshop if I need any images.
I manage my projects with The Hit List.