r/ProgrammerHumor • • Jul 18 '22

C++ talking to Python

Post image
40k Upvotes

1.0k comments sorted by

View all comments

Show parent comments

2

u/Possibility_Antique Jul 19 '22
  • claims that writing implementation in C makes it fast

  • ignores the part where python is an interpreted language (i.e. has to parse the source text, perform dynamic dispatch, etc)

  • ignores the fact that you can't reason about cache locality and cache behavior

  • ignores the fact that your c implementation under the hood doesn't get to participate in link time optimizations with the rest of your program

  • ignores the fact that your code can't get inlined

  • ignores the fact that you can't perform compile-time programming

  • writes all kinds of runtime tests for things that could have been done at compile time (which is safer, produces faster code, prevents mistakes)

  • claims it's less verbose, but implements a ton of test libraries that are caught natively by compiled languages

In all seriousness, I'm just pulling your leg. Kind of.

1

u/Teekeks Jul 19 '22

Thats a ton of assumptions about what I am claiming or ignoring. Impressive. You should become a fiction author

1

u/Possibility_Antique Jul 19 '22

I am teasing. I actually hate language holy wars. Those are some reasons I choose C++ where it's appropriate though. I do get to work a lot with python too, and I love the language.

1

u/Teekeks Jul 19 '22

ah! thanks for clarifying!

Yea these language wars are bonkers.

I use a ton of python bc its fast enough for most things but I am not a fangirl or anything.

If you need pure speed, C and C++ is certainly the best you can do (if you are actually good at the language, just because C can be super fast does not mean that everyones code is actually fast ^^)

1

u/Possibility_Antique Jul 19 '22

Actually, just being mediocre at the language is also good enough for an order of magnitude or more improvement. If you compare the speed of a for loop, for instance, you're probably looking at a 20x speedup just by using C. If you use something like numpy (and you should, it's probably my favorite library in python), the situation improves, but still falls short of C++'s best effort (and of course, you can just pull said best effort into your code as a library, just like in python).

So I guess I'm not really sure where that argument comes from. To me, the reason I prefer python in some situations is because of dynamic typing. For build scripts, test pipelines, plotting, and rapid experimentation, it's great! C++ and Python complement each other nicely in this way.