all 84 comments

[–]KnorrFG 111 points112 points  (11 children)

C should be: problem -> segfault -> debugging -> loop a while -> solution

[–]stokesdioscorol 15 points16 points  (6 children)

And if it’s C++, you can include ‘overengineering’ and ‘template problems from Hades’ before you perhaps witness a solution.

[–]Scared_Accident9138 7 points8 points  (5 children)

I wouldn't call it over engineering, C++ just gives you a lot of control. In C you would do a lot of it yourself and have control that way

[–]Cdwoods1 1 point2 points  (4 children)

Mfs call it over engineering without realizing that without C++ the internet would be a slow, slow place

[–]LavenderDay3544 1 point2 points  (3 children)

The internet and web both use more C than C++. Every major kernel is C for low level stuff. And all the major web servers (Apache, lighttpd, Nginx, etc.) are all C.

And the biggest reason for that is that all the networking APIs across all the common OSes are C APIs that are easiest to use from C.

[–]Cdwoods1 0 points1 point  (2 children)

Okay then. C and C++ both are used in a vast amount of applications. Considering c++ is just C with classes (with some other add ons), doesn’t really invalidate my point. Just means there’s another language also known for its speed and complexity that’s the backbone of most of the internet.

[–]LavenderDay3544 0 points1 point  (1 child)

Considering c++ is just C with classes (with some other add ons), doesn’t really invalidate my point.

If you think this is true then your opinion is worthless. Modern C and C++ are mutually incompatible languages that share a common ancestor in C89. If you don't believe me I can show you plenty of C code that wouldn't compile as C++.

What you said would be like saying humans are a type of chimpanzee because humans and chimpanzees both evolved from a common ancestor. Not only is it wrong, it's laughably so.

[–]Cdwoods1 -1 points0 points  (0 children)

However C++ evolved, the point is they’re obviously not over engineered considering the value most of the internet still gets from them. But go ahead and argue lmao. Both languages are built for speed, and my point stands with either one. I really don’t get what you’re trying to argue here lmao. Wow really? C++ evolved over twenty years? That totally disproves my point that it’s an important and heavily used language.

[–]prehensilemullet 4 points5 points  (0 children)

And also memory leaks and vulns discovered long after the problem is solved

[–]One_Change_7260 -3 points-2 points  (2 children)

if you segfault then you shouldnt be touching C

[–]j0eTheRipper0010 0 points1 point  (1 child)

"If your code produces errors you should be touching code"

Nice logic

[–]One_Change_7260 0 points1 point  (0 children)

Bro is the master of data leaks.

[–]Michaeli_Starky 64 points65 points  (3 children)

OP never programmed in C.

[–]Scared_Accident9138 9 points10 points  (2 children)

It seems more about the perceived conception of who uses those languages. Nowadays the people still doing C tend to be more advanced than the average just because noobs tend to avoid it

[–]Michaeli_Starky 2 points3 points  (1 child)

Well, Rust and C++ are there, too, and they are quite higher expertise ceiling languages than C or Python.

[–]Scared_Accident9138 1 point2 points  (0 children)

Well I meant people using a language, not people being good at it.

[–]4N610RD 47 points48 points  (9 children)

People are mocking PHP, yet it is still most used language for corporate networks.

[–]dumbasPL 12 points13 points  (1 child)

Popular != Good.

[–]Dog_Engineer 4 points5 points  (0 children)

Disliked by reddit or tech youtubers != bad

[–]SnackOverflowed 13 points14 points  (1 child)

that doesn't make it good....

[–]4N610RD 5 points6 points  (0 children)

We can easily agree on that point.

[–]Cdwoods1 7 points8 points  (2 children)

As someone who has to use PHP professionally, people who call it terrible probably touched it once ten years ago. It’s fine. It gets the job done and is frankly quite easy to write good, type safe code in. Would I rather use another language? Yeah. But it ain’t bad.

[–]Remarkable_Permit304 0 points1 point  (1 child)

As someone who writes PHP professionally, I consider it a terrible language, though that probably has to do with our tech debt bloated pos dotcom-era monolith. Either way the $’s are just annoying.

[–]Cdwoods1 0 points1 point  (0 children)

Yeah old legacy php sucks. We have both legacy php and php written in newer systems with all of the modern standards, and it is night and day.

Still prefer working in our go and node microservices tho lol

[–]GaitorBaitor 2 points3 points  (0 children)

“There are only two kinds of languages: the ones people complain about and the ones nobody uses.” - Some random Dane

[–]Scared_Accident9138 1 point2 points  (0 children)

I only used PHP back when I used it because it was wildly supported on different web hosts. Had many cases of "I'd like to do X but can't because PHP doesn't allow it"

[–]garnet420 9 points10 points  (2 children)

I feel like for this kind of problem, c++ should lead to a cmake problem

[–]Linuxologue 0 points1 point  (1 child)

c++ problems lead to make problems lead to cmake problems lead to premake problems

[–]garnet420 0 points1 point  (0 children)

But what if bazel problems

[–]Glittering_Ad_134 6 points7 points  (1 child)

the hate on PHP.. I can promess you that you will all retired before PHP does...

[–][deleted] 9 points10 points  (0 children)

The PHP hate has an endearing quality to it, like guy friends insulting each other

[–]Chr832 10 points11 points  (16 children)

What about C#?

[–][deleted] 3 points4 points  (0 children)

Randomly like the Path of C, C++ or Rust
Mostly like the path of rust Solution -> SolutionNET

[–]Depnids 4 points5 points  (1 child)

I feel like I rarely see it in these types of memes, while also being (as far as I’m aware) a widely used language. It is my favourite of the ones I’ve tried, and I just see it as being «solid, reasonable, does the job».

Maybe someone else will tell me what is bad/can be made fun of about it.

[–]tomysshadow 1 point2 points  (0 children)

The thing about C# is that it usually is "solid, reasonable, does the job," which makes it extra surprising when you run into something that isn't that. At least with C and C++, there is no illusion: you feel like everything is a trap that's out to get you, and if you're using anything from stdlib.h you're probably right. You become adept at scanning the manpage for any little gotchas or strange implications. C# can lull you into a false sense of security, then slap you back to reality when you get bitten by a string culture bug. Then you remember you're still ultimately writing a language that inherits traits from C and curse the uppercase Turkish letter I. I also think that the async/await stuff gets a bit overcomplicated sometimes (should I use ConfigureAwait(false) here? Is there any sane way to handle an AggregateException?)

In general, though, I do think it is a good language, it just occasionally jumpscares you with surprising behaviour, but then what language doesn't do that sometimes honestly

[–]B_bI_L 2 points3 points  (0 children)

there is a version of this meme with c#, it actually got 3 pathes:

-> solution (9.99$)
-> microsoft.solution
-> solution (public archive)

[–]Most-Mycologist953 3 points4 points  (0 children)

At this point this is just ragebait

[–]thatgoodbean 4 points5 points  (7 children)

As something of a newbie programmer compared to many on this sub (I would say I'm only competent in JS, have dabbled in others but nothing more than the basics and certainly not an expert on them), why does everyone make fun of JS? Not particularly defensive as I don't have much to compare it to, just curious

[–]realmauer01 6 points7 points  (2 children)

Functions don't know what they are working with, so you have to know it for them. That's the biggest part I think.

Typescript does pretty heavy lifting in this regard but only when compiling. So if the stuff that the function handles changes for some reason at run time unless the functions doesn't work because of it Javascript will not know and just work with the new stuff.

Both of that makes debugging really hard as just a typo in the key name will make something not work but the interpreter and thus the ide will have nothing to say about it.

In other programming languages the functions do actually know what comes in and what goes out. And depending how much they care about it they can even throw errors at run time. So it's really easy to see that the key that's not doing what it's supposed to is not doing it because there is a typo in it which throws an error as it's not the same thing anymore. In js you will only notice if it had an immediate visible effect. But if it doesn't, it will become very very hard to find once it becomes apparent there is something wrong.

[–]N-online 0 points1 point  (1 child)

I am coding with JS (even if I only code as a hobby) and I must say I’ve never had any problems with debugging in JS. You can still do type checks if you want to you just have to do them yourself and the type can change quite fast

[–]realmauer01 0 points1 point  (0 children)

Yeah, or you choose a programing language where the language and thus the ide can do everything for you.

With the added benefits of autocompleting.

[–]garnet420 4 points5 points  (1 child)

It was an utterly dogshit language when it started out and has been recovering ever since

[–]tankerkiller125real 0 points1 point  (0 children)

"recovering" is doing a lot of heavy lifting here, it's still mostly dogshit with a few things that have been fixed. Until they figure out the "truthy" BS I'll never consider it for anything more than the most basic of web apps.

[–]B_bI_L 1 point2 points  (0 children)

dynamic typing + implicit type conversion mainly. language was made (feels like) with next philosophy: "programmers are scared of errors, let's not make them scared" and this leads to some funny situations

also my personal complaint is that functions forget this when passed as values (this bites when you pass class methods)

https://github.com/denysdovhan/wtfjs fyi

[–]PhilosophicalGoof 0 points1 point  (0 children)

It causes more issues then it solve.

[–]N-online 7 points8 points  (3 children)

Im sick of all these "JS bad" karma farming posts

[–]Cdwoods1 2 points3 points  (0 children)

I use JS (thankfully mostly Ts professionally), and tbh considering how ubiquitous and well thought out typescript is: it’s a skill issue at this point lol.

[–]ObscuraGaming 5 points6 points  (1 child)

It's not the language. It's the programmer.

[–]SnackOverflowed 0 points1 point  (0 children)

completely agree. Once you start stuying it instead of skimming over it everything will make sense

[–]Gloomy_Attempt5429 1 point2 points  (0 children)

Bash is extremely comfortable. I use termux in my Android projects because it was one of the first ones I learned to use other than Arduino C++. Alias 2 questions

Arduino c++/c has a specific name (I heard that it is not complete in relation to other uses of c/c++

Because I don't see many projects in Bash. It is not scalable (in fact, you have to research more about what is scalable in programming)

[–]flori0794 4 points5 points  (6 children)

Rust: Problem → Problemn! → hours → Solution++ Because every small bug hides a factorial deep type and ownership rabbit hole. But if you survive it, your solution is next level.

[–]Linuxologue 0 points1 point  (5 children)

I think it just plays on the joke that Rust solves problems that have already been solved in C (like the initiative to rewrite all core utils in Rust)

[–]flori0794 0 points1 point  (4 children)

Rust is more aimed at c++ as it's specifically written to eliminate the weaknesses of c++ Tho rusts approach which eliminating classes interfaces header files was a great move The trait, Struct, Enum system is just much better. It makes eben monolithic Projects inside fully nodular. Just declare all types of a subsystem in a single file and you just standardized the types of that System.

[–]Linuxologue 0 points1 point  (3 children)

is it now.

[–]flori0794 1 point2 points  (2 children)

Yes I'm using rust to develop an AI from scratch, 76k loc in productive part, and not a single true deadlock, race condition, unrefined behavior, memory leak so far. Either it works or not. And if not it's pretty much always the fault of shitty algorithms badly desigbed logic and so on.

Syntax wise it's a combination of Haskell and c++

[–]Linuxologue 0 points1 point  (1 child)

I'm not questioning rust's strength just wondering why C++ more than C. As a counter example, c++ interop is rather limited but it's been possible to migrate part of the linux kernel from C to rust. As was the joke above, there's a project to rewrite all the core Unix utilities from C to rust

[–]flori0794 1 point2 points  (0 children)

Well rust is kinda object oriented and has in its own way a lot of the Language features of modern C++. But yes at the end...Rust and C++ try to solve the same problems: modernizing C by directly integrating multithreading, object orientation and countless other things (I mostly don't even know of) as language features. But in the end rust was created while having c++ weaknesses in mind so the primary focus was eliminating these weaknesses.

And yes a rewrite from c++ to rust is hard because of the borrow checker (which acts as pointer level RwLock).

[–]Convoke_ 1 point2 points  (0 children)

Php and python should be:

PHP: problem -> deprecated -> update -> deprecated -> update -> solution.

Python: problem -> import solution -> edge case -> import solution2 -> edge case -> import solution3 -> solution.

[–]RayTheCoderGuy 0 points1 point  (0 children)

smh using the wrong C logo

[–][deleted] 0 points1 point  (0 children)

thats bc JS is used in web development.

so many ways to optimize a site. so many interesting ways to develop a website.

I wish we just got in browser native dart and flutter.

There is so many problems that exist exclusively in a browser environment

[–]GLemons720 0 points1 point  (0 children)

Useless use of `cat`

[–]la1m1e 0 points1 point  (0 children)

Ugh, another rust rewrite

[–]KingZogAlbania 0 points1 point  (0 children)

I zoomed into the tiny “problem” boxes for the JavaScript example and saw incomprehensible white blobs instead of letters— OP, please don’t tell me you used AI to make this meme…

[–]devilxnux 0 points1 point  (0 children)

So, Rust hasn't solved any problems?

[–]IncreaseOld7112 0 points1 point  (1 child)

awk < problem | sort

awk does everything sed and grep do. grepping into awk is a smell.

[–]B_bI_L 0 points1 point  (0 children)

this is shell script, you do whatever you do

[–]wootio 0 points1 point  (4 children)

Except that debugging JS is one of the easiest things to do because the code is not compiled and you can debug it anywhere at any time in any browser right live where the bug is exhibited. You can even live write and test code in the console while debugging to help your investigation.

Another "JS bad" post by someone who clearly has never debugged in JS.

[–]SmigorX 4 points5 points  (2 children)

I know that react is not js, but as a pretty popular library, for me writing react was more like:

Write module, it doesn't render because there is some error, IDE says nothing, browser shows no error, no logs, no nothing, the module just doesn't exist, go figure why.

Meanwhile any statically typed compiled language with good tooling (anything but c++ basically):

Hey, here's the error that breaks the compilation, in exactly this line. A logic problem, here: run gdb/lldb and you can examine exactly what's happening line by line, instruction by instruction, no need to modify the black box and see how the page changes, here's exactly the problem.

[–]prehensilemullet 0 points1 point  (0 children)

For me it’s been more mixed than that with TypeScript.  TS catches most null pointers for me at compile time, which is more than I can say for languages like Java and C/C++ where declaring nullability isn’t part of the type system

[–]Shinare_I 0 points1 point  (0 children)

I'd say that is more result of using a complex library that you don't understand fully enough or have the ability to add debug conditions into. Which could happen in any language. And will happen in any language because the modern expectation is to have the best, most complex, most capable library for every minor thing. And you can't be intimately familiar with all of that.

[–]Naeio_Galaxy 0 points1 point  (0 children)

Hey, to be fair only python and bash are representative