Tag Archives: Dependency Hell

What’s so good about PHP?

I’m biased, PHP is fantastic. It has evolved into a super-power among programming languages. I liked Java, I deplored VB, C# is OK (copy of Java), Ruby-on-Rails is really more 4G, but PHP is just a flat out a git-r-done scripting language. Here are some of my reasons:

1. Super fast! Considering it is an interpreted language PHP flies. Even with gigantic script libraries included.

2. No DLL hell. So many people think that DLL hell was only a problem with Microsoft products but anyone being honest will have found DEPENDENCY hell to be exactly the same thing. Watch a whole building full of developers try to get their Rails versions synced with their libraries just to get one widget to work and launch the initial skeleton app. That’s just as bad as DLL hell. .NET versions, same problem. Even JAVA app dependencies can get wonky but PHP’s extensions folder is cake to manage (and they use DLLs!). In fact, for one client we have faithfully upgraded their PHP build with every point release manually and the code almost always works, and when it doesn’t it’s graceful and minor.

3. Loosely typed. This can be a train wreck for junior programmers but seasoned veterans who have delved beyond the 4th generation to make their own products and not just assemble a bunch of other people’s work will know when type matters and when it doesn’t. As it turns out, it VERY OFTEN doesn’t. Making strongly typed languages a real PITA.

4. The Frankenstein factor. All platforms have tempted developers to package bits of functionality into modules for reuse all over the place, even PHP. However, the PHP community began with nuts-and-bolts coders and the modules that come from that community are very large and specific. The small modules of functionality are incredibly mature and compiled into extensions. In other environments, especially the 4GLish of them, the “brilliant” idea was to make tiny modules for this or that. Mix that with some starry eyed kids and you don’t get apps, you get Frankenstein. And more dependencies to create the #2 mess mentioned above. The claim is that these modules speed up the development process, but I have yet to see that happen.

5. Environment. PHP sites by nature have everything necessary for a programmer to step in and modify. No project files, expensive IDEs, gigantic downloads, compilations, or gems to get just right. Even your environment variables can probably be left alone. Simpler is better.

6. Philosophy. The modern MVC philosophy of convention over configuration is an attempt to protect the world from bad programmers, but good programmers do this naturally. MVC is a good idea, and a decent pseudo-standard to code to, but it’s just that, a pseudo-standard. I’ve dug through other people’s models, views, and controllers in different languages and one thing that is certain. Everyone does their own version. In PHP we can implement MVC, and get it just as right (or wrong depending on who you’re talking to) as any other language.

7. The community. The PHP community is cool. Sure, being arguably (Java still holds the top spot, but it is not as web targeted) the the most popular web language out there means all kinds are posting their thoughts but there is a core group of geniuses on the main groups. Helpful folks, and there are code snippets posted to do just about anything. Easily modifiable for our own needs without any of the “hell” from #2 above.

I could keep going but that being said my bias is clear. Perhaps next week I should post an article like “What’s so good about Rails?” I could do it, just don’t know if I could make it to 7 points.