Hacker News new | ask | show | jobs
by danpat 2633 days ago
I think "non-practical" was perhaps poor wording.

I assume what the parent meant was a "data structures and algorithms" course, compared with say, "How to code in Java using the standard library".

The latter is "practical" - you can take what you learn and churn out code in Java.

The former is "non-practical" - you can't make the theories you now understand function without a practical implementation. But you can recognize the implementation in any environment, and understand its implications.

The general assertion is that an understanding of the "non-practical" will serve you longer than a purely "practical" education. I tend to agree.

1 comments

Well put. Yes, I might have phrased that better.

A concrete example: My firewall rule is set to deny all incoming TCP connections except those originating from port 80, and destined for port 80. Why is it blocking all my HTTP connection attempts?

If you understand TCP, you'll understanding that we shouldn't be filtering on source port at all. If you have only the vague sort of understanding that comes from using a technology in practice but never having properly studied it, you might have no idea.

And yet I'd still count that as 'non-practical knowledge'. It isn't something you're ever going to apply 'directly', unless you're one of the handful of people implementing their own TCP stack.

There's similar value in studying complexity theory (why does this seemingly simple code take so long?), operating system fundamentals (aren't containers and VMs roughly the same though?), and compilers (for a deeper appreciation of programming in general, and, my personal favourite, to instil a due sense of terror regarding undefined behaviour in C-family languages).