Killexams.com MOS-EXP Dumps and Real Questions 2019
Latest and 100% real exam Questions - Memorize Questions and Answers - Guaranteed Success in exam
MOS-EXP exam Dumps Source : Microsoft Excel 2002 Core
Test Code : MOS-EXP
Test Name : Microsoft Excel 2002 Core
Vendor Name : Microsoft
Q&A : 84 Real Questions
MOS-EXP actual question bank is actual look at, genuine result.
killexams.com MOS-EXP braindump works. All questions are right and the answers are accurate. It is worth the money. I passed my MOS-EXP exam final week.
strive out these actual MOS-EXP questions.
in case you need high high-quality MOS-EXP dumps, then killexams.com is the last desire and your only solution. it gives tremendous and exquisite check dumps which i am announcing with complete self belief. I constantly notion that MOS-EXP dumps are of no makes use of however killexams.com proved me wrong because the dumps provided by means of them have been of terrific use and helped me marks high. if you are annoying for MOS-EXP dumps as nicely, then you definately want not to fear and join killexams.
Dont forget to try those dumps questions for MOS-EXP exam.
I handed, and clearly extraordinarily completely satisfied to document that killexams.com adhere to the claims they make. They provide actual exam questions and the finding out engine works flawlessly. The bundle includes the whole thing they promise, and their customer support works well (I had to get in touch with them for the motive that first my online rate would not go through, but it turned out to be my fault). Anyhow, this is a amazing product, masses higher than I had predicted. I handed MOS-EXP exam with nearly top marks, something I in no way concept i was able to. Thank you.
Unbelieveable! But true source of MOS-EXP real test questions.
that is an without a doubt valid and dependable resource, with actual MOS-EXP questions and accurate answers. The exam simulator works very smooth. With extra info and suitable customer support, this is an incredibly desirable provide. No free random braindumps available on line can examine with the fine and the coolest enjoy I had with Killexams. I passed with a virtually excessive score, so Im telling this primarily based on my private experience.
Killing the examination become too easy! I dont assume so.
id recommend this question bank as a should have to everyone whos getting ready for the MOS-EXP exam. It changed into very useful in getting an concept as to what kind of questions were coming and which areas to consciousness. The exercise check provided changed into additionally excellent in getting a sense of what to expect on exam day. As for the answers keys supplied, it become of excellent assist in recollecting what I had learnt and the explanationssupplied were smooth to understand and definately brought fee to my idea on the concern.
No less expensive supply today's MOS-EXP Q&A located but.
preparing for MOS-EXP books can be a complicated process and 9 out of ten probabilities are that you may fail if you do it without any appropriate guidance. Thats in which first-class MOS-EXP ebook comes in! It affords you with green and groovy records that not only enhances your training but also gives you a clean reduce threat of passing your MOS-EXP download and moving into any university with none depression. I organized via this terrific software and that i scored forty two marks out of 50. i can assure you that itll by no means assist you to down!
i'm very glad with MOS-EXP exam manual.
It is great experience for the MOS-EXP exam. With not much stuff available online, Im happy I got killexams.com. The questions/answers are just great. With killexams.com, the exam was very easy, fantastic.
Did you attempted this amazing supply ultra-modern dumps.
getting ready for MOS-EXP books can be a tricky process and 9 out of ten probabilities are that youll fail if you do it with none suitable steerage. Thats where top class MOS-EXP book comes in! It offers you with green and groovy information that no longer most effective complements your education however also offers you a clear cut risk of passing your MOS-EXP download and entering into any college without any melancholy. I prepared via this remarkable software and i scored forty two marks out of fifty. I am able to guarantee you that it will by no means allow you to down!
Take a clever flow to skip MOS-EXP
I might regularly pass over schooling and that might be a big problem for me if my dad and mom determined out. I needed tocowl my errors and make sure that they could trust in me. I knew that one manner to cover my errors become to do nicely in my MOS-EXP test that became very near. If I did nicely in my MOS-EXP test, my parents would really like me once more and that they did because of the reality i was capable of clear the test. It changed into this killexams.com that gave me an appropriate commands. Thank you.
Real test questions of MOS-EXP exam are available now.
I scored 88% marks. A decent partner of mine recommended the utilization of killexams.com Questions & solutions, due to the fact she had likewise passed her exam in view of them. all of the material turned into super first-class. Getting enlisted for the MOS-EXP exam changed into simple, but then came the troublesome element. I had a few alternatives, both enlists for commonplace instructions and surrenders my low protection profession, or test on my own and proceed with the employment.
Microsoft Microsoft Excel 2002 Core
Dan Baker/Digital tendencies
trying to shop on Microsoft’s newest 2-in-1? You’re in luck. Wholesaler Costco is at the moment working a sale on the surface professional 6 that means that you can take one domestic for just $800 with the keyboard and pen included, however handiest via March 3.
Costco’s sale covers the Intel Core i5 model with a total of 8GB RAM and a 128GB solid-state force. A base $60 membership is required to purchase objects at Costco, but this same mannequin sells for $900 at the Microsoft save devoid of the floor Pen or class cover keyboard included. bought one by one, the pen expenses $100 and the keyboard is $one hundred thirty, which means you’ll keep $230 with out even factoring within the sale fee. The Costco cost is additionally more affordable than Microsoft’s floor seasoned 6 essentials bundle, which steps up remaining pricing to $1,168 after together with the keyboard and 365 days of workplace 365 home for access to be aware, Excel, and PowerPoint.
This sale is a little infrequent, as simplest over the break season did the pricing on floor seasoned 6 bundles come down as little as $800. It is also more cost-effective in pricing when in comparison to many of the latest bundle choices at surest buy, which sells the same mannequin with the Intel Core i5 processor, 8GB RAM, and a 128GB SSD for $1,060.
whereas now not packing a extra potent Intel Core i7 Processor or a a little greater 256GB solid-state-pressure, this sale mannequin remains a brilliant option for any person drawn to accepted web looking and multitasking. We reviewed the surface professional 6 in October 2018 and found that it continues to be the best of the windows 2-in-1s. A vivid, appealing three:2 reveal, world-category build exceptional, enhanced multitasking performance, and astounding battery life are among the many facets we highlighted. outdated ports, the lack of USB-C, the shortcoming of Whiskey Lake processors, and the negative tablet mode have been the low aspects, but still didn’t spoil the general journey for the machine.
if you’re attempting to find different deals on tech outside of Microsoft, the strongest mannequin of Google’s Pixelbook is additionally at the moment on sale. Boasting an Intel Core i7 Processor, 16GB RAM, and a 512GB strong-state-pressure, Amazon has it on sale for $1,184 as an alternative of the common expense of $1,649, for a discount rates of $465.
We attempt to help our readers locate the ideal offers on first-class items and capabilities, and judge what we cowl carefully and independently. if you locate an improved fee for a product listed right here, or wish to imply one of your own, e-mail us at email@example.com.
Digital traits may additionally earn fee on products purchased through our hyperlinks, which helps the work we do for our readers.
don't pass over
a way to record your monitor
The most suitable iPhone video games at present accessible (February 2019)
Microsoft has launched a brand new advertising and marketing campaign to discourage valued clientele from buying its currently launched workplace 2019 productiveness suite in favour of its subscription-based mostly sibling office 365.
The tech gigantic pitted its two office items towards each other, overwhelmingly favouring 365 and its flashy new AI features.
The clips focused mainly on word, Excel and Powerpoint, with three units of similar twins given a task every, evaluating both models of each and every utility.
Twins Scott and Sean have been both tasked with updating their resumes in be aware. Jeremy and Nathan raced to look who could make an Excel spreadsheet with data and figures the quickest, whereas Cynni and Tanny tried to jazz up a half-complete slideshow presentation.
In a blog publish accompanying the campaign, workplace accepted manager Jared Spataro highlighted the merits of the cloud-primarily based office 365, and “the energy of AI to create greater impactful content with less effort.”
“workplace 2019 also supplies full installs of the office apps we understand and love—but they’re ‘frozen in time’. They don’t ever get up-to-date with new points, and they’re not cloud-related,” Spataro mentioned.
“additionally, workplace 2019 doesn’t help precise-time coauthoring across apps, and it doesn’t have the marvelous AI-powered capabilities that include office 365.”
Microsoft first published workplace 2019 in September 2017, focused towards valued clientele that are not yet ready to circulation to the cloud. Spataro at the time touted office 2019 as a “effective improve for customers who think that they should retain some or all of their apps and servers on-premises."
office 2019 was launched one year later, with a 10 percent cost bump from old choices, chiefly with workplace customer, client access License (enterprise and Core) and server products.
Microsoft has additionally been pushing more durable with its subscription-based features, incentivising salespeople to favour subscription-based mostly items over traditional perpetual utility.
talking at Canalys' Channels forum event in Hong Kong late closing 12 months, chief govt Steve Brazier pointed out Australia and New Zealand were both quick to jump on subscription-primarily based pricing fashions, whereas valued clientele in their Asia-Pacific neighbours had been slightly extra hesitant to make the shift.
The turnaround at Microsoft has been powered by means of its Azure cloud computing platform, on which it hosts utility and rents out web infrastructure to large organisations and govt departments. Wedbush Securities analyst Dan Ives this week described Microsoft as a "cloud behemoth", now in a two-horse race for control of that lucrative market with Amazon (Google is a distant third).
For his half, Worrall places the Microsoft revival all the way down to the inside adjustments put in location by international chief govt Staya Nadella, who took the reins five years ago this month. there has been “a simple rethinking of our subculture, who we are, what we stand for, how we want to exhibit up,” he says.
Microsoft Australia CEO Steven WorrallCredit:Mark Nolan
"there is a variety of expertise round, however it must be americans first, know-how 2d, because ultimately firms, governments, organisations, are populated by individuals."
unexpectedly, Microsoft has turn into one of the crucial few grown-united states of americain tech, an trade more and more described through its difficulty little ones (most prominently fb, which has lurched from scandal to scandal over the past year, but there are a lot of different examples in birth-up land).
Fittingly, then, when it involves the debates which have raged during the native tech sector over the last yr, Worrall offers a a good deal extra measured tone than the hysterical voices that are likely to dominate trade dialogue in Australia.
Take immigration. When the govt abolished the 457 visa scheme closing yr, there were howls of concern from entrepreneurs, who talked about the adjustments would grind the fledgling native sector to a halt and relegate Australia to a tech backwater. That has no longer came about, and Worrall, for one, isn’t shocked.
“if you are looking at Australia at an economic system degree, we have had 28 years of [uninterrupted economic] growth. We are looking to flow our economic climate ahead, do we in reality consider three per cent of the workforce (on 457s) goes to be the reason we get there or not?” he says.
“It’s no longer that it doesn’t count number, it’s simply placing it into context. Of direction we want advantage, but it surely’s not the concern that goes to grasp us again.”
The onus is on large agencies to re-ability workers to be in a position to work in the new economic system, he says, which Microsoft is doing.
On encryption, he is similarly sanguine. The laws rushed via parliament on the remaining sitting day of remaining yr with bipartisan guide horrified the tech sector. there have been claims that local startups would be locked out of offshore markets, and that fundamental tech organizations would stop doing company in Australia. That hasn't transpired, both.
Worrall isn’t precisely glowing about the legal guidelines (a lobby group Microsoft belongs to formally adversarial them) however he doesn’t flat out condemn them either.
“issues circulation without delay in expertise and as a executive your #1 priority is to give protection to the citizens you signify,” he says. "Is it a surprise we did not get it right the primary time? I do not feel so. These considerations are fairly complex.”
Of path, Microsoft makes some huge cash from govt departments around the world, together with in Australia. That, to a point, may additionally clarify his reluctance to criticise policies.
For tech shareholders, making funds from governments is also vastly preferable to being hauled before them to explain your company model.
John McDuling is a company, media and expertise creator for The Sydney Morning Herald and The Age.
Unquestionably it is hard assignment to pick dependable certification questions/answers assets regarding review, reputation and validity since individuals get sham because of picking incorrectly benefit. Killexams.com ensure to serve its customers best to its assets concerning exam dumps update and validity. The vast majority of other's sham report dissension customers come to us for the brain dumps and pass their exams joyfully and effortlessly. We never trade off on our review, reputation and quality on the grounds that killexams review, killexams reputation and killexams customer certainty is imperative to us. Uniquely we deal with killexams.com review, killexams.com reputation, killexams.com sham report objection, killexams.com trust, killexams.com validity, killexams.com report and killexams.com scam. On the off chance that you see any false report posted by our rivals with the name killexams sham report grievance web, killexams.com sham report, killexams.com scam, killexams.com protest or something like this, simply remember there are constantly awful individuals harming reputation of good administrations because of their advantages. There are a huge number of fulfilled clients that pass their exams utilizing killexams.com brain dumps, killexams PDF questions, killexams hone questions, killexams exam simulator. Visit Killexams.com, our specimen questions and test brain dumps, our exam simulator and you will realize that killexams.com is the best brain dumps site.
MB6-897 braindumps | HPE0-J78 Practice test | HCE-5710 practice questions | 1D0-635 braindumps | 1T6-111 free pdf | 00M-225 test prep | 700-410 cram | ST0-030 dump | FCGIT questions and answers | MSC-111 braindumps | 000-737 study guide | 70-417 brain dumps | A2040-923 dumps questions | 250-271 test questions | C2030-284 free pdf download | A00-211 practice exam | 156-305 examcollection | 70-547-VB dumps | H12-224 questions and answers | 000-748 real questions |
Exactly same MOS-EXP questions as in real test, WTF!
killexams.com offer bleeding edge and refreshed Practice Test with Actual Exam Questions and Answers for new syllabus of Microsoft MOS-EXP Exam. Practice our Real Questions and Answers to Improve your know-how and pass your exam with High Marks. We ensure your accomplishment in the Test Center, covering the majority of the points of exam and fabricate your Knowledge of the MOS-EXP exam. Pass 4 beyond any doubt with our right questions.
killexams.com top price MOS-EXP exam simulator may be very facilitating for our customers for the exam guidance. All critical functions, subjects and definitions are highlighted in brain dumps pdf. Gathering the records in one region is a real time saver and facilitates you prepare for the IT certification exam inside a short time span. The MOS-EXP exam gives key points. The killexams.com pass4sure dumps allows to memorize the essential functions or ideas of the MOS-EXP exam
At killexams.com, we provide thoroughly reviewed Microsoft MOS-EXP training assets which are the satisfactory for Passing MOS-EXP exam, and to get licensed with the help of MOS-EXP braindumps. It is a Great choice to accelerate your career as a expert inside the Information Technology enterprise. We are proud of our popularity of supporting humans pass the MOS-EXP test of their first actual attempts. Our success fees within the past two years were surely stunning, thanks to our happy clients who now able to boost their career within the fast lane. killexams.com is the primary preference among IT specialists, in particular the ones who are looking to climb up the hierarchy qualifications quicker in their respective businesses. Microsoft is the enterprise leader in information generation, and getting licensed by means of them is a assured way to succeed with IT careers. We assist you do exactly that with our excessive best Microsoft MOS-EXP training materials.
Microsoft MOS-EXP is omnipresent all around the international, and the business and software program answers provided by using them are being embraced with the aid of nearly all the organizations. They have helped in riding heaps of groups at the sure-shot path of achievement. Comprehensive know-how of Microsoft merchandise are taken into prepation a completely crucial qualification, and the experts certified through them are quite valued in all businesses.
killexams.com Huge Discount Coupons and Promo Codes are as below;
WC2017 : 60% Discount Coupon for all assessments on internet site
PROF17 : 10% Discount Coupon for Orders extra than $69
DEAL17 : 15% Discount Coupon for Orders more than $99
DECSPECIAL : 10% Special Discount Coupon for All Orders
Quality and Value for the MOS-EXP Exam : killexams.com Practice Exams for Microsoft MOS-EXP are written to the very best requirements of technical accuracy, using only certified problem count specialists and published authors for development.
100% Guarantee to Pass Your MOS-EXP Exam : If you do not pass the Microsoft MOS-EXP exam the usage of our killexams.com trying out engine, we will give you a FULL REFUND of your buying fee.
Downloadable, Interactive MOS-EXP Testing engines : Our Microsoft MOS-EXP Preparation Material presents you everything you will want to take Microsoft MOS-EXP exam. Details are researched and produced by using Microsoft Certification Experts who're constantly the usage of industry revel in to provide unique, and logical.
- Comprehensive questions and answers of MOS-EXP exam
- MOS-EXP exam questions followed with the aid of exhibits
- Verified Answers by means of Experts and nearly a hundred% correct
- MOS-EXP exam questions up to date on normal basis
- MOS-EXP exam education is in multiple-preference questions (MCQs).
- Tested by means of more than one times earlier than publishing
- Try loose MOS-EXP exam demo before you decide to shop for it in killexams.com
killexams.com Huge Discount Coupons and Promo Codes are as beneath;
WC2017 : 60% Discount Coupon for all tests on internet site
PROF17 : 10% Discount Coupon for Orders more than $69
DEAL17 : 15% Discount Coupon for Orders greater than $ninety nine
DECSPECIAL : 10% Special Discount Coupon for All Orders
Killexams C2090-180 brain dumps | Killexams 000-273 braindumps | Killexams ST0-236 Practice test | Killexams 642-995 free pdf | Killexams 400-351 practice questions | Killexams 1Z0-219 exam prep | Killexams 1Z1-514 exam questions | Killexams DEV-401 bootcamp | Killexams PEGACSA71V1 practice test | Killexams HP3-C35 free pdf | Killexams 117-302 study guide | Killexams 70-121 real questions | Killexams JN0-380 test questions | Killexams MA0-101 free pdf download | Killexams LOT-911 test prep | Killexams M2180-651 brain dumps | Killexams 00M-245 dumps questions | Killexams 70-542-CSharp dumps | Killexams 000-964 study guide | Killexams C2090-621 questions answers |
Killexams HP0-Y30 test prep | Killexams HP2-Z32 questions answers | Killexams NCLEX-PN pdf download | Killexams HP0-M49 free pdf | Killexams 000-962 practice exam | Killexams LE0-406 Practice test | Killexams 1Z0-528 braindumps | Killexams 4H0-020 practice questions | Killexams 050-719 dumps | Killexams ST0-153 questions and answers | Killexams 1Z0-348 bootcamp | Killexams HP0-K03 cram | Killexams MB2-712 test prep | Killexams 000-583 real questions | Killexams CEMAP-1 real questions | Killexams 70-741 free pdf | Killexams 000-215 Practice Test | Killexams JK0-801 study guide | Killexams 000-009 questions and answers | Killexams HP0-P15 mock exam |
Microsoft Excel 2002 Core
Pass 4 sure MOS-EXP dumps | Killexams.com MOS-EXP real questions | [HOSTED-SITE]
This chapter from Professional Excel Development: The Definitive Guide to Developing Applications Using Microsoft Excel, VBA, and .NET, 2nd Edition<</em> introduces VB.NET along with the .NET Framework, shows how you can automate Excel with VB.NET, and finally covers ADO.NET, which is used to connect to and retrieve data from various data sources.
This chapter is from the book
In 2002, Microsoft released the first version of its development suite Visual Studio.NET (VS.NET) together with the .NET Framework. Since then, Microsoft has released new versions of the Framework and development suite in quick succession. Microsoft has strongly indicated that .NET is the flagship development platform now and for the foreseeable future.
Visual Basic.NET (VB.NET) is part of VS.NET, and despite its similarity in the name with Classic VB (VB6), the two have little in common. VB.NET is the successor to Classic VB and as such it provides the ability to create more technically modern solutions, a large group of new and updated controls, and a new advanced IDE. Moving from Classic VB to VB.NET is a non-trivial process, primarily because VB.NET is based on a new and completely different technology platform.
Excel developers also face the situation where applications created with the new .NET technology need to communicate with applications based on the older COM technology, for example, VB.NET applications communicating with Excel. Because Excel is a COM-based application it cannot communicate directly with code written in .NET.All .NET code that communicates with Excel must cross the .NET COM boundary. This is important to keep in mind because it is a challenge to manage and can have significant performance implications.
In the first part of this chapter, VB.NET is introduced along with the .NET Framework. The second part of this chapter focuses on how we can automate Excel with VB.NET. Finally we cover ADO.NET, which is used to connect to and retrieve data from various data sources. ADO.NET is the successor to classic ADO on the .NET platform.
To provide a better understanding of VB.NET, we develop a practical solution, the PETRAS Report Tool.NET. This solution is a fully functional Windows Forms based reporting tool. It retrieves data from the PETRAS SQL Server database and uses Excel templates to present the reports.
VB.NET, ADO.NET, and the .NET Framework are book-length topics in their own right; what we examine here and in the two following chapters merely scratches the surface. At the end of this chapter you find some recommended books and online resources that provide additional detail on these subjects.
The .NET Framework is the core of .NET. Before we can develop or run any .NET-based solutions, the Framework must be installed and available. The Framework provides the foundation for all .NET software development. The .NET Framework is also responsible for interoperability between .NET solutions and COM servers and components. This topic is covered later in the chapter. For the purposes of our discussion, we can think of the .NET Framework architecture as consisting of two major parts:
A huge collection of base class libraries and interfaces—This collection contains all the class libraries and interfaces required for .NET solutions. Namespaces are used to organize these class libraries and interfaces into a hierarchical structure. The namespaces are usually organized by function, and each namespace usually has several child namespaces. Namespaces make it easy to access and use different classes and simplify object references. We discuss namespaces in more detail when presenting VB.NET later in this chapter.
Common Language Runtime (CLR)—This is the engine of the .NET Framework, and it is responsible for all .NET base services. It controls and monitors all activities of .NET applications, including memory management, thread management, structured exception handling (SEH), garbage collection, and security. It also provides a common data type system (CTS) that defines all .NET data types.
The rapid evolution of the .NET Framework is reflected in the large number of versions available. Different Framework versions can coexist on one computer, and multiple versions of the Framework can be run side-by-side simultaneously on the same computer. However, an application can only use one version of the .NET Framework at any one time. The Framework version that becomes active is determined by which version is required by the .NET-based program that is loaded first. A general recommendation is to only have one version of the Framework installed on a target computer.
Because there are several different Framework versions in common use and we may not be able to control the version available on the computers we target, we need to apply the same strategy to the .NET Framework as we do when targeting multiple Excel versions: Develop against the lowest Framework version we plan to target. Of course there will also be situations that dictate the Framework version we need to target, such as corporate clients who have standardized on a specific version.
As of this writing, the two most common Framework versions are 2.0 and 3.0. Both versions can be used on Windows XP, and version 3.0 is included with Windows Vista and Windows Server 2008. Visual Studio 2008 (VS 2008) includes both of these Framework versions as well as version 3.5. By providing all current Framework versions, VS 2008 makes it easy to select the most appropriate version to use when building our solutions. Versions 3.0 and 3.5 of the .NET Framework are backward compatible in a similar manner as the latest versions of the Excel object libraries.
The .NET Framework can run on all versions of Windows from Windows 98 forward, but to develop .NET-based solutions we need to have Windows 2000 or later. If we plan to target Windows XP or earlier we need to make sure the desired version of the .NET Framework is installed on the target computer, because these Windows versions do not include the Framework preinstalled. All versions of the Framework are available for download from the Microsoft Web site and can be redistributed easily. To avoid confusion, we only use version 2.0 of the .NET Framework in this chapter and the next.
No result found, try new keyword!In addition, while SurveyMonkey is still posting net losses, Qualtrics has managed to break even (impressive when we consider that Qualtrics was founded in 2002 ... Microsoft Excel (MSFT) spreadsheets ...
Enlarge / How could Peter Bright ditch all this for the minimalism of MacOS? He loves the color purple far too much to do that, right?
Ethan Miller / Getty Images
128 with 69 posters participating
Share this story
Share on Facebook
Share on Twitter
Share on Reddit
Ten years ago around this very time—April through June 2008—our intrepid Microsoft guru Peter Bright evidently had an identity crisis. Could this lifelong PC user really have been pushed to the brink? Was he considering a switch to... Mac OS?!? While our staff hopefully enjoys a less stressful Memorial Day this year, throughout the weekend we're resurfacing this three part series that doubles as an existential operating system dilemma circa 2008. Part two ran on May 4, 2008, and it appears unedited below.
Last time, I described how Apple turned its failure to develop a modern OS into a great success. The purchase of NeXT gave Apple a buzzword-compliant OS with a healthy ecosystem of high-quality third-party applications. Meanwhile, Microsoft was lumbering along with Windows XP. Although technically sound, it was shot through with the decisions made more than a decade earlier for 16-bit Windows.
In 2001, when XP was released, this was not such a big deal. The first two or three versions of Mac OS X were troublesome, to say the least. Performance was weak, there were stability issues, and version 10.0 arguably wasn't even feature complete. It wasn't until early 2002 that Apple even made Mac OS X the default OS on new Macs; for the first few months of its life, XP was up against "Classic" Mac OS 9.
From Win32 to Cocoa: A Windows user’s would-be conversion to Mac OS X
But OS X didn't stand still. Apple released a series of updates in quick succession, strengthening the platform with new features like Core Audio, Core Image, Core Data, and Quartz Extreme, and providing high-quality applications that exploited these abilities. All this time, XP itself stood still. The core Windows platform didn't change between 2001 and late 2006.
Although XP itself was essentially unchanged, Microsoft did try to produce a modern, appealing platform for future development. That platform was, of course, .NET, and observant readers will have noticed that I didn't mention it in part one. This was no accident, as the whole .NET story deserved a more thorough examination.
Microsoft attempts modernity
In 2002, Microsoft released the .NET Framework. The .NET Framework was brand spanking new. It was designed and implemented from the ground up. It could have been clean and consistent and orthogonal and with a clear design and powerful concepts. It could have been a way out of the quagmire that is Win32. It could have provided salvation—an environment free of 16-bit legacy decisions, with powerful APIs on a par with what Apple had developed.
Enlarge / The .NET Framework stack
It was certainly promoted as such. .NET was pushed as the future, the way all Windows development would occur in the future. The plans became quite aggressive; in the OS that was to succeed Windows XP, new functionality would be accessed not through Win32 but through .NET, meaning that any developer wanting to exploit the latest and greatest OS features would have to venture into this brave new world.
So .NET could have been a step into the 21st century. It could have been, but it wasn't. Technically, .NET was fine. The virtual machine infrastructure was pretty sound, the performance was reasonable, and C# was an adequate (if not exactly ground-breaking) language. But the library—the .NET "API" used for such diverse tasks as writing files, reading data from databases, sending information over a network, parsing XML, or creating a GUI—the library is another story altogether.
The library is extremely bad. It is simplistic and inflexible and in many ways quite limited. See, .NET has a big problem: its target audience. .NET was meant to be a unified platform that all developers would use—after all, if new OS features required .NET, a broad cross-section of developers would use it. The problem is that not all developers are created equal. By looking at the different kinds of developers out there, we can understand why .NET is the way it is. What follows is not an exhaustive taxonomy of all the weird and wonderful breeds of programmer, but rather a rough taxonomy of some of the key species.
Our favorite kind of old campaign swag.
A developer taxonomy
At one level, you have people who are basically business analysts; they're using Access or Excel or VB6 to write data analyzing/number crunching applications. These things are hugely important in the business world, totally unexciting to anyone else, and the people writing them aren't really "programmers." I mean, they are, in the sense that they're writing programs, but they're not especially interested in programming or anything like that. They don't really care about the quality of the libraries and tools they're using; they just want something simple enough that they can pick it up without too much difficulty. They'll never write the best code or the best programs in the world; they won't be elegant or well-structured or pretty to look at. But they'll work. Historically, as I said, these are the kind of people who Access is made for. Access is a great tool, quite unparalleled. Sure, it's a lousy database engine with a hideous programming language, but the power it gives these people is immense. So Access and VB6 and Excel macros are where it's at for these guys.
At the next level, you have the journeyman developers. Now these people aren't "business" people—they are proper programmers. But it's just a job, and they'll tend to stick with what they know rather than try to do something better. They might be a bit more discerning about their tools than the business types, but they're not going to go out of their way to pick up new skills and learn new things. They might use VB6 or Java or C# or whatever; it doesn't really matter to them, as they'll use whatever offers them the best employment opportunities at any given moment. Their code will probably look more or less the same no matter what. They're not going to learn the idioms of whatever specific language they're using, because there's no need, so it's just not for them.
A key feature of these developers is that, most of the time, they're writing "enterprise" software. This isn't software that will sit on a shelf in a store for someone to buy; it's custom applications to assist with some business process or other. Truth be told, it probably won't have to look very nice or work very well; it just has to get the job done. With "enterprise" software, you can often get away with a clunky program, because the people who are using it have all been trained on what to do. If doing X makes the application crash, that's okay—they can just be taught not to do X any more.
In spite of the often mediocre quality of the software these people write, they're a group that's immensely important to Microsoft. These programs are a key part of the platform lock-in that Microsoft craves. If a company has some business-critical custom application written in Visual Basic 6, that company isn't going to roll out Linux to its desktops; it's trapped on Windows.
At the final level, you have the conscientious developers. These are people who care about what they're doing. They might be writing business apps somewhere (although they probably hate it, unless they are on a team of like-minded individuals) but, probably more likely, they're writing programs in their own time. They want to learn about what's cool and new; they want to do the right thing on their platforms; they want to learn new techniques and better solutions to existing problems. They might be using unusual development platforms, or they might be using C++, but they'll be writing good code that's appropriate to their tools. They'll heed UI guidelines (and only break them when appropriate); they'll use new features that the platform has to offer; they'll push things to the limit. In a good way, of course.
In the pre-.NET world, this wasn't really a big problem. The first group used Excel macros and Access; the second group used Visual Basic 6, and the last group could use C++ or whatever beret-wearing funky scripting language was à la mode at the time. This all worked out fine, because one of the few nice things about Win32 is that it was designed for C. C is in many ways a very simple language, and it's also a ubiquitous language. As a consequence of this, pretty much every other programming language created in the last couple of decades can, one way or another, call C APIs.
".NET could have been a step into the 21st century. It could have been, but it wasn't."
.NET isn't like that. Although .NET can call C APIs (just like everything else can), the real objective is for all programming to reside in the .NET world. .NET is meant to be the entire platform, with all the different languages that people use living inside the .NET environment. This is why .NET has APIs for tasks like reading and writing files; in the .NET world you're not meant to use Win32 to do these things, you're meant to use .NET's facilities for doing them. It's still possible to use different languages with .NET (in fact, it's easier than it was in the pre-.NET days). Just now, the different languages all use the common set of .NET APIs for drawing windows on screen, or saving files, or querying databases, and so on.
Because everything now has to live "within" the .NET world, .NET has to be all things to all people. Well actually, that's not true. It's trying to be good enough for the first and second kind of programmer. The third type—well, just ignore them. They're too demanding anyway. They're the ones who care about their tools and get upset when an API is badly designed. They're the ones who notice the inconsistencies and omissions and gripe about them.
The .NET library is simple to the point of being totally dumbed down; it's probably okay for the first and second groups, not least because they don't know any better, but for the rest it's an exercise in frustration. This frustration is exacerbated when it's compared to .NET's big competitor, Java. Java is no panacea; it too is aiming roughly at the middle kind of developer, which is understandable, as they're the most numerous. But Java's much more high-minded. It's much stronger on concepts, making it easier to learn. Sun doesn't get it right the whole time, but the people behind Java have clearly made something of an effort.
One practical manifestation of this is that .NET reflects a lot of the bad decisions made in Win32. For example, .NET provides an API named Windows Forms for writing GUIs. Windows Forms is based heavily on the Win32 GUI APIs; the same GUI APIs that owe their design to Win16. To properly write Windows Forms programs, you need to know how Win32 works, because there are concepts from Win32 that make their presence felt in Windows Forms. In Win32, every window is related to a specific thread. There can be multiple windows that belong to a thread, but every window is owned by exactly one thread. Almost every action that updates a window in some way—moving it on-screen, changing some text, animating some graphics, anything like that—has to be performed within the thread that owns the window.
This restriction in itself is not entirely uncommon. There are very few truly multithreaded GUI APIs, because it tends to make programs more complicated for no real benefit. The problem lies in how .NET makes developers handle this restriction. There's a way to test whether an update to a window needs to be sent to the thread that actually owns the window or not, along with a mechanism for sending the update to the window's thread. Except this way doesn't always work. Under some situations, it can tell you that you're using the correct thread already even if you're not. If the program then carries on and tries to perform the update, it may succeed or it may hang or crash the application. The reason for this unhelpful behavior is the way Windows Forms depends so heavily on Win32.
These little issues are abundant. The .NET library does work. It more or less has all the main pieces you need, but it's full of areas where you have to deal, directly or indirectly, with the obsolescent mediocrity of Win32. On their own, none of these issues would be a show-stopper, but they all add up. It's a death of a thousand cuts. There are so many places where the Win32 underpinnings "shine through" and taint what should have been a brand-new platform.
What about Win64?
If Win32 was a mess and .NET didn't fix it, the other opportunity MS could have had was to fix it for Win64, the 64-bit Windows API. Porting a program to Win64 requires a recompile at the very least, and it can often require code changes to avoid doing things that are safe for 32-bit processors but not for their 64-bit brethren. Because of this necessary recompile, one would think that MS could surely have tidied things up a bit. Maybe not radically overhauled, but tidied up.
For example, there's a function called OpenFile. OpenFile was a Win16 function. It opens files, obviously enough. In Win32 it was deprecated—kept in, to allow 16-bit apps to be ported to Win32 more easily, but deprecated all the same. In Win32 it has always been deprecated. The documentation for OpenFile says, "Note: Only use this function with 16-bit versions of Windows. For newer applications, use the CreateFile function." But in spite of that, Win64 still has OpenFile. No one should be using it, but it's still there.
Another example; Win32 has a function for getting the size of a file. File sizes on Windows are limited to 2^64 bytes, and so they need a 64-bit integer to be expressed easily. But the API call to get the size of a file doesn't give you a 64-bit value. Instead, it gives you a pair of 32-bit values that have to be combined in a particular way. For 32-bit Windows, that's sort of understandable; 32-bit Windows is, well, 32-bit, so you might not expect to be able to use 64-bit integers. But if you use the same API in 64-bit Windows, it still gives you the pair of numbers, rather than just a nice simple 64-bit number. While this made some kind of sense on 32-bit Windows, it makes no sense at all on 64-bit Windows, since 64-bit Windows can, by definition, use 64-bit numbers.
And of course, developers can cope with this. None of this clunkiness is fatal. Taken in isolation, every one of the problems with Win32 and .NET could be tolerated. But together, they greatly diminish the appeal of the platform. It just makes writing good programs harder than it should be and learning the API harder than it need be.
Problems for Microsoft
So Windows is just a disaster to write programs for. It's miserable. It's quite nice if you want to use the same techniques you learned 15 years ago and not bother to change how you do, well, anything, but for anyone else it's all pain. I thought before that Microsoft cared about people like me. But it doesn't. And it makes programming on Windows painful. Microsoft is great at backwards compatibility—you can take really old programs and compile and run them on a brand new Windows—but terrible at design and terrible at providing a good experience.
"None of this clunkiness is fatal. Taken in isolation, every one of the problems with Win32 and .NET could be tolerated. But together, they greatly diminish the appeal of the platform."
And it's not just third parties who suffer. It causes trouble for Microsoft, too. The code isn't just inconsistent and ugly on the outside; it's that way on the inside, too. There's a lot of software for Windows, a lot of business-critical software, that's not maintained any more. And that software is usually buggy. It passes bad parameters to API calls, uses memory that it has released, assumes that files live in particular hardcoded locations, all sorts of things that it shouldn't do. If the OS changes underneath—to prohibit the reuse of freed memory, to more aggressively validate parameters, to stick more closely to the documentation without making extra assumptions or causing special side-effects—then these programs break.
So Windows has all sorts of bits of code which are there to provide compatibility with these broken applications. It's hard for MS to maintain and fix this code, because it means the code no longer does what it's documented to do; it does that plus some other stuff. It's hard to test, because there's no knowing exactly what broken things programs are going to try to do. And it makes things more expensive; Microsoft has all sorts of special behaviours it needs to preserve. This means that not only can it not make the API better—it can't even easily make the API's implementation better. It's all too fragile.
This gives rise to particularly stupid things like the name of the "system" folder, where all the Windows libraries and programs are kept. In 16-bit Windows, it was called system. In 32-bit Windows, it was called system32. In 64-bit Windows it's called, er, system32 again. Because although there's an API call that programs can make to find out the name of the folder, there are enough programs that don't bother using it and just blindly assume that it's called system32 (even when compiled as 64-bit) that it was better for backwards compatibility to leave it, even though it's chock full of 64-bit files.
32-bit files in turn go into a directory named syswow64. Right, it has 64 in the name, because it contains 32-bit libraries. Make sense? Only in Redmond. All these strange behaviors and clumsy APIs that they've built up over the years have just been plonked wholesale into 64-bit Windows. There's no escape from them.
If MS wasn't going to provide nice clean APIs for all the old stuff, there was at least some hope that they'd create an attractive and high-quality OS to succeed the (extremely successful) Windows XP. This is, after all, the other part of the OS X equation. Apple has put together a good platform to develop on and then gone to actually make the most of what its operating system has to offer, by producing high quality applications that depend on the unique features that Mac OS X provides.
Third-party applications very much seem to follow suit. There might not be as much third-party software for Mac OS X as there is for Windows (a pleasing operating environment can only do so much to mitigate a 3 percent market share), but the quality of the applications is a great deal better. Third-party developers on Mac OS X strive to make applications that work in a way that's consistent with the OS itself, with first-party applications, and even with each other.
These factors tend to reinforce each other. A good API makes it easier to write high-quality applications. High-quality, first-party applications set the standard by which third-party apps are judged and ensure that users have high expectations of the software they run. This in turn means that there is much more competition among third parties to produce something that's great rather than merely acceptable. Regular updates to the OS keep developers on the upgrade treadmill; they work to make their applications fit in with the latest and greatest release, leveraging whatever new bells and whistles it provides, further improving the software ecosystem.
In the early stages of Microsoft's development of a successor to Windows XP, it looked like the software side of things might have taken a leap forward. Win32 would still be Win32, unfortunately, but the original XP successor (codenamed Longhorn) was going to provide a whole raft of functionality built using .NET. This would be coupled with radical changes in Explorer and the Windows shell to provide something much slicker and better-looking than XP offered. Early in the development of Longhorn, we saw demos of a new kind of application; applications built using the new Longhorn technology, with a consistent look and feel.
Except, as by now we all know, Longhorn never made it. Some new features were dropped completely, others were just scaled back, some were even ported to XP. Even when the underlying technology was kept, the good-looking, easy-to-write application development that was promoted never really materialized. Instead, what we got was Windows Vista.
Enlarge / Windows Vista's Start menu and its integrated Search box.
With the ambitious Longhorn plans sitting in the trash, Microsoft produced a much more evolutionary OS. It has some interesting new technology under the hood, but unfortunately most of this is invisible to anyone using the system. What they do see is an uninspiring mess.
The fit and finish of Vista is astonishingly poor. With Vista's UI guidelines, Microsoft has tried to take some things that MacOS has been doing forever and introduce them to Windows. For example, dialog boxes in Windows have traditionally been poorly designed, because their buttons are given generic labels like "Yes" and "No," or "OK" and "Cancel," which means the entire message has to be read and understood for the buttons to make sense. This is bad, because people generally don't read the message and just click a button at random.
For example, if you try to close Notepad without saving your document, Windows used to ask, "Do you want to save the changes?" with buttons marked "Yes," "No," and "Cancel." Yes, No, and Cancel mean nothing on their own; you need to read the message to make sense of them. In Vista's Notepad, in keeping with the new UI guidelines, although the dialogue box still asks, "Do you want to save changes to Untitled?" the buttons are labeled "Save," "Don't save," and "Cancel." This is much better—the buttons now have meaningful labels that say what they'll do instead of generic text that could do anything. It's only taken Microsoft 20 years to get this right, but finally now it's done so.
The UI guidelines certainly have the right idea. But they then get ignored. They get ignored by Vista itself. They get ignored by Microsoft's flagship applications like Office. They get ignored by third parties. The result is that the entire Windows Vista experience feels mediocre. Pictures are worth a thousand words, they say, so let's take a look at Microsoft's flagship OS running its flagship software
Enlarge / O_o
Except for one application (Visual Studio 2005) those are all the current versions of currently-supported Microsoft software released in the last couple of years.
None of them—not a single one—works in the same way as any other. Only one of them (Notepad) uses the "native" built-in appearance (i.e. the one most easily available to third-party software). Many of them have features in common—opening and saving files, typing words, editing properties—and yet somehow they conspire to all do so differently. It is a total mess. These aren't just minor failures of consistency, either. The people responsible for these applications have deliberately chosen to give the platform's standard look and feel the finger. That's bad enough for standalone applications; it's even worse when some of those applications are part of the platform itself.
There isn't even any kind of internal consistency. The Explorer Window and the IE window look, at first glance, to be similar; similar graphical style for the forward/back button, for example. But they're not. The spacing is different; the drop-down arrow in the IE window has more space around it than the counterpart in Explorer.
Even when the same nonstandard concept is used, it's done differently. Windows Live Messenger, Internet Explorer, and Windows Media Player all have a "hidden" menu bar. The menu bar is still there, just not visible by default. And each one of them exposes its menu bar in a different way, doing essentially the same thing gratuitously differently. It might well be that getting rid of the menu bar is a good idea—but there's no justification at all for making them all similar-but-different.
Taken alone, these are all fairly minor things. Put together, the interface is just completely shambolic. It looks amateurish. The quirks of each new interface have to be learned anew. This slap-dash approach to look-and-feel gives the impression of a platform that no one really cares about. That same contempt for norms and standards inflicts third-party applications. And, really, why shouldn't it? If Microsoft can't be bothered to make Windows applications that feel like Windows applications, why should anyone else go to the effort? And even if a developer does want to go to the effort, what's he meant to take his cues from? Should he copy IE? WMP? Explorer? Notepad? Office? Visual Studio?
To add insult to injury, it's wasteful. Explorer and IE may look similar, but they're different codebases. The code to give that kind of no-menu window with an address bar and a search box and this and that, it's not shared between the two. It might have been at one time. But now it's not. So there's twice the development effort to create and maintain these applications. What could have been done once now has to be done twice. And again for Word, and Outlook, and Visual Studio, and Visio, and Expression Blend. Each time I have to learn a new UI, some team at Microsoft had to write a new UI and test a new UI and maintain a new UI. That's not a good use of their time, when they could have done it once.
Mac OS X is by no means perfect in this regard, but it's nowhere near as bad. Applications like the Finder and iTunes establish certain norms and conventions, and third-party applications do a pretty good job of following these (or adapting them to new situations). There aren't OS X applications where the menu bar works totally differently. Apple hasn't produced a different UI style for each and every application. Sure, they do have more than one style—the "pro" apps (Aperture, FCP, etc.) use a darker scheme than normal apps—but there's still an order of magnitude more consistency and coherence on OS X than on Windows. Apple cares about appearances and Apple provides strong GUI models to copy. The result? Third parties produce good-looking applications that work like the OS they run on. And accordingly, users demand that their applications conform to the overall look and feel of the platform.
The reason must be that no one in Microsoft actually gives a damn. Each group develops their own UI widgets in their own style and they simply don't care that it's a total mess. They don't care that I have to learn new ways of doing the same task just because they couldn't be bothered to do things the same way as other applications. I'm not saying, for example, that they shouldn't have introduced the ribbon concept in Office 2007, because it seems to work pretty well, and I can believe that it really is a better UI model. But they should have taken stock of what they were doing and made it a system-wide UI device. New widgets and UI models do crop up from time to time, but they should be rare, and when they do appear, Microsoft should make them general so that everyone can use them.
Microsoft's continuous and repetitive reinvention of the wheel again just makes the task for third-party developers that much more unpleasant. Because even when a developer does want to make something that "fits in," and even when that developer has picked a specific application to fit in with, MS still offers inconsistent choices. Take the Office 2007 ribbon as an example. The ribbon is pretty cool, and it's obvious that third parties will want to use the ribbon themselves (even if it might not be the best fit for their application, but sadly there's not much that can be done about that). Unfortunately, the Office 2007 ribbon is part of Office 2007. It's not a part of Windows, it's instead built in to Office, and not usable for other software.
Recognizing the gap in functionality here, a third-party developer produced its own ribbon-like object that developers could embed into their programs to gain a ribbon user interface. Microsoft in turn bought the third-party object and is now distributing it to developers using the current version of Visual C++. Oh, yeah—it's only for C++ developers. No ribbon for .NET developers. So now MS has two ribbons; the Office code and new one it bought in. That's frustrating enough—it would be better to do the work to put the Office 2007 ribbon into a nice little library so the behavior would be identical—but it's tolerable.
Here's the bit that blows the mind: Microsoft is going to develop another ribbon, this time as part of Windows Seven. It won't be the Office one, and it won't be the Visual C++ one. It will be a new one. And, oh, this one won't be .NET either. The confusion of UIs in Windows mirrors the confusion of development within Microsoft.
Enlarge / A familiar store front for many, just not (yet) Peter Bright.
What about me?
So where does that leave me? I want to write nice applications. I want to be able to concentrate on my own code rather than fighting the API the whole time. I want my applications to fit in with the OS and work in a way that's consistent with first-party applications and even other third-party programs. I want this because I think it leads to better software; it means I can spend my time creating innovative and useful software that people enjoy using. I really want to do this, but you know what? On Windows it's just too damn hard.
Microsoft has had good opportunities to do something about this, but they have been systematically squandered through a combination of ineptitude, mismanagement, and slavish adherence to backwards compatibility. The disillusionment I feel is incredible. I enjoy writing programs, but I don't enjoy writing for Windows. And while once it made sense to stick with Windows, it just doesn't any more. There's now an attractive alternative: Mac OS X.
This has been part two of a three-part series. In part three, I will look at just how Microsoft got into this state and what it might do to regain Windows' position as the best computing platform going.