Post
Topic
Board Development & Technical Discussion
Merits 7 from 4 users
Aptitude, the right approach, & “UNIX and C by immersion”
by
nullius
on 23/02/2018, 02:46:27 UTC
⭐ Merited by Vod (4) ,pebwindkraft (1) ,ETFbitcoin (1) ,mattcode (1)

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.)