Culture of UNIX and Windows Programmers
bebonzo writes "Joel Spolsky, 'Joel on Software' has an interesting review of Eric S. Raymond's book about 'The Art of UNIX programming'.
Quote:"What are the cultural differences between Unix and Windows programmers? There are many details and subtleties, but for the most part it comes down to one thing: Unix culture values code which is useful to other programmers, while Windows culture values code which is useful to non-programmers."
About slashdot: "slashdot-karma-whoring sectarianism..."" He's harsh on some points, but pretty on the money. Except about us. Nobody karma whores. Update Note to self, never post before coffee. Yes, its a dupe. get over it.
but it does mean that Americans getting off the plane for the first time in Tokyo are confronted with an overwhelming feeling that this place isstrange, dammit
:)
It's funny, but coming from Australia you'd think I'd feel right at home in both the UK and US, but there are lots of little things that make me feel slightly out of place in both countries. I think Gibson's "mirror world" term describes it best. And it's much the same with programming, not that I've explicitly programmed for windows, but it's quite a difference writing GUIs in Java or C++ as opposed to command line tools in Perl or C. Each to their own, I guess
"The Windows programmer will tend to start with a GUI, and occasionally, as an afterthought, add a scripting language which can automate the operation of the GUI interface."
1) No, a VB programmer will do this.
2) No, a good windows programmer will create an object (COM/C# Class) and then write a GUI that will call this object.
also interesting:
"They don't like GUIs much, except as lipstick painted cleanly on top of textual programs, and they don't like binary file formats. This is because a textual interface is easier to program against than, say, a GUI interface"
i would say that textual interfaces were more popular before bandwidth started becoming readily available. the rise of bandwidth has seen a rise of GUI applications because it is quite feasible to VNC from home->work and to run GUI. before ADSL it was a pain in the arse and using textual interfaces was fast and convenient.
I introduced one of them to Nessus, not because it was a Unix program, but because it is a damn good (the best?) security auditing tool available.
His reaction to a security audit showing our primary app server had multiple potential holes just in the programs that support the app? "Well, we don't use that software much, we only use it to get into the program. All the work is being done using the other programs."
For the record, the system was an HPUX server running an older version of Apache 1.x. The app gateway is through Apache to Weblogic, though the main application program runs on the HP box, not elsewhere.
This is not simply an aversion to Unix or command lines. The lax security extends into all the Windows systems as well. For example; all drives readable/writable on the network by any user.
It's a lack of professionalism, not intellegence -- the guy is plenty smart. Adding a little fear to the mix (we print checks dammit!) doesn't raise his concern too much. I've not raised the possibility that he, personally, might be held to blaim for security issues and I doubt that it would work with him.
My only hope is that slowly, without forcing him, he will see that there is something behind my comments and tips. Maybe a light will go on, and he will decide to take a look.
A firewall can not protect you from yourself. Turn off what you do not need. Do not use the firewall to do your work.
To wit: why is it so difficult to accomplish this seeming simple task? Why can't straightforward business task x be accomplished with these shiny new computers? What do you mean we need to hire 5 VB programmers for 3 months to move this data from here to there, or cause this function (which should have happened automatically) to occur every night on schedule?
Yet when I drop down to the command line to run an NT Posix utility which replaces those five VB programmers with a simple script, or pull up SQL*Plus to quickly make mass changes to the database, they sneer "why are you still using that archiac technology?".
The problem that Mr. Sposky doesn't address is this: 2/3 of the problems addressed with computers today (even so-called personal computers) are data processing problems, and there is absolutely no evidence that a GUI is an efficient way to handle those problems. Yet rather than use the best currently available tool (the command line and scripts), or devise a better one, Mr. Sposky and the Windows advocates would have us shoehorn every task into a GUI + complex API world. Um, those don't work very well, I am afraid. If you don't like the command line, fine, but could you propose something better? Because all I see right now is frustration.
sPh
Of course, if there was a bug in the library itself rather than the application using it, it would be another matter.
Au contraire, Mr. Sposky, most Windows people I deal with are ignorant of anything that doesn't come from Redmond, and not willing to learn. God knows I've meant plenty of UNIX bigots, but at least they know something about Windows - they have to, there's no avoiding it. The same is not true about Windows bigots: they combine their parochialism with a triumphalism that is as infuriating as it is unmerited.
One other aspect of the two cultures that Mr. Sposky doesn't discuss but is worth bringing up: UNIX bigots are not trying to shoulder Windows out of the marketplace - we couldn't, even if we tried. The Windows culture, however - or its corporate sponsor - is in fact trying actively to extinguish all competition. This is open-mindedness? Give me a break.
[this
Nothing like the smell of fresh dupe in the morning :)
Karma Clown
Is good. I like it. You should too.
Dupe immediately following the original! ;)
That's gotta be a record
Left hand doesn't know what the right one's doing I guess!
No Comment.
Or is Hemos going to post the same item in an hour?
you should read everything on the internet as if it had "but I'm probably talking out of my ass" appended to it.
I've got a strange sense of deja vu! Errr, hang on... I've got a strange sense of deja vu!
Stuck down a hole! In the middle of the night! With an owl!
Is not about the command line or GUI.
It is that Microsoft's own development teams have always programmed with inside knowledge of the OS, able to bypass the official API whenever necessary.
This was explained to me by the director of a large bank in Brussels that abandoned a huge Windows-based project after finding that COM+ and MSMQ could not talk to each other, and this after spending time with the actual developers at Microsoft to resolve the issues.
Each Microsoft application is written "to the metal", reimplementing huge pieces of code that should be abstracted into layers.
Many of the security issues in Windows software stem from this design model: a typical Linux security issue can be fixed by a single patch in one layer, but typical Windows security issues reappear in application after application.
And this is where the Unix model is strong: it is all about layers, formal documented interfaces, and clean separation. When Microsoft decided to add MSIE to the operating system, they were not just screwing their competitors, they were setting themselves up for a fall.
Good software must be built in layers, with formal and definite separation between layers. Microsoft is learning this now, mainly because it simply cannot make its current designs secure.
Ceci n'est pas une signature
That article..... Looked just like another one just before it...
"I'd rather have a full bottle in front of me than a full frontal lobotomy"
...of appearing to exert effort in avoiding dupes :P
Don't believe anything I say. I crash test crack pipes for a living.
The only good programmers out there are the ones that program for Ninnle Linux, the one true Linux distribution, from which all others spring.
And instant entire article re-use as well. Amazing.
On slashdot: "karma-whoring, dupe-responding-to sectarianism"
They're just being kind enough to make sure we read it. It's early, so my vision is still blurry and the coffee hasn't soaked in yet. Wouldn't want to miss a story just because it wasn't on there two or more times.
If all my base are belong to you and I attempt to retrieve my base, does that mean I'm freebasing?
CmdrTaco et al need some sort of CVS on submitted newsposts. Check-out a selected submission, nobody else can touch it. With some work and the tying in of keywords, it could also be a dupe-submission checker of sorts.
If I recall correctly, the "silence is golden" maxim in Unix programming arose as an artifact of Unix's origins. When Dennis Ritchie and the rest of the historic team at Bell Labs began work on the earliest editions of Unix and C, they were operating on teletype terminals that ran at 110 baud (kinda humbling in this day and age, ain't it?). 110 baud translates to roughly 13 characters per second, so a program that was too chatty wasted precious bandwidth. If they had something like the cp(1) command operating the way the MS-DOS COPY command did, displaying messages like "14 file(s) copied.", which is 20 characters (plus the newline), it would take about a couple of seconds to display, while displaying nothing would be 20 times faster. It had nothing to do with making programs work better with each other and everything to do with conserving bandwidth. This is also the reason why ed(1) and vi(1) have such eccentric design, preserving a resource that was scarce in the day they were made.
Qu'on me donne six lignes écrites de la main du plus honnête homme, j'y trouverai de quoi le faire pendre.
Just one indiscretion and you get called a whore!
Be excellent to each other. And... PARTY ON, DUDES!
As I pointed out some time ago, some modified spam-filter would be a good thing for slashdot. This dupe-filter won't only be useful for titlepage dupes, but could also give the writer of a comment a hint that a similar comment already exists.
A specially adapted Bayesian filter should do it. One for articles (to detect dupes), and one for each article (to dected similar comments).
Well let's see if we can "tripe": try submitting the story again... and again.
True, in the Unix world, one makes your source code available to give others the chance to further improve and customize the system, but by making it available, it means OTHER PROGRAMMERS WILL SEE HOW GOOD (or bad) YOU ARE. Because of this, most open source developers will want to put in the extra effort to do it right / clean it up / make it elegant/compatible (or at least the best of their ability).
Most open-source developers are happy to learn and grow by reading suggestions and examining patches submitting by their 'users' (obviously, the ones who submit patches are programmers as well).
In the Windows world, source code is a closely guarded secret. No one is going to see THAT source code, so who cares?
What amazes me more than the back-to-back dupe is that they had different headings and descriptions instead of the usual cut-and-paste.
My congratulations to anyone able to make their way through this book.
I, it seems, do not have the stamina to make it through ESR's 80:20 ratio of repetitive ESRisms to possibly insightful content. (No promises on the 20%.)
The Unix Philosophy, Gancarz, is far more my thickness, far less diarrhea of the keyboard, and in the noggin after reading.
On second though, my sympathies.
Since it looks it's accepted in Slashdot, I'll dupe the other readers' dupes:
article is duped!
CmdrTaco, what were you thinking about when you accepted the submission? hehe :-)
the win32 API is HUGE. Windows programmers have to be familiar with a the standard C and C++ libraries, as well as ATL, WTL, MFC, and countless other Microsoft APIs, and know the ins and outs of windows specific stuff like windows message pumps and the myriad of windows messages themselves.
Slashdot likes to make fun of "Windows programmers", but its not easy.
Is 'pathetisad' a word?
-72
-Those who dance are considered insane by those who can't hear the music.
he identified one severe problem but put the wrong spin on it!
observing that a program that produces no output because it succeeded cannot be distinguished from a program that produced no output because it failed badly
With Windows programs, you just never know. In general, I pick up a *nix program, test it a few times to verify that it does indeed do what it was supposed to do and then I use it. With Windows programs, I just never feel secure. I find myself saving more often, checking output at myultiple times through the process and wasting sooo much time verifying that everything did what it ought to have done because I am never quite sure.
Now this is a profound cultural difference, but I think it has little to do with writing for Aunt Madge or writing for other programmers. I think it has more to do with the culture of quality and craft (*.nix) or the lack thereof (Windows).
Many Windows programs "babble", not to reassure Aunt Martha, but to reassure Windows users who have grown up in a culture of "slap it together, get it out the door and let the user worry about any problems with the way it works". Without some confirmation the user just never knows whether a given program is actually working or has crashed. Many Windows widgets including moving progress bars, constantly moving icons and spinning logos are there just to reassure the user that something is indeed happening and that Windows has not crashed in the meantime.
but it does mean that Americans getting off the plane for the first time in Tokyo are confronted with an overwhelming feeling that this place isstrange, dammit!
:)
It's funny, but coming from Australia you'd think I'd feel right at home in both the UK and US, but there are lots of little things that make me feel slightly out of place in both countries. I think Gibson's "mirror world" term describes it best. And it's much the same with programming, not that I've explicitly programmed for windows, but it's quite a difference writing GUIs in Java or C++ as opposed to command line tools in Perl or C. Each to their own, I guess
I have a friend who's a Windows programmer.
I, on the other side, am a Linux programmer. We've worked together on a few projects, and there were differences in the way we looked at solving problems that were sometimes almost insurmountable.
The biggest difference between the two of us is that he has an almost religious believe that, if Microsoft says you are to do things a specific way, you have to do it that and no other way. I, on the other side, try to do things the way I think they work best.
One example is his belief that, if there is a service pack, you need to use it, even if it breaks things (as some visual studio SPs do in some cases). He gets really upset if you don't apply them. I'm all for keeping software up to date, but if it breaks things?
I have to say that his co-workers and fellow Windows programmers don't all agree with that philosophy though...
If a train station is a place where a train stops, what's a workstation?
"The very fact that the Unix world is so full of self-righteous cultural superiority, "advocacy," and slashdot-karma-whoring sectarianism while the Windows world is more practical........" I really like this part.... Espeically the slashdot-karma-whoring.. It puts a big grin on my face.... But, I guess to be in the level.. I really enjoy using Linux. But how many of us on occasions have ran into other UNIX or Linux users that just had big egos. I know when I was at college, there were a lot of students who used Linux.. But ther was kind of a divide between the NOOBS and the people who seem to know it all. The NOOBS wanting to know more and more.. And the KNOW-IT-ALLS who were like "what you do know how to do that.... wuhahahahahaha." Although the professors were helpful when asking questions to.. Guess they liked teaching.....
...Aunt Madge might be justified in observing that a program that produces no output because it succeeded cannot be distinguished from a program that produced no output because it failed badly...
This Aunt Madge seems like a Windows power user to me
This is not my opinion. Actually, it's not even an opinion. And I'm nowhere to be seen near it
I'm sure some people would object if they did that, but that has the potential to save the editors a lot of embarassment..
I wonder if it's the same story again... :-)
some subscriber may tell us while she beats the rush
Is not about the command line or GUI.
It is that Microsoft's own development teams have always programmed with inside knowledge of the OS, able to bypass the official API whenever necessary.
This was explained to me by the director of a large bank in Brussels that abandoned a huge Windows-based project after finding that COM+ and MSMQ could not talk to each other, and this after spending time with the actual developers at Microsoft to resolve the issues.
Each Microsoft application is written "to the metal", reimplementing huge pieces of code that should be abstracted into layers.
Many of the security issues in Windows software stem from this design model: a typical Linux security issue can be fixed by a single patch in one layer, but typical Windows security issues reappear in application after application.
And this is where the Unix model is strong: it is all about layers, formal documented interfaces, and clean separation. When Microsoft decided to add MSIE to the operating system, they were not just screwing their competitors, they were setting themselves up for a fall.
Good software must be built in layers, with formal and definite separation between layers. Microsoft is learning this now, mainly because it simply cannot make its current designs secure.
> but for the most part it comes down to one thing: Unix culture values code which is useful to
> other programmers, while Windows culture values code which is useful to non-programmers.
no, the REAL difference between these cultures is that Windows programmers feel that Notepad (even with syntax highlighting) is a perfectly good text editor for source code.
"Culture of UNIX and Windows Programmers"
or
"Explaining The Windows/UNIX Cultural Divide"
personally I'm leaning toward the latter.
Cheers.
Maybe if the edtors weren't such cheap bastards they would have bought a subscription and seen what the next story in the queue was going to be.
--You will rephrase your request for me to go to hell. Goto statements are not acceptable programming constructs
Hear hear! Too true. You'd never see anyone do anything like that.
Funnily enough, I wrote some more insightful, interesting and funny comments about this article here :o)
Avantslash - View Slashdot cleanly on your mobile phone.
So there is a glitch in the Matrix today. Next thing you know, /. is going to be swarmed by hundreds of Agent Smith's.
--You will rephrase your request for me to go to hell. Goto statements are not acceptable programming constructs
Poster 1: "Wow that was a dupe"
Poster 2: "Hey everyone, this is a duplicate"
Poster 3: "Stupid editors don't read before posting"
Poster 4: "Only idiots duplicate the previous post."
etc... ad nauseum...
Pot, Kettle, Black.
I personally started reading /. as an alternative to tunes.org I would read a site that debated Open Source vs closed, proprietary code perpetually. What better way to wallow in Nerdiness?
Eric Raymond is really good at rephrasing conventional wisdom so tat it sounds new, which is useful, but it's too often confused with real wisdom.
... because it's so HARD to use programs together in Windows... no, better stick to elephantine "suites"...
Joel Spolsky doesn't appreciate the context that UNIX comes from.
When UNIX came out, *it* was the user friendly operating system. The interface was linguistic rather than iconic, but compared to what came before it was a breakthrough... it was the "Macintosh" of the '70s for the academic world.
Before UNIX you had "linguistic" interfaces, but where UNIX is "process this file with this program", these were more like "Whereas the program, 'this program', hereafter known as SYSTEMUTILITY.GIBBERISH, and the input files, 'this file', to be provided later and to be known hereafter as "GO SYSIN DD *", do AGREE to enter into a contract for processing, known hereafter as EXEC, the user humbly requests the opportunity to render this job to the SYSTEM...".
This was a breakthrough. And once you learn the language it is far more "user friendly" than any amount of icons for those tasks it's good at.
The real cultural divide is that UNIX programmers want programs to work well together so they'll be widely used and eventually sell well, and Windows programmers want programs that look easy so they'll sell well or at least be widely used. The aim is the same, the method is different
The solution, UNIX and Windows programmers can meet in Mac OS X and everyone wins. You get Mac programs playing well together in Applescript, UNIX programs in the shell, and "osascript -e" to tie it all together...
Taco! Why not just pull dupes when they're found? Our home grown CMS allows us to do it on our network so I have to assume you can do it on yours. Only difference is that your forums if you call it that are not hard linked to the story like slashcode does. I guess it's a matter of not pissing off the 200 posts of OMG it's a dupe hehe..
A suggestion would to be move all +2 and above topics to the original and merge it into there and let the original go away.. Or better yet just hide the dupe posting and then nobody can access that thread it generated.
OR when you post it does a quick search through that topic at least and tells you if it's like another article and shows you.
*cragen
Right time to burn karma by saying that I primarily program Windows using MSVC (I love the smell of flmaebaiting myself in the afternoon).
There are several other differences that I have come across in IMHO (or more my humble experience) between Win32 and UNIX programming.
The first of the these is Hungrain notation which was dervied from MS coding. For those not in the know this is the naming of attributes and variables such that the name reflects its type. Over the years I've come to see several forms of this but the simplest and most useful is to prefix the name to note where the variable is declared.
i.e. g_X - denotes global
m_X - denotes class attribute
c_X - denotes constant variable
X - local variable.
Thus when reading through code using this notation it is easy to see where variables come from.
I've found the use of this notation common in Win32 programming but not in UNIX programming.
(OK - this is the point where I get crusified by the counter examples and the points that alot of UNIX code is written in C not C++ where this notiation is only applicable)
I definately agree with the article in that a good deal of UNIX work is aimed at CLI interfaces where as the Win32 tools are designed for the end user.
But in talking to other programs for Win32 there is the use of DLL's and COM interfaces. Or in short fixed APIs are used when programmers want to talk to other programs.
From my point of view as Win32 coder a final product is usually being aimed at someone who is not programmer. If the software is not functional and easy to use and intuitive then it really ain't going to cut it. Now if I want to expose my product so it can be expanded upon I will present a programmable, simple and documented API.
Next you'll be on HuSi.
Hey, no problem. I just won't waste my time by subscribing.
I guess we know what the question is now: How many minutes does it take for CmdrTaco to post a dupe?
irb(main):001:0>
Note to self, never post before coffee. Yes, its a dupe. get over it.
Note to self, never post -- ever, for any reason.
-kgj
The original which I wrote is here:
7 33 593
http://slashdot.org/comments.pl?sid=89437&cid=7
Ceci n'est pas une signature
People should not steal comments!
dear god that had to be intentional.
one probably posted it after a good long cuddle last night with the other, and the other was a bit slow on the uptake.
~/ssh slashdot.org ssh: connect to host slashdot.org port 22: too many beers
I'm both a UNIX programmer/user and a Mac user. I have a friend who's the average Mac advocate around...which means NOT a UNIX programmer. Though we both love OS X, we do have conflicting views about UNIX. I see UNIX among all things as an excellent development platform and he sees Darwin as just a secure foundation for Aqua. He also looks at open source from a regular users' point of view...and not as a programmer...which really makes all the difference if you think about it. The open source movement is a pro-programmer movement.
I think Apple has recently been trying to get more developers for OS X (though ProjectBuilder or XCode) because traditionally Macs aren't programmer-friendly. I'm a programmer. I love programming and once in a while I make small applications for UNIX and the Windows prompt (if they're ANSI and easily portable to Dev C++). Sufficive to say (man that sounds too Star Trek), I've only started compiling these small apps to the Mac now that they have Darwin (and GCC!!!).
There are now 2 major cultures using the Mac at the moment. The UNIX people, and the "I'm just better than you are because I use a Mac" people (the classic Mac crowd). When I first got my iBook a few months ago, I registered in a local Mac forum. I eventually stopped posting simply because of cultural differences.
Apple is attempting to bridge these two cultures mentioned below (taken from the article).
How did we get different core values? This is another reason Raymond's book is so good: he goes deeply into the history and evolution of Unix and brings new programmers up to speed with all the accumulated history of the culture back to 1969. When Unix was created and when it formed its cultural values, there were no end users. Computers were expensive, CPU time was expensive, and learning about computers meant learning how to program. It's no wonder that the culture which emerged valued things which are useful to other programmers. By contrast, Windows was created with one goal only: to sell as many copies as conceivable at a profit. Scrillions of copies. "A computer on every desktop and in every home" was the explicit goal of the team which created Windows, set its agenda and determined its core values. Ease of use for non-programmers was the only way to get on every desk and in every home and thus usability uber alles became the cultural norm. Programmers, as an audience, were an extreme afterthought.
sPh
Maybe when Taco quits treating Slashdot like a geek wankery site and starts taking it seriously will we see an end to stupid shit like back-to-back article dupes.
Perhaps that code would have no use to other programmers...
I'm sure there is SOME unifying philosophy behind Windows. I have no idea what that might be, nor would I wish to. But I found this book about the philosophy of UNIX very enlightening when I read it back in the day. It was an epiphany for me at the time to realize that there WAS or could be a philosophy behind an operating system. But this was the book that made the concept clear for me.
Quod scripsi, scripsi.
The very fact that the Unix world is so full of self-righteous cultural superiority, "advocacy," and slashdot-karma-whoring sectarianism while the Windows world is more practical ("yeah, whatever, I just need to make a living here")... - Joel Spolsky
I have subscribed to Joel's mailing list for several years, and have programmed on both sides of the fence. Joel paints a black and white picture of the differences between Unix and Windows - which I must say, is not true. I have to disagree with Joel's oversimplification because he has made the same mistake that he accuses ESR of making: namely that his own monoculturalism has clouded his view of Unix programming. Anytime someone makes a statement that starts with 'the very fact', you can be sure there is less fact and more conjecture than the writer is willing to admit.
The key error in his analysis is narrowly defining the Unix program as being a command-line 'mostly' affair that doesn't tell 'Aunt Madge' when it succeeds. This is not exactly true; while it is true of strict command line applicatioins (which Aunt Madge will not use anyway) - the GUI interfaces do not follow that formula - and programmers are free (not constrained as he would suggest) to build interfaces that meet whatever needs an end user may have - whatever their skill level.
Just because 99% of the end users are familiar with and resist change from the Microsoft GUI does not mean that it is the best UI - it just means that people did not have much of a choice from the beginning (there were only one GUI for PCs back in the late 80s - Windows; the other major GUI was tied to the Apple Macintosh). While the Windows GUI stagnated over the 1990s, the Linux world exploded and a plethora of user interface ideas have surfaced that are effecting the new Windows interface. Same story (DOS - a rip of CP/M), different day ("yeah, whatever, I just need to make a living here").
He also touches on, but does not explore with a self critical eye, the limitations imposed by not having source code. The dependence of Windows programmers on Microsoft APIs provides too many limitations, and increases the likelyhood of unforseen interactions that cause bugs. He whitewashes these issues by simply focusing on the size of the Windows desktop deployments vs. *nix.
The reality is a *nix developer has all of the options available to him; he is not constricted by artificial barriers; a Windows programmer is at the mercy of Microsoft - who can change APIs at the drop of a hat.
His quote above really hits the nail on the head: the Microsoft monoculture is about money above and beyond any moral considerations. I would much rather be a "slashdot-karma-whore" than a Microsoft-whore. From his writings over the years it is plain that he absorbed the 'money is good no matter how you get it' mentality during his stint at the company.
Lodragan Draoidh
The more you explain it, the more I don't understand it. - Mark Twain
Most email programs by default put a copy of the sent email in the Sent folder only after it has been sent. Not all 'notification' has to be in the form of a big fat alert box with an OK button.
Wow, did CmdrTaco do a search for any prior art before posting this? Maybe he should get a job down at the USPTO.
"Wow! Doesn't look like anybody has ever implemented this article before. Approved."
Or maybe he's just trying to set a new record.
One, you might notice that a lot of these patches address security issues. Two, it can be difficult to get vendor support for applications when your OS isn't up to patch.
Nigger, please. Take a look at this thread, for example. Take a look at the sheer number of idiotic posts that have been modded +3 Insightful. You mother fuckers do nothing BUT karma whore on /.
that story repetition is somewhat normal at slashdot. I for onw welcome our duplicate-posting overlords!
Here comes the new comment, same as the old 60 comments...
If they didn't wait (Mother Of All Answers) minutes it wouldn't be the Mother Of All Dupes, would it?
What would we do with no alert boxes or status bar messages or progress bars?
WTF are you talking about? Ever heard of wizards?
The MFC course instructor showed us the MFC wizard and said: "Get used to it. This is where you will be spending all of your time".
And he was right.
At other times you need to do the same repetitive task thousands of times, over dozens of machines, every single day. You'd better be able to automate that, so you need a command line option here.
So, here is my rather remarkable suggestion: programs should, as a rule, cater to BOTH. Have both the gui and the commandline option available at all times. When you need it, use whatever is best for you, mixing options any way you like. Because gui and commandline are not at all mutually exclusive, no matter what many uninformed people will tell you.
Note to self, never post before coffee. Yes, its a dupe. get over it.
Ya tell that to the Slashdot Subscribers, they pay for this shit. You want to run a business, do it professionaly.
hmm... 2 points of overrated within 10 seconds of each other. Editor mod?
The "article" is nothing more about GUI vs command line. Unfortunately, the Unix philosophy lost the desktop market, and now it is trying to catch up through Linux.
About duplicate posts, I suggest Slashdot puts a script that examines the previous posts for similarities. If the similarities are high enough, then the slashdot reviewers will be notified.
I bet if ABC had run the same episode of 'Doogie Howser, M.D.' two or three times thereby causing Taco's Tivo to pick up two or three dupes HE wouldn't just "get over it".
Seriously, you guys, no matter how much you want to pretend it is, for whatever reason, this _isn't_ still your little hobby site any more.
- I am made of meat.
...even for Taco.
I was going to post a very insightful and witty comment, but as it turn out, IT HAD ALREADY BEEN POSTED.
... ^_^
Gotta love them editors
My other UID is 1337
And once you learn the language it is far more "user friendly" than any amount of icons for those tasks it's good at.
That's like saying, flying a jet is easier than buying a plane ticket once you go through flight school. Duh, of course it is.
On the other hand I agree with you about MacOSX and would like to add that's it's an excellent way for weaning me and aunt madge onto unix. It just works and you can screw around with unix in manageable doses.
I'm only kidding. I found your new one weeks ago.
Amazing how people act like they've been personally insulted if they see a duplicate article. Seems that a lot of Slashdot readers lack bladder control.
Spolsky seems 2 b a dyed-i-t-w microserf, too...
Oops. It's too early. I meant member vs. local.
don't you guys have a "delete" button?
how hard is that?
That's all it seems to turn out to be. In my experience programming in both the Windows world, and the UNIX world, I've come to a number of conclusion. 1: UNIX programmers generally just say, "It's a Windows machine. It sucks." Few and far between are there are UNIX gurus who will give kudos to anything Windows has done. 2: Although UNIX programmers say that documentation is poor, and Windows doesn't do layering well at all, the documentation for developers in Windows is by far superior to that of UNIX. There are paid tech writers who comb through the documentation, and update them on a continual basis. Outdated documentation is not as prevelent as others. 3: UNIX has some great things, but each flavor of UNIX has their weakness. 4: Windows has big security issues that would take forever to solve. If you need a server, write it in Java, and you could still run the thing on Windows. Just make sure you don't have any other ports open for anything else. 5: Windows development tools are by far easier, and better to use. It's much more integrated, and the feature sets are amazing. (MSVC and its ilk.) 6: Some people freak about Hungarian notation, but it's just a damn notation. There are other notations that people use. Example: The letter 'f' for "field" in classes. Pick your damn naming convention, because it's just a damn naming convention so that at least the code is slightly more standardized across engineers. 7: The better engineers flat out just look for what is more cost effective, and extensible in the future. Realistically, there are things that Windows does better, and there are things that UNIX does better. The software running on each OS have their own qualities. Anyway, I'm of the view that Windows has amazing software for small business solutions that can come up very quickly. UNIX is great for getting vendor independence, and hedging your bets so you don't get screwed on royalty costs.
Comment removed based on user account deletion
No, it's not like saying "flying a jet is easier than buying a plane ticket". Not hardly. Bad analogy from both sides.
...
First, buying a plane ticket is far easier than maintaining your pilot's license and filing a flight plan, even with post-911 security.
Second, learning the language is a hell of a lot easier than going to flight school. It's easier than driving a car. It's easier than learning to swim, and possibly easier than riding a bike. But it's far easier than driving.
A cheat-sheet on the UNIX shell is a tenth the side of the booklet I got with my licence listing the traffic laws, and if you miss a semicolon you don't get 6 hours of defensive driving class.
Hell, you have to memorise more stuff to play Mortal Kombat. Left, right, up, square, x, right,
That's bs, dude; while in the open source world you're coding for fame or something else non-monetary, in closed source you're coding for profit. That means there's a standard for code quality, and while your open source buddies won't be looking at your code, software quality assurance (SQA) will.
"Yeah, boss, I didn't do that report you need for your meeting with the VP of Finance that starts in five miuntes. Get over it!"
Let me get this straight, Taco....you do get paid for your work, don't you? Try exhibiting the slightest bit of professionalism occasionally.
Strawman? probably. but I'm sticking with what I said.
The analogies we're using all suck, but, unix isn't intuitive and it is hard to learn. That's my point and I'm sticking to it.
If it wasn't (difficult to learn), then I would get it, and I've tried.
I'm a science student at the 2nd best school (yeah right) in canada who's about to graduate. I'm no super genius, not even close, I'm just not as retarded as any linux user will be quick to tell me. So, I think it's safe to say I'm a little brighter than the article's clueless aunt madge. Yet, I find the unix environment difficult to understand and difficult to learn how to use.
If your argument held any water, aunt madge, who can drive, who can ride a bike and who 0wnz at mortal kombat should be able to learn unixy stuff.
So, why can't she?
Because it's not THAT easy. "Just learn the language" and then it's easy is still BS. Because "Just" learning the language isn't easy, not for me and aunt madge anyways.
If you'll excuse us, we have an MK tourney to attend to.
There are many details and subtleties, but for the most part it comes down to one thing: Unix culture values code which is useful to other programmers, while Windows culture values code which is useful to non-programmers."
Well, I think this is more of a lame attempt to *divide* the programming community rather than an *informative, educated* observation. Especially the *....Unix culture values code which is useful to other programmers, while Windows culture values code which is useful to non-programmers...* piece. There are obvious differences, differences that are tied to the platform you are programming in, but I strongly disagree with different *cultures*. Programmers care about a lot of things, and code is only one of them. Most programmers I know (including myself) want to write clean, fast code, and we all hate commenting it. In fact styles of code writing are quite fragmented to personal styles. I have often been able to tell that two different people wrote two different simple functions, using the same language for the same program. There is of course a *better* conformity when the projects involve managers, teams etc etc. Ultimately, I think this: As a programmer, there's a personal achievement and satisfaction when I write code and accomplish something with it, or someone else accomplishes something with the code I write. What identifies programmers with one another is not the platform or style or culture of writing code, is the love for what we do
The phaomnneil pweor of the hmuan mnid. Fcuknig amzanig eh!
The fresh start of waking up,
it's cloning in your cup!
Sheldon, old bean, I've been doing Windows support and development for about ten years now, and I was the guy responsible for bringing NT into the division I was working at in the first place.
Windows programmers may want programs that work well together, but they don't seem to know or care what "working well together" can mean. To the user, there's a very small set of operations they can perform on most programs, and a slightly larger set they can perform on a small set of programs, but there's no general user-visible glue that will let them do things like ``tell application "iTunes"; play "track 01" from "Goldberg variations"; end tell'' or ``sort +1 addresses.txt | grep "gullible" | mailmerge letter.txt''.
And, unfortunately, what I say "they" I mean "we".
"Hi! My name is Peter da Silva, and I'm a Windows user."
(chorus) "Hi Peter!"
Having used KDE, Gnome, CDE, and other Unix GUIs, way back to the early pre-X11 Sun days - I forget what the Sun Marketeers called their windows system - and then using OSX, I think I have to agree with Joel that it took people who came from a culture that emphasized ease of user experience to make a great GUI for Unix.
In the early days of the Mac, Steve Jobs was very vocal about the need for programmers to work extra hard to make the experience pleasant for the end user. Sacrificing programmer pleasure for the sake of the user was a very conscious choice. When Steve moved on to Next, he started to work on making the programmer experience a lot better without losing any of the focus on the end user. With OSX, the successor to Next, he's managed to optimize both values.
When using any Unix GUI other than OSX the very first thing I always do is open an xterm window, and use the GUI only for things that are easier with a GUI. With OSX, I do most things with the GUI and only open a terminal window when I have something to do that's easier to do on a command line. I suspect I'm not alone in these practices, but there are many OSX users who don't even know there's a terminal application, and wouldn't know what to do with it if they ever opened it by mistake.
It's that absolute dedication to being able to do everything from the GUI that sets OSX's GUI apart from all the other Unix GUIs that I have used. Until and unless the other GUI developers embrace that philosophy, their efforts will remain attractive only to those who are comfortable with the command line.
Information is not Knowledge
Every programmer should do a serious stint in both worlds. I think starting from UNIX and then doing Windows is likely the better option, but people owe it to themselves to broaden their knowledge.
This is clearly not the right forum for positing the benefit of the Windows culture, but there are important things to be learned. Market-driven features, profit margins, target audiences, usability, managing customer expectations. . . These quite aside from the actual coding differences (which, as I get older, seem less and less important).
A firm I work with is porting a lot of their servers from Windows to Linux. They aren't, however, doing it because Linux is cool, or better, or any of the reasons people like to play with it. It's because it's cheaper and finally, with 2.6, mature enough to be a serious option. I lobbied for Solaris/Intel, but unfortunately that beast seems destined for failure.
The more developers get a feel for the real market pressures that influence their lives directly and indirectly, the better a position they'll be in to comment intelligently to their superiors and take greater command of their destinies. Coders who plead to use Linux because it's 'cooler' can be smelled a mile away. Rational, business-oriented arguments, however, will not go unheard by forward-looking firms.
-ac
If you're using an object-oriented programming language you shouldn't need to know the type of a variable, you just need to know the methods that operate on it. You avoid scope problems by declaring or initialising (depending on whether you're taking a declarative or functional approach) variables near where they're used.
The real problem isn't Hungarian notation, it's C++.
C is a poor design for an object oriented language because it's so syntax-heavy, but even in C-derived and inspired OO languages I can't think of one I wouldn't rather use than C++... Objective-C, C-OO, Javascript, even Java for all it shares many of C++' design flaws.
Epic fantasy is overrated.
Oh, I'm always around in one form or another ;)
And his existence demonstrates that Unix programmers don't have a monopoly on ego and assholeness. Even though ESR is well known for preaching and bringing irrelevant issues into discussions, he at least usually has more or less good idea about what he is talking about. Joel, on the other hand, is a true believer into whatever he "learned" from Microsoft, and produces little more than repetitive propaganda of it, plus his, usually wrong and immature, claims about things that he has absolutely no idea about.
Why anyone is listening to him, leave alone, publishes him, I have no idea.
Contrary to the popular belief, there indeed is no God.
Spolsky's an ex-Microsoft employee (oops, there goes my slashdot cred, forgot to spell it with a $) who now runs his own business in NYC. Apparently a successful one - he's one of those evil, evil people who believes programmers and their families should eat now and then, so he charges for code. A quick look at his web site (the one containing this story's linked article) would have told you that but it's always so much easier to criticise from a position of ignorance, isn't it!
It's hard to overrate such a massive idiot. He is the king of drunken, self-serving blather.
Just ask Eric if he's overrated, and he'll quickly tell you who is. He's been maintaining the Overrated-People-HOWTO for years, and is not one of the people listed. Case closed.
In our organization we do code reviews all the time on our windows code. It may be hidden from the masses but in the cube farm, where your peers are, everyone can see the code.
The tone of these concersations suggests that the MS folks seem upset that you're not using their offering. In the end this leads to vanilla software. eg. consider in Windows land you have two file systems: FAT and NTFS. Under Linux there are over 40 file systems available. I bet Hans Reisser (spelling) doesn't throw a fit every time someone chooses to use ext3.
Engineering is the art of compromise.
What about programmers who make sure their code is cross platform? You know, the ones who arn't to retarded to code for more then one OS.
autopr0n is like, down and stuff.
I'll start with the no. No, it's not a CYA mentality. If you're creating an app for your end users, your end users will blame *you*, not MS, if your apps has bugs. You have not C'edYA by installing the service pack. What you've done is you've kept your machine standard, which is very important in the Windows and Mac worlds. Now your machine is more likely to resemble your customers' machines, or a form that you can easily get your customers' machines into (tech support will tell them to install the same service pack). So, if you can make things work on your machine, even if it requires bug workarounds, things should work just the same on your customers' machines.
And now for the yes. "Blind obedience to the people who have the source" is putting a silly spin on it, but the fact is that both MS and Apple have roadmaps for evolving their entire platforms, and following their advice regarding how to do various things is the way to maximize the chances that your app will continue to work correctly as the platform underneath it evolves.
"Those who have never entered upon scientific pursuits know not a tithe of the poetry by which they are surrounded."
two men... one keyboard...
this summer, USB stands for revenge - in the shape of a Model M...
so buckle in...
you've never felt coding...
like this...
Keep your packets off my GNU/Girlfriend!
If I had to specify a single cultural difference, it would be the difference between mass markets and customization. In the Windows and Mac worlds, great effort is made to keep everyone's machines similar so they're easier to learn, use, maintain, write mass market software for, install software on, upgrade, etc.
In the Unix world, the emphasis is on creating something that's maximally useful to an individual by allowing everything to be customized. This creates horrendous fragmentation, which can only be reasonably dealt with if each user is very computer-savvy and mostly takes care of his own problems.
The latter appeals more to power users, because they are interested in putting the time in and getting extra power as a result.
The former is more appropriate for most people who just want the easiest way to accomplish certain tasks and would rather spend their time and effort on things other than computers.
"Those who have never entered upon scientific pursuits know not a tithe of the poetry by which they are surrounded."
Note to Taco: Never Post After Smoking Crack.
how is this offtopic? Apparently the mods didn't read the article.. allow me to quote "He's harsh on some points, but pretty on the money. Except about us. Nobody karma whores."
As far as RSX-11 and UNIX, there may be a tie, but the grand daddy of user friendly had to be TOPS-10 (PDP-10 time-sharing OS).
On the developer side, the would-have-been could-have-been that got pushed aside by UNIX would have to be some kind of Lisp or perhaps Smalltalk environment -- you know, a high-priced mega-pixel dedicated workstation running one of these deals where the language is the OS is the environment, where the debugger can trace into OS calls because the OS is the language is the environment, and where the system commands are Lisp expressions or Smalltalk commands -- Perl, Python, Matlab environments are perhaps the modern equivalent.
Danny.
I have written over 900 book reviews
I code for Windows and Linux, and I have to say, both cultures have stupidities. But usually the complaints that the Unix guys have about Windows are right, and the complaints the Windows guys have about Unix are very often inspired by lazy ignorance.
Writing dirty, nasty, for-my-eyes-only code is dumb. I don't care how many people will or won't see it, write like the world is watching. Windows guys love to write shitty code and when I have to look at it, it can be nausiating. Unix guys do that less because they're expecting people to look at it and derive an opinion from what they see.
Windows guys like to write code that they consider throw-away. It's similar to point one, but it has more to do with compatability and reusability. Unix guys automatically think about compatabilty and reuse.
Something bad happens when Unix guys start writing GUI code though. For some reason, it seems impossible for a Unix guy to design a GUI to be consistant with other programs that are likely to appear on the same screen. Maybe that's where the what-is-an-end-user? mentality comes out.
When it comes to GUI's, the Windows guys seem to have mostly the right idea. For everything else, the Unix guys have it spot on. What I don't understand is why it has to be like this. The seperation is obvious: when you write GUI stuff, it's for an end user, so write for the end user.
It's a dupe!!
I'm with you
What does it really matter. A dozen or so stories, or rather the pointers thereof, queue through the front page daily. There is a high flux of info. People make mistakes. That CmdrTaco has acknowledged his mistake immediately unmittigated is at least professional and something much more valuable than apathetic news for money reporting.
There should be a hack to merge all comments related to both stories (original and dupe) into a single page - with scoring and sorting options.
That way you wouldn't have to check both stories to find the comments you prefer reading.
i based my comment on viewing his website, some time ago.
and how did my comment in any way disparage getting paid for code? i get paid for coding...
WTF? This didn't get modded up "+5 Fucking hilarious?"
What is this world coming to?
This space intentionally left blank
2 mod points were actually wasted on my comment... I'm not sure what to say.
;-)
Wait, I know... care to try again?
Please be patient, I'm a work in progress! --Alan Jackson
Kick the dirt over his site and you'll find that Joel is more often wrong than right. While he's probably right about this one, he's was wrong about Mozilla rising from the ashes. That browser is still a turd.
Geezes guys can you just shut up some times. What is the point of talking about "cultures." Programming a machine isn't a cultural issue, it's a technical issue.
I code for UNIX. I code for windows. I code for MAC. I code for embdedded controllers. I code for whatever the fuck I'm paid to code for. I'm an engineer. I have to work with everything. Wading through the Win32 API isn't any any harder or different than wading through the X11 API. I use cygwin, gcc, and gvim under Windows XP. I use COM under Linux.
What the hell are you all talking about?
MOD PARENT UP that comment was freaking amazing
You're a lazy, incompetent assrag. Get over it.
If you were blocking sigs, you wouldn't have to read this.
"slashdot-karma-whoring", in the article, seemed to be referencing that curious practise of bashing Windows whenever possible (see the other /. posting on this article, about 2 comments down) and having everyone else laugh. Of course this only applies:
1) When Microsoft is nowhere near the conversation (and thus someone actually thinks the conversation would benefit from some Microsoft bashing
2) When the article in question is in fact pointing out that Unix != Windows and stop judging it on your standards, dumbass (like this article, or the other one)
I guess what I'm trying to say is, your mom.