As a professional programmer, the languages I code in during the day are very much dependant on the particular project I am working on. Also as a programmer I have a very low threshold for repetitive or complex tasks - basically if I have to do something more than twice then I'll probably write a quick program to do it for me (sometimes taking longer than the repetitive task would have done, but I have a lot more fun along the way :-) ). These little programs are throwaway pieces of code. I'll probably never run them more than once - I'll almost certainly never come back to them and I'm certain that no-one else will see them.
I find it interesting what language people choose to write these little disposal programs with - I call it your "Pocket Knife Language". Currently I would usually use C#, despite that fact that I code all day in Java. I would normally use C# just because it is that much easier to access the bits of the operating system I normally run on (Windows) - but there are a huge number of libraries and methods in the .NET framework to do the heavy lifting for me. Jumping between C# and Java is pretty easy for my brain to cope with.
But It's not always been like this for me. I guess my first pocket knife language was probably Excel and then I quickly moved on to Visual Basic. I stayed with VB for a while. At the time I was earning a living writing mainframe code - anything that requires you to write a 30 line program (in JCL) to just compile and run your code is not suitable for inclusion in anyone's coding pocket knife :-) In my professional career I then moved into web development, it was around this time that Java started to appear on the scene and I moved into J2EE work and at some point, I'm not quite sure when, I started using Java as my pocket knife language. I went through a brief spell when I was doing a lot of front end web development that I dispensed with IDE's and compilers completely and JavaScript and the DOM actually became my pocket knife of first choice. However I quickly saw the light. Once I started working on .NET projects professionally it didn't take me long to move to C# as my pocket knife language and it has stuck there for a few years now despite moving back to Java on the professional front.
I was having a chat at the weekend with a friend of mine who is currently doing some very clever and complex work down at a pretty low level which requires him to be coding in C++ all day long - however I found it interesting that he was using Java as his pocket knife language. Other people I work with would use Perl or Python as theirs.
So, dear reader, what is your pocket knife language and why?