Why is UNIX better for programming?

My Quora Answer :

In practice, there are only two operating systems today with any real traction : Unix (including Linux, BSD, Android, MacOS etc.) and Windows.

And from my point of view, Windows has two fundamental problems :

1) A lousy command-line terminal environment that

  • a) doesn’t work in the “conventional” way that Unix terminals do;
  • b) doesn’t have the comprehensive set of standard tools we’re used to;
  • c) doesn’t have the piping model to plug together multiple small / independent tools to get work done.
    (I know there’s “PowerShell” but this seems to an optional extra rather than part of the OS out of the box, so you might as well say Windows is Unix because of cygwin. )

2) Lousy multi-tasking. I’ve had Windows 7 freeze-up on me over a dozen times in the last week. I don’t even understand that. How can an operating system that’s been in development for over 30 years, by one the richest and most significant operating system companies on the planet, still have multi-tasking that’s so bad that errors in applications or drivers can bring down the entire machine and force a restart? Unix solved that problem in the 1970s, and Microsoft still can’t figure it out?

Being able to multi-task and not let rogue programs hurt everyone else is a basic requirement for an operating system.

Bonus : today as a Ubuntu (ie. Debian-family) user I find the Debian package manger model brilliant. Why would I want to waste my precious time figuring out how to install software except using apt-get. It’s fast, consistent, reliable and easily reversable. Plus pretty much every tool I could possibly want is already free-software, so I’m not hitting pay-walls, mazes of twisty advertising or other annoyances in order to get it. I just type one line in my terminal and I have what I need to keep working.

Blame the Tools for Thought

Giles Bowkett :

This is, in my opinion, the strongest argument for seeing Unix and basic coding skills as fundamental required literacy today. As prostheses for memory and identity, computers are too useful not to use, but if you don’t know how to craft your own code which gives you a UX which matches the way you think, you’re doomed to matching the way you think to the available tools, and even the best available tools basically suck. Interaction design is not only incredibly hard to do well, it’s also incredibly idiosyncratic.

What's Like RSS?

Dave Winer asked a great question back in December. What standards are like (his ideal for) RSS?

That is, basically fixed forever by convention, large userbase and multiple suppliers?

My suggestions :

In practice, a few Unix classics : SSH, the diff / patch formats, rsync, finger. All used on a grand scale by many parties. Multiple implementations. Multiple pieces of software committed to them. No one really trying to change them.

Email protocols are pretty widely supported and fixed.
Git. It’s notionally owned by Linus Torvalds, but he doesn’t seem to have any commercial interest in extending or breaking it. GitHub showed you can build a great commercial site around it without trying to make proprietary extensions. And I can use the same clients to push and pull from my server running the default Git daemon, from Github, or from rival offerings (I’m pretty sure BitBucket / SourceForge / Google Code now offer Git as an option)

Possibly Jabber / XMPP

Linux Commands For The Web

Can’t remember if I saw this before, or if I posted it, but it’s beautiful.

One of my favorite business model suggestions for entrepreneurs is, find an old UNIX command that hasn’t yet been implemented on the web, and fix that. talk and finger became ICQ, LISTSERV became Yahoo! Groups, ls became (the original) Yahoo!, find and grep became Google, rn became Bloglines, pine became Gmail, mount is becoming S3, and bash is becoming Yahoo! Pipes. I didn’t get until tonight that Twitter is wall for the web. I love that.

Marc Hedlund via Coding Horror