Yes, especially when you're running linux, and the project you started on windows that uses serial ports suddenly doesn't work any more and you wonder why.
Hint: The events for serial data received didn't fire under mono, for reasons.
Mostly right. Microsoft showed off how .NET 1.0 worked on FreeBSD but it was absolutely pointless since they didn't provide commercial licenses to run it on anything else but Windows until .NET Core.
I hosted my personal site using Mono over 10 years ago now and it mostly worked well. I contributed some code to Mono to fix a few edge cases where their behaviour deviated slightly from Microsoft's.
Of course, I couldn't actually look at Microsoft's shared source code when doing that, so I had to just observe its outputs. At the time, Mono code had to all be clean-room implementations, since Microsoft's shared source program, where they released parts of the .NET Framework 4.x source code publicly, had a very restrictive license that didn't permit reuse (it wasn't open-source). Even just looking at the code meant you couldn't contribute to Mono.
I was very happy when .NET Core was announced and switched to a beta of 1.0 as soon as I could.
And Python's migration to 3.x is more or less complete. Took a while (15 years since 3.0), but it's to the point where migration is not a common topic of conversation.
Perhaps a paper hilt. It'll trick some people into thinking it's safer but as soon as you begin using it you realise it still has all the same problems as before.
It seems the image is a screenshot of the original page, slightly upscaled, but since the source page includes links to larger images we can make the HD remaster. Shotgun not me.
I think it's definitely a dig at windows, because that used to be the primary issue with c#, you could only really target windows and you could only write it using windows. You could run .net framework applications on Linux, but it was a lot of work and it really underperformed (which would fit the timeline of 2015, when this comic was first posted). Now with .net core you can make a self contained executable that can run on anything.
The M1 Garand is known for having a problem during reloading where you have to stick your thumb in a slot that's about to shut very hard. There are techniques to avoid getting pinched, but "Garand thumb" is a well-known phrase among vintage rifle enthusiasts.
I watched Jon Gjenset's stream where he implemented the beginnings of a BitTorrent client in Rust and of the four hours about 25% of it was spent wrestling with quirks in serde and reqwest.
It was pretty discouraging watching a pro have to fight the ecosystem so hard.
It's not as common any more, but there's still things using logic programming languages (Prolog and similar) even today.
Java uses it in the type checker. From the JVM spec:
The type checker enforces type rules that are specified by means of Prolog clauses.
There's some other compiler and NLP (natural language processing) use cases for it too. I've seen some companies use it to define restraints for their business logic, which isn't too different from the type checker rules use case.
We did Prolog in university - actually it was one of the two languages we had to learn in CS, the other one being Pascal.
I always considered Prolog a pain in the ass and unsuitable for anything bigger than a piece of homework due to the "we don't do loops, we have tail recursion" making the code unnecessary complex and hard to read. On a list of Write-Only languages I'd rate it a few steps below Perl.
Powershell is so much more than bash, not in a derogatory way.
It's a full fledged object oriented programming language, and it's written in .Net I believe. You can integrate tons of plugins to manage your whole infra (exchange, Cisco, AD, VMware etc), just from the Powershell shell.
I hate it because it's slow, clunky and overly complex for its prime use, which is scripting.
I actually hated Powershell until I was forced to work on some automation scripts with it and realized that it's actually pretty cool.
Bash is good for quickly doing something in the terminal but for longer script files I prefer PS now. It feels much more modern and has a less janky syntax.
Funnily enough the reason I had to use it was to make my scripts cross platform between osx, linux and windows.
People tend to hate on PowerShell but it's cross-platform these days, and far easier to write than shell scripts once you understand the syntax.
You can pipe objects between functions, rather than just string streams like in Bash. Often there's no cut, sed, grep, etc needed as what you want is probably a property on an object.
It's not just a basic scripting language like Bash. It's built on top of .NET, so most of things you can do in C#, you can also do in PowerShell (and if not, you can call into C# code).
It's especially popular for administration of Windows systems - if there's anything you want to do on a Windows system, it's likely there's a PowerShell module for it.
Whether it's pulling AD/O365 objects for security analysis, or SSH into a network appliance, PowerShell is a handy little tool. It's everything we used to use CMD for and more.
Some old-school Windows sysadmins are still holding on to VBScript and batch files for automation, but I think most have switched over to PowerShell. Definitely a useful tool.
I'm willing to bet a TON of medical and banking data is still making its way through perl today. (I'm not necessarily saying this is a good thing, but I have years of experience in healthcare IT).
For that matter, there are still folks out there coding, professionally, in FORTRAN.
Thing is, back then, we didn't know any better. Software was a commodity, and both the people who wrote it and the people who bought it had grown up in a time before the internet, before SaaS; people whose parents who, if they made things, made widgets.
Back then, you could write a piece of software, and it was done.Then you sold it, and moved on. If the old software had bugs, if they weren't catastrophic enough to cause a lawsuit, buyers learned to live with them. It was too bad; you already shipped the tapes. And few companies employed their own software developers unless they were software development companies. Man pages have a BUGS section, and that's because there's no intention to ever fix those bugs, because that software is done.
Software today is never finished. Our first reaction if we see a project with no recent releases is that it's abandoned, or dead, and certainly that it's worse than a project with recent commits to the repo. Github is a huge culprit in reinforcing this mentality, but mobile app platforms (stores and OSes) are terrible about this, too. Google constantly changes the Play store in ways that force developers to tweak their apps lest they become incompatible, booted, or get flagged as being "old" a.k.a. "inferior."
Yet, still, there's so much software out there that's complete. An institution may hire a developer to come in and make a change, but it's usually a contract one-off; it's more like taking your car in to have the starter replaced. Those systems are going to continue keeping "dead" programming languages (commercially) alive for years to come.
I use perl for that stuff (mostly automation) that's a bit too complex for bash, but doesn't need a proper project. Modern people would use python for this kind of thing. But, I'm too old to change!
When it comes to surprising behavior, Perl isn't any worse than JavaScript. Which admittedly isn't a great comparison for either language. Most of the bellyaching around Perl has to do with regular expressions, but every other language out there picked up Perl's regex syntax in a mostly verbatim way (PCRE).
Perl is still as good an interpreted language as any of the others tbh.
Most of its "problems" are cosmetic, which is probably why Python ended up being its successor in many fields.
Given the choice between brutalist and Fisher-Price architecture, most people are going to opt for the latter even if everything's effectively the same inside.
Assembly is a scrapheap with every sort of technology imaginable but it's all broken. Could be an iron man suit, or you could just grab a length of rebar.
IMO the HTTP Range header (the thing that lets you resume downloads) was one of the best innovations back then. It let the client tell the server where to start the download from, and how much of the file to download. This means it also let you speed up downloads by downloading multiple pieces in parallel. I used to use a program called GetRight and loved it.
We still split up downloads like this today. These days, internet connections are often fast enough that you can't reach full speed with a single connection, so speed tests and things like Steam will open multiple concurrent connections for their downloads to maximize download speed.
It's a very large image, so many clients load a scaled down version. On Boost at least you can press the HD icon and it loads the fullsize images where stuff is legible.
Python would be a Tavor TS12 automatic shotgun with rotating tube magazines. It's heavy, doesn't have a fast fire rate, but it can fire a ridiculous array of ammunition, and they're working on the ability to fire all the barrels at once (GILess)
Hey now! PHP may be old and a bit clunky, but it gets shit done. I'd say PHP is the Colt repeating rifle, since PHP won the internet and the Colt won the West. Much like the Colt, there are better tools available today, but if you want stuff done reliably and quickly, PHP and the Colt are good choices.
but like, wasn't facebook written in php and didn't it kind of take over, about as much as any programming whatzit ever has? (not saying that was a good thing, but yeah...)
Facebook has used Hack for a long time now, which is very different from PHP these days. It's entirely statically typed with a bunch of advanced features that PHP doesn't have.
Yahoo used a lot of PHP too, back when they were still very popular.
fortran is a bow and arrow. it was quite powerful and widely used in the past, but i have not met anyone in recent years who uses it other than as a hobby.
That bash joke is pretty accurate. I watched a IT expert write the ugliest bash script I ever saw. Just the longest set of instructions ever. Then it just worked.
You can definitely tell how old it is because both Rust and 3D printed guns have gotten way better.
And TypeScript is just the JavaScript sword, but with a cheap leather hilt.
And C# now can be taken off the donkey and mounted on a penguin and works rather well.
Now i can't get that picture out of my head. Its amphibious too!
It's a heavy duty hilt that's easily detachable by a small recessed switch labeled “any”.
(It does its job very well as long as you don't opt out of using it)
Except the tool you use to build the hilt in the first place has 100 permutations of settings, and most of them kill you on the spot.
I'll take .tsconfig and .webpackrc over C#
.configfiles every day of the week.because it makes it (type)safe to use..!
Also C# (or should I say the .net framework) is now cross platform, which wasn't really the case when I first saw this meme.
This joke made sense when instead of .net you could only use Mono with C# on other platforms, which wasn't very good at the time.
Yes, especially when you're running linux, and the project you started on windows that uses serial ports suddenly doesn't work any more and you wonder why.
Hint: The events for serial data received didn't fire under mono, for reasons.
Mostly right. Microsoft showed off how .NET 1.0 worked on FreeBSD but it was absolutely pointless since they didn't provide commercial licenses to run it on anything else but Windows until .NET Core.
I hosted my personal site using Mono over 10 years ago now and it mostly worked well. I contributed some code to Mono to fix a few edge cases where their behaviour deviated slightly from Microsoft's.
Of course, I couldn't actually look at Microsoft's shared source code when doing that, so I had to just observe its outputs. At the time, Mono code had to all be clean-room implementations, since Microsoft's shared source program, where they released parts of the .NET Framework 4.x source code publicly, had a very restrictive license that didn't permit reuse (it wasn't open-source). Even just looking at the code meant you couldn't contribute to Mono.
I was very happy when .NET Core was announced and switched to a beta of 1.0 as soon as I could.
And Python's migration to 3.x is more or less complete. Took a while (15 years since 3.0), but it's to the point where migration is not a common topic of conversation.
Perhaps a paper hilt. It'll trick some people into thinking it's safer but as soon as you begin using it you realise it still has all the same problems as before.
I don't know, man. I migrated one of my libraries and found 3 bugs just from that. It's prevented a number of other bugs and issues too.
Through long and weary travels,* I bring the gift of source preserved by the workers of the great archives: https://web.archive.org/web/20140831164530/http://bjorn.tipling.com/if-programming-languages-were-weapons
* (they weren't that bad honestly, a kind soul that took the journey 9 years ago made mine much shorter)
Thank you! The original source of truth! 💎 As IT people, this is part of our culture and should be transmitted. 🤣
It seems the image is a screenshot of the original page, slightly upscaled, but since the source page includes links to larger images we can make the HD remaster. Shotgun not me.
C++ and ruby are weird, especially since C is somehow considered a reliable rifle. Rust betrays it's age
C is reliable in the sense that your C program reliably has memory leaks and security holes.
As does C#. The Windows-specific parts are not the parts most developers will use these days.
I took it as the donkey being .NET
C# is .Net though. It's only syntax without it.
I think it's definitely a dig at windows, because that used to be the primary issue with c#, you could only really target windows and you could only write it using windows. You could run .net framework applications on Linux, but it was a lot of work and it really underperformed (which would fit the timeline of 2015, when this comic was first posted). Now with .net core you can make a self contained executable that can run on anything.
You can even compile to a native executable these days I believe so you don't have to have the .net runtime installed or bundled.
2015? I'm sure last time I saw this it was way before 2015
Agree. That one didn't age well...
The M1 Garand is known for having a problem during reloading where you have to stick your thumb in a slot that's about to shut very hard. There are techniques to avoid getting pinched, but "Garand thumb" is a well-known phrase among vintage rifle enthusiasts.
This fits C very well.
C is a knife. The basic thing you can build weapons (programming languages) with.
Yes. Knives can also be used as screwdrivers for fasteners with a "blade" or "flat" head.
It's a screwdriver without a head because you have to build it yourself
You are confusing C with UNIX
same difference
The old joke is that C++ is an octopus made by nailing legs to a dog.
So it should probably be a rifle-chaku made by connecting two Garands with a chain.
C# vs Java is also really weird since C# started out as basically a Java clone.
I watched Jon Gjenset's stream where he implemented the beginnings of a BitTorrent client in Rust and of the four hours about 25% of it was spent wrestling with quirks in serde and reqwest.
It was pretty discouraging watching a pro have to fight the ecosystem so hard.
Old enough they still know Prolog.
And before the time people actually talked about the multidimensional clusterfuck that C become.
Well, to be honest C is still C, but it's children have run mad.
C changed from the 90's to now. It got a lot of syntactic improvements, and a ton of semantic madness.
Our C is not the same as the last generation's.
--std=c99
It doesn't change the madness. Just the syntax.
It's not as common any more, but there's still things using logic programming languages (Prolog and similar) even today.
Java uses it in the type checker. From the JVM spec:
There's some other compiler and NLP (natural language processing) use cases for it too. I've seen some companies use it to define restraints for their business logic, which isn't too different from the type checker rules use case.
It's definitely fallen out of common use though.
We did Prolog in university - actually it was one of the two languages we had to learn in CS, the other one being Pascal.
I always considered Prolog a pain in the ass and unsuitable for anything bigger than a piece of homework due to the "we don't do loops, we have tail recursion" making the code unnecessary complex and hard to read. On a list of Write-Only languages I'd rate it a few steps below Perl.
Tail recursion is just fancy way to loop.
There's a few things it's very good at, but anything outside of that tends to be painful.
I also used Pascal and Prolog in university, in my first year. That was... 15 years ago now. Wow.
I'm using Prolog in university right now. And Scala :(
(?(bruv(,(problem(a(got(you(,(Oi)))))))))
In Clojure it could be
It's funny because people describe PowerShell as powerful, but really they mean it's also a hammer to mash everything with. "Powerfull!"
Powershell suffers from the typical Microsoft problem: Ignore for decades, and then go completely over the top with it.
I see Powershell as a nuclear bomb. It is extremely powerful and complex and barely anybody uses it because of it.
Isn't powershell just bash but for windows?
Powershell is so much more than bash, not in a derogatory way.
It's a full fledged object oriented programming language, and it's written in .Net I believe. You can integrate tons of plugins to manage your whole infra (exchange, Cisco, AD, VMware etc), just from the Powershell shell.
I hate it because it's slow, clunky and overly complex for its prime use, which is scripting.
Yes and no. They serve roughly the same purpose.
I actually hated Powershell until I was forced to work on some automation scripts with it and realized that it's actually pretty cool.
Bash is good for quickly doing something in the terminal but for longer script files I prefer PS now. It feels much more modern and has a less janky syntax.
Funnily enough the reason I had to use it was to make my scripts cross platform between osx, linux and windows.
People tend to hate on PowerShell but it's cross-platform these days, and far easier to write than shell scripts once you understand the syntax.
You can pipe objects between functions, rather than just string streams like in Bash. Often there's no
cut,sed,grep, etc needed as what you want is probably a property on an object.It's not just a basic scripting language like Bash. It's built on top of .NET, so most of things you can do in C#, you can also do in PowerShell (and if not, you can call into C# code).
It's especially popular for administration of Windows systems - if there's anything you want to do on a Windows system, it's likely there's a PowerShell module for it.
Whether it's pulling AD/O365 objects for security analysis, or SSH into a network appliance, PowerShell is a handy little tool. It's everything we used to use CMD for and more.
Some old-school Windows sysadmins are still holding on to VBScript and batch files for automation, but I think most have switched over to PowerShell. Definitely a useful tool.
Barely anybody uses it? Maybe on the dev side. Cloud and Data engineers use it all the time.
I use PowerShell to mass smash unblock DLLs in Windows 10
It's a pretty good representation of Rust, being 3d printed means that it's the only gun where you can't shoot yourself in the foot
[flips safety off[
But it can just blow up in your face
Only if clicked the "nosecurity" before hitting print
Yet
"perl was probably useful once"?!
I'm willing to bet a TON of medical and banking data is still making its way through perl today. (I'm not necessarily saying this is a good thing, but I have years of experience in healthcare IT).
For that matter, there are still folks out there coding, professionally, in FORTRAN.
Thing is, back then, we didn't know any better. Software was a commodity, and both the people who wrote it and the people who bought it had grown up in a time before the internet, before SaaS; people whose parents who, if they made things, made widgets.
Back then, you could write a piece of software, and it was done. Then you sold it, and moved on. If the old software had bugs, if they weren't catastrophic enough to cause a lawsuit, buyers learned to live with them. It was too bad; you already shipped the tapes. And few companies employed their own software developers unless they were software development companies. Man pages have a BUGS section, and that's because there's no intention to ever fix those bugs, because that software is done.
Software today is never finished. Our first reaction if we see a project with no recent releases is that it's abandoned, or dead, and certainly that it's worse than a project with recent commits to the repo. Github is a huge culprit in reinforcing this mentality, but mobile app platforms (stores and OSes) are terrible about this, too. Google constantly changes the Play store in ways that force developers to tweak their apps lest they become incompatible, booted, or get flagged as being "old" a.k.a. "inferior."
Yet, still, there's so much software out there that's complete. An institution may hire a developer to come in and make a change, but it's usually a contract one-off; it's more like taking your car in to have the starter replaced. Those systems are going to continue keeping "dead" programming languages (commercially) alive for years to come.
I use perl for that stuff (mostly automation) that's a bit too complex for bash, but doesn't need a proper project. Modern people would use python for this kind of thing. But, I'm too old to change!
and perl is orders of magnitude faster than python for document parsing
When it comes to surprising behavior, Perl isn't any worse than JavaScript. Which admittedly isn't a great comparison for either language. Most of the bellyaching around Perl has to do with regular expressions, but every other language out there picked up Perl's regex syntax in a mostly verbatim way (PCRE).
Perl is still as good an interpreted language as any of the others tbh.
Most of its "problems" are cosmetic, which is probably why Python ended up being its successor in many fields.
Given the choice between brutalist and Fisher-Price architecture, most people are going to opt for the latter even if everything's effectively the same inside.
I spent my career writing COBOL. Sad not to see it on the list. I think it would be a shield you can bash people with; clunky but effective
Cobol as a shield would also fit with it inexplicably still be in popular use long after anyone expected!
What's that I hear? It sounds like Grace Hopper cackling from the grave...
Python V2/V3??? How old is this thing? Not even Debian comes with Python 2 these days.
It was only removed 9 months ago
OP was technically correct, the best kind of correct.
Wheres assembly? Lol
Assembly is a scrapheap with every sort of technology imaginable but it's all broken. Could be an iron man suit, or you could just grab a length of rebar.
The Ol' Cheney Special
It's a musket. A really powerful one but you gotta do everything manually.It also comes disasembled and requires hours of work to be built.
Assembely is a pile of iron ore. Make what you want with it.
It's a box of unassembled weapon parts.
Where is verilog?
I like the other response here
This reminds me of shooting yourself in the foot in various programming languages
Fuck a bunch of 50000 pixel tall images
back in my day that took 3 hours to download
And someone would pick up the phone 30seconds from the end, and there was no resume!
IMO the HTTP
Rangeheader (the thing that lets you resume downloads) was one of the best innovations back then. It let the client tell the server where to start the download from, and how much of the file to download. This means it also let you speed up downloads by downloading multiple pieces in parallel. I used to use a program called GetRight and loved it.We still split up downloads like this today. These days, internet connections are often fast enough that you can't reach full speed with a single connection, so speed tests and things like Steam will open multiple concurrent connections for their downloads to maximize download speed.
In my day it looks like shit
LISP is most accurate
I, too, have met Richard Stallman.
(I kid. Mostly. He's amazing in so many ways, but he's a little off sometimes.)
Yeah, fortunately rust and go married since then
Then you have Clojure - a machine gun that shoots shivs.
That... Sounds pretty rad. I'm in.
Assembly: A gauss rifle, but you have to manually align the magnets
BASIC: 2mm Kolibri
Nim: An AR-15 that you can modify to shoot explosive minigun bullets
Crystal: A halberd with obsidian crystals
Pascal: Trebuchet. A small handful of people know how to make it a truly powerful weapon capable to bringing down any and every opponent.
Maybe try a different lemmy client, it loads fine for me in sync
It's a very large image, so many clients load a scaled down version. On Boost at least you can press the HD icon and it loads the fullsize images where stuff is legible.
I feel like python would be an AR-15 or something, generic modern weapon that's easy to use but doesn't really do anything special
Definitely better than this outdated version. Nobody uses Python2 unless they want to at this point
Python needs an update:
Python would be a Tavor TS12 automatic shotgun with rotating tube magazines. It's heavy, doesn't have a fast fire rate, but it can fire a ridiculous array of ammunition, and they're working on the ability to fire all the barrels at once (GILess)
They've been talking about removing the GIL since I was in primary school. My children are in primary school now. I'll believe it when I see it.
There's now been an investment of dev time from the company formerly known as Facebook to try to push it in 3.12 or 3.14.
If you write C/C++ libraries for Python you can disable the GIL
I believe it was announced that 3.14 will make it an optional flag, so here's to hoping.
JavaScript is a foam bat. Easy enough to wield and it'll get the job done, but very inefficiently and it'll be an ugly sight..
however, it is still used and endorsed by every army
I wonder what Erlang/Elixir would be, some kind of nano-bot hive mind?
Malbolge would be a bioweapon and you're patient zero
still waiting for some of these memes to include haskell...
Haskell is the "words as a weapon", a heavy book that nobody really understands but is great to thump heads
haskell is an intricately designed laser gun that you cant shoot it without a learning group theory and lambda calculus
Finally, a computer analogy that's not about cars
Batmobile
Definitely ancient since C# has been cross-platform for 4 years with Dotnet Core. If you include Mono, make that 19 years.
Hey now! PHP may be old and a bit clunky, but it gets shit done. I'd say PHP is the Colt repeating rifle, since PHP won the internet and the Colt won the West. Much like the Colt, there are better tools available today, but if you want stuff done reliably and quickly, PHP and the Colt are good choices.
That hose got me a company and many good jobs, still loving the hose to build.grrwt projects. I love my PHP
Rust is correct. Mostly ignore as useless, but is the safest and reliable weapon, on a good hands can hit someone hard and kill it.
Rust used to be correct in 2014 when this was made. It's pretty fucking good, now
Since my father makes anywhere from $400-$1200 an hour coding in COBOL, what's COBOL?
Secret magic chants of the ancients
A T-Rex. The only people with the know-how to convert everything it does to something more modern are $400-$1200/hour motivated not to.
Nice seeing Mathematica and Lisp mentioned. I feel like Marvin the Martian after reading.
Its a travesty that MATLAB isn't in there somewhere.
I learned perl to make IRC bots and to customize bulletin boards in the late 90s, early aughts.
I owe a lot to that language as it impressed a woman with my skills in it. I got my first marriage and eldest son out of it.
Funny. I learnt perl to make an IRC bot. I didn't even get a tee shirt, let alone a wife and son
haha php bad, kill yourself 👌 lolol 💯👌👌😂😂😂
If you're going to make these "If programming languages were X" jokes, at least be a little bit creative with them.
It's an old sharepic, they didn't make it.
PHP is a sturdy club. You aren't going to take over the world with it but you can reliably put a dent in something.
I mean, PHP is used on at least ~35% of sites (based on the number of sites that run WordPress), so PHP itself has already taken over the world :)
but like, wasn't facebook written in php and didn't it kind of take over, about as much as any programming whatzit ever has? (not saying that was a good thing, but yeah...)
Facebook has used Hack for a long time now, which is very different from PHP these days. It's entirely statically typed with a bunch of advanced features that PHP doesn't have.
Yahoo used a lot of PHP too, back when they were still very popular.
ADA is an F-22 Raptor. Effective and functional, but you can't have one.
Way too kind to Java. Otherwise, pretty accurate.
(I just hate Java. Lol. Despite writing it 40 hours a week.)
It's fitting that 3D printed guns have also come a long way.
What about FORTRAN?
fortran is a bow and arrow. it was quite powerful and widely used in the past, but i have not met anyone in recent years who uses it other than as a hobby.
Boy do I have news for you...
That bash joke is pretty accurate. I watched a IT expert write the ugliest bash script I ever saw. Just the longest set of instructions ever. Then it just worked.