Hacker News new | past | comments | ask | show | jobs | submit login

What do you think is the absolute minimum requirement to use a computer to its full potential?

A computer is basically a universal machine. It can do anything.

To use it, you need to specify your need with no ambiguity whatsoever. Code is just that: a non-ambiguous, Turing complete formal specification. C, Haskell, boxes you drag and drop, it doesn't matter. If you don't learn to construct and manipulate such code, you will never realize your computer's full potential, and will be at the mercy of those who do.

I'm not against division of labour, but this is different. Computers are the first machines that can have all our mental powers. The only reason they don't is because we don't know how most of our powers work. The day we do, however… http://intelligenceexplosion.com/

"Computer magic" you say? That's more true than you think: programming its awfully close to hermetic magic as found in fantasy settings: scribbling bizarre abstract signs on a surface does wonders beyond the understanding of most mortals, learning to make such scribblings often takes years of dedicated practice, and a single mistake in those scribblings, however small, can result in catastrophes, up to and including fatalities.

Coding is an Arcane Power from the Ancients. We should treat it with the same respect. Heck, everyone wants to be a Wizard. Why don't everyone want to know some actual magic?




In practice, however, our contemporary computers are far more complex than `send input/get output; master computers`.

Not because the basic mechanics have changed, but because our software ecosystem is vastly complex. The days of having a relatively simple and grokkable system are long over. Our computers are powered by extremely complicated, intricate and numerous interacting subsystems, where learning everything is akin to being a polymath, and people naturally need to specialize.

With this in mind, not all code is created equal. You're still under far more mercy with a visual programming language than a textual one.

Yes, programming is essential to realizing the full potential of your computer. Yet there is still so much more. The code is the main arbiter, but there is still a lot beneath, dealing with computation, discrete mathematics, information theory and so forth.

You're still at mercy when you can just blindly type instructions guided by your interpreter and it spits back programs with horrible performance, because you have no idea how data structures work, can't optimize for shit and don't really know what your interpreter does behind the scenes anyway.

I appreciate the nice fantasy gobbledygook about ancient arts and black magic, but I think you're getting full of yourself here.

Ultimately, in order to strive with complexity, first one must learn to operate a higher level above coding itself (system administration).

This is one of the aspects where the "learn to code" movement is shortsighted. When you operate on very high level abstractions, you get false ideas. Of course, abstractions aren't bad and ultimately every new language we use strives to wrap more away and give us a simpler interface. Yet being ignorant of the low-level details is still a curse, a disability, if you will.

That and IMO, it's just fucking stupid to have kids who can write console apps in C#, but can't use the shell to debug an OS issue. What use is programming when you don't even know your environment?


> Yet being ignorant of the low-level details is still a curse, a disability, if you will.

That very much depends on how leaky the abstractions are.

The things you consider "low-level" are themselves quite high level and abstract. A "register" and a "cpu instruction" are abstractions too. Yet you can take them for granted without worrying about the microcode inside the CPU, or the clock propagation, or quantum leakage in the logic gates. Etc.

We need good abstractions, and when they're actually good we shouldn't worry ourselves about what's going on inside the box, unless for the pure fun of hacking.

In practical terms, I agree with you that most people who are trying to write software today would benefit from knowing more of the layers below them. But this is only necessary because of the shortcomings of our abstractions.

If we achieve a glorious future where all people can wield the full power of general purpose computers, it won't be because everybody learned all the arcane layers. It will be because we put together really powerful abstractions.


That's fine. I still think one should know how to do sysadmin work before coding.


> Our computers are powered by extremely complicated, intricate and numerous interacting subsystems

Which is one of the big mistakes of the last decades. I understand market forces and Worse is Better, but the result is still way worse than what we could have gotten if we lived in Ponyland.

Complexity is overrated. Current home desktop systems (OS + browser + office suite + mail + drawing app) are over 200 millions lines of code. Now guess how much it really takes to build an equivalent.

About 20,000 lines, including the self-implementing compiler collection.

http://vpri.org/html/work/ifnct.htm

http://www.vpri.org/pdf/tr2011004_steps11.pdf




Join us for AI Startup School this June 16-17 in San Francisco!

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: