Point taken. I'd still argue that starting with a top level language and working your way down is an equally valid approach, alas I can't claim this to be more than my own personal opinion.
Well, maybe it matters less how a person starts learning and more how dedicated and passionate they are.
Also, how
able. Innately. People are pressured to shy away from that fact, nowadays. I gave the analogy upthread: No matter how dedicated and passionate I may be, I will never in this life become an Olympic gymnast. So as for most people and programming, electrical engineering, theoretical physics... No, not everybody can be a rocket scientist.
I hope my posts are not drifting too far away from the topic, as I want to add one more advice based on personal experience.
A bit of my own:
As I was forced to admit when gmaxwell showed up in a thread, I have inadequate formal foundations. Quoting my reply to gmaxwell:
I myself will not try implementing such things, even the “really easy” ones. I don’t have the CS background. After tinkering for years, I learned programming by reading FreeBSD kernel code until I thoroughly understood almost everything except the CS-heavy subsystems (vm, scheduler, etc.). I think you see that my code reflects the style you’d expect from that experience. Otherwise, as in all else, I take pride in knowing enough to know the limits of my own knowledge.
Many years ago, I started out as a self-described “power user”; though in retrospect, that seems a joke. I was the guy who could always make the computer work; non-technical people thought I had magic powers. Also, I always had a strong interest in cryptography. Read books about it. Used PGP, etc. Did cypherpunk stuff. I had some odd personality quirks; if I wanted to understand how e-mail worked, I would read some RFCs even though I wasn’t implementing anything, and didn’t know how to.
I had always wanted to learn programming; but tutorials didn’t get me beyond what I would call an “advanced beginner” level. (That is to say: I could tinker with existing code, and write small programs which did not segfault. I always did like pointers.) As a related issue, I wanted to escape Gatesland to a realm with no Windows. My attempts at that also had the usual results.
Finally, I did the equivalent of natural-language immersion: Built a new machine, installed FreeBSD on it, and left myself nowhere else to go. Thence ensued an intense time of pain and joy. manpages and /usr/src became my best friends. Also, some very old gems in /usr/share/doc; see the usd, psd, and papers subdirectories.
For assistance in this strange new land, I also had a copy of the C standard, some good old-fashioned FAQs, etc. One would not learn a new tongue without a dictionary, either. But mostly, I just read—and read—
and read—then experimented, then read some more. For about a year, one of my biggest passions was simply
reading C code until I understood it.
I’ve intended to write up a story of my “UNIX and C by immersion” experience, and post it in Off-Topic. The foregoing is the abbreviated version. Perhaps it may suffice...
I’ve also tried to brush up on maths and CS. Either I need formal instruction for formal rigour, or I’m too lazy, or I lack the innate aptitude. I probably do know more about computer science concepts than many working “programmers” (a/k/a code monkeys). This scares me, because I only really know enough to semi-competently choose between algorithms and between implementations of algorithms.
Apropos the topic: Learning to code is not where to start. For example: Before I ever wrote printf("Hello, world!\n");, I knew that I wanted to manage my own memory; and I had an adequate understanding of why this was an important issue. Learning to code is certainly not the place to start exercising a “passion for cryptos”, per OP. If passionate about “cryptos”, first learn the basics of applied cryptography. Most of all, learn generally about computing! And how do I know OP does not already know these things? Well, as I said: By the time you reach the point of picking a language, you should know enough to pick one yourself.
(Sorry this is rough. I am
outside my usual forum access environment.)