Linux was designed to emulate Unix and run the pre-existing Unix-like userspace from GNU.
And absolutely yes, Unix was "designed" for software development. That's exactly what it was in its early days: a hacker playground for the geeks at Bell Labs to try new ways of doing things.
And windows wasn't. Early windows development (for years after it became popular) was done at a DOS command line. Eventually Visual C++ because the dominant product, and certainly you can't say it wasn't innovative. But it remained a separate product. "Windows" wasn't for development. And we still suffer from this in, say, the way windows basics (like the standard C runtime!) typically need to be shipped per-app and are only vaguely compatible across OS and toolchain changes.
But... the point was that "windows" per se wasn't designed for software development. The fact that you had to buy an IDE from a separate supplier supports that point, it doesn't refute it.
In fact, as pointed out, Microsoft's own development environment (and the one used to create windows itself and most of MS's windows apps) until 1993 was a DOS command line compiler and separate editor.
No one is saying you couldn't develop "on windows" (obviously you could), but that's a rather different point than saying that windows was designed with developers' needs in mind (it wasn't).
Neither DOS nor Windows had any compiler included. DOS did have a BASIC interpreter, later they did away even with that (with Windows 2000 I think).
In Linux you had a rich range of compilers, interpreters and other development tools, right in your distro. I'm talking about late nineties here. The two were absolutely incomparable in this aspect. Although, I have to admit, I preferred Borland's documentation to Linux man pages.
> Early windows development (for years after it became popular) was done at a DOS command line ...
I could just as easily flip this and claim that Linux development is all backwards because it's still done on the command line.
Given Microsoft's commitment to tooling, backwards compatibility and extensive documentation I think it's pretty lame to try and paint windows as not targeted towards developers. The difference is that windows has actual users, as opposed to the eternal horizon of "the year of linux on the desktop".
Effective early Windows development required a surprisingly thorough knowledge of DOS and x86 memory management/pointers that one had to get through books (unless one was poring through Intel chip specs). Even though Petzold's books were/are sold through Microsoft in my opinion is it's a stretch to call it documentation. For a long time, the best debugger was a third party tool - Soft-Ice. Their documentation/tools for XBox was pretty great, though, they had to do well there being new kid on the block. Microsoft had the benefit of 90% of PC market share at that time so we all had to learn it if we wanted a piece of that pie.
Those books where widely published from the start from Microsoft and Developers. There was aspects of the API were not released to the general public but it didn't stop a developer from knowing about them.
You also has the MSDN subscription that did cover a lot about the development.
Yes the MSDN subscription which seemed like kind of a racket at several hundred dollars ( it was up to $1000+ by 2001 depending upon support level/media ). Also they would frequently have documentation about something in one year, then drop it from the CD's/DVD's and if you got lucky you had those or someone was really nice and posted it on the internet. I remember having to figure out the IME's for Far East/etc input circa 2000 from a usenet post then handing that information down to a someone else on usenet so they could implement it as well.
The fact that you think a DOS command line c. 1993 and a Unix one (from, say, 1984 even!) are comparable basically ends this argument, you realize, right?
Yup you're right, the extensive argument you provided has completely convinced me of my errors. /s
The point I was making was that they're just different systems and approach things in different ways. Trying to say one is more "developer focused" than the other is a useless metric(which we'll take forever trying to define what "developer focused" even means).
One could make similar arguments about the Alto not having a command line, yet Smalltalk was incredibly powerful and focused at giving a top-tier development environment that still hasn't been match in some ways to this day.
UNIX and thus Linux are all about pure user power. The shell is great and there are lots of tools available by default like Awk, Perl, Python, TCL, Sed, GCC, Vim, Emacs...etc. The entire OS isn't perfect, but is designed for people who know what they're doing. Compare that with CMD & Batch and it is Linux is like an SUV that can also fly and shoot lasers while Windows is like a moped. Of course I'm exaggerating a good bit, but even Powershell has a lot of issues and doesn't allow you to easily do what you can in Linux. In Linux everything is text and it's easy to pipe things around. In Windows it's all objects and frustration. I agree that Smalltalk on the Alto is pretty cool, but Windows is nothing like that besides having some OO stuff. Something I do all the time on Linux is "locate filename" and pipe that to "grep" to be more specific. On Windows, open up the search Window and pray you can narrow it down or wait a very long time.
I use Windows and Linux at work. On Linux I feel like everything is designed to increase my productivity as are the tools at my disposal. On Windows, I'm always fighting the lack of good tools. Sure Visual Studio + .NET is pretty good if that is your thing, but I personally don't like having to open an IDE that uses that kind of resources if I essentially need to write a simple script. I've spent quite a bit of time with Powershell, but it simply isn't as productive as Linux due to the increased complexity. Sorry for the rant, but as i spend a lot of time with both OS, I have strong feelings on this.
Yeah, software development on Unix was so natural and enjoyable, even today half the time building a Linux library or app is typically spent in byzantine shell scripts trying to determine which particular occult incantation of incompatible or broken Unix you are not running and throwing various test programs at your compiler that last made sense in 1995.
The true essence of delightful and plain right software development must be over in OpenBSD land, where they run the one and only gcc 4.2.1
I tend to fall into I use what-ever gets the job done. Though most of the times I did hear from high Microsoft Programmers they first started with Unix/Linux and super productive in that environment. Though when it came to shipping product and getting customers to buy it all the users where on Microsoft/Apple at the time. Tending to wanting to survive and buy `nice` things they all had to learn Microsoft/Visual Studio to ship product to make monies.
Not wanting to fall into a debate about Microsoft/Linux/Apple I've tended to find that Microsoft with all its problems do have very helpful and useful technical support when you run into a major door stop when shipping a product. What they do for backwards compatibility is amazing and still something I would like in the Linux world.
Here I go again....
One of my pet peves with Linux/Unix world is `Still` after all these years their asynchronous IO is still crap compared to Free BSD. Something that after all these years its still amazing that it still isn't fixed. The whole container/virtual machine is required in the Linux world because `Some` essential tool you need is no longer works with your specific version of Linux. To make matters worse I've seen 2-3 virtual machines in enterprise environments that are just simply there to run old software that it vital for the business.
To address that last paragraph, I don't believe it is anything special about Linux. I know a business that still keeps a small army of Windows 2000 servers in virtual machines due to software that simply won't run in any newer version (not even Windows 2003, despite being the last NT 5.x, it's just incompatible enough).
We've had bad experiences mixing Office 32bit vs 64bit applications. Also with Microsoft Windows Server 2000 just double check the license agreement and software licenses some of them have caveats of running the software within a Virtual Machine.
I know Oracle licenses we had to have a dedicated machine because they charge per core/thread.
That's what it says in the marketing material, then you look inside and there it is, the ancient gcc the guys with the claim on most free license can't update because of it's .. licensing.
If it was only an exercise in self-flagellation, sure whatever, but no, their tears flow upstream when stuff 99% of the population uses on Linux inevitably breaks with their bastardized gcc.
(This is very obvious if you consider that no, they don't have an LLVM backend for the alpha)
Linux was designed to emulate Unix and run the pre-existing Unix-like userspace from GNU.
And absolutely yes, Unix was "designed" for software development. That's exactly what it was in its early days: a hacker playground for the geeks at Bell Labs to try new ways of doing things.
And windows wasn't. Early windows development (for years after it became popular) was done at a DOS command line. Eventually Visual C++ because the dominant product, and certainly you can't say it wasn't innovative. But it remained a separate product. "Windows" wasn't for development. And we still suffer from this in, say, the way windows basics (like the standard C runtime!) typically need to be shipped per-app and are only vaguely compatible across OS and toolchain changes.