Learn C if you want to do low-level programming.
Learn Java if you want to torture yours...I mean, write and maintain enterprise applications. Yes, that.
Once familiar with the logic of programming, the choice of language is not that critical. Python is ok, though, personally, I dislike the need for exact indents and often forget that colon...
I find that REPL is rather a complication than a utility in the beginning. Keeping the text of the program in view yeilds better control over the intended logic. In that regard a compiled or a scripted language is not that much of a difference.
In my experience, the hardest part to teach is the approach to decomposing a problem into logical steps. Well, that's the analysis part.
After that, IMHO, it’s way more about community vibe and approach, since informs how libraries get written, etc etc
But those require a vastly different approach to learning than C like languages.
I really believe in giving people who are learning more credit that they can actually learn instead of trying to dumb things down for them. And I don't mean that JavaScript or Python are dumbed down, I think they're fine first languages too; my point is about generally trusting beginners to learn things instead of unnecessarily simplifying stuff.
Memory management and type safety can easily be learned later on... the core essence of programming doesn't involve either of those. It's about defining and composing abstractions, which is language agnostic.
I think a HtDP based course with a scheme is still the best to learn to "program"
For a person like me, is HTDP worth it? I had started with it previously but I found it a little boring. But I know the book is well regarded so I'm wondering if I should take another shot at it.
Or should I go straight to SICP?
Or you may try moocs (if they're still available): EPFL functional programming in scala (by M.Odersky) is great. University of Washington Programming Languages (by D. Grossman).
There's also Brown University CS173 (related to Grossman) https://cs.brown.edu/courses/cs173/
Hope you'll find something fun in this
[0] It's value to me is that it doesn't bind to a paradigm, but innocently make people structure data and destructure it logically in a way that leads to obvious functions. It teaches pre-think rather than write-in-$language-then-suffer. Also being based on scheme opens your eyes to a very simple language (closures and lists).
My actual intro was Fortran for a few months, then IBM 1401 assembler for the next 4 years, as the limitations of fortran were obliterated when writing assembler.
Assembler gets you to appreciate -- in your 'bones' -- what a computer really is, and how it really works.
You can then see how so-called higher-level languages work after understand their foundation.
Top assembly people generate DSLs for every problem domain, and have a hefty library of subroutines and ready macros. I still believe that, if you are good, really good, you'll do best in assembly. That is, you have the detailed machine knowledge, the proper mindset, the subroutines to do <whatever-is-commonly-needed>, and useful macros (which are a kind of specialized subroutine).
Now. This is true for small machines, and x86 or 68k; but. With the rampant complexity in amd64+ archs, with ultra-complicated instruction sets, it's harder to know every instruction with exquisite detail to produce better assembly than the best C or (probably) Rust compilers.
Still, even if you only use a subset of the instructions of amd64 or arm, you'll learn quite a bit how the machine actually 'does stuff'.
And, if you really take to this sort of thing, there is a future for you in Embedded. Good Luck!
No, in that case, one replies: and begins a discussion.
As usual, I stand by my comments, as they are my lived life experience. And, I believe they are quite accurate, and otherwise a thoughtful answer to the OPs question.
Nobody asked, for example WHY was I writing assembly language for 4 years; but I'll tell anyway: I wrote a compiler for a Python-like language called "Simpletran". It pre-dates Python by several decades, but many of the original ideas in the early Pythons are there.