Explaining The Windows/UNIX Cultural Divide 685
giampy writes "Joel Spolsky writes a review-like article on the last book of Eric S. Raymond (The Art of Unix Programming). His views on the cultural differences among Windows and Unix programmers are well explained. Overall, an interesting read." Also on the topic of Windows, badriram writes "Microsoft is reorganizing the windows team, it seems the are separating the
OS core development. Seems like things heading in the right direction in creating a more secure OS, and making it more business oriented. Read the
article here."
Re:It's all about the shell! (Score:5, Informative)
Btw, on 2000 and XP (maybe 9x too), you can assign a shortcut to the command prompt, say Ctrl+Alt+S, so hitting that will get you a command prompt quickly. And enabling autocomplete [tsn.dk] to and QuickEdit and Insert modes on cmd.exe adds a lot to productivity too.
Re:It's all about the shell! (Score:3, Informative)
Or Start --> Run, CMD, enter.
Hardly call that buried.
Re:fuck windows (Score:0, Informative)
You are incorrect, sir.
It is MacOS that is for fags.
HTH.
The usual "C or Perl" thing, then... (Score:4, Informative)
Hello, Mr Raymond, there are actually quite a number of high-level compiled languages, that will give you most of the convenience of an interpreted language with most of the speed of C. Write your prototype - and then deploy it, because it's already fast and robust enough for everyday use.
Re:It's all about the shell! (Score:2, Informative)
+ R
cmd
takes.. hmm about 2 secs
The essential difference (Score:5, Informative)
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.
Re:It's all about the shell! (Score:3, Informative)
I move my command line shortcut out to the main start menu on every computer that I use (with permission of the owner if that isn't me)
Maybe, Maybe not... (Score:2, Informative)
We're in our 14th year of our product. Maintenance and enhancements are the norm. No product is bug-free, but for the complexity of our Windows program, it's relatively easy for one developer to take another developer's code and work with it. We have about 20 developers in our company.
Crossing the Chasm (Score:5, Informative)
The consumers on the left side of the chasm - what Moore terms the innovators and early adopters - enjoy using new technology, enjoy putting things together, have the vision to see the potential of new technology, and are willing to put up with inconveniences in the iterim.
The mainstream market is pragmatic. It prefers to bet on clear market leaders (so as to minimise risk and benefit from the supporting ecosystem which inevitably grow around the market leader), is willing to wait and see, and needs complete, fully functional, headache-free solutions for their specific needs. Consumers in the mainstream market rely on references within the mainstream market to drive their buying decisions.
A technology company which wants to transition from the early adopter market to the mainstream market therefore has to bridge this "chasm", and in the process, change the focus of its marketing efforts and adjust its product accordingly. As far as the desktop market is concerned, Unix (with the exception of Mac OS X) is a product which clearly has not bridged the chasm.
Re:both are, actually... (Score:2, Informative)
MicroSoft's main revenue will come from embedded devices to surf the web, type documents, order pizza (like the iopener), play movies and games, etc(like the home theater stuff)...if they do the correct things in the next few years
Joe Average, when they live with a TiVo, they like it, they don't know it runs Linux and don't really care one way or another, this is Billys problem, in the end no one really cares what it runs so long as it works, for a recent lesson look at the pull back of Ultimate TV, the supposed TiVo killer.
Linux (or Unix)has never been the problem, it works the way it should, it can be hidden from the consumer completely, the problem has always been X, its inconsistancies are its problems, they will never be fixed, just another kludge added to the rest making it ever more complicated.
Article ~= tiny subset of ESR's book (Score:4, Informative)
Read the article [joelonsoftware.com] (I know, it will be hard to force yourself to do so if you are a slashdot regular
I don't know if Spolsky didn't read this far, or if he's just a weak plagarist, or maybe this is the only part that made a big enough impression on him to merit rephrasing for his own column.
The only difference I see is POV, and substitute "mac" for "windows".
Re:Separation (Score:3, Informative)
It's called automation. It's not visual basic, it's WSH (which encompasses vbscript, but not visual basic). You would do well to learn about something before you decide to hate it.
Re:The usual "C or Perl" thing, then... (Score:2, Informative)
And then watch it die, because everybody updates the app with a line here and there, and it crumbles into a mess of hundreds of different programming styles written in obscure line-noise with no documentation.
A prototype in software engineering is just that -- a bare bones quickly knocked-out attempt at checking if some assumptions hold up or not. A prototype is something you write in 5 minutes with no thought given to its future reliablility maintainability. After the prototypes, only then do we seriously design the software. We do not give prototypes to customers and say "they you are, it's finished".
Re:It's all about the shell! (Score:1, Informative)
Go to the Start menu Programs then Acessories then right click on Command Prompt select Properties and set your shortcut keys. You might also note the %SystemRoot%\system32\cmd.exe and %HOMEDRIVE%%HOMEPATH% pathing and use that instead of a static links in your shortcut.
Re:The essential difference (Score:3, Informative)
It was a _huge_ project, trying to deliver a web-based front-end to an existing system. The ticket was around 150m Euro.
The architecture basically fell apart about 75% through the project. I guess around the time they stopped making use cases and actually tried to scale the prototypes up to work on their clusters. The support calls to Microsoft went very high and it was an engineer from the bank who finally discovered the real problem, apparently. The COM+ developers and the MSMQ developers knew their own products very well but were unable to figure out what was happening between the two.
The project was cancelled and I believe it was not redesigned - the economic crisis meant that the company had to cut back.
Needless to say this kind of experience made the company somewhat cautious about using MS products for anything serious after that. I don't know whether they tried an alternative, most of the business runs very successfully on the classic mainframe model (COBOL, CICS, MVS, etc.)
X is not the problem (Score:2, Informative)
written that use X, ie. Gnome/KDE.
try running fluxbox for a window manager and watch
your machine r0x!
Re:windows users are the problem... (Score:2, Informative)
Although some people may attack you, this is insightful. Sometimes security zealots get out of hand and recommend practices that are ill-suited for particular situations.
However, I'll give you a reason why your desktop computer should have a password: you're not protecting it from other people, but you're protecting it from unknown code.
Newer versions of Windows have a "runas" feature (which I believe is activated by default). If you make your main account a non-privileged account and use "runas" whenever you need to run a privileged operation (install software, modify system settings), your computer will be safer from various malicious programs. MacOS X already does this for you.
This isn't great protection since you probably care more about the data on your computer rather than the integrity of the OS (and one would assume your data is writeable by your main account), but it does help nonetheless.
Re:The essential difference (Score:3, Informative)
Cold hard facts:
- very large bank spending large amount of money
- web application built on COM+, MSMQ, and MS clustering
- application failed because of incompatibility in MS's own software layers
- assistance from Redmond failed to solve problem
- project eventually deemed unworkable and killed
Now, you may be right that there was, somewhere, a solution to this, perhaps even an obvious one. However it escaped the people at the time, all competent, all professional.
My story may even be false, it's possible. IT is so complex that the real story is often hard to uncover.
But the conclusion that MS products are heavily vertical and often interoperable only within tight margins (specific OS, specific SP) remains, and is well-known to anyone who has developed for Windows.
Attacking my credentials is not a response. Showing me the well-defined Microsoft APIs that have been used by Microsoft's own application development teams without compromise... now that would be a worthy response.
Re:Various slashes, a history lesson (Score:4, Informative)
I don't recall slashes of either variety in VMS file specifications. They used square brackets and dots, like: "DEVICE:[AIDTOPIA.SLASHDOT]COMMENT.TXT;3". I know lots of people hated this syntax, but I found it quite expressive. For one thing, it was easy to distinguish between a directory listing ([FOO]) and the file which stored the directory information (FOO.DIR).
Perhaps they started allowing slashes for POSIX compliance. That was about the time I (sadly) left the VMS world. I recall DEC claims at a DECUS symposium that VMS was the first OS to achieve POSIX compliance, which was quite a feat since it was so non-UNIXy to begin with.
Re:Sucky... compared to what? (Score:4, Informative)
Compared to X? The same X where every single programmer just _has_ to use a different layout, different shortcuts, different menu structure, and for bonus points his own widgets?
Not to make you sound like a newbie in the world of computing, but what you are railing against isn't the 'ease of use' of UNIX/GNU/Linux GUIs.
Many, many people fall into this trap. What you are proposing is the adoption of something both unessecary (and in many cases) Evil, Bad and Wrong. This thing is called an SAA CUA [webopedia.com]. They were practically invented by IBM in the 50s and 60s. These ideas [ibm.com] are simple: do something one way and only one way.
From the user's perspective, this is okay. I only have to learn quaduple-double-bucky-shift-Q to print once.
From the UI designer's point of view this is crap. Look at video games. Many custom, learn once and use once indterfaces. Games deal with this by being on the cutting edge of computer-assisted education. They have dollars and reputations staked in 'playability' and 'ease of use' so they do the Right Thing.
Wrong Thing: pick standard, crappy global contants, enforce those on everyone. Aribitrary user interfaces are just as bad as random interfaces.
Right Thing: common core behavior in frameworks that act AS EXPECTED, customized application interfaces to the TASK that the application SOLVES or DOES. Show and Walk users through the non-standard parts with HOW-TOs, demos and trainers.
The Right Way is more work for the lazy, boring person who wouldn't write documentation anyway. The Wrong Way means that you probably will guess correctly on the first try, but the application programmer still didn't do his job.
This is a very important sticking point with the Aunt Mable newbie computer user argument as well. If good ol' Auntie has never used a computer, learning a KDE (GNOME) desktop or the UNIX command line will be as EQUALLY challenging as learning a WIMP like Windows. MACs were/are easily learned because of some UI choices that favor new users without bothering experienced users (of those UI's).
Finally, like in the world of video games, with the diversity of UIs in Linux/GNU/Unix I can select those features/interfaces that work best and use them. With a system like Windows, some people won't buy/sell your software unless is meets the criteria in the SAA CUA.
I appologise for the grammar. I need more sleep and less Trolls.