Coding Horror rips PHP a new one:
The great crime of PHP is its utter banality.
The problem is that banality isn’t a crime, it’s a virtue. Banality is predictability. Predictability is ease of understanding. PHP is a good tool because it’s easy to visualize what your program is doing.
Transparency is important for a programming language. C has it, C++ doesn’t. Javascript yes, Java no. Ruby yes, Rails no. PHP yes, Perl no.
Programming is about programmer’s heads. Tools are there to assist with cognition. PHP does that well.
Personally I’m moving on to Node.js these days, because it doesn’t make sense to use different languages on the server and client. That way I can keep my head in a single language regardless of where my code runs. My goal is to increase the banality of my language. The problem isn’t that PHP is banal, it’s that PHP isn’t banal enough.
C and Java seem more alike in that respect so I’m confused why you don’t consider Java to be transparent. What then do you mean by “transparency” with respect to programming languages?
I prefer languages with static-typing for the type-checking, refactoring and IDE enhancements – but also like scripting languages for not having to wait for code to compile.
In my mind something would be less transparent if it’s hard to work out the intention of the code, or if the type of a variable. In some ways the PHP language in a lot like Java too – so I don’t see how it could be considered more transparent. I must be missing something.
The Java language by itself has transparency. It’s tight and clear. But the platform has more sprawl than most. J2EE isn’t transparent.
There’s nothing like AWT in PHP because the scope of PHP apps is deliberately limited.
Static typing is more important to other people than me. The only place where dynamic typing has ever been a bottleneck for me personally is with Perl, because the data structures can be so complex to navigate.
Recently I’ve been more interested in webapps with Tomcat and Jetty than anything else, using Scalatra and Scalate with Scala. However, I’ve the luxury in some way of working in isolation in this and I don’t really dive deep into Scala as a language. Scala has some great features but it’s uncomfortably close to being languages like Perl and C++ that I’ve never really been fond of at all.
The subject is interesting to me since I am reluctant to give up on Scala yet it doesn’t have that transparency either. I also like transparency and certainly there is also a lot about PHP which deserves much more respect than it got from Jeff Atwood – it’s not the end of the world, LOL.
Functional programming is good for transparency. I can see the Scala appeal from that angle.
Random thought: how come functional programming is such a big buzzword these days? It’s not a new idea, so how did it suddenly blow up?
Good point. I forget about it being functional due to being a hybrid. Of course it is, with respect to functions – I like that style. It could be considered more transparent if it was purely functional. I like the pattern matching expressions and a bunch of stuff. I like concurrent programming with actors, especially Akka.
Personally I didn’t pick it up for being functional. I picked it for being accessible and having an actor model, something like Erlang. I wan’t comfortable with the Erlang syntax for all kinds if work. I might return to it though.