Ok, it the last month I’ve used every one of these languages and most of them for the same project. Some highlights:
- Java — decompilers are very useful in reverse engineering
- C++ — std::string in naive use sucks for performance (wrote a pooled string ala Java String — performance increased by 10x)
- Python - is easy to extend in C or C++
- PHP - has the best web frameworks
- Python - the spaces thing is prone to error, it really is hard to add addtional conditionals and insure that you got all of a if/for/… loop
- PHP & Python - Lists are good as a basic structure
- Python - As far as I can tell, it’s not a true lambda
- PHP - Lax typing, both good and bad…
- C++ - when it’s right, it rocks for performance
- Java - a good way to rapidly build app and algs that work
- Java - it’s easy to over object an API
- C++ - boost is your friend, but it comes with a cost
- Python - documentation is almost one step below C++ in quality — long topic around virtuous circles and how Java/PHP rock for docs.
- Python - has the libraries that PHP only wishes it had, written by people who know what a library should look like.
What’s the upshot…
- Use PHP to build web front ends — the ability to find a PHP programmer is pretty easy, odds are it’s not going to make/break your application.
- Use simple RPC mechanisms (e.g. JSON RPC) to Python back ends for the heavy lifting — lots of choices here, but odds are it’s not going to make much difference.
- Extend your Python with C++ for the computational parts of your heavy lifting — think peep hole optimization.
I used to think that using Java as a back end was the “only” way, but it’s more like the “cult of Java” vs. the “cult of …”, I’m not into religion just getting a job done. When it needs to be fast both languages will get it there, but you have to remember to spend your time optimizing only where it counts…



