Originally Posted by Plan9
I'm inclined to ask if you've ever written anything substantial in any other language? Because Perl, Ruby, Python (and, in fact, every
other language) are so much better suited for desktop and/or server applications. I can't think of any reason to run non-web-based PHP apps aside because the developer doesn't know any other language.
All the stuff you bring up isn't wrong... but they're mostly avoidable obstacles that might make learning tricky - not fundamental inconveniences that have no adequate solution.
At the end of the day I'm going to have a large number of files and a large number of classes using an IDE. There are going to be miscellaneous scripts,and there are going to be very structured classes.
I like the features that scripting languages have which enable code to be written in a fraction of the time and length. I wish python had autoloading. I with python had concise type hinting. I with python had multiline lambdas. I wish Java/C++ didn't need to be compiled. I wish PHP's performance wasn't horrible.
don't like built in functions? write your own. solvable.
don't like subsets of the language? don't use them. solvable.
want to do something the language cannot physically support? you're out of luck. unsolvable.
I find python's advantages slipping away very quickly if, for readability purposes, I have to avoid writing quick and short lines to do complicated operations on ad-hoc data structures. If something is complicated, it will be abstracted. When that happens I don't care if the code is 5 lines or 10 lines... it's somewhere else entirely. There will be several structured classes for that complexity, and not a dictionary of lists of dictionaries of tuples. I might be able to manipulate, filter, map, and sort that quickly in Python... but I'm not going to be able to read that code 3 days later.
PHP is fine for web stuff and non-web scripts (not apps) that don't care about performance. I just don't know any popular languages with traditional syntax that find a balance between the rigidity and verbosity of stuff like Java/C++ and the brevity, power, and flexibility of stuff like Python and OOP.