Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.

foidulus

macrumors 6502a
Original poster
Jan 15, 2007
904
1
Seriously, although I'm primarily a mac/Linux programmer, I had to port an app we are doing to Windows and I am just amazed at how primitive the operating system(esp. the command line) is. Things that can be accomplished incredibly easily in the BASH world take massive amounts of time and agony in Windows. The tight coupling of the file system layout to the current computer is insanely backwards compared to unix's "every file is under the same root" strategy and requires a lot more configuration than Unix just to get off the ground.


Not to mention the total lack of many built in utilities(ssh, perl etc) that come with every other operating system under the sun have to be installed separately on Windows, which wastes massive amounts of time and energy keeping all of those things up to date(esp. if you are like us and have the programmers do the sysadmin as well).

And don't even get me started on scripting. Seriously, "REM"? Because a # was soooooooo much more difficult :mad:

How do Windows programmers deal with this stuff? Seriously? After coding in the UNIX world, I would never in a million years go back to Windows voluntarily.
 
They think it's normal.

Well the problems with windows is that it's fine when you first get it, but problem will start to appear progressively, and most of those people get "used to it".

The IT guy of the office has a vista machine. It becomes unresponsive every day now and he thinks it's normal. LOL.

And they don't know the value of time. They don't care about usability or time spent, as long as they are getting paid.
 
LOL.
As a Windows programmer (primarily) I agree, to a degree.

Though, to be fair, like any programmer on any platform, us Windows programmers optimize our workflow to the available tools. Part of the reason you find Windows so frustrating is that you haven't had the time to do that.

But, yeah, I wish there was a command-line ecosystem on Windows to compare to *nix platforms. The tools are available, but not ubiquitous so it doesn't add up to the same thing, where everything is designed to be scripted
 
My primary platform right now is windows. Next week linux is becoming the host and windows will be a guest so i can make use of the 4 additional GB of RAM that are in my file cabinet. The way i get by on windows is cygwin. Period. If i don't have a bash shell i cannot operate.

-Lee
 
Seriously, although I'm primarily a mac/Linux programmer, I had to port an app we are doing to Windows and I am just amazed at how primitive the operating system(esp. the command line) is. Things that can be accomplished incredibly easily in the BASH world take massive amounts of time and agony in Windows.

It's all about what you are used to. While I agree with you that a unix (like) environment is superior, I know lots of programmers who are lost outside of Visual Studio and cringe when they have to use the command line.

Platform independent frameworks (e.g. Qt) and build systems (e.g. CMake) can make life a lot easier. You also have Cygwin, MSYS and Microsoft's SUA/SFU as options to get a bash/unix-like environment on Windows.
 
How do Windows programmers not go insane using Windows?

Most of them are insane ... they're programming for Windows aren't they?? How much more proof do you need. The rest don't use Windows, they use Macs, just like the XBox programmers. ;)
 
And don't even get me started on scripting. Seriously, "REM"? Because a # was soooooooo much more difficult :mad:

They have different coping strategies: some of it involves extended happy hours. :D

First of all, I'm not a big Windows fanboi though I've worked on that platform here and there since 3.0 (and used the especially fugly 2.0 but not as an admin). Scripting's not too bad and has gotten more powerful over the years. Still, always thought it was kinda funky to use BASIC for scripting. :)

These days, Windows admins are now needing to start learning PowerShell. I'm not that fond of PowerShell's verbose grammar but admit it's a big step up from past Windows scripting languages through full support of pipes and passing around objects. Even aliases 'ls' (which I grudingly admit is the decent thing to do) to the actual PowerShell verb.
 
The .NET platform is actually pretty nice and C# is a perfectly okay language (stay away from VB though). I agree though that the Win32 API is a mess, but then for an API that has been around for so long I'm surprised that Microsoft has managed to keep it usable.
 
The .NET platform is actually pretty nice and C# is a perfectly okay language (stay away from VB though). I agree though that the Win32 API is a mess, but then for an API that has been around for so long I'm surprised that Microsoft has managed to keep it usable.

I agree. I use C# at my job and I love it. We're actually in the middle of rewriting our entire main application using C# (it's currently a C program). I really enjoy using Visual Studio to program in.

That being said, the little bit that I've used XCode and Objective-C, I thoroughly enjoy. I'm just more used to Windows programming.
 
True (i.e. born-that-way) Programmers can use anything on anything to program with.

If someone refuses to learn ObjC or any other tool/language to program with, ignore them.

I use pretty much everything except Ruby and Python at work to make Mac software with.

I use WebSphere Studio App Developer (WSAD) which is just Eclipse with lots of add-ons to make backend server/webapps using Java and JSPs (run on Apache/Tomcat with Oracle DB), ObjC/C Cocoa Carbon app clients, JavaScript/HTML UI linking WebKit plugins to AppleScript and Shell scripts (one using the expect scripting utility on Mac OS X) that access command-line utilities on Mac OS X.

There's even some SOAP/XML stuff, which required customizing a UPnP library to add HTTP Digest authentication and building special XML parsers that emit JSON or pure JavaScript. And sometimes i need to type SQL commands into a Oracle console app to check the data reported in the database.

If I refused to use Windows (as a Mac programmer) or Java, I wouldn't have this awesome job making insane $ and living in a big 6-bedroom, 4-bath house near Austin, TX.

Windows does suck, and my DELL Craptop is now somehow corrupted and I had to reinstall WSAD once already (and all the Java VMs) and its all barely hanging together (literally, the screen is very loose). I may end up using Remote Desktop on my Mac to get work done pretty soon since the DELL craptop keyboard is starting to drop keys or duplicate key strokes now. if my workload ever lightens up I need to get a replacement, and reinstall Oracle, WSAD, ant, Java VMs and JDKs and everything else, again. Ugh.

IDEs, CLIs, Frameworks are just tools. Don't get hung up on *your* programming tools anymore than someone gets hung up on a particular brand of wrench or hammer or screwdriver. When all you have is a hammer, every problem looks like a nail.
 
Since .NET, the API isn't really all thad bad anymore. But I agree with the tools. I have installed the Win32 ports of the usual Unix tools because I'm just more productive that way. But surprisingly (to me), there are actually people who like the Windows way.

When I receive a document detailing how to install this-or-that tool we're all supposed to use, these people generate 5MB .doc files with screen shots ("click the circled button, select the indicated option, click Next, click I Agree", etc...). I would much rather expect "Run the included shell script", but Windows just doesn't work that way.

I get a chuckle every time the nightly build failed because one of the dozen (commercial & expensive!) tools used in the process threw up an alert box (sometimes simply a "Successfully copied the data, press OK to continue") and the admin finds out in the morning that everything blocked on that alert box.

The idea of "remote sysadmin" on Windows is "VNC into the machine so you can click on the buttons".

I cope, because there's apparently much more money to be made with Windows software. At home, I obviously refuse to program anything in Windows :)
 
The same problems occur porting the other way.

When I first moved away from Windows, I couldn't find an IDE with the level of support with Visual Studio. Why did I have to try and cope with tools like gdb - in Visual Studio I clicked a line of source code to set a break point and it stopped there and I didn't have to go through 10 pointers to view the contents of a string, ffs. Where was the code completion and visual form designer?

Which GUI toolkit should I use? XWindows? Gnome? KDE? Had OS X been around then, chuck Carbon / Cocoa into the incompatibility mix too.

Why did I have to learn obscure sets of command line tools when Windows tools presented most of those options as nice check boxes. MSDN Library - I mean, wow, seriously - searchable, browsable, well indexed and comprehensive. Compare that to a load of man pages. Awful.

Command line? Why are sh, csh, ksh, bash not bloody compatible with each other?

Where was the Unix equivalent of Petzold or Prosise? Their books were simply amazing for getting to grips with the Windows APIs and there was (still is?) nothing comparable.

And why was installing software so difficult? On Windows I put the disk in, ran the installer, and got straight to work. Just didn't happen on Unix - I shudder when it came to the first time I tried to get Eclipse 1.something running on Linux. To be honest, I think I was lucky to be able to get Linux running on a PC in the first place ...
 
I've just started University and part of my course includes programming in C#. I'm a complete noob when it comes to Windows programming, having only dabbled around in XCode (got myself a copy of ObjC 2.0 by Kochan). So I'm running Visual Studio 2008 Pro in a Server 2008 Virtual Machine (get both free from Microsoft Dreamspark if you're a student). And I must say I much prefer programming on the Mac.
 
MSDN Library - I mean, wow, seriously - searchable, browsable, well indexed and comprehensive. Compare that to a load of man pages. Awful.

I have to respectfully disagree with this. The MSDN documentation is absolutely god awful. Plus to make it even worse they don't provide PDF downloads for any of their articles. It is written in the form of one large document rather than splitting in into numerous separate documents and articles which makes more sense as then you can just download the document relating to the actual subject you are interested in rather than wading through tons of cruft.

The Microsoft developer site is an absolute mess, they have at least 5 sub domains such as Code 9, all with different designs, different indexing strategies and different subjects. It is a complete and utter mess.
 
If downloading a few executables from the Internet when you first setup your machine will send you insaine, then it is not the sanity of Windows users that I question, but yours.

I think that if your reasons for believing Windows is a "backward" operating system are that you're not used to working with it, you should re-consider your position.

I once spent 20 minutes in a UNIX environment attempting to mount the CD drive so that I could load some drivers, a task that could be accomplished in 20 seconds under a Windows OS. However I did not rush to a UNIX forum and complain endlessly about the tirants of using a "backwards" OS, becuase I know that the reason it took so long was that I was an inexperienced user.

How do I not go insaine? I say how would I go insaine? I couldn't possibly deal with the stress of right clicking my computer, or using the worlds most common OS GUI. The stress, the stress...
 
There is a big difference between peculiarities of OS and simply stupid or bad decisions in the design and implementation.

Microsoft knew when DOS/Windows/NT were designed about Unix file system mountable tree, using slash for directories divider, "real" programming environment for shell scripting and so on. Instead of using this knowledge they used and kept using drive letters (that came from CP/M OS where each letter represented a drive), backslash character for directory divider AND used as escape character in most programming languages (so programmers have to remember to double every \ in the directory name) and so on. I talked to plenty of MS programmers and all were really sharp but definitely something was (possibly is) broken with the decision process in the company as too many decisions were simply very wrong and most of the time never corrected. I am still waiting for symbolic links that are actually exposed to users, not some funky junction points maintained by SysInternals utility. Binary registry in Windows is still heavily used even though it is clear to everyone that it does not work well since it is not portable or fixable in case of errors/corruption.

Windows is rather good limiting choices and therefore simplifying things. After all a road without any intersections does not need a navigation system. The problem happens when you see that the road does not take you exactly where you want to go. Unix on the other hand gives plenty of selection and choices to make which can be intimidating in the beginning since you have to make multiple decisions which simply do not exist in Windows world.

It is somewhat easier now since Java/Ant/Groovy/Cygwin allowed to match richness of Unix implementation in Windows but I agree when you work in Unix and Windows it is rather amazing to see missing functionality in Windows that existed in Unix for 10+ years.
 
To more directly address the OPs main gripes:
download cygwin.
Seriously, you get bash and all of the UNIX tools that you're used to.
You can script in bash.
You can run a rootless X-server to display local xterms, remote X, etc.
You have thousands of packages available, so you have a one-stop shop for all of your unixy goodness.
You can SSH from an xterm to other servers without firing up putty (I appreciate putty very much, but it's not the same. Also, your profile is stored in the registry =( )

I think some of the reactions are a little too serious. Whenever you move to a new platform, there are challenges. Betwixt unicies it's not as serious, but I'm sure moving to OS 9 from a UNIX I'm sure one would feel the same way. Windows hasn't been command-line oriented, period. After all, for a long time you had DOS, so why bother? Powershell seems like a step in the right direction, but cygwin really fills the gap. I love the command-line, but not everyone does. Visual Studio seems to be a very powerful IDE, and hundreds of thousands, if not millions, of programmers make a good living with it. One of them is on my team in the cube across from me. His sanity seems intact, though we have initiated him to Linux and he is quickly changing sides.

-Lee

edit: Also, this has devolved into doc and API arguments. This is pretty off-topic, though it is certainly a discussion worth having. The OP was mostly talking tools, and a bit about the layout of the filesystem.
 
I have to respectfully disagree with this. The MSDN documentation is absolutely god awful. Plus to make it even worse they don't provide PDF downloads for any of their articles. It is written in the form of one large document rather than splitting in into numerous separate documents and articles which makes more sense as then you can just download the document relating to the actual subject you are interested in rather than wading through tons of cruft.

The Microsoft developer site is an absolute mess, they have at least 5 sub domains such as Code 9, all with different designs, different indexing strategies and different subjects. It is a complete and utter mess.

I think we must be talking about different libraries. Why would you want to download something already installed on your computer and integrated into your IDE?
 
I have to respectfully disagree with this. The MSDN documentation is absolutely god awful. Plus to make it even worse they don't provide PDF downloads for any of their articles. It is written in the form of one large document rather than splitting in into numerous separate documents and articles which makes more sense as then you can just download the document relating to the actual subject you are interested in rather than wading through tons of cruft.

The Microsoft developer site is an absolute mess, they have at least 5 sub domains such as Code 9, all with different designs, different indexing strategies and different subjects. It is a complete and utter mess.

At least they have pretty much complete documentation - which makes them better than many other products ;).
 
Visual Studio is a very nice IDE. I hate programming for Windows, mainly because everything is done half-assed. I haven't worked with .NET all that much, but It looks to be a step ahead of Win32 and the 900 different frameworks they provide.

I hate the fact that you can use one framework to build 95% of what you want to do, then have to move to a similar framework to get the other 5% (talking about C++ to Access coding).

I've done a lot of system work with it, it's just like VMS programming. Pretty funny, the parameter list almost the same, just renamed.

I have to say, the IP stack is extremely fast. Probably the fastest that I've seen.

As far as command line, I use mainly Perl with it. It's fairly easy to distribute and is very flexible. Cygwin is nice, but its a lot to push to production machines. X protocol is strictly forbidden on a bunch of the networks I use, so its a nightmare to get it through a security review. There are other shell alternatives, but they are fairly expensive licenses or complicated installs.

I'm an old DOS TSR guy, so I grew up with that crappy DOS command line and can make it do a fair amount. To say it's not straight forward is an understatement, but you can hack it to do pretty much anything, just not easily.

Either way, I still prefer Unix/Linux over Windows. I find most Windows support folks lacking on the server side, mainly because they've been trained to deal with users and user issues. Black Box development freaks them out and they aren't used to being told to leave it alone. They always want to shut it down and back it up and play with it. Mainly just F***ing things up along the way, installing virus software, security patches, etc.. The Unix admins are great at getting installations to be consistent, which is hugely important.
 
I think we must be talking about different libraries. Why would you want to download something already installed on your computer and integrated into your IDE?

Because reading any decent length documentation on a monitor is a pain in the proverbial. I always print it so I don't need to keep switching screens between the text editor / IDE and the documentation viewer / web browser.

Even when I had two monitors, one for the documentation and one for the IDE / text editor it still annoyed me. But that could just be because I had a lousy dual monitor setup.

As for the best system and programming documentation I have read I think OpenBSD ranks pretty darn highly. Their man pages are fantastic.
 
Seriously, although I'm primarily a mac/Linux programmer, I had to port an app we are doing to Windows and I am just amazed at how primitive the operating system(esp. the command line) is. Things that can be accomplished incredibly easily in the BASH world take massive amounts of time and agony in Windows. The tight coupling of the file system layout to the current computer is insanely backwards compared to unix's "every file is under the same root" strategy and requires a lot more configuration than Unix just to get off the ground.


Not to mention the total lack of many built in utilities(ssh, perl etc) that come with every other operating system under the sun have to be installed separately on Windows, which wastes massive amounts of time and energy keeping all of those things up to date(esp. if you are like us and have the programmers do the sysadmin as well).

And don't even get me started on scripting. Seriously, "REM"? Because a # was soooooooo much more difficult :mad:

How do Windows programmers deal with this stuff? Seriously? After coding in the UNIX world, I would never in a million years go back to Windows voluntarily.

You obviously just don't know the Windows environment or the massive amount of available free-of-cost tools for Windows. And you obviously have not even heard of the Windows Power Shell, yet.

I could say all the stuff that you said about Windows about Linux or Unix: They're so different, it completely freaks me off every time when I have to use that stupid and completely inconsistent Linux "platform". Unfortunately, I have to live with a bunch of Linux-based servers at my company, but I have a serious dislike for that "platform". In Linux, NOTHING ever works out of the box and NOTHING ever works as documented - it it's documented at all, that is. And once you figured out how something might work on Debian, you have to start again from scratch to get the crap working on Red Hat or SuSE or whatever-other-Linux-flavor-of-the-day is hip.

Nah. There's a reason why Apple chose the FreeBSD userland for OS X. Still, it's only something for people who also enjoy the pain of coding in an old curly braces language like C.

Which leads us to your question why Microsoft uses REM instead of the hash symbol for comments: Microsoft has a gigantic investment in BASIC-style languages. Actually, BASIC-interpreters were the first products of that company. Things like REM are there for historical reasons - and to make a couple of million of their developers feel at home.

Oh, and "every file under the same root": It seems you haven't yet heard of UNC notation. Because, you know, the drive letters are also only there for historical reasons and to guarantee backwards compatibility to software that was written in the early 1980s. (Try running software that old on your Mac or on Linux. Good luck. We might hate backwards compatibility, but it actually is one of the strongest cornerstones of Microsoft's ongoing success.)
 
I've just started University and part of my course includes programming in C#. I'm a complete noob when it comes to Windows programming, having only dabbled around in XCode (got myself a copy of ObjC 2.0 by Kochan). So I'm running Visual Studio 2008 Pro in a Server 2008 Virtual Machine (get both free from Microsoft Dreamspark if you're a student). And I must say I much prefer programming on the Mac.

Then write on the Mac. The only problem with that is that Objective-C and Cocoa won't ever get you a job anywhere outside of Apple, Inc. You can try your luck with becoming a shareware author, though. Maybe you can make a living with that. If that's not your cup of tea, than C# and the .NET framework are a much safer bet.

But it's always interesting to see how much personal preferences can deviate. I personally cannot stand XCode and think that programming on the Mac is the worst possible experience. I find the syntax of Objective-C ugly and backwards and just cannot motivate myself to use a language that only ONE company in the world uses. And to make things worse, there are not even any feasible alternatives available for the Mac.

On the Windows platform, I have CHOICE. More choice than I ever need, actually.
 
having just graduated I have been doing almost all .NET 3.5 related development at my new job and it is not all that bad. Visual Studio is a nice IDE and C# is pretty easy to program in. The .NET API in pretty nice and is much better then the win32 API.

There have even been some tools release to make MVC easier (like this one, which the company I work for and Microsoft collaborated on).
 
I don't know that this has devolved to the point of needing to be locked, but this is a holy war, plain and simple. No one is going to change their mind based on the contents of this thread. The only surprising thing to come from this is the number of windows advocates on a mac programming forum.

If this thread does continue, hopefully people can keep it civil, but obviously people have strong opinions on this.

-Lee
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.