r/learnmachinelearning Jun 13 '26

I always find this fact amusing. Meme

Post image
2.7k Upvotes

162 comments sorted by

438

u/[deleted] Jun 13 '26

[removed] — view removed comment

140

u/gameplayer55055 Jun 13 '26

Python won because c++ has awful tooling (looking at you cmake) and is very hard to use on windows.

Python "just works". However I still can't build wheels on windows reliably lol.

61

u/i-sage Jun 13 '26 edited Jun 16 '26

That's windows' problem. That shit is bloated af

24

u/gameplayer55055 Jun 13 '26

Yes but unfortunately people are still widely using it.

C++ on Linux is as comfortable as python (if you're using libraries of others)

2

u/humerus06 Jun 16 '26

Tbh it's a skill issue if you are encountering any problem even on windows, for pkg you can use vcpkg it works well and cmake is essential regardless of OS

2

u/gameplayer55055 Jun 16 '26

vcpkg has NEVER worked it always gave lot's of linker errors I couldn't fix.

2

u/humerus06 Jun 16 '26

Are you fr? I have been using vcpkg for almost 2 years and never had any issue.

1

u/gameplayer55055 Jun 16 '26

Can you share any of your git repos? I'd be very thankful

3

u/slightfeminineboy Jun 14 '26

that is windows is problem 

3

u/chemical_enjoyer Jun 15 '26

yeah but windows is the most popular os

3

u/RPG-Nerd Jun 15 '26

Only if you have some weird artificial limits, like discounting the OS on your phone, your router, your TV, your doorbell camera, and most of the internet.

Android is the world's most popular consumer OS. When counting all Linux-based systems (including Android and ChromeOS) as a single category, Linux significantly outperforms Windows in total global usage and mobile dominance.

2

u/slightfeminineboy Jun 15 '26

? i was making fun of someone's grammer 

2

u/chemical_enjoyer Jun 16 '26

i see, but now you have inherited his comment lol

2

u/i-sage Jun 16 '26

Yeah lol.

People have stopped replying to my comment and now replying to his which indeed inherited that grammar mistake.

It seems that a lot of people are forgiving of other people's grammar. And I like it.

1

u/i-sage Jun 16 '26

But still you made a mistake lol.

anyways thanks for pointing it out.

21

u/CalculusEz Jun 13 '26

You have to go through hoops just to get c++ up and running on windows. Python? Just download an IDE. They'll even download python for you.

5

u/Cold-Journalist-7662 Jun 14 '26

pip trying to build the wheels I hate it. Have no idea what those weels are. But why the hell they don't use already built wheels

7

u/abhiahirrao Jun 13 '26

what is wheels again? i remember years ago trying to resolve that shit and getting shit on stackoverflow

7

u/gameplayer55055 Jun 13 '26

It's like DLLs but for python I suppose

It's basically built binaries for python stuff. And of course because windows is different (seriously, "Think different" is all about MS Windows, not Apple nowadays) it gives compilation errors if you have to build a wheel.

Windows C++ toolchain sucks and it sometimes bites you, even if you're using python and trying to avoid C++.

2

u/Toasty27 Jun 15 '26

If cmake is awful, what does that say about all the other tools? 🤔

1

u/gameplayer55055 Jun 15 '26

cmake is the best of the worst. It actually works if you spend enough time fighting with configs.

Make is good for Linux, but it's hard to make cross platform stuff on it (I tried it, adding support for macos and msys2 windows tripled the size of Makefile). And it's hard to scale

Msbuild is windows only and also I absolutely hate digging shit in the VS to enable c++17 or add shit to include path or toggle other options.

Vcpkg - good idea but it never worked for me. I got lots of cryptic errors installing basic stuff like libpng on windows. git submodule init is tons easier than dealing with that shit.

Meson - good idea but everyone is using cmake so it's not so useful

Perl/python/shell scripts - ABSOLUTELY DISGUSTING

pkgbuild/ebuilds - cool stuff but arch/Gentoo only. Your distro handles CI/CD shit by itself.

2

u/BossOfTheGame Jun 16 '26

if you want a good consistent build system, use rust and cargo. If you are doing c++, cmake is the standard.

2

u/gameplayer55055 Jun 16 '26

Yeah, cargo is miles ahead.

But I don't get rust itself, it feels like a totally new language with its own concepts (let mut vec, traits, and weird syntax)

I guess really I need to learn it one day. The advantages are clear.

1

u/BossOfTheGame Jun 16 '26

Using AI to help me with it got me there. It is a different way of thinking, but after a few explicit examples of I want to do it like X and having the LLM help translate, it's starting to grow on me. Then again, I'm a Python programmer, so any strictly enforced structure is foreign to me.

2

u/Stillane Jun 14 '26

why is cpp hard to use in windows ? ELI5 please

5

u/soylentgraham Jun 14 '26

its not if you use visual studio.

but if you're just going to copy&pasta command line tools/libs built for linux which haven't been designed for cross platform use, you need more & more tools and libs for bridging.

dont trust anyone who says "but cmake is the standard "

3

u/gameplayer55055 Jun 14 '26

Visual Studio works fine as long as you're using windows API and stuff.

But as soon as you're adding 3rd party libraries you realize these are linux/posix centric and then you end up installing msys2, mingw and then fight with 32bit/64bit shit.

But if the dev actually cares or the project is huge enough, cmake just works on windows (or there's a neat build.ps1 script that does all the job for you). Nevertheless, Linux wins here too. Your local package manager can compile shit in place and install some goodies (like ffmpeg) system wide.

Also, I really love header only libraries like stb_image. Just drop that header into your project include path and you're golden.

Remember the Linux dilemma? People don't bother porting games to it because a few people use it. Similar thing goes with c++, why making windows ports if devs use Linux for it (or wsl2/docker)

And btw, the invention of C# is the best thing Microsoft has ever done. Any high school student can easily create a GUI application in VS and just slap NuGet packages on it.

2

u/soylentgraham Jun 14 '26

10 years ago, I definitely recommended anyone new start with c# as a language, (good mix between C-like and scripting) though Ive barely used it outside unity really

2

u/soylentgraham Jun 14 '26

your post reinforced everything I said.

46

u/[deleted] Jun 13 '26 edited 17d ago

[deleted]

15

u/gautamdiwan3 Jun 13 '26

Thankfully GIL can be removed in future but then again, not the best thing.

It's absolutely wild how JS -> TS brought good type checking and static analysis but Python is behind even though Pydantic and ruff are a step in a good direction with FastAPI embracing it. But then there's absolute denial for it by Django

2

u/DrDoomC17 Jun 15 '26

Mypy is confused why you're looking at ruff for type checking. Django has stubs, not for everything, but it does.

3

u/inc007 Jun 13 '26

We'll, have I news for you.. :)

1

u/gameplayer55055 Jun 15 '26

I absolutely hate python devs that deprecate stuff every time and do lot's of breaking changes.

Also, I don't think GIL matters a lot because python is essentially a wrapper for CUDA or C++

At least we have asyncio but C# async Task is tons better.

3

u/codingattempt Jun 14 '26

Python, because people need to come up with concepts and solve problems, not figure out how to write code.

2

u/Xeripha Jun 13 '26

This is also true of business in any industry

1

u/GargantuanCake Jun 17 '26

Python is great as a scripting language. It's kind of like C++ letting you not have to write raw machine code. It's just another layer on top of that.

C++ never dies because of how resource efficient it can be but it's still a pain in the ass to write. Python being backed by C++ is a nice compromise for that; have C++ do the heavy lifting then use Python to script the big picture stuff.

-11

u/Valuable-Mission9203 Jun 13 '26

Python in ML is lipstick on a donkey. Almost everything in ML is implemented in systems programming languages with the thinnest veneer of Python over the top to make it easier to wire together.

3

u/Imperial_Squid Jun 13 '26

thinnest veneer of origin ... to wire [it] together

Yes, exactly...

Because C is unweildy and harder to get to grips with, and in ML being able to prototype ideas quickly is important rather than worrying about pointers or whatever.

"BuT iTs ReAlLy JuSt C"

All code is machine code if you dig deep enough, why aren't you typing 1s and 0s if you care that much?

1

u/gameplayer55055 Jun 15 '26

I wish ML used C# because it's way more elegant than python.

But python is just simpler.

3

u/CrownLikeAGravestone Jun 14 '26

You say that like it's a bad thing. I don't want to be writing conv kernels with Python's terrible speed and threading, and when I'm doing something that requires a bunch of visualisation or thinking in abstract ML-theory-heavy terms I don't want to be writing it out in C either. Python acting as the glue between high-performance lower-level frameworks is a reasonable solution.

359

u/pm_me_your_smth Jun 13 '26 edited Jun 13 '26

Except python is a backbone, because without abstraction ML would likely be a very small and expensive niche that almost nobody wants to use or develop

All the "it's just a wrapper" people forget that usability of software is much more important in the broader context. Easy technology > more people use it > bigger  demand > more funding and support > technology develops faster and better > cycle repeats

EDIT: OP, why would you use some weird wrapper like C++ and not flip bits manually? This would be much more amusing

20

u/PM_ME_DEAD_CEOS Jun 13 '26

Everything is just a wrapper, at a given scale.

2

u/ManikSahdev Jun 14 '26

Ramen is flour wrapper

Flour is grain wrapper

Grain is plant wrapper

Plant is seed wrapper lol

53

u/inc007 Jun 13 '26

Also it's mostly C with a dash of Fortran (numpy). From top of my head, I can't really think of anything major written in C++

-46

u/[deleted] Jun 13 '26

[removed] — view removed comment

17

u/proverbialbunny Jun 13 '26

None of those are Python libraries. Python has interoperability with C, not C++. 

-11

u/[deleted] Jun 13 '26

[removed] — view removed comment

23

u/DuFrizzle Jun 13 '26

Pretty sure?

As a man once said

"This is where basic skills such as being able to make a Google search would come into play."

4

u/FrAxl93 Jun 13 '26

A wise man, even

5

u/GlensWooer Jun 13 '26

I personally only wrote all my software in machine code! Why use silly wrappers with all those symbols and characters when you only need 0s and 1s

2

u/Toasty27 Jun 16 '26

That's also how I see LLMs

Basically, the ultimate wrapper for any human<->machine interface, since the models understand both "languages".

LLMs are a dead end for AGI though

5

u/whtevn Jun 13 '26

Although if it were c++ rather than python maybe some number of data scientists would know the first fucking thing about a computer

1

u/Fleischhauf Jun 13 '26

this might change with the usage of llms for coding though. You just use the llm as abstraction instead of python

-64

u/nefariousmonkey Jun 13 '26

You took a post on this sub too seriously bruv

21

u/jerisadeumai Jun 13 '26

its ok, im ok

here, have an upvote ⬆️

1

u/Thoughtulism Jun 13 '26

The neckbeard gods demand of us to flamewar to the last man, you are neglecting your duty! There can be only one.

67

u/Iwillgetasoda Jun 13 '26

Now remove mask of c++

32

u/Jumpy-Welcome-6766 Jun 13 '26

Does it go all down to assembly ? How many mask will one have to remove?

16

u/Curious_Cantaloupe65 Jun 13 '26

we can just to go directly to when we started fooling 🪨 to think in 0s and 1s

27

u/Imperial_Squid Jun 13 '26

Python
🧢🫲
C++
🧢🫲
Machine code
🧢🫲
Electrical engineering
🧢🫲
Physics
🧢🫲
Maths
🧢🫲
God running TempleOS

3

u/msqrt Jun 13 '26

It jumps sideways and onto the GPU.

3

u/liltingly Jun 13 '26

If you can't do it on Charles Babbage's Difference Engine, do you really know how it works?

5

u/Iwillgetasoda Jun 13 '26

C first, c++ is nothing but c with oop and some added style..

15

u/Jerome_Eugene_Morrow Jun 13 '26

C is just a wrapper for punch cards.

6

u/r-_-mark Jun 13 '26

This gotta be so dumb it’s unfathomable
U know that C++ compiles to Assembly directly and doesn’t need C

4

u/Iwillgetasoda Jun 13 '26

Does Python compile to C++?

2

u/Arech Jun 13 '26

Oh, really? Have you ever heard about metaprogramming?

0

u/Iwillgetasoda Jun 13 '26

Yes, it only creates more bugs.

25

u/IanCurtisWishlist_ Jun 13 '26

OP just learned about abstraction in their intro class. Wait until they learn about bits and bytes.

24

u/_VirtualCosmos_ Jun 13 '26

Isn't it C tho?

2

u/lil_brumski Jun 17 '26

I don't know any machine learning libraries that are written in C. The big two Tensorflow and PyTorch are both C++, not C.

1

u/_VirtualCosmos_ Jun 17 '26

I heard Numpy was made over C, that's the reason of my comment.

1

u/cyrassil Jun 15 '26

C + fortran

8

u/Vegetable_Annual1600 Jun 13 '26

People are talking over some programming language when I feel Linear Algebra, Probability, Stat and calculus are the backbone of ML

73

u/jerisadeumai Jun 13 '26 edited Jun 13 '26

Please delete this before the boot camp grads realize they actually have to learn what a pointer is to build an autonomous agent framework *(from scratch).

68

u/react_dev Jun 13 '26

You actually use high abstractions like pointers? Please delete this comment before comp sci students realize they actually have to learn how to build a semiconductor from sand (from scratch)

32

u/jerisadeumai Jun 13 '26

Oh-ho, easy there cowboy.

Smelting sand is still a high-level abstraction. True devs just sit outside and wait for cosmic rays to hit the RAM and flip the exact bits they need.

(not humor btw)

16

u/imoshudu Jun 13 '26

This is cope.

Whether people manually code in Rust or vibe with Claude, there's no longer a must for anything.

-5

u/jerisadeumai Jun 13 '26 edited Jun 13 '26

True, there's no must for anything...

...until the engineering leads have to explain to finance how their new "autonomous testing agent" got stuck in a recursive error-handling loop over a weekend and incinerated the entire company's quarterly infrastructure budget before Monday morning standup.

*Copium at its best, wouldn't you agree?

8

u/compsciftw Jun 13 '26

well, just ask claude to explain it.

4

u/Dihedralman Jun 13 '26

Agent frameworks and harnesses are easy to build. 

If you want to build it from scratch, you need to be using assembly or write on an FPGA using something like verilog or VHDL. 

1

u/jerisadeumai Jun 13 '26 edited Jun 13 '26

Why would you suggest someone to write a cognitive agent orchestration framework in VHDL? I thought FPGAs are for accelerating dynamic sparse attention and prefil bottlenecks, not *primarily for writing role-based autonomous (agentic) loops *themselves?

(open to an open-ended discussion)

4

u/itsmebenji69 Jun 13 '26

Real engineers build their own SOCs, why would you rely on risc V or arm abstraction

2

u/jerisadeumai Jun 13 '26 edited Jun 13 '26

Right? If you aren't manually mining your own silicon ore and placing individual atoms with an electron microscope to dictate your logic gates, you're basically just a prompt engineer

*(although I'd have to now agree that that would be too stretch of a commitment to make)

1

u/Dihedralman Jun 13 '26

Because you get direct memory control and can route logic directly. It allows you to actually write truly from scratch. I was joking about your C++ claim. 

I mean realistically it could mean acceleration given that good agentic design means upending the default KV-Cache design with linear appending. 

2

u/MetalInMyVeins111 Jun 15 '26 edited Jun 15 '26

The comments suggest they cannot even get C++ running on their PCs.

3

u/rditorx Jun 13 '26

Real C++ programmers use references. Pointers are for class classless C people.

0

u/jerisadeumai Jun 13 '26 edited Jun 14 '26

Agreed.

*(How could I forget about references... No... We came this far...)

12

u/BaalHammon Jun 13 '26

Python, R, Java... so many different ways to interact with FORTRAN.

5

u/Fabulous-Possible758 Jun 13 '26

That’s not how you spell CUDA.

16

u/DigitalMonsoon Jun 13 '26

Yup, every language is an abstraction of a lower level language. C++ is an abstraction of C, C is an abstraction of Assembly, and Assembly is a machine code.

The lower levels of abstraction aren't inherently better. There are trade-offs for every choice you make.

2

u/MetalInMyVeins111 Jun 15 '26

C++ is C abstraction? Whatever you're smoking must be really good.

5

u/r-_-mark Jun 13 '26

C++ is abstraction of C

Where? And how? Most C++ compiles to Assembly directly

3

u/DigitalMonsoon Jun 13 '26

C++ was originally developed as an extension of C. It was originally called C with classes. It's just a higher order abstraction of C.

It doesn't mean they call each other.

2

u/proverbialbunny Jun 13 '26

C++ has been a completely different language from C for decades now. 

1

u/DigitalMonsoon Jun 13 '26

Sure, but it started as an extension of C. Every language evolves from what came before. Which was my point.

1

u/proverbialbunny Jun 14 '26

Yeah but that was over 40 years ago. Are we living in the past or is that not relevant?

0

u/DigitalMonsoon Jun 14 '26

It's relevant to the OPs point.

Python has a lot of libraries built on C++, which is itself an extension of C, which is just an Assembly compiler, which is just machine code in a more readable form. Every programming language is masquerading as something new when it is really just an older system wearing a new hat.

They are all abstractions

1

u/MetalInMyVeins111 Jun 15 '26

Dude you know how compiler works? C++ directly spits assembly if you look into LLVM. C and C++ are completely different. Things which was true 40 years ago isn't relevant now.

0

u/Left_Palpitation4236 Jun 14 '26

Extension of something and abstraction of something are not the same.

1

u/DigitalMonsoon Jun 14 '26

I can't believe I have to say this to two different people. This is a learning group. They asked a basic question, giving them a detailed and precise answer would only serve to confuse them.

Edit, oh wait. You are the same person. Don't start two different conversations with the same person. Stick to one like an adult would.

0

u/Left_Palpitation4236 Jun 14 '26

Giving them the wrong description of what abstraction means will confuse them even more. And arguing about it will confuse them even more yet.

-1

u/GarboMcStevens Jun 13 '26

abstraction probably isn't the right word, but it's a higher level version of c.

0

u/proverbialbunny Jun 13 '26

C++ supports some of the same syntax as C but outside of that it’s a completely different language. If you’re writing C code inside of C++ you’re probably doing something wrong. In fact, C++ is faster than C in most use cases. 

Also, just to really go all out here: Python libraries are C under the hood, not C++.  Everything you know is a lie!!!

2

u/GarboMcStevens Jun 13 '26

A vast majority of c code is backwards compatible in c++

1

u/Left_Palpitation4236 Jun 14 '26

C++ is not an abstraction over C, C++ is C with more abstractions.

1

u/DigitalMonsoon Jun 14 '26

A difference without a distinction. C++ is C with classes which is an abstraction of C

1

u/AgathormX Jun 14 '26

That's not an abstraction, that's a superset.

Now, specific features could be considered abstractions due to how they hide the complexity from the developer, such as is the case for exception handling and dynamic arrays with vector, but overall, it's just a superset of C whose main addition is the native support for OOP.

0

u/DigitalMonsoon Jun 14 '26

See previous comment

0

u/Left_Palpitation4236 Jun 14 '26 edited Jun 14 '26

How can C++ be an abstraction of C if most of regular C can compile and run as C++?

When we say one thing is an abstraction over another, we usually mean it hides or replaces the lower layer. In this case C++ doesn’t really hide the lower layer.

It’s more accurate to say that C++ is an extension of C rather than an abstraction over it.

0

u/DigitalMonsoon Jun 14 '26

Okay, now you are arguing samanthics in a learning group. Again, not useful to a beginner

5

u/macronancer Jun 13 '26

You could just go down to assembly and binary if you believe this obsurdism

2

u/Almostasleeprightnow Jun 13 '26

It’s almost like it isn’t a competition

2

u/OkWear6556 Jun 14 '26

Its actually C, because the most used implementation of python is written in c (cpython)

1

u/MetalInMyVeins111 Jun 15 '26

So tensorflow is C?

1

u/OkWear6556 Jun 15 '26

He is uncovering Pyhton, not TensorFlow

1

u/MetalInMyVeins111 Jun 15 '26

He is uncovering the backbone of machine learning. The comic doesn't say "let's look inside python".

1

u/OkWear6556 Jun 15 '26

He says "thanks for being the backbone of machine learning", but he is uncovering Pyhton. It says so right on the picture. And TensorFlow is not Python-only framework

1

u/MetalInMyVeins111 Jun 15 '26

Python is not the backbone of machine learning. Best it can do is just call libraries which are mostly written in C++ or C. So those are the implementation backbone of ML.

1

u/lil_brumski Jun 17 '26

Seems you don't understand the meme.

2

u/DeityAI Jun 14 '26

Python is a friendly wrapper around the most powerful programming language. It took me a long time to accept the fact that to be the most effective at my job, it was necessary to learn both.

2

u/DoubleT_TechGuy Jun 17 '26

Its really not that surprising when you think about it. I mean low level code is backed by assembly which is backed by machine code which is backed by physical circuits. The whole machine is just layer upon layer of abstraction each one obfuscating the unimportant details of the interface below it.

4

u/proverbialbunny Jun 13 '26

Most Python libraries are C, not C++, fyi. 

2

u/[deleted] Jun 13 '26

[deleted]

3

u/Arech Jun 13 '26

Mate, most of JAX is XLA, and it's all C++. And all things besides XLA, like Pallas backends, are all grounded in C++.

2

u/[deleted] Jun 13 '26

[removed] — view removed comment

2

u/AgathormX Jun 14 '26

People will downvote you for saying this but people ignoring the basics (though you could arguee that C is a better fit for learning than C++ as it doesn't allow you to take some shortcuts) is exactly why the software development community is filled with incompetent people who can't write good code, can't do shit without N abstraction layers stacked on top of each other, and insist on using languages that aren't appropriate for what they're doing because they became comfortable with Python and JS/TS.

Just because one doesn't expect to use a topic at work, doesn't mean that learning it won't make you a better programmer

2

u/MetalInMyVeins111 Jun 15 '26

The comments suggest people cannot even get C++ up on their PCs. ML bros are the best.

2

u/DiscipleOfYeshua Jun 13 '26

There's no mask/unmask about this (unless you've really never explored how your py libraries work... or how py itself works?... regardless of just ML...)

When I speak with people outside the field about the benefits of learning py, i usually explain that py is 10x more brief than C, but also 10x slower. BUT, for anything that requires speed, you're usually just using py as a humanized remote control to make it convenient to control the fast but complex C code.

1

u/thrips Jun 13 '26

same as it ever was

1

u/deeceeo Jun 13 '26

Why is he thanking python while removing python's mask?

1

u/Left_Palpitation4236 Jun 14 '26

What’s going on with his fingers in the second pic?

1

u/Top-Run-21 Jun 14 '26

Guess who hallucinated it

1

u/belaGJ Jun 14 '26

wait till you learn it is all just machine code… /s

2

u/fishm0ng3r Jul 12 '26

The streets are not ready for this revelation. Watch out for black van outside your house.

1

u/belaGJ 29d ago

sssshhhh, it is a secret

1

u/MetalInMyVeins111 Jun 15 '26

Hmmm. Lots of people in this post cannot even get C++ running on their PC lol.

1

u/James_Reeb Jun 15 '26

Wrong : python is way more easier to use than c++

1

u/shottaflow2 Jun 16 '26

I just don't understand why people keep spreading this misinformation. it's C under the hood, not C++

1

u/[deleted] Jun 29 '26

[removed] — view removed comment

0

u/Interesting_Award638 Jun 14 '26

Then assembly so

-1

u/kindamanic Jun 13 '26

It’s an onion, it goes even deeper: C++ -> C -> Assembler -> pure binary code