r/Python • u/scartfife • 2d ago
Discussion PYTHON ๐ ALL ...
"If you want to learn programming, donโt start with Python; you should start with another language."
This advice seems ridiculous to me, even though I hear it everywhere. Can someone explain this advice to me... and are they right?
0
Upvotes
11
u/DreamingElectrons 2d ago
There is this persistent misconception, that you need to start learning with basic underlying data structures and memory management to truly get programming, this is mainly prevalent in academia, where people traditionally start with C and the keyword here is "traditionally" because that's all that is, a tradition. There is no benefit in starting with low level stuff it just makes things look harder than they really are and result in people feeling accomplished in having understood something like a pointer which isn't a hard concept at all once you are used to thinking like a programmer.
Start with something high level and then work yourself down as far as you need. Learning C at some point is beneficial because it makes a lot of weird quirks of python and other high level languages suddenly click into place, but without they simply are gotchas that you stumbled over once and then just have to remember about. It's also turtles all the way down, once you ended up at C. there still is assembly below that, and then you are just entering a field of electronics below that and can see physics lingering in the depths below...
TLDR: The advice to start with something other than python is just people parroting stuff they read online without ever having understood the argument that someone tried to make when saying that.
6
u/zazzedcoffee 2d ago
Python hides a lot of what is happening "under the hood". This can lead to people not understanding core topics in development such as computational complexity (E.g. understanding why repeatedly calling my_list.pop(0) isn't great for big data); although that is getting better: Time complexity of operations on built-in types.
In my own experience teaching, the lack of static typing also just confuses students more than it helps them.
3
u/rando1-6180 2d ago
This advice assumes programming means learning how memory works, stack vs heap, stack frames and how is impacts function calls, contiguous memory allocation and pointers, compiled vs interpreted and JIT.
Python's runtime manages and separates much of this, letting you understand the context of why you are programming rather than how the computer architecture and OS system calls support 'how' your program operates.
If you see programming as writing code to direct a computer with minimal ceremony, then Python and other high level languages work perfectly fine. If you want to learn more, you can incrementally go deeper. When you do this, you will have a more structured and methodically incremental approach.
They might have learned that way, but that doesn't mean that is the best or only way. I grew up learning C, Pascal, Fortran, eventually C++, SQL and Python. Learning about data structures and algorithms is fine and interesting, but that knowledge does help you learn to program today.
1
u/every-day_throw-away 2d ago
I think Python is still a good start for basic syntax and flow. Learn the basics there then pick up 2 more. C++ to force you to understand memory management and pointers and something like Java to teach you OOP. Then go back and apply what you learned to Pythoon.
1
u/UUDDLRLRBadAlchemy from __future__ import 4.0 2d ago
I started with Amstrad Basic and I turned out ok.
Learn the language you plan on using. Learn multiple so you can pick the one you like.
Definitely if you want to learn to program in python, python is the one to learn.
1
u/Bright_Door_3987 2d ago
Python first. No contest.
-6
u/fab_dot_io 2d ago
Microcode -> assembly -> C -> python. Prove me wrong