“real” programming languages
December 18, 2015 10:48 AM   Subscribe

"So when I started programming in 2001, it was du jour in the communities I participated in to be highly critical of other languages. Other languages sucked, the people using them were losers or stupid, if they would just use a real language, such as the one we used, everything would just be better.

Right?"
Contempt Culture, Aurynn Shaw (The Particular Finest)
posted by joseph conrad is fully awesome (207 comments total) 43 users marked this as a favorite
 
Haven't we had enough FPPs about which D&D edition is best?
posted by Pope Guilty at 10:52 AM on December 18, 2015 [16 favorites]


"It’s 2015, and I saw a presenter at a Python conference make fun of Java. How would that feel to people trying to move from Java into something else? I wouldn’t feel welcome, and I’d have learned that the idea that the Python community is welcoming wasn’t true."

This sensitivity cult stuff has really gotten out of hand. Java blows.
posted by xmutex at 10:53 AM on December 18, 2015 [29 favorites]


the only way I could like this article more is if the author ended it with "p.s. programmers should organize unions instead of letting their anxious need to seem 1337 separate them."

sometimes I get all snooty about using vi instead of another text editor, but when it comes down to it the chief reason I learned vi is that it uses the same movement keys as Nethack.
posted by You Can't Tip a Buick at 10:56 AM on December 18, 2015 [43 favorites]


Amongst Javas problems not being "real" certainly isn't one of them. Having a bit too much "real" junk to be wieldy is probably closer to the truth. and TBH a lot of that is going to be environment and ecosystem rather than the language itself, see also the other fat middleware languages like C#.
posted by Artw at 11:01 AM on December 18, 2015 [7 favorites]


when I realized that I wasn't keeping up with the latest language/framework trends, and in fact never would be able to keep up with language/framework trends, I decided to go the other way altogether and learn the oldest systems I could find.

so basically COBOL or GTFO is what I'm saying.
posted by You Can't Tip a Buick at 11:03 AM on December 18, 2015 [19 favorites]


This sensitivity cult stuff has really gotten out of hand. Java blows

'Sensitivity cult' reminds me of people who think not being a jerk is 'PC gone mad'.
posted by Space Coyote at 11:04 AM on December 18, 2015 [96 favorites]


A lot of this is strikingly accurate when applied to academic life as well. I liked this observation in particular:

"By perpetuating a culture of contempt as the means of acquiring credibility, I was able to avoid these difficult, introspective questions."

No doubt the arrested psychological development of many academics can be explained as a product of an unwarranted sense of self-superiority coupled with a zero-sum and exclusionary status culture.
posted by informavore at 11:04 AM on December 18, 2015 [27 favorites]


I wonder what healthy, sportsmanlike competition between programming language communities would be like.
posted by LogicalDash at 11:07 AM on December 18, 2015 [4 favorites]


A lot of it is that building new stuff in new environments is a hell of a lot easier and fun than maintaining old stuff in old environments, so it's very tempting to look at that cruft old PHP codevase and say "screw that, I want nothing to do with that, I want to go off and be a node developer instead".

And then your nose codebase grows and rots and you end up facing the same situation all over again.
posted by Artw at 11:08 AM on December 18, 2015 [18 favorites]


Man, I work in Visual Basic.Net and I've been campaigning for years to get my company to start using a real programming language. Doing work in C# feels like it's less toy programming.
posted by graymouser at 11:08 AM on December 18, 2015 [3 favorites]


Contempt Culture: The Social Construction of Nerd Slap Fights
posted by gehenna_lion at 11:08 AM on December 18, 2015 [9 favorites]


We've gone from geeks trading insults over coding tools to academia sucks in 7 comments. Wow, quite a leap.
posted by aught at 11:09 AM on December 18, 2015 [3 favorites]


Graymouser - theoretically you should get all the same stuff and it compiles into the same code, but year, C# feels nicer, and you get more support.
posted by Artw at 11:10 AM on December 18, 2015 [2 favorites]


Well, in the world I live in I've seen programmers move toward polyglot / pluralistic approaches to programming languages. The contempt stuff seems like the stuff of yesteryear for me.

That being said, the contempt stuff served a purpose. For a long time Java/C++ programmers dismissed anything else as a toy (even Java was deemed a toy for quite a while). Spurious poorly researched viewpoints about dynamic languages not being 'real' programming languages abounded. Those communities retaliated in kind, and that retaliation (and the successful delivery of serious applications) got them a seat at the table. Those views are extremely non-mainstream now.
posted by sp160n at 11:11 AM on December 18, 2015 [16 favorites]


Sorry but PHP - which I happen to be doing work in right now so believe me I don't have a bias against PHP developers - is actually bad. Or rather it has historically been pretty awful but in recent years managed to pick up enough from other languages to function as a modestly inferior imitation with a bunch of cruft. But seriously, I've been using it for three years and I still can't think of one task for which I would pick it on purpose over something else. Much of the ire I see for PHP these days comes from people like me who have had to work with PHP after having exposure to much nicer things - or people who started with PHP and moved on to nicer things.

However - PHP is really an outlier in being an actually inferior language, probably the only one I would name as such. Even the much-maligned Javascript turned out to be a superficially unattractive language with perfectly solid fundamentals. And it's absolutely true that you can (and will) write awful code in any language, which is ultimately more important to worry about.
posted by atoxyl at 11:12 AM on December 18, 2015 [34 favorites]


Empathy is certainly not the strong suit of the tech industry. I notice this just about every day and think about it often. I wonder what it'll all look like in retrospect. Will you be able to believe how worked up you got over a programming language? I already can't. The further along I get in my career the less I care about this stuff and the more absurd it seems to me. I hope this is a sign that the industry is at least capable of growing out of it, but at the same time, when so much communication takes place in media where the snarkiest comment gets the most +1s/upvotes/etc, I think it'll be a real uphill battle. Basically, the aspects of online communication which make it so revoluationary also tend to make those means of communications ripe to be used to boost one at the cost of another.
posted by feloniousmonk at 11:13 AM on December 18, 2015 [10 favorites]


I had a whole long thing written out about Java this and python that and C and whatever, but no. Tools are tools. Programming languages are tools for thinking. Anyone who says "this is the best tool" without specifying the very specific thing they want to accomplish is a fool, and a person who says "this is the only tool I think with" is effectively saying "... therefore these are the only thoughts I can have."
posted by mhoye at 11:13 AM on December 18, 2015 [24 favorites]


This sensitivity cult stuff has really gotten out of hand. Java blows.

OK then. From zero to exactly the exclusionary, contemptuous gate-keeping that the article describes in 5 minutes. Thanks for proving the point. (Unless you're being sarcastic, in which case it wasn't funny.)

I also love the vapid, content-free nature of the insults, generally. In what sense exactly does java "blow"? Do you reject the object oriented paradigm as a whole? Do you think the libraries are bloated? Hate the zillion-letter package and variable names? Think the JVM lacks sufficient performance? Etc.

If people would make specific criticisms, we could persuade each other, agree to disagree, learn to use better tools, whatever. But no, my language of choice for whatever project "sucks" and that's that so I guess I'm just an asshole.
posted by Joey Buttafoucault at 11:16 AM on December 18, 2015 [17 favorites]


And I'm sure there is an argument to be made that PHP did serve its purpose in the early days of web development.
posted by atoxyl at 11:17 AM on December 18, 2015 [3 favorites]


PHP seems like a case of a single purpose tool that was good for its original purpose being stretched too thin. Also the general philosophy of how to do things on the web is pretty much changing out from underneath it.
posted by Artw at 11:17 AM on December 18, 2015


Poor PHP continues to get shat upon, even while it provides the backbone to the bulk of the world's internet sites.
posted by sutt at 11:17 AM on December 18, 2015 [17 favorites]


What atoxyl said.
posted by Artw at 11:17 AM on December 18, 2015


I find it astonishing that someone would read this essay far enough to quote a paragraph of it, and then conclude that the appropriate thing to do would be to embrace contempt culture. That says a lot about a person.

For me the key part of the essay is this:
I’d been loudly criticising the language and, through that criticism, implying that people using the language weren’t as good me, weren’t good programmers. And suddenly I was thinking about all the myriad ways that someone with that background would feel othered by me, like they didn’t belong and weren’t welcome in the communities I was a part of.
Contempt is a mechanism to protect a culture, to keep it insular, to make a little clique. But we're not twelve year old children, we are supposed to be engineering professionals.

The specific observation about gender is really on point, too. PHP is frequently derided, but if it is a technology that is more likely to be used by women (as this article states) then that causes a problem.

It's possible to be aware of a technology's deficiencies without being a jerk about it. It's possible to critique a language without making the people who use it feel insulted. May I submit that perhaps this article is not a good jumping off point to talk about whether you hate Javascript or PHP or Go or Java or whatever? This article is about the culture created by that kind of contempt. You can learn something from it.
posted by Nelson at 11:18 AM on December 18, 2015 [40 favorites]


I like this xkcd myself.

But, more to the point, the article isn't just about programming languages. It's also about a gendered hierarchy in technology and cultural gaps between STEM and design fields. I don't know if it really applies in this case, but the phenomena that male-dominated technical labor is "real" while female-dominated technical labor is not goes way back. Case examples include early telecom "operators" who were feminized because unmarried women were cheap to employ and you could pack more of them in the sweatshop switching rooms, and the devaluation of Soviet doctors after WWII left them with a literal manpower shortage.

The point is that the person who cut their teeth on Wordpress or J2EE is likely just as much a "programmer" as the people who blundered their way through SICP.
posted by CBrachyrhynchos at 11:20 AM on December 18, 2015 [11 favorites]


There's some decent points in there, but the argument seems to be people made fun of PHP instead of doing the work to make PHP better. And that mocking PHP is the same as mocking PHP users.

This seems like a really backwards way of doing things. PHP was probably better for making websites when it first came out than Python or Java. My basic understanding is that it had much better templates. But people who didn't like PHP went ahead and took what they liked from PHP and added it to languages they liked better as a whole.

I think the thing is that the focus needs to stay on code and performance, rather than blaming or mocking people. It's much more useful to say, "Programming language X can set up a simple server with this code, and programming language Y does the same with this code. I think X is the more readable, and I'd feel safer refactoring it without introducing bugs" than to say, "Programming language Y's designers didn't know what they were doing and it's too late now to fix it, and the sad souls using Y just don't know any better."

What I've seen on Lobste.rs seems to be mostly a polyglot perspective, though. People use whatever language suits the task. Keep in mind even a static website takes three languages with different syntax. There's more praise or contempt for paradigms than languages. Object oriented code is getting less fashionable, while functional is getting more attention. And many recently designed languages let you code in either style. Even C++ got lambdas.
posted by mccarty.tim at 11:20 AM on December 18, 2015 [3 favorites]


PHP seems like a case of a single purpose tool that was good for its original purpose being stretched too thin.

Stretched so thin that people have ceased using it. Er...

And I'm sure there is an argument to be made that PHP did serve its purpose in the early days of web development.

I wonder to what purpose 81.7% of internet sites put PHP. Maybe baking cookies? Combing wookies?
posted by sutt at 11:21 AM on December 18, 2015 [3 favorites]


And I'm sure there is an argument to be made that PHP did serve its purpose in the early days of web development.

PHP is an object lesson. It is hugely accessible, and it turns out that a flat learning curve and easy rapid prototyping matters a lot more than great design or engineering as far as usability and uptake is concerned.
posted by mhoye at 11:23 AM on December 18, 2015 [40 favorites]


I don't think the leap from talking about programming culture to talking about academic culture is that large, though my impression here may be colored by my dual status as a programmer and an academic.

But uh that aside, both are very, um, Ravenclaw fields — everyone is always anxious that what they're doing isn't the best, or isn't as good as what our neighbors are doing, and this anxiety 1: makes us act like snooty assholes and 2: makes us more or less slit our own throats on a regular basis.

Fun fact: when K-12 teacher's unions started up in the U.S. in the early 20th century, they approached university professors to see if they'd like to organize together. The professional organizations of university professors violently rejected these overtures, because they were not mere teachers, but instead Srs Researchers, and they did not see associating with mere teachers as profitable.

Flash forward a hundred years and change and we see that tenure in universities is being gutted, along with instructor salaries and workplace autonomy. Meanwhile, K-12 teacher's unions remain strong and effective at defending their members.

Elitism (and its little brother, 1337ism) is never a good idea for workers. In the long term, it's a luxury we can't afford.
posted by You Can't Tip a Buick at 11:24 AM on December 18, 2015 [41 favorites]


And now, I realise how much of it is an anxiety response. What if I chose the wrong thing? What if other people judge me for my choices and assert that my hard-earned skills actually aren’t worth anything?

I think this strikes at the core of the matter. A huge percentage of people in this MIT and Stanford industry are actually totally self-taught and without credentials beyond their personal experience. If you look at it from this perspective, just about anything different and popular is a potential challenge to your livelihood, especially if you're not convinced that you have the ability to convince someone you can master it due to your lack of formal credentials, CS knowledge, etc. If you're a C/C++ person, maybe you hate Java like you would hate the hunter from the neighboring tribe who is suddenly getting a little too good at capturing the choice game. Sometimes this sort of hostile engagement is just the result of being an asshole, but a lot of the time, it's rooted in some sort of deep seated impostor syndrome insecurity.
posted by feloniousmonk at 11:25 AM on December 18, 2015 [13 favorites]


e, and it turns out that a flat learning curve and rapid prototyping matters a lot more than great design or engineering as far as uptake is concerned.

Actually, a flat learning curve would mean that it's basically impossible to learn. You mean a steep learning curve, meaning it's super fast to learn.
posted by signal at 11:26 AM on December 18, 2015


(apologies for not having cites or detailed info on university professors being approached by K-12 unions as potential members. it's something I read about years and years ago. If I had to guess, I'd say I picked it up from one of Marc Bousquet's books or articles)
posted by You Can't Tip a Buick at 11:26 AM on December 18, 2015 [2 favorites]


"Contempt culture" did not arise in a vacuum. The disrespect for languages like Java and PHP isn't rooted in the languages themselves. It comes from technical people being required to use these technologies in situations where it wasn't appropriate, often as a business requirement.

Very few people would be publicly declaring "Java sucks" if the decision to use it or not was in their hands.

(for that matter, a lot of the reason that "Java sucks" is due to terrible technical decisions made for valid but unpleasant business purposes.)
posted by phooky at 11:27 AM on December 18, 2015 [15 favorites]


I also love the vapid, content-free nature of the insults, generally. In what sense exactly does java "blow"?

The island is notorious for strong trade winds.
posted by Sangermaine at 11:28 AM on December 18, 2015 [27 favorites]


To say nothing of the numerous volcanoes.
posted by jedicus at 11:29 AM on December 18, 2015 [4 favorites]


Part of this too is just part of aging user bases. I bet the average age of a PHP dev skews waaay younger than someone who say works in Perl (we still exist, I swear!)
posted by boubelium at 11:29 AM on December 18, 2015 [3 favorites]


My favorite critique of PHP the language is Eevee's essay PHP: A Fractal of Bad Design. Later they goes on to back up many of the points in that essay by providing a comprehensive tutorial showing how easy it is to get a web app running with a few basic Python tools, in Quick Doesn't Have to Mean Dirty.
posted by rustcrumb at 11:29 AM on December 18, 2015 [11 favorites]


The turing tarpit languages (brainfuck, befunge) and the actively programmer hostile languages (intercal, malbolge), do a great job of proving that a language can be objectively bad.

I'll grant that there are many tools that will be needed for the many scenarios which require programming, but you can't extend this so far as to say that every tool is inherently useful.

In the tech world, better tech doesn't get picked up because it is superior - it gets picked up because the cost of switching is lower than the net improvement after switching. Depending how long the alternative has been popular already, your tool may need to be 10x as good as the alternative or it won't be useful at all.

None of this is meant to defend "x sucks" posturing. I don't think the problem of tribalism is solvable (not in tech, not anywhere else), but we don't have to simply surrender to the ugliest and most harmful manifestations.
posted by idiopath at 11:30 AM on December 18, 2015 [1 favorite]


If social justice advocacy means using popular tools like PHP, Java and Windows, I guess I'm not a SJW after all.

BRB, just buying a fedora and a copy of Atlas Shrugged.
posted by acb at 11:32 AM on December 18, 2015 [5 favorites]


du jour? I think he means de rigeur...
posted by edheil at 11:33 AM on December 18, 2015 [4 favorites]


PHP's success is not only because it's easy to learn but also because it's dead simple to make a change and see how it affects your site. You don't need to run any rake tasks or redeploy assets, you just save your file and reload your page. The article mentions the very common path of going from using WordPress or Drupal, wanting to make a change, and ending up as a module developer in a short amount of time. Many rails CMS projects have come and gone without gaining any organic uptake or community around them, and I think the few extra steps to go from your code to HTML on a page is the reason. PHP being natively a web language is a specific advantage of the design of the language, and the success of PHP projects is not just a right-place-right-time thing.
posted by Space Coyote at 11:33 AM on December 18, 2015 [13 favorites]


rustcrumb - that is a classic takedown, but it is now pretty outdated. PHP is still inconsistent and allows for sloppy shit coding, but a lot of the examples from that page are no longer valid.
posted by boubelium at 11:33 AM on December 18, 2015


I was just thinking about contempt in IT today and how it's changed with the recession, nice FPP timing. It does seem to be a combination of both a maturing industry and one that's finally gone through a crisis where it's no longer enough to know how to code (at least not in the IT consulting industry here in France). Coding's now just one base thing among others – design teams, test teams, project management teams. It used to be that dev teams were the superstars. I still remember being told by more than a few managers that I had a lot of talent communicating with devs because I laughed off their contempt and met them at the geek level. You don't hear that sort of thing any more – dev teams have had to up their communication ante.

"Empathy is certainly not the strong suit of the tech industry. I notice this just about every day and think about it often. I wonder what it'll all look like in retrospect. Will you be able to believe how worked up you got over a programming language? I already can't." - feloniousmonk

At the worst of the recession it was particularly bad. Companies were laying off people left and right, trying to manufacture reasons as best they could to pay the least unemployment possible (again, this is here in France). They bred and raised socipathic outlooks purposefully so that people were at each others' throats, fighting for scraps, hoping their salary would just be frozen for the third year in a row rather than ending up at a surprise review where they'd be told "so-and-so say you're not a team player, we don't like your tone, you're fired." Employment lawyers were so swamped that procedures were averaging two years, so a lot of wronged employees just threw their hands in the air.

Lately it's been picking back up though. And companies who did the worst of the sociopathy breeding are discovering that they didn't just shoot themselves in the foot, they sold their souls to the devil, and the devil's come to claim his dues. Less bad ones are scrambling to paint themselves as empathetic, finally supporting more human managers and realizing, holy fuck, people on teams with empathetic managers aren't quitting in droves like people under sociopathic managers are. And they're more productive and reliable over the long term (because they know their work is valued and that they're trusted). I've never understood why empathetic values aren't more widespread in the workplace, it's so obviously beneficial to all involved. note that I do actually understand, because the way managers and IT people are educated leaves much to be desired. But still. Some things don't require a university education to be learned.
posted by fraula at 11:34 AM on December 18, 2015 [4 favorites]


Poor PHP continues to get shat upon, even while it provides the backbone to the bulk of the world's internet sites.

Also the main supplier of the world's internet site vulnerabilities. PHP programmers are fucking dangerous.

Also, most of those sites don't get any noticeable traffic. The ones that do have written their own versions.

It's a pretty funny language design, though.
posted by effbot at 11:34 AM on December 18, 2015 [10 favorites]


It didn’t matter that it was (and remains) difficult to read, it was that we were better for using it.
A Perl guy, then. :)
posted by edheil at 11:34 AM on December 18, 2015 [4 favorites]


You mean a steep learning curve, meaning it's super fast to learn.
The popular meaning of "steep learning curve" is "difficult to learn".
posted by ArmandoAkimbo at 11:38 AM on December 18, 2015 [16 favorites]


Poor PHP continues to get shat upon, even while it provides the backbone to the bulk of the world's internet sites.

I bet that "bulk" isn't by revenue. Millions of One Direction fan WordPress blogs no one looks at don't mean much. Hell, this "bulk of the world's internet" claim is on it's way out, since WordPress is moving over from PHP to NodeJS.

And like effbot posted above, Facebook uses PHP, but they worked it over so much it really isn't PHP anymore.
posted by sideshow at 11:41 AM on December 18, 2015


The popular meaning of "steep learning curve" is "difficult to learn".

Yes but the technical meaning is "quick to learn".
Would you say this discussion is more technical or popular?
posted by signal at 11:43 AM on December 18, 2015


Three comments in 10 minutes about how PHP doesn't really count. It's astonishing.
posted by Nelson at 11:43 AM on December 18, 2015 [8 favorites]


Also comments, the first starting "actually," correcting someone's use of an idiom in English about "learning curve".
posted by Nelson at 11:44 AM on December 18, 2015 [12 favorites]


I don't think contempt culture is limited to STEM fields. I've worked with plenty of dudes who mock reality, daytime, and LifeTime television programming but have nothing but reverence for professional sports and WWE. I often think of art as a tool for people to gain vicarious experience and learn how to change or conform to society; in that respect TV, film, music, journalism and literature are not much different from programming languages.
posted by infinitewindow at 11:44 AM on December 18, 2015 [2 favorites]


Most of my dislike of PHP is from trying to work with PHP, TBH, and and more of an assumption that it will make things harder than "less real".
posted by Artw at 11:45 AM on December 18, 2015


Part of this too is just part of aging user bases. I bet the average age of a PHP dev skews waaay younger than someone who say works in Perl (we still exist, I swear!)

every time i have to look up a FORTRAN question, i get ads for erectile dysfunction pills
posted by indubitable at 11:47 AM on December 18, 2015 [17 favorites]


since WordPress is moving over from PHP to NodeJS.

This would be news to Matt Mullenweg. Wordpress is its plugins and those are written in PHP and will continue to be.
posted by Space Coyote at 11:47 AM on December 18, 2015 [2 favorites]


Except that the choices people make with regard to which language (and, by extension, the tools, libraries, communities, etc. surrounding them) have significant, real world consequences for end users. I have written PHP and Perl for money and I think if you choose to start a new project, in 2015, in either of those languages you are endangering your users. There's so much bad code, examples, documentation, libraries, received wisdom, oral history and general crap in those ecosystems that the burden of creating correct, safe code is enormous.

If you build an apartment building in 2015 out of mud and sticks, you are endangering those who live in it. In construction, this is illegal. In programming, this is the norm.

So yes, I think we should be nice and we should not use this as an excuse to reinforce the existing power hierarchies that exist but no I don't think "just shut up" about the choices we make as programmers is acceptable.
posted by Skorgu at 11:48 AM on December 18, 2015 [12 favorites]


The original poster seems to conflate programming languages with identifiers like race and gender, which is not a good metaphor. One cannot change one's ethnicity or (psychological) gender, but languages one can pick up and drop.

Of course, if the only languages that are welcoming to people who aren't straight white males are populist ones like PHP and ones used by corporations with HR departments like Java, that shows a deeper issue: the open-source culture needs to get its house in order. Perhaps declaring war on languages with reactionary cultures, regardless of their technical merit, and seeking their annihilation in the mindshare stake unless they do so, is one way to go about this.

On a tangent, there are languages which aren't corporate/populist lowest-common-denominator designs and don't have alpha-bro cultures around them. Apple's now open-sourced Swift is a good example: the community actually has a code of conduct that precludes any shenanigans of the sort seen in, say, the Ruby community. I'm guessing Apple can't afford to have someone turn up at a Swift conference with slides full of “ironic” porn references. Perhaps other language/technology communities should learn from this.
posted by acb at 11:49 AM on December 18, 2015 [2 favorites]


Would you say this discussion is more technical or popular?
"Popular" meaning "this is how most humans generally use it".
Also comments, the first starting "actually," correcting someone's use of an idiom in English about "learning curve".
My comment didn't start that way, but I assume you're talking about me. If you can make a list of other kinds of posts you hold in contempt, I'd sure appreciate it.
posted by ArmandoAkimbo at 11:51 AM on December 18, 2015 [2 favorites]


I don't think contempt culture is limited to STEM fields.

Oh jeezuz, no kidding. I mean, anyone ever read just about anything on the internet. Find anyone who shares your opinion, and you've got the beginnings of contempt culture.
posted by 2N2222 at 11:51 AM on December 18, 2015


Being an asshole about computer languages has been a thing since Real Programmers Don't Use PASCAL. (Which is an ironic essay, because if the industry had adopted something more Pascal-like instead of C we would have probably avoided a whole class of security errors down the line.)

When you get older though you realize that all technologies are trying to kill you and that pretty much every PL is the devil's tongue. I use as many of them as possible so that none of them get the upper hand.
posted by RobotVoodooPower at 11:52 AM on December 18, 2015 [10 favorites]


I was just mulling doing an FPP on this piece: "My positive experience as a woman in tech".
posted by Apocryphon at 11:53 AM on December 18, 2015 [6 favorites]



Also the main supplier of the world's internet site vulnerabilities. PHP programmers are fucking dangerous.


I don't use PHP not because I'm too smart. I don't use it because I'm not smart enough. I'm a bear of (relatively) little brain, and am not confident that I can keep track of every possible vulnerability in a nontrivial PHP app to the point where, when I deploy, I can have some degree of faith that the Russian Mafiya won't pwn all my stuff. That's also why I don't use other people's PHP apps; having to keep an eye on so many security alerts and race the world's script kiddies and griefers to my server when one goes out is not my idea of fun. (On a tangent: which is why I lament OwnCloud being written in PHP. It seems like a very nifty app, but how sure are they that their code is secure?)
posted by acb at 11:53 AM on December 18, 2015 [5 favorites]


Accessible, with a quick start up for non-programmers, is often a feature that is acquired at the expense of long term fitness for task.

I was recently introduced to the dog-house analogy. Anyone who puts in the time can make a doghouse. There's no reason to shit on someone who makes a doghouse with the methods and tools appropriate to doghouses!

We have a problem when someone expects that a skyscraper can be built the same way - that people should have a quick ramp-up to the skills required, that jumping right in without a difficult learning process would be desirable.

Many of us resent the failed and fallen skyscrapers made by people who thought they could generalize from their experience with doghouses. We were the employees who were told we didn't need rebar and concrete, we just needed more 2x4s and time.

But this doesn't mean making a doghouse by throwing together a few boards and putting a roof on it makes you a bad person, by any means.
posted by idiopath at 11:53 AM on December 18, 2015 [14 favorites]


I wish the people dissing PHP would take the article's "What Can We Do?" advice to heart.

Language-ists are the worst.
posted by ArmandoAkimbo at 11:55 AM on December 18, 2015


And like effbot posted above, Facebook uses PHP, but they worked it over so much it really isn't PHP anymore.

It's one of those shops like Amazon where they have a bunch of different languages going on depending what you are looking at. They are pioneers of a lot of the stuff that is hot in JavaScript land right now.
posted by Artw at 11:56 AM on December 18, 2015 [1 favorite]


it has historically been pretty awful but in recent years managed to pick up enough from other languages to function as a modestly inferior imitation with a bunch of cruft

What is English, Alex?
posted by Sys Rq at 11:57 AM on December 18, 2015 [19 favorites]


I'm a bear of (relatively) little brain

We all are :-)
posted by effbot at 11:58 AM on December 18, 2015 [2 favorites]


> "There's so much ... general crap in those ecosystems ..."

So you're saying there's a Perl Jam?
posted by kyrademon at 12:00 PM on December 18, 2015 [7 favorites]


I wonder what healthy, sportsmanlike competition between programming language communities would be like.

Code golf, of course!
posted by a lungful of dragon at 12:01 PM on December 18, 2015 [4 favorites]


The non-crap languages are:
posted by Artw at 12:03 PM on December 18, 2015 [11 favorites]



"It’s 2015, and I saw a presenter at a Python conference make fun of Java. How would that feel to people trying to move from Java into something else? I wouldn’t feel welcome, and I’d have learned that the idea that the Python community is welcoming wasn’t true."


Besides Groovy is just fine.
posted by nims at 12:10 PM on December 18, 2015 [1 favorite]


I remember Mac users used to be really annoying and snarky. You'd post something innocent like "I'm having a hard time getting my PC to do X", and some "helpful" person would post something uber snarky about how you should be using a Mac instead of a PC. And the whole thing would devolve into a never-ending flamewar of uselessness and stupidity...

... and then all of that ended a few years ago, when everything you needed to use became web-based, and it no longer mattered whether you were using a PC or a Mac. Hell, I'm typing this on a Mac right now, and I never thought I'd use one. In fact, my Mac usage is entirely predicated upon how little difference the choice in OS made in my life. The biggest change I had to make was re-mapping the Mac hotkeys to being more like PC hotkeys, because I'm an old man and I don't like change.

(also, the Home and End keys. WTF, OSX?)
posted by panama joe at 12:10 PM on December 18, 2015 [3 favorites]


However - PHP is really an outlier in being an actually inferior language, probably the only one I would name as such.

Perl, which is roughly of the same vintage and shares influences with PHP, is probably in the same boat. (I once worked on a Perl::Mason web app, and it was not fun.) Though culturally they're different worlds: PHP is seen as a beginners' language, whereas Perl is seen as a refuge of “real nerds” (or at least those who haven't gotten deeply into Scheme or Haskell or something). Perl developers could see their ability to deal with all the layered cruft as a sign of geek machismo, whereas PHP developers just ignore it as much as they can (and PHP does have less of it).

On a tangent: it is telling that the developer of Perl, Larry Wall, was a missionary linguist by profession, as it shares the messiness of both natural languages and theological explanations of the world.
posted by acb at 12:12 PM on December 18, 2015 [4 favorites]


You have to be wilfully blind to think that the culture of bashing PHP doesn't also come with a hefty helping of bashing PHP devs by implication. I literally sat in a room at a security conference last week.

Speaker: Hands up who's a PHP dev?
room: *bursts into laughter*

Yeah I wasn't going to put my hand up, thanks.
posted by xiw at 12:12 PM on December 18, 2015 [7 favorites]


So I made this shirt (cafepress link) back in 2007 or 2008.

Your Favorite Programming Language Sucks.

On the back is the "Hello World" program for a lot of languages with "Your Favorite Programming Language Sucks" instead of "hello world".

I guess... it's less relevant now :(
But it's still a funny shirt, methinks.
posted by symbioid at 12:12 PM on December 18, 2015 [6 favorites]


I guess I should have known that I would start an actual argument about this so to emphasize two parts of my comment that were as important as anything:

One, I don't believe at all in having contempt for the people who end up working in a language, no matter the reason. Again, I've got PHPStorm open right here.

Two, the selection of language is unlikely to be the biggest problem (or even one of the biggest problems) you encounter in developing a piece of software.

I will add a third point which is that PHP certainly provides an example of multiple non-technical factors that are important in language choice. Some of the reasons it caught on in its time are actually good reasons. And if it turns out that women are indeed more likely to use PHP than other languages now, proponents of other languages have to ask themselves why. Does it have a friendlier community? Does it have a percieved lower barrier to entry? Does it seem like a good employment bet due to it's continued widespead use? Programmers act like those things don't matter and they do very much.

But, having a fair amount of experience with it myself, the reasons people have traditionally criticized PHP are also very good reasons. Even with the continued cleanup if my best friend said they wanted to learn PHP as a first programming language I'm pretty sure I would recommend against it (blah blah PHP 7 fast is good but) and I would hope the same advice could be extended to other new programmers in a non-contemptuous way. Believe me it's the only language I have strong feelings like that about. I mean god, I like JavaScript.
posted by atoxyl at 12:12 PM on December 18, 2015 [10 favorites]


Besides Groovy is just fine.

Also, Scala.
posted by acb at 12:12 PM on December 18, 2015 [1 favorite]


"There are only two kinds of languages: the ones people complain about and the ones nobody uses"
Bjarne Stroustrup (Creator of C++)
posted by pabs at 12:15 PM on December 18, 2015 [16 favorites]


Also, Scala..

Functions are objects. hmm delegates...
posted by nims at 12:17 PM on December 18, 2015


In all honesty, though. This article speaks to that which my friend (a designer) talks about often when it comes to his work with devs. The general developer attitude of being leet and judgey of everything and thinking they know it all. Contempt Culture is part of it, but it's much larger than that. He thinks there's something tied into the general geek experience of having to prove oneself and then defend it at all costs that comes from the traditional geek position in the High School hierarchy (which is irrelevant in later life, but still plays a formative role). So they become assholes and shit. The whole brogrammer/privilege thing. I dunno.

It is just a form of fandom, really.

Language fandom. Geeks gonna geek.

Though as noted in this thread it seems we have a more polyglot and universal view these days and the web has led to a lot more devs being openminded about such things.

I did like that point about PHP being an entry way for women in tech via Wordpress design and self-teaching and ascending the ladder of skills that way and dissing on PHP is sorta dissing on a valid path for people to take, and apparently a lot of women take this path...
posted by symbioid at 12:17 PM on December 18, 2015 [5 favorites]


The non-crap languages are:

Yeah. Here is all the reaction to this piece I can really muster:

1. Yes, contempt is a shitty foundation for culture, and everyone in and around technology should stop being such assholes. I do not exempt myself in any way from this formulation.

2. Computers are shit, software is shit, development practices are shit, the methodology cults are shit, the technical economy is shit, and contempt or at least loathing frequently arise as a part of a natural and even self-preserving response to these facts. They aren't healthy, but having healthier responses can be really hard, and in-group shit always crystallizes around these emotional responses with a quickness.
posted by brennen at 12:18 PM on December 18, 2015 [14 favorites]


I wonder what healthy, sportsmanlike competition between programming language communities would be like.
Honestly? Look at the people who actually create programming languages, the Larrys, the Guidos, the Matzes, and maybe even the Rasmi and Goslings, tend to appreciate each other's languages and to see the good as well as the bad in them (and the good as well as the bad in their own language).

The creators know that some of the language decisions were arbitrary and historically conditioned, that creating any language is very hard if not impossible to get right, and that there's so much more that could have been done.

It's the people who dedicate themselves to a language somebody else created who tend to create the culture of contempt, who tend to see their favorite language as optimal, its flaws as unimportant or illusory. They may internalize an ownership of the language and an identification with it, an us-them mentality towards people outside of it. They may even go the full nerd route and consider the language to be more "theirs" than it is the creator's.

You can see this same second-tier effect in many, many contexts. I was just observing it in another context with respect to a conlang, where one of the conlang's fans seemed to have assumed it so thoroughly into himself as to have developed a contempt for *the language's own creator* such that he was "correcting" the creator's "mistakes" about her own language.

If you subscribe to a particular understanding of the early history of Christianity you might call this "The St. Paul Effect."

But it happens a lot.

Creators are often way more humble, accepting, and humane than fanboys and fan communities.
posted by edheil at 12:19 PM on December 18, 2015 [14 favorites]


I'm a webdev who has to use PHP on the front end and motherfucking RPG (only slightly less obtuse than COBOL) on the back end. So, basically, I'm fucked.
posted by kmz at 12:19 PM on December 18, 2015


Functions are objects. hmm delegates...

To be fair, once you're based on the JVM, everything is an object, so that's inescapable.
posted by acb at 12:20 PM on December 18, 2015


I remember Mac users used to be really annoying and snarky.

You don't know snark until you've been one of the few Mac user in a corporation. IT was always riding your ass and, since you had a Mac, it was a good bet that you were a graphic design person, too, which the devs hate with the fury of an exploding sun. So, you ended up getting snark in stereo.
posted by Thorzdad at 12:22 PM on December 18, 2015 [3 favorites]


Windows Batch is not a real programming language, and don't you dare try to build an enterprise solution with it. I'm serious. Don't do it. I am speaking with the authority of experience!
posted by I-Write-Essays at 12:25 PM on December 18, 2015 [1 favorite]


a comprehensive tutorial showing how easy it is to get a web app running with a few basic Python tools, in Quick Doesn't Have to Mean Dirty.

that tutorial is kind of a good illustration of how much bureaucracy you need to get a basic html + foosql website running using Python, even using the low overhead Flask, plus the "look how fucking simple this all is" attitude is less than charming. and in the end, it all comes down to patching together various frameworks of code, a commercial provider ('Heroku') and bunch of libraries that the novice (and possibly the author) doesn't really fully understand.

It's kind of hard to separate this all from the economics of the internet. Young dudes who have obsessed over this stuff and now get paid to obsess over this stuff, and all that obsession built on the idea that this will someday make you obscenely wealthy. Most of the early web was done by academics with better things to spend their time on and then by various ne'er do wells who also had other things to do. Further, it was all broken, nothing was "mission critical," there were no billion dollar investments riding of user satisfaction and uptime... the history of language wars is very much the history of how corporations came to dominate the internet: Oracle, Sun, Microsoft, Netscape, Google, Apple etc.
posted by ennui.bz at 12:25 PM on December 18, 2015 [11 favorites]


"So when I started programming in 2001, it was du jour in the communities I participated in to be highly critical of other languages. ..."

Is the use of du jour where an old person like me would probably have written de jure a thing now? Or is he making some kind of recursively ironic point, there?
posted by jamjam at 12:28 PM on December 18, 2015 [4 favorites]


This sort of kerfuffle is just so amazingly stupid as to make my head explode. All it amounts to is people in clubs who hate people in other clubs. Schoolyard bullshit. I used to get into flamewars with people who dissed on Amigas until I realized that I was wasting my energy proving a point when I could have been just using commodity hardware to get things done.
posted by grumpybear69 at 12:28 PM on December 18, 2015 [1 favorite]


IT was always riding your ass and, since you had a Mac, it was a good bet that you were a graphic design person, too

Boy, did that ever change after OSX came out. Now almost all devs have MacBooks running OSX. If they're doing web stuff, they run SublimeText or some JetBrains IDE. If they do server-side stuff, they have VirtualBox and Vagrant for hosting Linux VMs on their laptop. There are a few people with non-Apple machines running Linux, and some people who have to use Windows for C#/.net development (though apparently a lot of those run it on Apple hardware as well).
posted by acb at 12:28 PM on December 18, 2015 [4 favorites]


Or de rigeur, perhaps?
posted by jamjam at 12:31 PM on December 18, 2015 [3 favorites]


So what I'm gathering from this is those people who make angry posts on Youtube about how Slipknot is better than Justin Bieber sometimes never grow up.
posted by shoe at 12:32 PM on December 18, 2015


See also: Why I Hate Advocacy

Eevee's essay PHP: A Fractal of Bad Design. Later they goes on to back up many of the points in that essay by providing a comprehensive tutorial showing how easy it is to get a web app running with a few basic Python tools, in Quick Doesn't Have to Mean Dirty.

PHP sucks in a lot of ways, and I agree with a good chunk of the criticism in Fractal article, but that last article is almost laughable in practice. Seriously, I don't know what it is about PHP, but either there's a blind spot in ostensibly more enlightened developers that keeps them from seeing its strengths (likely, IMO), or there's something about the weaknesses that sends them into enough of a rage that they self-lobotomize, which is part of why no one has replaced PHP.

Because that last article is almost laughable in what it assumes about deployment and what someone will just know.

PHP has a lot of problems, but when it comes to those areas, it's got things a lot of Python fans apparently don't even know they're missing.
posted by namespan at 12:32 PM on December 18, 2015 [3 favorites]


The pretty amazing Karsten Schmidt talked about this topic a bit in the inspiring essay he published a few days ago about his early days as a young programmer, "The Jacob's Ladder of coding".
As is the case today, so it was back then: People tend to organize around specific technological interests, languages and platforms and then stick with them for a long time, for better or worse. Over the years I’ve been part of many such tool-based communities (chronologically: Asm, C, TurboPascal, Director, JS, Flash, Java, Processing, Clojure) and have somewhat turned into a nomad, not being able to ever find a true home in most of them. This might sound judgemental and negative, but really isn’t meant to and these travels through the land of languages and toolkits has given me much food for thought. Having slowly climbed up the ladder of abstraction and spent many years both with low & high level languages, has shown me how much each side of the spectrum can inform and learn from the other (and they really should do more so!). It’s an experience I can highly recommend to anyone attempting to better understand these machines some of us are working with for many hours a day and which impact so much of all our lives. So am extremely grateful to all the kind souls & learning encountered on the way!

[...]

Every time I talk with others about this topic, I can’t help but think about Snow Crash’s idea of “Language is a virus”. I sometimes do wonder what makes us modern humans, especially those working with computing technology, so fundamentalist and brand-loyal to these often flawed platforms we happen to use? Is it really that we believe there’s no better way? Are we really always only pressed for time? Are we mostly content with Good Enough? Are we just doing what everyone else seems to be doing? Is it status anxiety, a feeling we have to use X to make a living? Are we afraid of unlearning? Is it that learning tech/coding is (still) too hard, too much of an effort, which can only be justified a few times per lifetime? For people who have been in the game long enough and maybe made a name for themselves in their community, is it pride, sentimentality or fear of becoming a complete beginner again?
posted by jjwiseman at 12:34 PM on December 18, 2015 [11 favorites]


In my humble opinion, a good piece of code has to be maintainable by any decent programmer, so languages (and by extension frameworks) must offer some strict guidelines. Java, C# are good for this.

Perl for example gives you quick and dirty solutions but unreadable by your fellow follower three years after you left the job.

Also weakly typed languages (e.g: Javascript) look like magic, but boy, it's hard as hell to read and maintain.
posted by nims at 12:35 PM on December 18, 2015 [1 favorite]


Yes, contempt culture is gatekeeping and bullshit, but I think I will always find joy in trolling emacs and Scala nerds. Is is still contempt culture if you're punching "up"?

(I once argued that I should get a bigger monitor instead of the guy next to me, because he was writing Scala which is so concise that one doesn't need a big display to write it, whereas I was writing Java and needed every pixel I could get. In the end, the other guy got the bigger monitor and when I ground his gears about it, he just increased his font size to Duplo proportions. Good times.)
posted by Sauce Trough at 12:36 PM on December 18, 2015 [3 favorites]


You don't know snark until you've been one of the few Mac user in a corporation. IT was always riding your ass and, since you had a Mac, it was a good bet that you were a graphic design person, too, which the devs hate with the fury of an exploding sun. So, you ended up getting snark in stereo.

Our lab just switched over to an all-Mac desktop and laptop setup, away from a mix of Windows and Linux, leaving Linux on the servers. It's pretty easy to do our dev work on Macs, just install Xcode and go, maybe add Sublime Text or Coda, or just go with emacs or vi, depending on preference. Now we all gently chuckle at the one daring thinker who brings in his Surface Pro XP 3.1 and spends ten minutes fighting splitscreen to work through the projector. Interesting how the worm has turned on that story.
posted by a lungful of dragon at 12:36 PM on December 18, 2015 [2 favorites]


Computers are shit, software is shit, development practices are shit, the methodology cults are shit, the technical economy is shit, and contempt or at least loathing frequently arise as a part of a natural and even self-preserving response to these facts. They aren't healthy, but having healthier responses can be really hard, and in-group shit always crystallizes around these emotional responses with a quickness.

I really shouldn't have gone in with the specific criticism and I apologize but my underlying point in that first comment really has to do with this which is - one doesn't make an exhaustive list of everything technically wrong with PHP without having some experience working with it.

Anyway, if the essay had said that programmer culture wastes too much time in arguments about technical superiority to the exclusion of every other factor I would agree with that wholeheartedly. I just don't buy at all that technical criticism of a language is inseparable from criticism of the people who use it, or that it does no good. Which is not to say that criticism of people simply for using a language is not something that happens all the time and all too much.
posted by atoxyl at 12:39 PM on December 18, 2015 [3 favorites]


Stats sucks tho, right?
posted by MisantropicPainforest at 12:40 PM on December 18, 2015


Also I actually thought JS was becoming almost respectable? Now that functional programming stuff is hot?
posted by atoxyl at 12:42 PM on December 18, 2015 [1 favorite]


When you're a one trick pony, everything looks like a nail.

Or something like that.
posted by tempestuoso at 12:42 PM on December 18, 2015


Is the use of du jour where an old person like me would probably have written de jure a thing now? Or is he making some kind of recursively ironic point, there?

FYI, Aurynn Shaw's a woman.
posted by roobot at 12:42 PM on December 18, 2015 [5 favorites]


10000 line CSS files are still worse than anything. Goddamn write-only language.
posted by Artw at 12:45 PM on December 18, 2015 [5 favorites]


In my humble opinion, a good piece of code has to be maintainable by any decent programmer, so languages (and by extension frameworks) must offer some strict guidelines. Java, C# are good for this.

Or you can implement a strict style guide and enforce it, and require code reviews for all commits. I've worked in environments like that (in PHP even!) and it worked fine.

Perl for example gives you quick and dirty solutions but unreadable by your fellow follower three years after you left the job.

I'm the last person here to defend Perl, but this is seriously out of date. Follow the guidelines in Modern Perl (and use a real object system like Moose) and while I wouldn't say the experience is pleasant, precisely, you'll write perfectly readable and maintainable code.
posted by asterix at 12:46 PM on December 18, 2015 [4 favorites]


The advantage of Perl is you can do anything in one line of Regex. The disadvantage of Perl is....
posted by Artw at 12:48 PM on December 18, 2015 [5 favorites]


@asterix: i agree with almost everything, but why would i use perl to do anything else than a very lazy daily scheluded regex unmaintable hack?
posted by nims at 12:52 PM on December 18, 2015 [1 favorite]


I don't think contempt culture is limited to STEM fields. I've worked with plenty of dudes who mock reality, daytime, and LifeTime television programming but have nothing but reverence for professional sports and WWE.

Oh my, you would not realise how much I internalised contempt culture and how big a struggle my recovery from it (or "not being an arsehole", as you might call it) has been. I'm really surprised that this appears to be the first place I've seen it given a name.
posted by ambrosen at 12:54 PM on December 18, 2015 [2 favorites]


Yes, contempt culture is gatekeeping and bullshit, but I think I will always find joy in trolling emacs and Scala nerds.

There's a t-shirt which reads "I learned Scala and all I got was laughed at by Haskell programmers".
posted by acb at 12:55 PM on December 18, 2015 [3 favorites]


Stats sucks tho, right?

Not if you know R! :-p
posted by Jimbob at 12:55 PM on December 18, 2015 [1 favorite]


acb: The original poster seems to conflate programming languages with identifiers like race and gender, which is not a good metaphor. One cannot change one's ethnicity or (psychological) gender, but languages one can pick up and drop.

I didn't get that at all, although I admit the original article wasn't that clear. Rather, the argument is that women are more likely to come to programming from the business and design worlds, rather than the STEM world which makes a big deal about "close to the iron" or "functional purity." The resulting contempt culture contributes to the glass ceiling in IT.

Which sounds entirely credible to me given the events of this year in open source. Multiple women have quit as developers because they didn't feel like putting up with code reviews that are flamewars, often with the participation of big-name project leaders. (This is in addition to more obvious sexism, such as a Linux technology talk that opened with a slide of a body-paint model.)

The solution isn't to adopt PHP. The solution is finding a way to advocate for your brilliant coding practices that doesn't involve being a dick.
posted by CBrachyrhynchos at 12:56 PM on December 18, 2015 [3 favorites]


I feel that “real” programming wars are a form of cognitive dissonance used by programmers to make their work feel Important and For The Ages. If you surround yourself with like-minded zealots, you feel you are doing Great Things, and are far above the Unwashed Masses.

Realistically, however, most commercial code is pretty disposable. It's often just yet another thin veneer over some SQL queries.It's perhaps why _why (of Poignant Guide fame) quit the Ruby limelight: realizing that your instruction book will merely allow some coders to bang together some routines so that the founders of shittr.com can exit on $5E6 cash must be a little disheartening.

Is it fast enough? Does it scale just enough? Does it keep user data integral enough? Is it safe enough? Good enough is all you need for commercial code. While you could (probably) write a shopping cart in PostScript, you probably shouldn't — if only because you couldn't find anyone else to maintain it. So “real” programmers self-aggrandize to make their work sound more interesting.

Maintaining data integrity across systems for decades is much more of a challenge. Try restoring ¼-century old data files (apart from TeX, you smug bastards) and read them in $MODERN_APP: file formats and character encodings are the least of your worries. Yet to the insecure “real” programmer, data processing is the lowest of the low.
posted by scruss at 12:58 PM on December 18, 2015 [10 favorites]


Perl for example gives you quick and dirty solutions but unreadable by your fellow follower three years after you left the job.

so, the 'job' comes to define what is a good language or not.

arguments about OOP are fundamentally about how to produce more, bug-free code with interchangeable programmers. that is, they are arguments about the "industrial" production of code.
posted by ennui.bz at 1:01 PM on December 18, 2015 [1 favorite]


Patterns. So much one upmanship about cramming in patterns.
posted by Artw at 1:03 PM on December 18, 2015 [1 favorite]


I would dread writing a SNOBOL emulator in COBOL or debug a virtual machine written APL. And I had reason to touch PHP recently, there was a bit of syntax that I punted on researching and went with a slightly older api but it's ok. Now Java is tough and can take all the jokes about wordiness, and deserves it.
posted by sammyo at 1:03 PM on December 18, 2015 [1 favorite]



arguments about OOP are fundamentally about how to produce more, bug-free code with interchangeable programmers.


I could not have said that better.
posted by nims at 1:04 PM on December 18, 2015


fundamentally about how to produce more, bug-free code with interchangeable programmers

You say that like it's a bad thing but it aligns pretty well with how to produce code that isn't unbelievably frustrating to work with. There is a codebase in existence some parts of which I am probably the only person in the world who understands which I suppose makes me hard to replace - well, I fucking wish somebody would replace me because then I wouldn't have to look at it ever again. I could maybe bargain for better pay for this than I have but really I would rather just do something else.

Anyway obvious OOP isn't the only way to make code that meets the same criteria but those happen to be criteria which exist for a whole bunch of different reasons.
posted by atoxyl at 1:09 PM on December 18, 2015 [3 favorites]


Also I actually thought JS was becoming almost respectable? Now that functional programming stuff is hot?

JS is very much a hot thing right now, which means I'm now a veteran programmer on the cool language by virtue of just having sat on an uncool one for a while.

JS is also very much one of the languages that people took potshots at for not being "real", particularly by the heavyweight OOP crowd. I'm not really seeing JS people sniping at Java for not being real, and more a general attitude of "ha ha, turns out we didn't need to be real after all!".

Of course that doesn't mean there isn't now a bunch of shitty one upmanship WITHIN the JavaScript community about whose practices are more "real programming" than everybody else's.
posted by Artw at 1:10 PM on December 18, 2015 [2 favorites]


I think the contempt for programming languages is really just contempt for experiences that made your life miserable at work. If you had to pick up the pieces of someone's Java monstrosity, you now categorically hate Java. This is easy to see with perl, where the it is possible to write good code, but more common to experience someone else's bad code.
posted by I-Write-Essays at 1:14 PM on December 18, 2015 [2 favorites]


Anyway I really do regret coming in here and immediately talking shit about PHP. I was just trying to say - on one hand there's for sure a lot of pointless and toxic jockeying over small differences. I don't like Java myself, but it's perfectly okay at what it does and it's obvious why it gets used (even if many of those reasons are not related to technical superiority) so it would be a waste of my effort to go on about how much I don't like it. But on the other hand it sucks to be an experienced carpenter forced to use a truly subpar set of tools, and it's probably not great to have new people learning with those shoddy tools either. If your response to this is to work on improving PHP I salute that but I'm going to be over here encouraging people to come to Python - which absolutely means I will try to be as helpful, non-judgemental and positive (toward them) as possible, in the process.

JS is very much a hot thing right now, which means I'm now a veteran programmer on the cool language by virtue of just having sat on an uncool one for a while.

JS is a weird case because like I said it has a lot of warts which are actual warts, which is to say superficial. And DOM interaction originally was kind of a pain. And so on. But it has a fairly minimalist design incorporating good ideas in its core, and that has allowed people to develop patterns and libraries that fix everything else. I'm not a hardcore FP guy but I've done it and I like it so I generally enjoy working in modern-sorta-functional-style JavaScript.
posted by atoxyl at 1:23 PM on December 18, 2015 [2 favorites]


For those interested in FP using JavaScript I would very much recommend the free book JavaScript Allonge - it's quite unlike any other JavaScript book I've read.
posted by Artw at 1:28 PM on December 18, 2015 [9 favorites]


10000 line CSS files are still worse than anything. Goddamn write-only language.

try to debug a PL/SQL package from 1995 after plenty of crazy madmen added lots of IF...THEN ELSE ENDIF statements.
posted by nims at 1:28 PM on December 18, 2015 [4 favorites]


Bad code is bad. Good code is good. JS/CSS may be a whirling dervish to debug but there is lots of money to be made in that field precisely because it is both difficult to do well and in high demand.
posted by grumpybear69 at 1:31 PM on December 18, 2015


Also if anybody can give me a list of things PHP does right like I just did for JS I would sincerely appreciate it because again, I do PHP and I really couldn't think of many.

- it doesn't require you to learn much you don't already know about computers to set it up (a big one, probably)
- it runs on everything and integrates with Apache etc. (definitely a big one)
- it was innovative originally the way the whole thing was a templating system and likely influenced the way templating works now
- similarly originally having all this web-dev-relevant stuff built-in was nice. But now it's just a mess.
- it has various useful features at this point that were in other languages first and are often done oddly in PHP

but - superior features of the language itself? in 2015? Help me out.
posted by atoxyl at 1:33 PM on December 18, 2015 [1 favorite]


JS debugging has actually made enormous strides in the last couple of years. About the best thing that has happened in CSS land is that people have started transpiling it from LESS and SASS which can be more sane, though there's the transpiler tradeoff that your process becomes trickier and you may be generating huge and terrible CSS.
posted by Artw at 1:35 PM on December 18, 2015


Did you know that some browsers have a feeling on how many CSS selectors you can have? Trust me, without LESS/SASS bumping things up by several orders of magnitude nobody would.
posted by Artw at 1:37 PM on December 18, 2015 [2 favorites]


I bet that "bulk" isn't by revenue. Millions of One Direction fan WordPress blogs no one looks at don't mean much.

It is ironic (and by ironic I mean enraging) how people can read an article about how shitty it is to insult people based on the coding languages they write in - and how that is frequently gender/racially coded as well - and see in the comments people dismissing hoards of people wholesale based on our perceived lack of influence and what fandom we belong to (a fandom that is, like the hate on selftaught-through-websites, highly gendered).

This is using what women experience and what we like and how we're marginalized as a reason to continue to belittle and marginalize us. Things women like suck. Things men like are cool. Be more like a man if you want to be cool.

This is sexism.
posted by Deoridhe at 1:44 PM on December 18, 2015 [40 favorites]


I've felt the windows/apple contempt from both sides; when I got a smart phone I got an iPhone because... why NOT? but I'm primarily a windows user and overall I don't really care. The second my android-using-brother saw it he insulted it. I continued to... well... not care.

Ok, not care is a little strong. When my quite-old-now 5S had some weird battery thing that was making it fall apart (literally), the apple guy got me a new, identical to my old phone replacement and my head spun for days. I keep hoping their next phone will slim down so I can upgrade to is, but the 6 is simply too enormous for my tiny doll hands and I already have an (android) tablet.

"MOO, because you have to have been a MOOer who didn't just want to socially chat to learn it - but you can do some interesting low-level things with it, and it's an interesting way to learn OO."

OMG I loved coding in MOO!! I made a fortune teller once using it that I was really proud of. Sometimes I wish I'd saved that code just to look at it and marvel. I finally understood why my brother would be up all night programming one time when I'd set the code up to comment on every step because there was an error SOMEWHERE and by the gods I was going to find it!! Good times.
posted by Deoridhe at 1:51 PM on December 18, 2015 [3 favorites]


Conceptually, sed is Turing-complete, so practically every programming language is just as "real" as any other. The rest is just syntax and bureaucracy.
posted by CBrachyrhynchos at 1:52 PM on December 18, 2015 [3 favorites]


I'm always slightly amused by the "your language sucks" crowd. I mean, OK, thanks for letting me know. Meanwhile, I'm over here, having a pretty successful career working in a variety of languages, many of which the cool kids would gag at. Most languages have their strengths and weaknesses. Very few are actively bad or unusable, as un-hip as they may be.

It always strikes me as something very much like the equipment fetish some people have within photography circles (within which I also travel). Yes, there's varying grades of quality in equipment. Yes, some camera bodies/lenses/tripods/etc have benefits over others. However, at some point, when you're arguing over the theoretical performance of lens A vs lens B and poring over a 500% magnification image of a test pattern in order to argue that B clearly has slightly more chromatic aberration than A and besides it would last 1 minute less before melting in the corona of an active volcano, I think you have to ask yourself if your interest is in photography, or is it in arguing about gear specs?

So too, with software development. At some point, this all feels like signaling and in-group/out-group bullshit, with less interest in solving problems than trying to be cool. Personally, I'd rather be over here making something useful with this language you've so kindly told me is OMG TERRIBAD.
posted by tocts at 1:59 PM on December 18, 2015 [3 favorites]


I don't use PHP not because I'm too smart. I don't use it because I'm not smart enough.

I think I've told this story on the blue before, but I have a good friend who is a tech exec and whose company chose Java over C++ for server-side code (this was years ago) even though the C++ programmers derided Java as "not a real language". His comment was "I've seen a lot of C++ code and I've concluded that most C++ programmers are not smart enough to write C++."
posted by freecellwizard at 2:01 PM on December 18, 2015 [18 favorites]


Treading dangerously close to spouting contempt of contempt culture; I generally see contempt of other languages (or gear, or whatever) as a sign that someone is more junior than master. It seems the really world-class people have just transcended their tools. While they might be happy to debate the finer points of each in various situations, there isn't that same sense of contempt - there isn't a sense that they have tied their self-identity into any particular corner - instead there is more interest/excitement about elegeant tool-task combinations, as if wine pairings.

There are exceptions of course, but the general feeling I get is that contempt culture is (as the article points out) a class-marker of things about yourself that you probably wouldn't want on public display. But it's a phase. A lot of people go through it, a lot of people grow beyond it.

"Contempt culture" is a nice term. I suspect it will catch on.
posted by anonymisc at 2:13 PM on December 18, 2015 [7 favorites]


du jour? I think he means de rigeur...

Waitress, bring me the soup de rigeur. You were going to make me have it anyway.
posted by w0mbat at 2:21 PM on December 18, 2015 [11 favorites]


Conceptually, sed is Turing-complete, so practically every programming language is just as "real" as any other. The rest is just syntax and bureaucracy.

In natural languages, it is often said that languages don't differ in what they can express (after all, if one needs a word to mean, say, "electron microscope" or "credit default swap", one can always coin or borrow one), but what they force you to express (i.e., in German you can't say you're meeting a friend without giving away the gender of the friend, and there are island languages in which direction can only be given relative to the island, ensuring that their speakers remain mindful of their location at all times). The same goes for programming languages; there is only so much that the human mind can hold at any moment, and a well-designed language will assist by keeping track of some things (as is the case with strong typing) and enforcing good ways of working (i.e., not allowing one to confuse unfiltered user input with internal state). And while you could write any app in any Turing-complete language that has the relevant interface bindings, doing so and avoiding dangerous errors may require superhuman cognitive abilities if you do it in, say, machine code or sed. These are the outliers, obviously, but beyond those, keeping your code correct is easier if the language helps you.
posted by acb at 2:24 PM on December 18, 2015 [5 favorites]


and a well-designed language will assist by keeping track of some things (as is the case with strong typing)

until C# unfortunately introduced var.
posted by nims at 2:40 PM on December 18, 2015 [1 favorite]


If you want the real outlier for not all languages being equal, Malbolge is turing complete.

It was a number of years, with multiple people attempting to write a Malbolge program, before a successful "Hello, World!" was written. It wasn't written or readable by a human - it was generated by a genetic algorithm done in Common Lisp.

The VM for Malbolge is effectively an inefficient cryptographic algorithm, and writing a working program is equivalent to breaking crypto. Nobody knows how to successfully refactor a working Malbolge program.

Turing complete only gets you so far.
posted by idiopath at 2:41 PM on December 18, 2015 [3 favorites]


Perl snark is such a basic straight-line model of contempt culture that it's only not the obvious canonical example because PHP showed up and obscured it by eating the web.

And of course there are reasons to hate Perl. Important ones, with deep theoretical implications. They just don't usually push the cheap one-liner button. But then see above re: the shitness of everything.
posted by brennen at 2:41 PM on December 18, 2015 [3 favorites]


This is all very amusing, because any real programmer is going to say, "I don't really care what language you want it in. Whatever floats your boat." I've written programs for money in more than a dozen languages in the last 20 years, including some real stinkers like Informix New Era. That's the business. It's best not to get attached to any language.
posted by ob1quixote at 2:44 PM on December 18, 2015 [9 favorites]


Perl snark is such a basic straight-line model of contempt culture that it's only not the obvious canonical example because PHP showed up and obscured it by eating the web.

Well, it's also grognard city. Nobody cares when you diss those guys and it's just going to bounce off anyway.
posted by Artw at 2:45 PM on December 18, 2015 [2 favorites]


anonymisc: Treading dangerously close to spouting contempt of contempt culture; I generally see contempt of other languages (or gear, or whatever) as a sign that someone is more junior than master.

I think at least half of it should be understanding the algorithms, and how much you're willing to trust the compiler, interpreter, and libraries to do those algorithms for you.

Then, understanding best practices for your community/ecosystem.

And the fiddly bits about optimization for the language in question.

acb: These are the outliers, obviously, but beyond those, keeping your code correct is easier if the language helps you.

Sure. I don't use sed for anything. But I'm not convinced the fundamental problem of getting a very stupid computer to execute a series of precisely specified tasks in order to achieve desired results is that different from language to language. Certainly not enough to demonstrate contempt for people who solve the similar problems in a different language.
posted by CBrachyrhynchos at 2:48 PM on December 18, 2015


The worst crime committed in the name of OOP was the foisting of Design Patterns onto the world.

Design Patterns : giving bored developers incentive to over-engineer their code since 1994.
posted by panama joe at 2:57 PM on December 18, 2015 [8 favorites]


@CBrachyrhynchos:

But I'm not convinced the fundamental problem of getting a very stupid computer to execute a series of precisely specified tasks in order to achieve desired results is that different from language to language


Have you ever worked in a team with more than five people coding on the same code base? A structured and strict language/framework really helps.
posted by nims at 2:59 PM on December 18, 2015 [2 favorites]


Sure, but even my rusty, 1980s Nissan 4-cylinder was still a truck. (And if the comparison is java, php, and python we're talking truck vs truck.)
posted by CBrachyrhynchos at 3:04 PM on December 18, 2015


a good piece of code has to be maintainable by any decent programmer

arguments about OOP are fundamentally about how to produce more, bug-free code with interchangeable programmers


Programming language politics don't have to be workplace politics, but they very often are, and it's sometimes not easy to translate the technical terms into workplace terms. I wanted to say thanks for this portion of the discussion, which has helped me to realize for the first time that for management, code maintainability is really about deskilling.
posted by RogerB at 3:05 PM on December 18, 2015 [2 favorites]


Yeah, the best thing you could say about design patterns is they gave names to a bunch of things you were already doing anyway.

There's a certain kind of programmer that just loves design patterns. They will typically find the most complicated possible way to solve any given problem. "What if we someday need this simple data API to control an elevator?" That kind of thing.

The only way to deal with this kind of developer is to employ YAGNI, the Occam's Razor of the programming world.
posted by panama joe at 3:06 PM on December 18, 2015 [5 favorites]


Well, it's also grognard city. Nobody cares when you diss those guys and it's just going to bounce off anyway.

I mean, yeah, and a lot of them are too busy making buckets of money and living well to give much of a shit. But I guess I got pretty tired of it, and I haven't even been one of those guys for ages. For a while I was like "Ok fine I will have this conversation again!" and now I'm usually just like "fuck it, whatever, ctrl-w", which is I guess sort of meta.

I think I care too much about talking about programming for talking about programming on the internet to be a good idea for me any more. On that note, maybe I will bow out for real now and start thinking instead about where I should get stoned after work and before Star Wars. Have fun everybody!
posted by brennen at 3:08 PM on December 18, 2015 [3 favorites]


We've gone from geeks trading insults over coding tools to academia sucks in 7 comments. Wow, quite a leap.

In Python, it would have only taken three.
posted by Mr. Bad Example at 3:08 PM on December 18, 2015 [15 favorites]


By the way...Happy birthday, Perl. 28 years old today.
posted by Thorzdad at 3:12 PM on December 18, 2015 [5 favorites]


nims: I am assuming that we're talking about pissing matches among the scores of languages that have all of the features necessary to create collaboratively maintained code. Especially if one of the punching bags is java.
posted by CBrachyrhynchos at 3:13 PM on December 18, 2015 [1 favorite]


PHP as a language has slightly weird syntax and some semantic gotchas, and using it comfortably requires wrapping or reimplementing a lot of the built-in functions. That's true of JavaScript too, though. I think the debugging and error handling are the real problem, and why I advise friends to avoid working in PHP if thy have the option. It's just not pleasant. If you know PHP, that's awesome because you have everything you need to learn a language that's easier to work with and offers better-paying jobs. Or, if it's just a paycheck and you just don't feel like learning something new, well, I'm a little sad that you don't love programming in that particular way because I think it's really rich and fun, but do what makes you happy.

Other snobby stuff I see all the time:
  • Ragging on GC languages for realtime stuff. If you're willing to carefully manage memory anyway, you're looking at a ~1ms stutter every few seconds in the worst case, which will be literally unnoticeable.
  • Reductive arguments about a language based entirely on its history, most notably tarring C# as just a soulless, corporatized Java. They've actually diverged from one another a lot in the last 15 years, and the .Net framework is rapidly moving toward being portable, open-source, and relatively sleek. See also Rails and Python 2.
  • Complaining about dynamic typing, especially in JavaScript. It's not my favorite thing (I've done enough Rails to prefer being explicit about the shape of my data), but dynamic typing is rarely an actual problem.
  • Insisting that C-style syntax is the only sensible choice. Seriously, after a few hours with a particular syntax, you pretty much stop thinking about it and start expressing your intent fluidly. I do still groan when I have to go from C# to VB.net, but mostly out of habit these days.
  • Arguments for functional/OOP/imperative purity. They can be enlightening ways to work, but that doesn't make them the moral high ground.
It would be super great if programming culture could move more toward encouraging each other to try new, cool stuff without having to denigrate everything else or hyping through a megaphone.
posted by WCWedin at 3:18 PM on December 18, 2015 [6 favorites]


You know what though? I'm going to put my foot down about one particular thing: Doing procedural coding in SQL requires hellish contortions and I highly recommend against it if another option is viable.

until C# unfortunately introduced var.

var is just a compiler trick; the code is still strongly-typed and you can only use it when static analysis of the code makes the type unambiguous. Did you mean dynamic?
posted by WCWedin at 3:26 PM on December 18, 2015 [6 favorites]


@CBrachyrhynchos: really no pissing matches. I have no preference in languages at all. I just wanted to underline the fact that if you want to code something alone, you can use whatever you want, but when this is about team coding you have few choices regarding your language and environment. Sorry if i was misunderstood or looked disrespectful.
posted by nims at 3:26 PM on December 18, 2015


@WCWedin var is just a compiler trick; the code is still strongly-typed and you can only use it when static analysis of the code makes the type unambiguous. Did you mean dynamic?

I meant unreadable. Useless syntactic sugar.
posted by nims at 3:29 PM on December 18, 2015


Ragging on GC languages for realtime stuff. If you're willing to carefully manage memory anyway, you're looking at a ~1ms stutter every few seconds in the worst case, which will be literally unnoticeable.

This is, like the last generation Real Programmer script i think. Because of Moore's Law on one front and decades of buffer overflow exploits on the other I feel like these days there's a large contingent that will say "pointers? are you nuts?" outside of the sub-fields where you actually still need them.
posted by atoxyl at 3:29 PM on December 18, 2015 [4 favorites]


As Kent Pitman says, programming languages are like political parties.
posted by alpheus at 3:41 PM on December 18, 2015



I like Python and am currently using it at work.

I also hate Python - lack of strong typing, the ability to pass around random bags of data in dictionaries (sometimes disguised as objects), the wonderful ability to mask out serious errors with try/except. Slower than frozen molasses.

But I've used many languages professionally (enough to not want to count them). And they all have warts and holes and problems - the tradeoffs mostly involve the kinds of warts and holes and problems you like and where you like them.

Sometimes the language's problems don't lie with the languages, but with the users - the nicely corporate Java users with maven and ant and gradle and a hundred different indispensible frameworks. The wilderness of Perl programmers - lots of people writing unreadable scripts (line noise!) that people end up depending on but not being able to read well enough to understand. The mathematically inclined types with a tendency to build yet another abstraction in Haskell. The awful PHP amateurs writing such bad code (and, to be honest, some seriously good programmers writing good code). Though these days, it feels like the best of those PHP programmers seem to be migrating to JavaScript and building grand fortresses of callbacks.
posted by Death and Gravity at 4:00 PM on December 18, 2015


Dude, we have promises now.
posted by Artw at 4:06 PM on December 18, 2015 [2 favorites]


The pattern of technical discussion online seems to approximately start with someone making a statement or asking a question, transition into sniping around the edges of the concept under discussion rather than engaging with it, including massive tangential digressions of the kind which leave you unsure what you were even talking about to begin with, and maybe ultimately, if you're lucky, a handful of people will actually address the subject directly. I don't really know why the discussion on this post seems to have largely been about rehashing the hostile arguments described in the article but no discussion venue seems immune to that pattern.
posted by feloniousmonk at 4:16 PM on December 18, 2015 [3 favorites]


Hi.

I wrote this article! Really appreciated You Can't Tip A Buick's comment.

There's been some comments about how this is historical/not current.
I wrote this article because it's been happening around me in 2015. It's a modern thing that is happening in modern tech and it's unpleasant and offputting.

I meant to use du jour, but du jure and du rigeur are also appropriate for the intended meaning.

I appreciate the discussion!

(Also, MeFi's Own.)
posted by aurynn at 4:21 PM on December 18, 2015 [31 favorites]


I'd both agree and disagree with the premise of the article.

So when I started programming in 2001, it was du jour in the communities I participated in to be highly critical of other languages.

This is normal and natural, and being critical of the language you are using is normal and natural too.

Other languages sucked, the people using them were losers or stupid,

This is being a dick.

if they would just use a real language, such as the one we used, everything would just be better.

This is a ducking way of looking at things but it is absolutely true that some languages are better for certain kinds of task, some just suck but you have to use them because of lock in and some have been historically popular for certain tasks but better alternatives exist now.
posted by Artw at 4:24 PM on December 18, 2015 [1 favorite]


I'd also broadly agree that there's way too much being a dick in tech and if it there's some way for that to express itself in a way that turns out to be sexist boy will it ever.
posted by Artw at 4:25 PM on December 18, 2015 [5 favorites]


The worst programming language is English. Three's Company was an entire TV series about debugging.
posted by srboisvert at 4:34 PM on December 18, 2015 [9 favorites]


One issue is that BCPL/B/C won, and these languages have it in their DNA to "trust the programmer", even if the program is completely unsafe.

Another one is that a lot of the most influential people in programming are from elite institutions (Stanford, MIT, ...) and with it comes a "uphill both ways" mentality that values mortification, e.g. taking the infamous Math 55 course at Harvard.

All that means that "real", no-net languages that are fairly difficult to learn are valued vs. safer languages with low barriers to entry.
posted by Monday, stony Monday at 4:34 PM on December 18, 2015 [1 favorite]


In almost 20 years being in the web/webapp field, it seems like I've had to learn a new language and/or framework every three years or less. Sometimes it feels like we're not always getting better... just learning yet another way, with new tricks and gotchas, to make the same old mediocre application.

I'm in week 6 of a new contract which involves node.js and the MEAN stack, which is new to me. A funny position for a Javascript hater like me... but I'm professional enough to take the money and run. (but geez, node... not everything needs to be asynchronous). I had one recruiter tell me that big agency X had gone to MEAN in part because they wanted to attract new, presumably hipper young developers (instead of bitter old self-taught hacks like me. Ageist wankers.). So there's an example of language/framework as cultural policy.

One thought/bias/myth I have is that Moore's law has made it possible for any halfway useable programming language to rise to popularity if enough people get into it. Perhaps you too recall causing Netscape to choke and die in 2001 by running a few paltry js processes clientside. Fastforward to today- there's a poopload of available libraries that paper over javascript's inadaquacies, IDEs that keep you from screwing up too badly, and now just about every webpage lobs 100+k of compressed js libraries at the browser before asking it to do anything... and it's no sweat. So as the platforms become more powerful, it seems fashion is as influential as suitability sometimes.

Anyway... I wish someone would step on my lawn so's I can have a good yell...
posted by Artful Codger at 4:37 PM on December 18, 2015 [6 favorites]


A thing I've seen in my corner of development (web, mostly front end) is interviews are becoming much more predicated on "real programming" - i.e. they've turned into mini CS exams that have very little to do with what you'll be doing day to day, i.e. Screeners for if you've just come out of a CS degree or are a person with the free time to cram for one. Got a life or kids? You're in trouble. Probably screens out more self taught generalists than throwing shade at PHP does also.
posted by Artw at 4:45 PM on December 18, 2015 [4 favorites]


Actually, a flat learning curve would mean that it's basically impossible to learn. You mean a steep learning curve, meaning it's super fast to learn.

Wait, you have time on the x axis and what, ability on the y axis? I've always thought of learning curves as achievement or ability on the x axis and effort or difficult on the y axis, so a flat learning curve would represent being able to do a lot without having to learn a lot (big x for small y) whereas a steep one would mean requiring a lot of effort and learning to be able to do much (big y for small x). This seems more consistent with how I've seen phrases like 'steep learning curve' used by people (i.e. always to mean difficult to learn or requiring a lot of initial investment of time/effort).


Yes but the technical meaning is "quick to learn".
Would you say this discussion is more technical or popular?


Judging by the comment count, it's definitely popular.

Even then, with time on the x axis, and "learning" on the y axis (as per stack exchange) a steep learning curve still implies that you'll need to do a lot of learning very quickly, whereas a flat one would indicate that you don't need to. The barrier to entry is lower on the flatter curve.

Of course, I understand that this isn't how it's used in strictly academic psychology. But I would again argue that coding, however techy, is popular rather than technical relative to and from a position of academic psychology.


du jour? I think he means de rigeur...

de rigeur? I think you mean de rigueur...
posted by Dysk at 4:59 PM on December 18, 2015 [3 favorites]


but dynamic typing is rarely an actual problem

Though some bugs which occur in dynamically typed code (or, more specifically, weakly typed code) would be impossible if some form of strong typing were used. Specifically, if we lost the idea that a type is the shape of the underlying data (i.e., a signed machine-word-sized integer) and started to think of types as use cases of data. When your compiler reports a compile-time error if you try to, say, add an age to a shoe size, that can eliminate a large class of bugs.
posted by acb at 5:01 PM on December 18, 2015 [2 favorites]


In theory. In practice those are rarely the things that bite you. The real world problems mostly seem to revolve around having to put in lots of checks for undefined values.

Oh, and either way you're putting in a bunch of tests anyway, right?
posted by Artw at 5:06 PM on December 18, 2015


why not compromise? every variable whose name starts with "I" through "N" is an integer, everything else is a float. oh except you can override those by explicitly declaring a variable with whatever type.

whaddya say?
posted by indubitable at 5:08 PM on December 18, 2015 [1 favorite]


var myString;
posted by nims at 5:18 PM on December 18, 2015 [2 favorites]


myString=0.0d;

Here we go.
posted by nims at 5:23 PM on December 18, 2015


panama joe: you are wrong ;-)

GOF patterns were 'discovered not invented' as they say. you said it yourself

Yeah, the best thing you could say about design patterns is they gave names to a bunch of things you were already doing anyway.

it'd be great if most devs were doing them anyway, because what i usually see is shit-tons of tightly-coupled procedural crap that looks like state-of-the-art-1988 undergrad pascal bullshit in terms of it's coupling and encapsulation.

patterns aid intentionally looser coupling at flex points. If your devs apply the wrong pattern to the wrong scenario, that's not the pattern's problem.

That's as bad as saying SOLID is fucked up because you don't like explicit interface definitions and can't figure out when they're useful.

yeesh.
posted by j_curiouser at 5:31 PM on December 18, 2015 [1 favorite]


The theory about strong typing is usually that you will write stuff in a "typeful" manner, starting by defining your datatypes, a bit like you would start with create table statements in SQL. Then you start looking at the functions you need, and you write your type declarations first; you might even write your declarations before implementing some functions by using undefined in Haskell or its equivalent. With Sum (union) types and pattern matching, you get the nice bonus that the compiler checks for exhaustivity, so it catches you if you forget to deal with a case.
posted by Monday, stony Monday at 5:31 PM on December 18, 2015 [2 favorites]


Arguments for functional/OOP/imperative purity. They can be enlightening ways to work, but that doesn't make them the moral high ground.

agree. except for OOP, which is actually the high ground ;-)
posted by j_curiouser at 5:37 PM on December 18, 2015 [1 favorite]


but dynamic typing is rarely an actual problem

I'd say it's not so much a problem as an inconvenience.

Where static typing is really nice is when you have a whole pile of 3rd party APIs that you're trying to interface with. (And in my experience, this is the vast majority of the time.) With static typing, the compiler (or more usefully the IDE) will let you know what they need, rather than forcing you to go look through the code to figure it out.

This seems like a fairly minor advantage until the 50th time in a given day that you're slogging through somebody else's code to figure out what the hell they're expecting you to pass in.

And they can have the slickest test suite (which seems to be the go-to "solution") ever built, and in this situation that helps you not one fucking whit.
posted by bjrubble at 5:44 PM on December 18, 2015 [5 favorites]


I'll second the thought that certain languages are fit for certain purposes but sometimes there isn't much choice. (I'm looking at you JavaScript!) And there are few times you really get to choose a language anyway; when you join a project in progress the fundamental choices have already been made.

Sometimes compensating for a language's weaknesses lead to strengths. I'm on the typed language bandwagon but the JavaScript community has responded by coming up with excellent test frameworks and coverage tools. Without the safety net of thorough unit tests and good code coverage, you're left with a lot of problems that types might have avoided. But good unit tests are awesome and it's great to pretty much have to have them.

I see a lot of dialog between the different language and framework communities: framework design, package managers, etc. Node.js could not have sprouted such a rich package library so quickly if the designers didn't have good models in other languages to work from. This seems like a really healthy development to me notwithstanding a tendency in that community to regard, say, Java programmers as living fossils.

But this is something of a derail. Harshing on people because of their technology choices (or "choices") reflects badly on all of us.
posted by sjswitzer at 6:01 PM on December 18, 2015 [1 favorite]


This discussion has been... interesting for me to read. I'm not a programmer, I don't have a STEM background (my Masters is as a teacher, before that I was an English major) but I've worked CS and IT-adjacent for over a decade. I worked on a research project in the field of cognitive tutoring (I was, obviously, not there to do the programming) and now I do support for instructional technologies at a large university. I'm the only woman on my team.

Recently I've become interested in leveling up a little tiny bit. I'm over 40, I am not going to be making a career change, and I'm not naturally mathematically inclined, but I find the subject interesting. We maintain a WP site at work so the natural next step for me is to learn CSS (or rather, learn CSS better), PHP and JavaScript.

I was just at a WP developer conference a couple weeks ago, and there were so many women there. There were several sessions where the topic was, basically, "Hey nerds, how about don't be giant pricks to novices?" It was really refreshing and I felt really sympatico since I'm often the technologist specially requested by customers for being the most easily-approachable (probably partly because I am a woman and partly because I'm really just an upjumped novice myself).

So, this is Jack's lack of surprise that WP and the stuff that makes it go (that's a technical term) is considered "not real."

I have to ask though: for people who don't actually do this for a living and just want to fiddle around as a hobby, does any of this actually matter?
posted by soren_lorensen at 6:01 PM on December 18, 2015 [5 favorites]



why not compromise? every variable whose name starts with "I" through "N" is an integer, everything else is a float.

Just this week I was dealing with ancient FORTRAN code which did basically operate exactly like this.
posted by Jimbob at 6:52 PM on December 18, 2015


The Story of Mel

Nobody is more real than Mel, if someone acts like they are they are lying, the end.
posted by Artw at 7:42 PM on December 18, 2015 [6 favorites]


Can you imagine the kind of Wordpress plugin Mel would make? That sucker would stay made. Change one character of it and you risk deleting your site. Try and uninstall it and you'll probably black out the power grid. It would be a thing of wonder.
posted by Artw at 9:08 PM on December 18, 2015 [3 favorites]


Any good resources for learning to code more Functional JS? I'm responsible for maintaining an Ember project and am becoming more and more mindful of state.
posted by flippant at 9:49 PM on December 18, 2015


'Sensitivity cult' reminds me of people who think not being a jerk is 'PC gone mad'.

"PC gone mad" is fucking brilliant!

Not in the way you meant it of course but you're probably using some lame statically typed language.
posted by srboisvert at 10:10 PM on December 18, 2015


Because PHP allows all sorts of unsecure/insecure shit that other languages make hard or harder to do or have safeguards in place to block

I don't know that this is so true as you've worded it - a lot of the big things could be done in other languages it's just standard practice to use libraries and frameworks that are well-tested and include those safeguards. And PHP is becoming more like that - it just has a noted history of things being done in unsafe ways. I haven't used WordPress but since it's been around forever there is likely some pretty sketchy code out there.

This deal with PHP itself is just - for a long time the design and implementation of the language and built-in functionality was *remarkably* half-assed. You'd start out and the wide range of built-in functions would initially seem convenient but you'd start to discover that many of them would work differently than you expect intuitively, all of them would work differently from each other, some of them would be unexpectedly incredibly slow under pressure - there wasn't even a consistent standard for naming them! More advanced users might take a look under the hood and go WTF?! And - this is the thing, and a novice wouldn't know - these would be problems other languages just wouldn't have. And then because of the "run if at all possible" approach to error handling problems created by these idiosyncrasies would be very difficult to pinpoint except by trial and error. Plus if you weren't a novice you'd realize that there were also lots of powerful features other languages would have that PHP wouldn't.

Now I'm stating this in the past tense to be fair to the people who have worked to clean up PHP but honestly there is a large bit of weirdness still baked in and probably more under the surface than I even want to know about. And while the feature set of PHP has been dramatically expanded its all catch-up to other languages - and many of those features are actually themselves done in an idiosyncratic way. There's just so little to recommend the language itself.

So why is it so popular? Well when it first appeared it was novel for being designed specifically for the backend role in Web development, and included a lot of convenient features to that end. Many of those features go strongly against what's considered good practice now but hey it was the 90s and everyone was self-taught. It was free. It also has long played nicely with Apache, the most popular web server in the world, and MySQL, a free database which in being extremely popular but often disrespected has some similarities to PHP itself. All you need to do to start PHP development on Windows is install WAMP. All you need to get it running on Linux is - well it's probably already installed. As per the discussion above setting up other platforms does still tend to involve more steps than that. Now, a professional programmer would probably tell you many if those steps are things you should learn anyway, and they'd generally be right, but in the real world accessibility counts.

So yeah it's a great case study in why the technical side only counts for so much and that's something CS people need to learn. But I cannot pretend that it's arbitrary that it has been singled out for technical criticism because it is a real outlier in the number of technical (and usability beyond simple cases) problems it has traditionally had.
posted by atoxyl at 11:19 PM on December 18, 2015 [8 favorites]


The mark of a quality programming language is the ease with which mistakes are avoided when writing new code or modifying existing code. There have been many technological improvements in this field since the invention of the programming language, and I am sure they will continue to improve. However, minimizing time spent on a project always involves finding existing code to work with, an existing application that can be modified or at the very least some libraries to use. And these tools and edifices too have their own levels of quality measured in the same way. Deciding when to keep plugging away on an existing code base and when to start fresh is a difficult decision.

I completely understand why people learn PHP. There is a vast quantity of web publishing software available for re-use in PHP. Some of it is even of high quality. But it's frustrating to me, because I know a number of programming languages and although I've only dabbled in PHP I've found it very confounding and haphazard. The best thing a library can do for the programmer is to follow consistent systems of naming and behavior, to minimize the amount of stuff you need to keep in your head at one time in order to understand the thing. PHP does not. And then there's all the awful example code out there teaching these novices bad habits. So the situation is a bit frustrating. It's great that there's open source software like WordPress, that's easy to modify and allows novice programmers to quickly write custom web publishing applications. But I want those novice developers to learn other languages, to see how much better it gets. Preferably before they write a web application full of security holes.

Also, I definitely agree with the article that the two word synopsis of the previous paragraph, "PHP sucks," is not particularly helpful to anyone, especially to novice programmers who only know PHP.
posted by sanedragon at 12:52 AM on December 19, 2015 [4 favorites]


If you know PHP, that's awesome because you have everything you need to learn a language that's easier to work with and offers better-paying jobs. Or, if it's just a paycheck and you just don't feel like learning something new

Yeah that's about as backhanded as it gets - this argument gets used over and over and over and over and I hate it.

'why are you still using php? it means you don't want to learn something new and good, which means you just don't care'

There are a stack of reasons why people might still use PHP and develop new things in it that you miss with this:

* existing software that you don't want to rewrite from scratch
* you want to use existing open source packages and extend/develop those
* you have a job that involves maintaining older software and want to maintain skill with the language that's used there
* your energy budget for learning new things this month is being spent in an area that isn't learning yet another dev stack - maybe you're focusing on devops stuff or doing cool queue things or security tooling or understanding PCI or finally mastering sed or
* you enjoy keeping things working instead of throwing them out and starting again
posted by xiw at 1:51 AM on December 19, 2015 [4 favorites]


I have this theory that contempt culture is particularly strong with programming languages because they're very much about how you think. So if you think a language is awful - ugly, ill-defined semantics, awkward, unsafe - you assume that its users have no sense of aesthetics or elegance and no concern for safety or correct functioning.

PHP was one of the first languages I learned, and it was very useful for creating my first websites. Still, I now recoil at the idea of using it, because it is genuinely a very bad language. Other options are more productive and have better error reporting and fewer pitfalls.

But I also know a lot of professional PHP developers, and I have to say that the PHP community is far nicer than most, and they do absolutely care about aesthetics and elegance and safety and correctness. Why they're trying to achieve all this using PHP is a mystery to me, but I very much appreciate their focus on getting things done rather than having status fights.
posted by Zarkonnen at 2:53 AM on December 19, 2015 [3 favorites]


I think it's time PHP rebranded as ApacheScript™ and started touting the advantages of being baked-in to a web server over the weird process + proxy stuff that people have to do with other languages.

I don't use PHP much anymore, but I'll defend it as a perfectly-adapted tool for the wild world of the web. You can do anything, but as you get too clever it checks your ambitions. PHP is bash for the web.
posted by migurski at 3:10 AM on December 19, 2015 [6 favorites]


Have there been any attempts to design a better PHP; i.e., a language that has the upload-and-go advantage of PHP for setting up server-side applications without fiddling, but attempts to avoid its sloppy and/or insecure design?
posted by acb at 4:17 AM on December 19, 2015 [1 favorite]


I'm not sure that requires a language, just friendly plug-and-play packaging of [your favorite language and web framework and common plugins]. If this doesn't exist or does but doesn't get attention it's probably because this is mostly only relevant to entry-level users. And a lot of we software people tend to think "well they really should just learn all the real tools because it will help them in the long run" - which is true but we probably underestimate how intimidating that can be.
posted by atoxyl at 5:51 AM on December 19, 2015 [2 favorites]


But one thing that folks miss about Microsoft is that their sales people were all about doing whatever deals were required to get their shitty software used.

Q: How many Microsoft sales people does it take to change a lightbulb?

A: None; they just redefine darkness to be the industry standard.
posted by acb at 10:29 AM on December 19, 2015 [3 favorites]


Q: How many Microsoft sales people does it take to change a lightbulb?
A: None; they just redefine darkness to be the industry standard.


For hardware, it works better with Apple.
posted by nims at 10:50 AM on December 19, 2015 [3 favorites]


In what sense exactly does Java "blow"?

Familiarity breeds contempt, and in this case I suspect many people simply assume more people are familiar with Java than there actually are. But if you're at a Python conference because you want to shift career trajectory from Java developer to Python developer, you would feel (if anything) the warm congratulations of having your biases confirmed by a Python presenter claiming Java sucks.

If you're not familiar, Fizz BuzzEnterpriseEdition attempts to sarcastically document the culture and conventions of Java in the wild, by taking the simple FizzBuzz children's math game and implementing it according to java-in-the-enterprise conventions. But I really don't want revisit past, abusive relationships, thanks.
posted by pwnguin at 11:51 AM on December 19, 2015 [1 favorite]


Also if anybody can give me a list of things PHP does right like I just did for JS I would sincerely appreciate it because again, I do PHP and I really couldn't think of many.

i think that's the wrong question. it's not a question of what PHP does right, but what PHP did right when it mattered. you cannot untangle the rise of PHP from the history of how websites were developed and how fantastically well and easy it worked in shared-hosting environments. the barrier to entry to starting to use PHP is and almost always has been tremendously low.
posted by jimw at 12:01 PM on December 19, 2015 [3 favorites]


In what sense exactly does Java "blow"?

Steve Yegge’s Execution In The Kingdom Of Nouns is a pretty good high-level explanation of Java’s stylistic preference for nouns over verbs, found in the various ThingDoerFactory classes which require a bunch of setup before you can Do The Thing.
Verbs in Javaland are responsible for all the work, but as they are held in contempt by all, no Verb is ever permitted to wander about freely. If a Verb is to be seen in public at all, it must be escorted at all times by a Noun.

Of course "escort", being a Verb itself, is hardly allowed to run around naked; one must procure a VerbEscorter to facilitate the escorting. But what about "procure" and "facilitate?" As it happens, Facilitators and Procurers are both rather important Nouns whose job is is the chaperonement of the lowly Verbs "facilitate" and "procure", via Facilitation and Procurement, respectively.
There’s a version of this I’ve seen in the Ruby community, where functional requirements are delivered as gem hunts: a need to do a thing becomes a search for a thing_doer gem, evaluated based on its popularity or freshness. This often happens even when the thing to be done is incredibly simple, and potentially faster copy-pasted or written from scratch. I’ve got a theory that the early explicit Java hate from the Rails core team ended up attracting a bunch of repentant Java developers, who brought their noun preferences over wholesale.
posted by migurski at 12:03 PM on December 19, 2015 [4 favorites]


Oh man that drives me nuts in Rails, when people throw together two dozen bleeding edge gems they don't understand the internals of - and trying to figure out what happened when it breaks. That's like the other side of the coin of PHP people rolling their own when they really shouldn't.
posted by atoxyl at 12:48 PM on December 19, 2015 [2 favorites]


Web dev's a wonderful career y'all!
posted by atoxyl at 12:50 PM on December 19, 2015 [3 favorites]


For those interested in FP using JavaScript I would very much recommend the free book JavaScript Allonge - it's quite unlike any other JavaScript book I've read.

raganwald has this air of patient, humble wisdom about him that's really wonderful. I wish we had more of that in the public discourse.

In theory. In practice those are rarely the things that bite you. The real world problems mostly seem to revolve around having to put in lots of checks for undefined values.

I have to disagree with this, considering that the vast, vast majority of the active error reports in the Sentry log for the Python services I work on are type errors of some kind -- Nones where strings are expected, strings where ints are expected, etc. Tracking them down is awful too, since at no point in the call chain until I hit an IO boundary can I be assured of the type of the damn thing getting passed in or out.
posted by invitapriore at 1:02 PM on December 19, 2015 [2 favorites]


To answer atoxyl 's request for a list of features that PHP has some claim to superiority over other programming languages, I have some thoughts. I've been programming in PHP for the past few months after being in a Scala shop for a couple of years.
  1. if you want to do something, it's probably already part of the standard library,
  2. and it's probably relatively easy to understand how to do it, because there is fair-to-middling documentation for nearly everything,
  3. the arrays-are-dictionaries model is conceptually really easy to understand,
  4. the 'write it and watch it work' immediately (changes to websites happen at the same rate as coding)
  5. not having to worry about things like type safety is oddly liberating (ultimately, I'd say not in a good way, though).
I wouldn't choose PHP, but it does have at least these advantages.
posted by willF at 11:46 PM on December 19, 2015 [6 favorites]


Gettin a 'lil late for this thread to have a real discussion about this but:

if you want to do something, it's probably already part of the standard library,

All thrown together in one namespace (and often behaving oddly).

and it's probably relatively easy to understand how to do it, because there is fair-to-middling documentation for nearly everything

True, but also applies to most of PHP's direct competitors.

the arrays-are-dictionaries model is conceptually really easy to understand

I'll say probably true for a beginner, whereas it becomes confusing if you do know the difference between arrays and dictionaries.


the 'write it and watch it work' immediately (changes to websites happen at the same rate as coding)
not having to worry about things like type safety is oddly liberating (ultimately, I'd say not in a good way, though).


I am a fan of interpreted/dynamically typed languages and do not consider those aspects of PHP to be deficiencies in and of themselves. The best comparisons for PHP would be languages like Python, Ruby, server-side JS, even Perl. It has some things that exacerbate the pitfalls of that kind of programming though - the worst automatic typecasting, the "declare a variable wherever by using it" thing (yes, you can turn it off) the hodgepodge of error handling (they're finally fixing that one though). Also the direction PHP has been going is actually toward more (optional) type enforcement.
posted by atoxyl at 4:29 PM on December 20, 2015


if you want to do something, it's probably already part of the standard library,

All thrown together in one namespace (and often behaving oddly).


This also describes bash, which I think is PHP’s closest relative.

Rasmus has always said that PHP is intended to be glue between other things, and many of those standard library functions that behave differently from one another are imported from deeper underlying libraries where they’re perfectly familiar and consistent. The original usage of PHP assumed you’d have complicated things written in C, and then wodge them all together in a template layer executed by Apache.
posted by migurski at 8:53 PM on December 20, 2015



This also describes bash, which I think is PHP’s closest relative.


bash (and /bin/sh) is a command-line interpreter which one can write scripts with. It's not meant for anything more complicated than a canned set of commands, and the most complicated things one commonly sees in it are installation scripts and such. As such, it's a pretty low bar to compare something used for developing long-running web applications (with an implicit expectation of security and reliability) to. If PHP had stayed at personal homepage guestbook/counter scripts (where it began), it may have been in its depth, but its tragedy is that it appeared to be good enough for building real web apps in, resulting in a lot of labour being spent patching up and bailing out leaky vessels.
posted by acb at 2:55 AM on December 21, 2015 [1 favorite]


Also PHP is actually pretty terrible as a general-purpose shell-script replacement compared to Python or Perl (which I always thought was the language most designed for the task). It just lives in its little quick-and-dirty web niche and quick and dirty are being replaced by quick and structured. Which you can do in PHP but also in something else.

I don't love bash as a programming language either but its obvious upside is that it's truly contiguous with everything else you do in *nix.
posted by atoxyl at 1:58 PM on December 21, 2015 [1 favorite]


“Which Programming Language Should I Learn First? [Infographic],” Carl Cheo, 30 December 2014

P.S. With bonus Lord of the Rings analogy.
posted by ob1quixote at 3:26 PM on December 21, 2015 [3 favorites]


I'm a fan of racket as a learning language. It comes with a very nice IDE with a stepper/debugger. One can find curriculum without drowning in it. And python's mix of methods that return something obvious and methods that return nothing obvious but mutate data in place annoys me.
posted by CBrachyrhynchos at 6:53 AM on December 22, 2015 [1 favorite]


I wouldn't choose PHP, but it does have at least these advantages.

Me neither, but in my mind a combination of PHP/Apache/MYSQL is far superior than one of ASP.NET/IIS/C#/SQLServer
posted by nims at 6:01 AM on December 24, 2015


Back to this late.

Re this comment on WP and PHP:
And a few months or years later your workplace gets hacked and the fancy network and security consultant they hire to do due diligence ends up pointing the finger at the WordPress blogs. But you need to keep hosting the WordPress blogs and the person who set them up custom-coded a plug-in for WordPress and you have to figure it out. Figure out what's broken. And maybe you dive deep and you figure out that it's not WordPress but something about the proxy that sits in front of the WordPress. And you have to explain it to your bosses and to the fancy consultant.

THAT'S when it matters. And that's when it sucks that WordPress is written in PHP. Because PHP allows all sorts of unsecure/insecure shit that other languages make hard or harder to do or have safeguards in place to block, so you can't say "Hey, fancy consultant, it can't be PHP because as we all know it blocks file system access for web and internet users." or "Hey, fancy consultant, it can't be the WP blogs because we know THAT's secure and we keep it up to date." In fact, you have to prove everything tooth and nail because PHP and WordPress are both automatically suspect, and for good reason. Lots of hacks write lots of shitty code to run as plugins with WordPress. So you have to go through each one and prove that it isn't the problem before you make them point the finger at some other part of the system.
In my career, the different shops I worked at took me through a progression of languages and frameworks: Perl, PHP, Java then Struts etc, C# and dot-NET, then back to PHP, in several bigger frameworks like symfony, CodeIgniter, etc...and now I'm in a node shop, which I still don't like. ( ptui ). You can believe that the PHP I write now doesn't look like the PHP I wrote at the start. It is possible to write well-structured, dependable and maintainable code in PHP.

Two comments re the above security issue (hacked WP site)

A) if your company has something valuable online that's worthy of protection, and your website is still amateur-hour, with poor protection of the data, and is susceptible to a skript kiddie attack... your company sucks.

(WP is free publishing software, folks. If your company can splurge on a security consultant, you should already have hired the talent to use WP and PHP securely, or have hopefully moved onto something more enterprise-grade to protect your data)

B) if fancy consultant simply sees WP and PHP, sneers and says case closed... fancy consultant sucks. Unless they've clearly busted you for doing A.
posted by Artful Codger at 7:58 AM on December 26, 2015 [1 favorite]


Short addendum to the above: if your company has a blog or similar public info site, as well as an important data or commerce application, you don't put them on the same server. That's like a bank vault with a bay window. Duh.
posted by Artful Codger at 8:13 AM on December 26, 2015 [1 favorite]


Me neither, but in my mind a combination of PHP/Apache/MYSQL is far superior than one of ASP.NET/IIS/C#/SQLServer

I've had a way better time with the later, particularly in its MVC incarnation, but I suspect it very much depends what you are trying to do.
posted by Artw at 8:21 AM on December 26, 2015


Some companies I've worked for had terrible architecture, and some of them have not.

We all need to work, but if your company is doing something that sucks, there's a professional and personal obligation to call them on it (diplomatically if possible. In writing or email, always). If they later crash and burn, you tried.
posted by Artful Codger at 7:29 AM on December 27, 2015


Artw: Fair enough.
posted by nims at 12:39 PM on December 29, 2015


« Older familiar to cat-owners   |   Where "schools aren’t a place to learn, they’re a... Newer »


This thread has been archived and is closed to new comments