Using a language exclusively for all your programming task is not productive. While knowing the all the secrets of one language makes you proficient in that language, writing a 100 line Java class to do something a 15 line Ruby script or 20 line PHP script is a waste of time.
Here is my current language use:
- Java – Robotics, Vision Processing, Anything Performance Intensive
- Groovy – Launching anything written in Java, this saves me the time of compiling and writing complex shell scripts to launch the Java program.
- Ruby – General Automation Scripts or Scripts doing emailing or sending data over the network
- Batch/Shell – I use these as launchers for backup/tar/gz or running CRON or other scripts on a set schedule.
- PHP – Everything web, while I could use Rails, for some of this, I’ve not had the need to create a full website using all the ins and outs of this framework. See article on “Don’t Use Frameworks” for justification.
- C or C++ – I use these for interfacing with device drivers or writing JNI (Java Native Interface) wrappers.
- C# – I use for writing windows only programs.
A good idea if you only know one or two languages, is to find the right domain for your language. You may never have the need to use more than two, but if you find yourself struggling with something in a language, or are sick of how unproductive you feel, get a book and start experimenting. Look at WikiPedia for a list of comparison of programming languages.