this post was submitted on 25 Oct 2023
891 points (90.8% liked)

Programmer Humor

32143 readers
120 users here now

Post funny things about programming here! (Or just rant about your favourite programming language.)

Rules:

founded 5 years ago
MODERATORS
 
you are viewing a single comment's thread
view the rest of the comments
[–] morrowind@lemmy.ml 78 points 11 months ago (9 children)

C++ and ruby are weird, especially since C is somehow considered a reliable rifle. Rust betrays it's age

[–] fckreddit@lemmy.ml 71 points 11 months ago (1 children)

C is reliable in the sense that your C program reliably has memory leaks and security holes.

[–] 420stalin69@hexbear.net 17 points 11 months ago* (last edited 11 months ago) (2 children)

Unlike your Java program amirite.

The benefit of java is that you didn’t write the security holes in your software.

[–] PaX@hexbear.net 3 points 11 months ago* (last edited 11 months ago) (3 children)

Programmers can trust language security features too much...

Of course, they're nice to have and really can make things easier to implement securely but it's still very easy to introduce security problems or bugs into any code. This is just an unsolvable problem of writing imperative code. All imperative code will reliably have memory leaks (even in Java!) and security holes because no compiler can check to see if you thought of everything.

And large and complex compilers/interpreters with these security features can end up introducing their own security problems or bugs in the process of implementing them.

I'm just tired of people entirely dismissing languages like C because they don't have these features. Especially when the operating systems their code runs on and their languages may even be implemented in C!

[–] frezik@midwest.social 4 points 11 months ago* (last edited 11 months ago)

Buffer overflows were last seen on the OWASP top 10 list in 2004. Favoring of anything else over C for most things is a pretty obvious reason why. A language change destroyed an entire class of bugs.

[–] space_comrade@hexbear.net 2 points 11 months ago* (last edited 11 months ago) (1 children)

because no compiler can check to see if you thought of everything.

We can try to get closer to that with better language design. You'll never get there but I think there are obvious benefits as to why you'd want to do that.

I write way less bugs in Rust than I have in Java or C++, and that's mostly thanks to the language design.

I'm just tired of people entirely dismissing languages like C because they don't have these features. Especially when the operating systems their code runs on and their languages may even be implemented in C!

Because that code has been review and re-reviewed and patched by experts in the field for years. You're not gonna write a backend for an app with short deadlines in C because that would be absolutely fucking insane.

[–] fox@hexbear.net 2 points 11 months ago

Right tool for the right job. C is a stupid choice for most modern apps but it's indispensable for embedded stuff

[–] abraxas@sh.itjust.works 1 points 11 months ago

It's a "tool for the job" game. I don't trust a junior developer to write a login system. I've found security flaws in login systems written by senior developers who "know what they're doing TM". Unless I'm the expert in a given domain, it's better to trust something written by those experts.

For the record (since it's fixed anyway), I discovered a common login timing vulnerability on one of our production systems that had been in place for nearly 15 years. Luckily we didn't have enough traffic for anyone to notice it before me.

[–] abraxas@sh.itjust.works 2 points 11 months ago

I don't trust Masterlock, so I'm gonna make my own lock out of duct tape, then tape scissors to the door to use as the key.

[–] Jesus_666@feddit.de 25 points 11 months ago (1 children)

As does C#. The Windows-specific parts are not the parts most developers will use these days.

[–] pipe01@lemmy.pipe01.net 24 points 11 months ago (1 children)

I took it as the donkey being .NET

[–] _danny@lemmy.world 12 points 11 months ago (2 children)

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.

[–] scottyjoe9@sh.itjust.works 2 points 11 months ago

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.

[–] trolololol@lemmy.world 0 points 11 months ago

2015? I'm sure last time I saw this it was way before 2015

[–] frezik@midwest.social 15 points 11 months ago

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.

[–] DieguiTux8623@feddit.it 15 points 11 months ago* (last edited 11 months ago)

Agree. That one didn't age well...

[–] CarbonScored@hexbear.net 12 points 11 months ago* (last edited 11 months ago) (1 children)

And does anything require Python v2 anymore? I work almost exclusively in Python and haven't run into that in many years.

[–] MNByChoice@midwest.social 7 points 11 months ago (1 children)

Python v2 was sunset in 2020. So only legacy software.

[–] frezik@midwest.social 5 points 11 months ago

Someone should tell Ubuntu (or Debian, I'm guessing).

[–] MonkderZweite@feddit.ch 9 points 11 months ago* (last edited 11 months ago) (1 children)

C is a knife. The basic thing you can build weapons (programming languages) with.

[–] TheBat@lemmy.world 2 points 11 months ago (2 children)
[–] nickwitha_k@lemmy.sdf.org 4 points 11 months ago

Yes. Knives can also be used as screwdrivers for fasteners with a "blade" or "flat" head.

[–] dylanTheDeveloper@lemmy.world 2 points 11 months ago (1 children)

It's a screwdriver without a head because you have to build it yourself

[–] uis@lemmy.world 2 points 11 months ago (1 children)

You are confusing C with UNIX

[–] dylanTheDeveloper@lemmy.world 1 points 11 months ago

same difference

[–] PaX@hexbear.net 7 points 11 months ago* (last edited 11 months ago)

C is very reliable. It works almost everywhere with very little resources or overhead and many of the most fundamental parts of our systems (that have to work reliably) are written in C. Many of the languages in that image are even implemented in C.

If you want to write portable, fast, and simple code C can help you with that if you use it in the right way.

[–] Pipoca@lemmy.world 4 points 11 months ago

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.

[–] sexual_tomato@lemmy.dbzer0.com 3 points 11 months ago (1 children)

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.

[–] space_comrade@hexbear.net 1 points 11 months ago (1 children)

How long ago was this? I think the ecosystem got waaay better in the last 1-2 years. 3-4 years ago it was rough but shit still worked with a bit of trouble.

[–] sexual_tomato@lemmy.dbzer0.com 1 points 11 months ago (1 children)
[–] space_comrade@hexbear.net 1 points 11 months ago* (last edited 11 months ago)

Eh, that's unfortunate. Yeah the whole ecosystem is still a bit wonky, probably more wonky than most popular languages but tbh I rarely used a stack that just worked out of the box, it almost always took some dicking around, I'd rather do the dicking around with a language that doesn't always seem to work against me.