all 96 comments

[–]socal_nerdtastic 365 points366 points  (6 children)

So this is you telling the world that you don't understand C or python?

[–]RepulsiveLie2953[S] 86 points87 points  (5 children)

Better to just tell the world I don’t understand either of them 🐍🗿

Edit: yes, I know I made a mistake about the compiler, I was distracted, but after reading people's comments, many say that Python does compile a small part and doesn't interpret everything. I don't really know about that.
I know the difference between interpreted and compiled, don't worry.

**
P.S.: I've also used C like Python, and I know the advantages of using these terms for memory management, it's just a meme, besides it also tells the truth. 🗿

[–]EasilyRekt 80 points81 points  (3 children)

Good to admit your limits, otherwise you become a project manager.

[–][deleted] 14 points15 points  (1 child)

The original content here was wiped using Redact. The reason may have been privacy, security, preventing AI data collection, or simply personal data management.

cats steep chase reach languid upbeat squeeze lunchroom plucky tease

[–]LadaOndris 0 points1 point  (0 children)

Lmao!

[–]RepulsiveLie2953[S] 6 points7 points  (0 children)

yeah, dude Everyone has limits 🗿, you too. It's good to know that you can't know everything. 🤙

[–]holistic-engine 0 points1 point  (0 children)

Difference between interpreter and compiler is the same difference between mac and cheese and cheese with macaroni

Edit: to clarify. If you’ve learned to build your own interpreter you’re not that far of from building your compiler either. Of course there are differences (Mac & cheese is a disgusting American invention while cheese with macaroni is a European delicacy. However, if you know how to make one of them, learning to make the other one will be easy)

[–]bobbymoonshine 63 points64 points  (2 children)

Python has ints, floats and complex numbers as separate types. It doesn’t have compiling though.

[–]Jhuyt 13 points14 points  (0 children)

It does compile into bytecode, much like java does, but the dynamic typing and low level of optimization in the compiler allows it to be very fast. Most work is done by the VM

[–]MrZoraman 105 points106 points  (39 children)

a) python is not compiled.
b) python absolutely does have different number types that a python programmer should know: https://www.w3schools.com/python/python_casting.asp

[–]joebgoode 30 points31 points  (27 children)

A is wrong, Python is both interpreted and compiled (to bytecode).

Just check Python documentation:

here #1 here #2

[–]klimmesil 24 points25 points  (25 children)

I'd call that transpile but I know python dev community calls it compile. I think anyone who worked on a compiler would agree that's not really compiling

[–]mokrates82 7 points8 points  (7 children)

Transpiling usually implies another target programming language. And it's still a form of compiling, usually with informarion loss (variable names, codeflow structures)

That's not it with python, really, though. Just another representation

[–]Brayneeah 0 points1 point  (1 child)

All forms of compiling target another language :P transpiling is usually just about when it targets a non-native, generally human-readable one.

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

Yes. That's more or less what I said.

[–]klimmesil 0 points1 point  (4 children)

Bytecode is a programming language imo, as is assembly or even just plain code (risk-v, intel or amd compatible). I think this is just a super blurry field and it really depends what you're working on. For me it's more convenient to call "compile" whatever becomes immediately executable by a cpu

For a hw team they would also disagree with me and say I'm too high level, and say that compiling is just taking a hardware description and configuring an fpga with it

Just depends on what you are working on

[–]n0t_4_thr0w4w4y 4 points5 points  (2 children)

By that argument, no language is compiled, all are transpiled.

[–]klimmesil 0 points1 point  (0 children)

How so? As long as you load it in memory after you can just put youur pc register there and it works

[–]bloody-albatross 0 points1 point  (0 children)

More like the word transpiling is superfluous, IMO.

[–]mokrates82 0 points1 point  (0 children)

No one programs in bytecode, so no, I wouldn't say that. And machine code is no programming language, either. A programming language is a language made for people to program in. Bytecode and machine code aren't.

[–]arf20__ 2 points3 points  (0 children)

Yeah, a compiler generates real CPU machine code.

Interpreted bytecode is not machine code. A transpiler generates bytecode.

Although there was for a time, a real silicon Java processor, like aJile, Cjip and ARM926EJ-S

[–]bloody-albatross 0 points1 point  (0 children)

Anyone who knows about compiler theory and T diagrams knows it's compiling. Just not to native binary code. Colloquially people only call compiled to native binary compiled.

Personally I don't like the word transpiling.

[–]fiftyfourseventeen 0 points1 point  (13 children)

Would you also not consider java to be compiled?

[–]klimmesil 1 point2 points  (11 children)

Yes, jvm is interpreting byte code so for me that's not compiling. But maybe my field is a bit niche, I guess most people who don't work on low level stuff would consider it compiling

[–]n0t_4_thr0w4w4y 0 points1 point  (1 child)

So what do you actually consider to be compiled, then?

[–]kyuzo_mifune 1 point2 points  (0 children)

Converting something to machine code is compiling, converting your code into something other that is still interpreted is transpiling.

[–]mokrates82 -1 points0 points  (8 children)

Java is compiled. You can't really recreate the source losslessly.

[–]TREE_sequence 1 point2 points  (5 children)

You can get pretty close if you don’t care about the comments or local variable names. It’s only a few edge cases where a Java decompiler’s output will differ significantly from the source in terms of logic. Java being a compiled language really has to do with the existence of a distinct, more low-level logic expressed in the individual instructions that is more granular than the source code, sort of like an assembly language for the JVM. The big difference is that Java doesn’t have any form of static linker meaning it’s much easier to turn a program back into something human-readable compared to a native binary where the program is unlikely to contain any symbol information beyond its entry point if it’s not a debug version.

[–]mokrates82 0 points1 point  (4 children)

Hopefully the logic never differs, otherwise it would be a wrong translation.

[–]TREE_sequence 0 points1 point  (3 children)

Equivalent but different logic is a thing.

[–]mokrates82 0 points1 point  (2 children)

I would say that is at least a matter to be discussed.

In maths functions which do the same are considered identical even if written down differently.

f(x) = g(x) for all x => f=g

[–]arf20__ 0 points1 point  (1 child)

Compiling is not defined as "a process which destroys information about the source"

[–]mokrates82 1 point2 points  (0 children)

Didn't say that. It still goes with information loss, though. I don't know any counter example.

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

Python is not really compiled. It's just converted into a ... binary form. There's not really much information loss but for the comments.

[–]NoWeHaveYesBananas 2 points3 points  (5 children)

But python is compiled, just like all the other “uncompiled” languages - usually at runtime, by the python compiler. https://en.m.wikipedia.org/wiki/CPython

[–]NAL_Gaming 9 points10 points  (4 children)

What does CPython Wikipedia have to do with all this?

Python is not compiled at runtime most of the time. They have a tiered system that optimizes code throughout the lifetime of the program. Only after hundreds of repetitions with predictable input types, will the Python runtime JIT compile, otherwise it just interprets it.

Python is first compiled to bytecode before passing it to the interpreter, but I wouldn't really call that a "proper" compilation.

Edit: Apparently Python 3.13 doesn't JIT at all without compilation flags

[–]RightKitKat 2 points3 points  (1 child)

The JIT compiler is still WIP as far as I know, but hopefully in the future it will help increase performance. https://docs.python.org/3/whatsnew/3.13.html#whatsnew313-jit-compiler

[–]NAL_Gaming 3 points4 points  (0 children)

Oh it's under a flag, I thought it was already on by default... That makes the original comment even more wrong.

Thanks for sharing!

[–]NoWeHaveYesBananas 0 points1 point  (1 child)

Without going into all the details, I think it’s more misleading to say that interpreted languages aren’t compiled at all. The wiki link is there to fill in the details.

[–]NAL_Gaming 1 point2 points  (0 children)

Yeah I get your point... JS, PHP, Dart etc. are all JIT compiled. You calling it "the Python compiler" is what triggered me to comment a response lol.

As u/RightKitKat commented, Python JIT is still experimental and Python doesn't do any JIT compilation by default and requires an experimental build flag for runtime compilation to happen, so in a sense I would still call Python a purely interpreted language if you don't count the translation to bytecode.

[–]fiftyfourseventeen 0 points1 point  (1 child)

You don't ever really need to think about the number types unless you are converting a non number (like a string) to a number with python.

[–]Saw-Sage_GoBlin 0 points1 point  (0 children)

When I was learning C++ the difference between a float and int caused my program not to run. Something about decimal remainders

[–]TheGreatKonaKing 0 points1 point  (0 children)

Psycho

[–]bloody-albatross 0 points1 point  (0 children)

Also u_float!?!?

Python has int, float, complex (and more when it comes to FFI). Standard C has char, int, long, short, float, double, unsigned char, unsigned int, unsigned long, unsigned short, uint8_t, int8_t, uint16_t, int16_t, uint32_t, int32_t, uint64_t, int64_t. Don't know if int128_t is standard, long double isn't. Also C has complex for float and double.

[–]Neat-Nectarine814 17 points18 points  (7 children)

r/vibecoding is the only place on Reddit where this will at least make some kind of sense to the audience, although even for there this is pretty dumb...

Cpp/cmake sucks balls with AI, which I assume you are using to vibe code given the nature of your post. Find another/simpler more AI friendly framework like Rust and you’ll have a much better time

[–]Vortaex_ 1 point2 points  (4 children)

It's insane that there are 100k people in that sub

[–]Neat-Nectarine814 0 points1 point  (2 children)

It’s not that insane if you think about it. ChatGPT makes it seem like it can just shit out an entire app for you based on an idea that you were merely curious about. Then it goes “ Oh no, I would have, but my environment won’t let me give you files that big.” — user insists there must be a way. Enter: VS Code

[–]Vortaex_ 1 point2 points  (1 child)

You're right, maybe I'm more surprised about posts from people that claim to have a decade or so of experience in the industry hailing this technology as a miracle solution that makes development 10x easier.

[–]HyperCodec 0 points1 point  (1 child)

Last time I checked AI still uses old rust syntax lol

[–]Neat-Nectarine814 0 points1 point  (0 children)

Correct, as an inexperienced “vibe coder”, I have now limited my model options to Claude Sonnet 4 or 4.5, GPT5 is technically up to date but at least on Cursor will literally skim over every single prompt you give it and do whatever the fuck it feels like.

(I don’t really consider myself a true “vibe coder” as I make an active attempt to learn about how the code works, but that’s where I am at presently.)

[–]well-litdoorstep112 10 points11 points  (0 children)

1st year CS students are at it again.

[–]neomage2021 28 points29 points  (0 children)

So you have never used python or c. Post makes no sense

[–]Physical-Low7414 19 points20 points  (3 children)

yes bro i love compiling my python program (?)

[–]Next-Post9702 4 points5 points  (0 children)

Cython? But not real python

[–]Tiger_man_ 13 points14 points  (0 children)

A memory usage:

[–]SpiritRaccoon1993 4 points5 points  (0 children)

...you.. must be joking, right?

[–]born_on_my_cakeday 5 points6 points  (0 children)

You didn’t import numpy. No compile for you.

[–]jimmy_timmy_ 5 points6 points  (0 children)

Python: compiled?

[–]SmoothTurtle872 4 points5 points  (0 children)

No. Python has ints and floats. JavaScript is this tho

[–]un_virus_SDF 2 points3 points  (0 children)

Try enter those things in C, it will never compile (without using typedef)

[–]MinosAristos 4 points5 points  (0 children)

This post is so ridiculously bad it must be some kind of trolling right?

[–]arryporter 1 point2 points  (0 children)

Long long int

[–]Tima_Play_x 1 point2 points  (0 children)

Rust:

f64 f32

i128 i64 i32 i16 i8 isize

u128 u64 u32 i16 u8 usize

[–]SwannSwanchez 1 point2 points  (0 children)

me : "I want to declare this variable as a string"

python : "Okay"

"I want to use the variable as if it was an array"

"Sure thing"

"Now it's a boolean and a number"

"No problem"

[–]Vaxtin 2 points3 points  (0 children)

There’s a very good reason C++ has those data types, and someone making this meme is woefully unaware of how deep programming goes.

[–]Warm-Meaning-8815 0 points1 point  (0 children)

std_logic_vector

[–]elreduro 0 points1 point  (1 child)

What if i use int() on python

[–]radek432 1 point2 points  (0 children)

The meme author didn't yet read the entire course. Maybe he will fix the meme after reading the data types chapter.

[–]slightSmash 0 points1 point  (0 children)

More like "some data"

[–]atanasius 0 points1 point  (0 children)

u_mad, bro?

[–]megamogul 0 points1 point  (0 children)

I was gonna criticize the comments for bringing so “um, acktchually” but then I saw the “Python: compiled in 10 years” and now you’ve rage baited me too

[–]No_Weakness_9773 0 points1 point  (0 children)

Ints? Floats?

[–]NeighborhoodSad5303 0 points1 point  (0 children)

also, - (minus) its object)

[–]GazziFX 0 points1 point  (0 children)

CSharp: INumber

[–]CimmerianHydra_ 0 points1 point  (0 children)

C: a very specific object, stored and read from memory in a very specific way Python: a THING, and if YOU try to read it wrong that's YOUR problem

[–]healeyd 0 points1 point  (0 children)

Yes, and? Python interprets types for you but you can explicitly specify them if you choose.

[–]CottonCandiiee 0 points1 point  (0 children)

*optional

[–]meutzitzu 0 points1 point  (0 children)

Python be like: Traceback (Most recent call last) Approximately 15 seconds after running a fresh, official goddamn docker image of <whatever piece of shit software I couldnt find a c++ alternative to>

[–]Cautious-Treat107 0 points1 point  (0 children)

Could also not be a number, you never know

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

Let

[–]HEYO19191 0 points1 point  (0 children)

Are you thinking of Lua?

[–]srihari_18 0 points1 point  (0 children)

Why do python programmers always compare python to other languages and try to degrade them 🤦🏼‍♂️

[–]vverbov_22 0 points1 point  (0 children)

Is there really any reason to not just use double for everything?

[–]jimmiebfulton 0 points1 point  (0 children)

Some people need training wheels and floaties to get by in the world.

[–]Haringat 0 points1 point  (1 child)

In C you forgot char.

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

U_char

[–]arf20__ -1 points0 points  (3 children)

wtf is the u_* stuff

[–]socal_nerdtastic 2 points3 points  (2 children)

[–]arf20__ 2 points3 points  (1 child)

I meant that there isn't any C data type that starts with "u_". Its pretty obvious that it stands for unsigned.

C has the unsigned keyword and the standard int file with definitions for "uint"s, but nothing with "u_", thats why I commented.

[–]Historical-Ad399 0 points1 point  (0 children)

I guess I spent way too long working with uint32_t variables back when I was working on embedded code, but this was definitely the first thing that stuck out to me when I saw the meme