This Week in Programming: Have You Heard the One About PHP?
Oh, how we love to hate on PHP. You don’t have to look far to find a comic likening PHP to Trojan horse that “releases hundreds of tiny horses to punish you every day, forever” or a blog post explaining that “You use PHP because you don’t know better.”
“PHP, as a programming language, is the worst language among all the languages I know how to program in,” begins this first ode to the terribleness of PHP. “PHP is, by a wide margin, the least consistent, most error-prone, worst-designed language of any I know.”
Tell us what you really think, why don’t you?
— Aaron Corso (@corsoa) January 23, 2019
Another blog post on the topic calls the language “a fractal of bad design,” saying that any language worth a damn must be predictable, consistent, concise, reliable, and debuggable, and that PHP violates them all “with wild abandon.”
“Virtually every feature in PHP is broken somehow. The language, the framework, the ecosystem, are all just bad. And I can’t even point out any single damning thing, because the damage is so systemic. Every time I try to compile a list of PHP gripes, I get stuck in this depth-first search discovering more and more appalling trivia. (Hence, fractal.),” the author relates. “PHP is an embarrassment, a blight upon my craft. It’s so broken, but so lauded by every empowered amateur who’s yet to learn anything else, as to be maddening. It has paltry few redeeming qualities and I would prefer to forget it exists at all.”
But don’t worry, these aren’t mere bitter cacophony or empty rant — these posts follow through and deliver all the myriad ways PHP fails, in-depth. But that’s not the fun part. Let’s look at one more.
“There are so many awful things involved in this abomination of a high-level programming language, it outright exceeds full-blown ridicularity,” starts another, which attempts to answer the question of why PHP sucks. “PHP sucks on so many levels that it isn’t even funny anymore mocking it. […] PHP has simply grown too large, you can’t just ignore it. It’s some kind of weird parasitic relationship, or like a tumor that is attached to the World Wide Web.”
And that’s where we’re really at — even five years ago, beating on PHP was already a sad and tired endeavor, and yet we still can’t help ourselves to this day.
This brings us finally to the blog post that pushed me into that endless chasm of PHP-hatred (upon which we’re always teetering at the edge), which comes to us by way of developer Vern Keenan, who offers that he is “as old as the hills,” has “been using and learning about nearly every computer language and database technology since the late 1970’s” and sincerely hopes that this missive “will hopefully be found by other poor slobs like me who are even thinking about using PHP for their cloud project.”
“Dear Go — Thank You For Teaching Me PHP Was A Waste of My Time,” in all honesty, is more a sermon to the charismatic qualities of Golang than it is calculated takedown of PHP, but it still had to offer a swift kick on the way out the door. Keenan explains that he had used PHP long before the “classes and the other Object Oriented Programming capabilities that has given PHP more life lately” came around. Now, however, Go has swiftly taken its place and he’s not looking back — well, just a little.
“Five years from now PHP will be degraded to COBOL status,” Keenan writes. “It will be a language that will employ hordes of mediocre programmers who are managing mediocre, boring code. I’ve seen enough patterns in the IT industry to be confident advising system architects that picking Go over PHP will get you promoted.”
Ahh, so we’ve finally arrived — we rise from the ashes of PHP born anew, with all the hopes and dreams of a new Go-based life ahead of us. Keenan explains why he thinks Go will win:
“Go wins because it strips away all the crap that has been building up in languages ever since we left FORTRAN and COBOL behind in the late 1980’s. Go revives some long-lost concepts in programming, like minimalist code, pointers and a direct approach to data streams. I can see the Go team’s point about how object-oriented programming (OOP) has wrapped things up in layers of complexity and abstraction that we may not need for every situation. […] Go, on the other hand, was designed by computer science gods to go really fast on servers and do tons of stuff in the background that you really need.”
Keenan also points to the rise of serverless as another reason to pay attention to Go, noting that Amazon even brought the Google-backed language to its AWS Lambda serverless platform before Google could offer a similar capability in Google Cloud Platform. The time to switch, he writes, has come.
“Soon, people will start thinking this is a true expression: COBOL == PHP.”
And with that, we end with a little tutorial on using Go in Google Cloud, a feature just released last week.
This Week in Programming
- Peeking Inside GoLang Apps with Dynatrace: Sticking briefly with Go, Dynatrace announced this week its automatic code level insights into Go applications including Cloud Foundry, Kubernetes and OpenShift core components. “There is no need to inject code into thousands of microservices or change the code of a Go application, instead Dynatrace automatically discovers and monitors Go components,” the company explains in its announcement.
- NumPy’s Last Python 2.7 Compatible Release: Speaking of hating on languages, there’s some distaste out there for old Python and NumPy 1.16 is the last release to support Python 2.7, to which many people cheered. According to the release notes, this release “is the last one to support Python 2.7 and will be maintained as a long term release with bug fixes until 2020. Support for Python 3.4 been dropped, the supported Python versions are 2.7 and 3.5-3.7.” For those of you keeping track, you can always check out the Python Clock to find out just how long you have to wait for Python 2.7 to die already.
- GitHub’s State of Machine Learning: For you machine learning aficionados out there, GitHub has released another blog post in its “State of the Octoverse” series, this time focusing on machine learning. The post dives into stats like top languages and frameworks, and explores some contributor stats for projects like Tensorflow and scikit-learn themselves. No surprise, Python leads the pack (though R comes in at the ninth spot this year) and numpy is still the most popular data science package.
Me: *going through TSA taking my laptop/iPad/etc out of my bag*
TSA agent: *sees stickers on laptop* "ok put everything in it's own container so it's easy to handle just like in the cloud ok?"
Me: was … was that a docker joke?
Him: I'll be here all night
— Daniel Beard (@danielibeard) January 18, 2019
- Explaining Istio: Changing gears a bit, this post from InfoWorld is a great explainer for those of you wondering what this Istio thing is that everyone seems to be talking about lately. “Microservice architectures solve some problems but introduce others. Dividing applications into independent services simplifies development, updates, and scaling. At the same time, it gives you many more moving parts to connect and secure. Managing all of the network services — load balancing, traffic management, authentication and authorization, etc. — can become stupendously complex,” the article begins. “There is a collective term for this networked space between the services in your Kubernetes cluster: a service mesh. A Google project, Istio, is all about giving you a way to manage your cluster’s service mesh before it turns into a bramble-snarl.” The rest is worth a read as well, but if nothing else, well, there you have it.
- And Then There’s Infrastructure-As-Code: Another topic you may hear discussed a lot, but have never really dived into — Infrastructure-As-Code — gets a proper treatment from the Crate.io blog, which this week released part three of a series that explains it from the bottom up. Parts one, two, and three take readers quickly from concept to practice, and I found the whole thing rather informative.
Overheard in the office:
"Cannot read property b of undefined"
"To b or not to b"
"Apparently not to b"
— Aaron Corso (@corsoa) January 23, 2019