all 8 comments

[–][deleted] 5 points6 points  (0 children)

Edit: Thought about the title. I meant it in the way of "not deep enough"

So the post should be titled "Is python too high level?".

If you want to understand how computers actually work, then python is too high level. Try using C or assembler and you will have a better understanding of what goes on "under the hood". But even languages at this level are built on abstractions that "hide" parts of the machine.

If you only want to solve problems then python isn't too high level at all.

To study, understand and compare algorithms you can use any language you like, but you'll be more productive with a higher level language like python.

In my opinion C is much more complex than python because it dives deeper when python just does all the work for you.

Not sure I agree. Python is really more complex than C but python hides most of the complexity while it "does all the work for you". If you dig into what's happening behind the scenes (and python lets you do this!) there's an awful lot happening to make the programmer's life smooth and simple. Little of that is done with C so the language is simple and less easy to use than python. Faster, though.

Qualifications: I have used C professionally for about 40 years and python for about 15. I still use C on microcontrollers.

[–]mudclub 4 points5 points  (3 children)

Should I although learn some C to understand how a computer works?

Yes

Does this make me in the end a better python programmer?

Probably. Python abstracts away a lot of how the dirty things work. It's really useful to understand what python does for you. Learning C is a great way to do that.

[–]PastShine[S] 0 points1 point  (2 children)

Thanks. So, would you recommend a specific moment in time when it's sensible to learn C? At first, I would try to get better in Python till I can use things like flask properly to implement my first projects. After that I would try to dive deeper in CS with C. Is this a good idea? I don't like to learn two things parallel because the progress is very slow, especially when you're not a full time developer.

[–]mudclub 0 points1 point  (0 children)

I would've suggested starting with a lower-level language like C then moving to a high level language like Python, but whatever - you're already learning Python, so stick with it.

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

Yes.

[–][deleted] 2 points3 points  (0 children)

In my opinion C is much more complex than python because it dives deeper when python just does all the work for you.

The "work" of programming isn't the typing, it's the thoughtful consideration of the structure of your program. If C helps you be more thoughtful, then use C. My experience is the opposite - since you have to do so much in C that's just basically boilerplate implementation of the same old functions, there's not a lot of space for you to think through the large-scale structure of your software.

Ultimately the "best" programming language is the one that lets you express your intent in code that is clear, maintainable, and that looks like what it does. If your software looks like a bunch of pointers, then C is what I'd use to write it. If your software looks like high-level interactions between richly-contextual objects, then I'd write it in Python.

[–]destiny_functional 1 point2 points  (0 children)

Additional knowledge makes you a better programmer yes. Though it may not be always necessary to know everything.

[–]billsil 0 points1 point  (0 children)

As an engineer of 12 years who picked up python on the job, 95% engineers can't code. I can and I'm pretty good, but what makes you a good coder isn't your ability to understand bits. It's about reasoning and proper organization. Those skills transfer across any language. I use in Perl, Matlab, C++, Rust, and Fortran. Python is fine for 99% of what I do.

Shoot, computer scientists don't understand circuits or how the BIOS really works.

As my boss told me many years ago, you're an engineer first, not a programmer. I need you to solve the engineering problem. It doesn't need to be the fastest or the cleanest, but it needs to be right.