Bill Gates 2004 MDC 演讲内容

Remarks by Bill Gates, Chairman and Chief Software Architect, Microsoft Corporation
Microsoft Mobile Developers Conference 2004, VSLive! San Francisco 2004 and SpeechTEK Spring 2004
San Francisco, California
March 24, 2004

ANNOUNCER: Ladies and gentlemen, please welcome the president of Fawcette Technical Publications Incorporated, Jim Fawcette.

JIM FAWCETTE: Hello, good morning. Welcome to all our VSLive attendees, to our Microsoft Mobile DevCon attendees, and to the AVIOS-SpeechTEK attendees. We've had to pull of a lot of things, and required a lot of cooperation from many teams and companies to bring all this together. But I think we have a very ambitious conference that will give you a unique view of technology from the data center all the way out to the hand-held.

We're pleased to have Bill Gates, Chief Software Architect for Microsoft, returning to lead our keynote today. Many of you saw Bill on Valentine's Day 2001 introduce VisualStudio.NET. That was a very exciting event. This one, that's something to set a benchmark for, but I think this one may challenge it. We have a keynote packed with lots of product demos. So, I'll be very brief.

I need to thank a number of partners, though. First, the Visual Studio Team that we've been working with for 15 years, the Microsoft Speech Team, which will be showing you Speech Server 2004, and of course the Mobile DevCon Team. Also, our platinum sponsors, H- P, Intel, Microsoft MapPoint, Motorola, and Symbol.

One logistics note, after this keynote, you can split up into your individual areas. The speech people will go across the street to the Metrion to see Kai-Fu Lee's presentation on Speech Server. Mobile sessions are in another area in this same building. And the .NET Day will continue in here.

So, let's get on with it, we have a great feature packed keynote, and let's start the conference.

(Applause.)

ANNOUNCER: Ladies and gentlemen, please welcome the chief software architect for Microsoft Corporation, Bill Gates.

BILL GATES: Thank you. Thank you. Well, I'm excited to be here today talking to so many developers about the next generation of applications. The success of computing, the success of our industry, the success of Microsoft, all of these things have been driven by new applications, and new applications come because we have powerful tools and platforms. The advances taking place in each of those areas is more rapid today than ever before. And so, today we want to touch on the kinds of applications that are going to come out of it.

Over the decades, there have been various things that have really limited what applications can do. In the 1980s, memory size, the processor speeds, really made things tough. We were stuck with character mode interface. We couldn't do very big applications. And applications were pretty simple as a result of that. By the end of that decade, though, we started to get some powerful machines, and that's where graphics came in.

In the next decade, we didn't have the machines connected together, and year after year we'd say, well, is this the year that the network, is this the year that it will explode into critical mass? And certainly in the late 1990s, with the technologies of the Internet, that happened. Today, we can think of bits flowing essentially between any intelligent device on the planet to any other intelligent device, and that's a phenomenal foundation that has us thinking about the kind of applications that we can build.

But there are still some very key limitations. When we think about software talking to other software, the protocols, the way that data is represented, it's only now in this decade that the XML schemas and the Web services protocols that allow any piece of software to connect up in a rich way and exchange meaningful information reliably, transacted securely, only now are the pieces coming into place. And it's very timely because the number of applications that have immense value, applications around e-commerce, workflow, these require that kind of foundation. And so there's investments across the industry in developing those standards and developing the platforms that deliver on software connections. At the same time, of course, we have quite a variety of devices being connected up to the Internet, all the way from the watch-type device, like the SPOT watch that I have here, smart cards, pocket- sized devices, phones which are getting richer and richer, even things like digital cameras, GPS locators, all now being connected up, then mobile personal computers, all the way up to the large servers, that can run the most demanding applications.

So we won't have many different networks, the TV network, the voice network, the data network, all of these things will be the same, and they'll be driven by rich applications. Even things like the set-top box and the videogame, those platforms will come together, and your TV screen will be connected the same way that your PC is providing a seamless experience there.

So with all these different devices, that's a lot of complexity. And so people have to create their own protocols, create their own run times, they won't have the time to focus on the application functionality. So, the power of the platform, both the standards across different platforms, and the power of the platform itself has to step up to this new level.

Now, before we focus on that, it is important to remember that Moore's Law-type improvement is giving us headroom. Even though we have had powerful PCs for a long time, the increase in power is letting us be more and more ambitious. Moore's Law rate of improvement exists not just in processor speed, but also in storage capacity. In fact, that goes even faster. The speed of optic fiber connections go up at sort of the same exponential rate. The world of processors, we're at this nice milestone where we're moving up to a 64-bit address space, that's a substantial increase, it ought to last us quite some time. And for the first time, we can say that the servers, the industry-standard servers, are not only the best in price performance, but they're the best in terms of absolute performance, and that's true across many types of benchmarks. And so we're seeing the migration away from the lower-volume, higher- priced servers on to the industry-standard servers. And there's a lot of simplification that comes from that, because the mainstream tools, the mainstream run times are available with the Windows platform on the server.

Things are being connected up wirelessly. This is, of course, an explosive area. WiFi being something we'll have in all our mobile devices, the arrival of some other wireless technologies over the next years, so-called "ultra" wideband. For extremely high- speed connections that provide USB or 1394-type performance, but on a wireless basis. Over long distances the arrival of WiMax will give us easier broadband capability, being able to do that at low cost, and finally get that to be pervasive, and something we can assume, even for people who are connecting up from home, not just connecting up from business.

The actual PC itself is becoming a phenomenal device. We have to think about the large screen size, and the fact that people want to have lots of different information up there. The way we manage Windows, the way we do our interfaces, has been affected by the fact that large displays are getting very inexpensive there. Not only do we have clock speed increases, but we'll have multiple core devices. So thinking through how we can take advantage of the thread parallels, and that those cores essentially give us free execution speed there, that's a very, very important technique.

The graphics processors are exploding in power. And that's partly why in the next major update of Windows, Windows "Longhorn," we're doing a lot in the presentation system that fully exploits what's going on with those graphics processors. So a lot of hardware innovation, no slowdown in this at all. In fact, everything we can dream of in terms of hardware power we're getting.

A good illustration of that is that this watch I'm wearing has literally 10 times the power of the original IBM PC. We struggled mightily to get a basic interpreter and Fortran and COBOL running on that original PC. Well, here we have 10 times the RAM, 10 times the clock speed, and we can download these .NET applications. So whenever you come up with some new viewing idea, whether it's sports viewing, weather, financial, whatever is interesting, you simply use the wireless network and download those programs into this device.

A real theme today is having a common set of development tools for all types of applications, making the same tools be able to target the different devices, and different classes of applications, and bringing those things together, so that it's not like you have to pick different tools for different things. Now, I said that we're connecting things together, connecting hardware and software in some pretty rich ways, and we've had some breakthroughs in that. In fact, they're kind of exciting enough that we've thought about putting together an advertisement that shows how, really, we're going to get all of these things to connect together.

So I'd like you to look at this ad, and let me know if you think it's ready for prime time.

(Video segment.)

That was exciting. So the theme is seamless computing, having the information available through these rich applications, connecting the hardware, connecting the software, and having powerful visualization. These are the broad themes that our record level R&D budgets are going after. In fact, our R&D budget, as it's increased over the years, is actually now the largest of any technology company, substantially larger even than IBM, who is the traditional leader. Yet, in our case it's all focused on software and focused on a uniform software environment. That's because the opportunity we see to drive forward seamless computing, including the things we'll talk about today.

The focus today is going to be on how mobility Web services, speech and location type capabilities are going to come in and be aspects of applications. Yet, that can be done using the same tools and languages that people are familiar with, without saying, okay, you have to go off to a new world and give up some of the things you had before. In fact, as you move up to the new versions of the tool you just get a more powerful environment.

Building applications is harder today than ever before. You've got the existing code to worry about, you've got a requirement for many applications that they run 24 hours a day very reliably, and so you have the whole boundary between the developers, and the operational environment, and how information flows back and forth between them. There's a lot of existing code. Not that many applications are completely from scratch applications. And so connecting up to those things is very difficult, and the expectation for quality is very high. Then of course we've got the security challenge, people trying to find any exploitable thing in the application, to either bring down the Web site, or to propagate code that does malicious things. So it's harder than ever to develop applications. And it's really up to the tools to help make sure these things aren't overwhelming and don't slow down the progress in terms of great applications.

So Visual Studio is our answer to this, the commitment to have a tool, the commitment to work with developers, that's been key to all the successes Microsoft has had. In fact, today in the Wall Street Journal it's talking about a presentation that Jay Allard is giving today at a game developer conference, saying we just want to have the common tools between Xbox development and PC development, that's all extensions to Visual Studio. Likewise, for mobility and speech, it's extensions to Visual Studio.

When we talk about connecting things, we're talking about not just the hardware connections, but connecting up to these different applications. And that's where Web services come in, not that you have to build applications anew around Web services, although we're very excited about that, but rather than you can even wrap existing applications in Web services, and have them participate in an integrated environment. So a lot of our work has gone into those Web services standards. A lot of our best people, a lot of cooperation with the relevant companies in the industry, making sure those protocols are just like the Internet protocols, that is, they are standard across the different systems. People will compete on whether they implement those in a low-cost, easy-to-develop way, but the actual base Web services protocols will not be a point of differentiation.

As we move Visual Studio forward, the next major version is called Visual Studio 2005. Some of you have probably heard that referred to as the "Whidbey" version. That's the code name. This is very major release for us, and there's quite a few themes. Web services is certainly probably the top theme here. For the first time, making it really straightforward to write those Web service applications. There's a lot in productivity that we've done. XML is finding its way in, of course, related to Web services as well, finding its way in as a tool that we're using, and something that we're very rich in dealing with.

For many common scenarios, we're making application development require half as much code. And, in fact, in the history of programming development, it's really only advances that reduce the amount of code you need to write that are relevant. Reusing existing code, expressing things in a higher-level way, that is the fundamental metric of advance that we have here, and this is a big part of that.

We do integrate in support for connecting applications up to Office, connecting up to SQL Server, even to the version that will come out about the same time as this, which, again, has a major theme of XML and Web services. And here for the first time really, is device development, letting you target phones, PDA-type devices. That's all built in.

So this tool is central to our strategy, and in fact, you could say it's the third pillar going along with Windows and Office. There's a lot of language innovation here for Visual Basic users, probably the thing that they'll be the most excited about is we've brought back edit-and-continue, which has been highly demanded, let's say. (Applause.)

We've also got a lot of extensions to languages, generic iterators, in C# the partial types, new overloading, C++ we have templates that include the CLR capabilities. We have new libraries like stl.net library, and there's a big feedback loop that takes place here that drives our priorities in terms of what we want, what you want to see in this tool, and therefore what we build into it.

I mentioned quality and security is a very particular focus here, certainly for Microsoft that's been our top priority, even more than the new features we're doing, the development of "Longhorn," all the things about isolating networks, so that malicious code can't spread and do bad things, that's been a huge effort. And the Visual Studio group has participated in that. In fact, as part of our security effort we've invented a lot of tools that look at code and examine it, statically, for certain types of flaws. So we're using that ourselves, it's called PREfast, and we decided wow, this has been so effective at finding flaws we actually need to get it out for developers. So this PREfast capability will be built into the Visual Studio product. In fact, it's a very sensible thing, if there's development patterns that might be in error, you can put in recognition rules in those, so extend it into your application domain to find an even broader set that we preprogram it to find.

We have security capabilities, like, if you're developing an application that you don't want to force people to be in admin mode, you can ask the development tool to run in a way that it will error-out anything that doesn't work in normal user mode. And there's big push for Windows applications to make sure they don't require administrative mode. There's the new managed APIs, there's new compiler switches to generate code that is immune from certain types of attacks. So I would say a substantial number of features related very specifically to the quality and security initiatives.

Now, another thing that is a very big deal for us is the idea of feedback from users. Software has changed from being something that the user gets the bits, and they just use those bits in isolation, to something where they get the bits, and, as they use the software, any feedback or problems with that software get relayed to the software developer, and then updates of a certain type can be sent out on an ongoing basis.

This paradigm is a very is a major shift in terms of software. We saw it at first in terms of simple crash- type reporting. Windows XP and many of our other products have this ability, if something hangs or crashes that you optionally can send that report back to us. Well, in terms of analyzing problems in device drivers, problems in third-party applications, and how they interact with the system, where fragility is, having that database has been a phenomenal thing.

We are also extending it. Take, for example, Help. Office 2003, when you type in a help string, if you're offline of course it goes to the local help, but if you're connected it goes up to our Help information that we store on our servers. And so the Help is way more extensive, and we can update it on an ongoing basis. And then we ask people to rate whether the Help was what they wanted, if it solved the problem they were interested in, and so, on a monthly basis, we're reviewing those ratings, and we're offering those Help topics, and we're actually taking the boundary between the Help world and the Knowledge Base world where people analyze technical problems, and really breaking down that boundary so that Help queries can get you the latest information based on the version of the system and things that you might be interested in.

And so, connecting up applications to these reporting databases. That's something that we want to make easier and easier in the tool. We think every application, no matter where it runs, the developer of the application should have this type of information available to them, corporate applications, mobile phone applications, it's a real philosophy that is pervading the platform and the tools, and that I think really strengthens how usable applications will be.

Visual Studio 2005

I've talked a lot about Visual Studio 2005. We're very excited about this. And I think the easiest way to understand some of the improvements is to see them in action. So let me now ask Jay Roxe to come out and give you a glimpse of some of the neat things that are in this next tool release.

(Applause.)

JAY ROXE: Thanks, Bill.

Good morning. I'm very excited to be here today to tell you about Visual Basic 2005 with its renewed focus on developer productivity. As we go through this demo, you'll see how we've made it easier to develop applications, debug them, and deploy them, with a greater than 50 percent reduction in code in many common scenarios. We'll take care of the nitty-gritty in an enterprise scalable fashion, and leave it to you to handle the real thinking about the application that you're building.

So, let's dive into this demo. The Consolidated Insurance Company is building a claims processing application that will be used by its adjustors in the back office. It will need to display things like a photo of the accident, a description of what happened, and some information about the client. In true Julia Child fashion, I've pre-baked parts of the UI, and we're going to go in and finish it up. This data sources window is a new feature in Visual Basic 2005 that provides a holistic view on my application's data. If I come in and say, add new data source, you can see that I can add a connection to a database or Web services, as I would expect, but something that's new in 2005 is the ability to treat a business object, an object that you may already have written, as one of your data sources. We'll automatically examine the public property of this object, and infer a schema of it for you. So, if I select object, and I just take Consolidated claim object, which is just all of the information that I have about a given claim, you can see that I've automatically generated a schema over here, and I can now choose how I want to display that in my application. By default, I get a data-grid view, but I think for this app it makes a little more sense to have a detailed view. So, I can just drag that in, and it will automatically build the UI, including the navigation for you.

Now, if you're binding against the database, we know where you're getting the data from. However, developers store objects in many different places, so you need to write just one line of code to tell us where to get that information. So, I will just go ahead and set the data source here. And what this Get All Claims method is returning is a generic collection of claims, generics are a new feature in 2005 that makes it easier to build strongly typed methods and objects such as this collection. Visual Basic is going to support both the creation and consumption of generics.

So, something the developers have told us is that they love the breadth and scope of the .NET Framework, but the size can sometimes be a little bit intimidating. And one of the ways that we're addressing this in 2005 is with the My option. You can think of My as being your speed dial into the .NET Framework. With things like My Computer providing access to the file system or the printers; My Application providing versioning information; you can get user information, resources, settings, and a lot of things developers use every day when building their applications. So, what we're going to build here is a quick print preview. So, I can say, My Computer, printers, and use the default printer.

Now, another way that developers write code, and I know I do this when I'm writing something I haven't done before, is go out to the Web, find a snippet of code, copy and paste it into their applications, modify it a little bit, and use it. How cool would it be if the IDE supported that for you automatically? Check this out. If I come in, I can say "insert snippet," you automatically have access to a library of snippets for things like accessing data, working with forms, working with XML, and we're going to ship more than 500 of these snippets. More importantly, however, we've made it easy for you to define your own snippets that you can use in your applications, share with people you work with, or share with the larger community of snippet authors out on the Web.

So, Consolidated Insurance has defined a template that they use for their simple reports, and I can come in here, and as you see all of the areas that I need to change to have this make sense are highlighted in yellow, and I can simply tab between them. OK, that's all the code we need to write for this application. But, before we run it, let's take a step back and think about what we just did. With one drag and drop, one line of code, one use of My, and one code snippet, I've just completed what previously would have taken me dozens, if not hundreds, of lines of code. And this just goes to the increased focus on developer productivity.

So, if we go ahead and run the application, as this comes up, you'll see that hydroplaning is a condition that can occasionally cause a driver to lose control of their vehicle. We'll give this just a second to finish building. OK, if it was ready we would have shipped it already. OK, there we go. So, you can also see that our dedicated Consolidated Insurance claims adjustors are on the scene before the accident has even finished happening, so that we can get all of the information that we need about this accident.

The other thing you'll notice is, this Windows Form Tool Strip, which is a new control that makes it easier for me to build a professional Office- like UI. So, we'll come over here and run the print preview, ooh, I hate it when that happens during one of Bill's demos. Okay, what this is, no reference exception, this exception assistant is actually a new feature in Visual Basic "Whidbey." It gives me detailed information on what the exception was that occurred, and how I go about fixing it. So, what I need to do is come up here, and assign it a value, and I'll just take the current value from my claim data connector, drag the cursor back up, and for any of you who just missed that, I just edited running code. Ladies and gentlemen, edit and continue, the most frequently requested feature in Visual Basic is back in 2005. (Applause.)

OK, so now we've finished writing the application, and our next challenge is to actually go deploy that application. We made tremendous steps in this direction in 2002 when we introduced Xcopy deployment, and solved this problem of DLL hell. We're taking this one step further in 2005 with Click Once which will automatically deploy not only My Application, but also its prerequisites with the simplicity of Web deployment, yet the richness of client deployment.

So, I can come in here, I say publish, and I can choose where to publish. In this case, I'll publish it to the Consolidated Insurance Extranet, make it available online and offline, and Click Once is going to automatically build the deployment page for me that will deploy not only the Consolidated applications but also any of its prerequisites, such as the .NET Framework.

Now, we've deployed over 80 million copies of the Framework, but this is a great way for ISVs and other software providers to ensure that the Framework, and any other prerequisites are available on their customer's machine. So, with one click, I can deploy the application, verify the requirements, and install the application and run it on my user's machine.

So, what have we seen in this quick demo? We've seen how we've made it easier to develop applications with My and Intellisense code snippets, to debug those applications with the exception assistance and the oft requested and now returned Edit and Continue, and then to deploy those applications using Click Once. And all of this with more than a 50 percent reduction in code in many common scenarios. This is not only the most powerful version of Visual Basic ever. It's also the most productive. You'll be getting copies of this. I'd encourage you to install it, try it out, you're going to love it.

Thank you very much.(Applause.)

BILL GATES:

We're moving towards a first-half 2005 release of the Visual Studio product, and as we move towards that, we've increased the number of resources that go with it, the add-on things, the community outreach is part of this. A new element to this is that we'll have releases on an ongoing basis. And, in fact, here tomorrow you'll have the latest release, that will be available to all of you, of Visual Studio. And we really want you to both try it out and give us your feedback. So as we move to get this thing final, it will have exactly what you're interested in.

Mobile Space

Let's focus a little bit on the mobile space. The mobile space is one of the most exciting new arenas for applications. When people develop applications today they want to have access on a mobile device for some of the information coming out of that application. And initially, the development environment for mobile applications was very, very different from classic server or PC-type applications. We want to make sure that not only can these applications be rich, but that they fit in with the code that's running in the other environment. In fact, we'd like to make it just trivial to say, OK, let's target some of the output of this application to these devices.

Now, this is very tricky, because there (is) way more variety on these devices than on the personal computer. For the PC we've abstracted a lot of things, so that applications don't have to think about keyboards or screen resolution nearly as much as they typically had to do on the mobile devices. Yet, the mobile devices are getting to be so popular that people want to overcome that.

The Web service focus that I talked about earlier is applicable in this space, as well. In fact, we had a major announcement last year with Vodafone about creating an association of people to really define exactly what Web service calls would look like for the mobile space, location information, authentication information, billing information -- in fact, we want those Web services calls, where it's appropriate, to be the same in all different device environments.

We are also participating in providing Web services for mobile devices with a thing we call the MapPoint Location Server. This came out last week in its final version, and it lets people, companies who have mobile workers actually be able to take the GPS data, and send that out to a Web service, and we give them a map, and distances, and all the type of geographic information that they might be interested in. And we're working with a lot of the mobile providers so that those APIs work through their devices, for example, Sprint and Bell Mobility are saying to their customers, if you have those mobile devices, then this kind of mapping information can be tracked very straightforward, and fed into other applications. So the location capability is coming into this mobile environment.

The pocket devices, phone and PDA, really the trend is to have the best of both together. The phone is no longer just a voice-only device; more and more it has that rich, color screen. A PDA is no longer a disconnected device; more and more it's got the ability to make calls and connect up to wireless data networks. In many cases that will be both the wide area data networks, 2-1/2 G, or 3G networks, but also increasingly you'll have WiFi connectivity built into the device, as well. So it will be able to connect up to whichever network is available, whichever one provides the best bandwidth, and economics there. So the boundaries of what these devices look like is not they're not as separate as they used to be. In fact, there's phenomenal innovation in this, as we see this grow.

Now, a lot of the excitement here is not just in the United States. In fact, some of the leading trends in the use of these devices take place in Europe and Asia. And that's where we see a very strong demand from developers to make it easy to do very, very rich applications. We are just one of the software platform providers, of course, there's companies like Nokia and Palm and others building software for these devices. But, we, in this area as well, have a very high level of investment, and have a lot of momentum. We've got 37 different people building hardware, 50 different operators.

In the Pocket PC space we have, by many measures, the largest share. The Smartphone space, a growing share, and particularly if you take the enterprise market, where we are actually a leader already, where people want corporate applications. The kind of development tools, manageability, alignment with the PC platform has allowed us to lead in that space, which is actually for many of you the greatest opportunity space that's out there.

There's a lot of industry initiatives bringing the protocols and Web service approaches to be not only common within the mobile industry, but common to the non-mobile world, as well. And so we're members in Open Mobile Alliance, GSM Association. Recently there was an announcement between ourselves and some other key companies about having a domain name that will let you know that a site is optimized for the mobile experience. And yet, having that site connect up through all the normal Internet standards. So we're very excited about that. We have gotten quite a bit of application development going on, but those developers have told us some things they want to see to make it even easier to build these applications.

Now, we update our mobile platform every year, and so the mobile platform for this year is the 2003 platform. We're actually doing an intermediate release now that we call Second Edition, that has some additional capabilities. This has to do with getting the screen capabilities, very rich, simple screen capabilities, including change in the orientation, supporting high resolution, getting those things to be standard, so VGA- type capability, the QVJ-type things. So we'll have more device innovation, we'll have different form factors.

In fact, a good example of a device that's using these capabilities is this Motorola MPX. Let me just go over and get this. So one way you can use this is just flip it up and use it like a phone. And you can see, you've got a keyboard here that's got the typical numeric capability, and you can see the orientation makes sense for that. But the way Motorola has designed this, you can also open it up this way, and of course you see the software automatically can tell which orientation you're using the screen in, and so now you have, essentially a full key board, a small keyboard, for entering messages, and interacting with the applications. So this is a device that, is it a Smartphone, is it a classic-type phone? It really blurs the boundaries, because it provides a lot of the benefits of both types of devices. So we're excited to see the Motorola breakthrough, and we've done a lot of special software work to make sure that we take full advantage of that.

In terms of new things for developers, there's a compact framework, a lot richer. The managed APIs are now letting people get at telephony, there's camera APIs, there's sync APIs, location APIs, really having just high level calls that let you get at everything that's available there. Another big focus for us is this mobile to market, making it easy for people to find applications, and now connecting that up to a billing platform, as well, so we can make it so that people can sell those applications, as well.

So just to give you a sense of where we're going with Smartphone, and how this mobile market change will create new opportunities, I'd like to ask Ori Amiga to come up and give us a look at Smartphone innovation.

(Applause.)

ORI AMIGA: VisualStudio.NET 2003 already has great support for building managed code applications targeting the Windows Mobile platform today. And with the .NET Compact Framework already being in ROM on every single Pocket PC, and Smartphone 2003 device, there's really never been a more exciting time to be a mobile developer. So what I'd like to show you today is some of the remarkable innovation we've been doing on the tools, on the platform, and our mobile to market program to really make it easy for developers, easier than ever, to build, deploy, and even sell your applications.

So let's go ahead and take a look at my quite active blog site. And what I thought we'd do today is jazz it up a little bit, build a mobile blogging client for my Smart phone from scratch, so we can create live blogging entries here at MDC.

In Visual Studio 2005 I'm going to go ahead and create a new project. We'll do this in Visual Basic, and call it My MDC Blogger. We're going to target the Smartphone platform and leverage some of the rich Windows Mobile APIs for camera, location, even Web services to build this application. Notice the gorgeous designer we have in the IDE, you can view the form factor that you're going to be targeting. We have great customizable skin support, and the exact same beautiful design experience you expect on the desktop.

Let's go ahead and title our form. We'll call it My MDC Blogger again. Notice I have a device control toolbox that has all the relevant controls for the platform I'm targeting. We'll drag a picture box, which we'll bind to the camera in a moment. I can add a label, which is where we'll put the location information, about where this photo was taken. We can label it, My Location. I can use the menu editor to create Smartphone menus in the designer. We'll make a blog it menu. We can make a photo menu. And we're almost done. Let's go ahead and wire these up and get ourselves a little more real estate here.

Now, I can type in the three lines of code it takes to get an image from the camera object but, instead, let's use our beautiful VB Snippets feature and insert a Capture Photo snippet. I can also insert a snippet to get location. Notice, two lines of code to get an image from the camera, put it in the picture box, one line of code to get a location sensor, one line of code to get an address report.

The last thing we'll do is put this information up on the screen. And that's it. We're almost done. Finally, let's go ahead and wire up the Blog It menu. I've gone ahead and created earlier a wrapper component that uses Web services to talk to my blog server. And so we'll go ahead and use that. The add entry method, call it My MDC Blog, and we can say I am blogging from and add our current location, and we also want picturebox1.txt. There we go. Go ahead and hit build, take a look at our output, build succeeded.

So, what you've just seen, in less than three minutes we've built a Smartphone application from scratch, added a couple of controls using rich Windows Mobile APIs and built it. Now, many of you know that building your application is only half the battle, the real challenges out there are on packaging, and even selling your applications. So, let's take a look at some of the future investments we're making to simplify and really help you sell the applications through multiple channels.

What we have here is a preview of a future version of our Windows Mobile Developer Portal, so in our Mobile to Market Program, an ISV will be able to submit their application into a hosting service and have it automatically be available through many of our distribution partners such as AT&T Wireless, for example, or Handango, CellMania, or any other mobile operator distributor or OEM.

In the submission form, I can title my application, give it a description, indicate which platforms I'm targeting, even set it retail price, in our case I think $9 is a bit high for two minutes worth of work, but that's probably OK. I can go ahead and browse and find the application I want to upload to the site, in this case a CAB file, precreated with Visual Studio that has our application in it.

When I click the Submit button, this application gets submitted into our back-end service, and on the other side of this transaction, the mobile operators, such as AT&T Wireless in our example, can make a decision on which applications they want to make available on their network and to their end customers.

Now, once we get a submission confirmation, we can go ahead and switch over to our device, there it is, and we'll take a look at the end user experience of how you get this out onto your Smartphone. On my Smartphone, I'm going to go ahead and launch the mobile catalogue. Notice from the branding on the device, we've been working closely with AT&T on this, an end user can go to their top downloads and initially see a cached version of all the applications available on the hand- set, so they don't have to continuously go up and hit the Web site.

When I hit refresh, we're going to make a secure Web service call, and download any updated content which may be available. So, notice my MDC Blogger is not on the site, and I can get some additional information such as the size and the cost. In one step, I can download and purchase this application, and the beautiful thing here is that as an ISV, you can sit back, relax, and wait for the checks to show up in the mail as we've been working very closely with our partners to deliver an end to end solution.

Our CAB file has been installed. We can now go back to our Start menu and launch our application, and create my first blog entry. I'm going to go ahead and click the photo button. The camera is going to come up and take a photo of this great car I have on stage, and we'll give it a second or two, we'll get the location updated from the location center, and then I'm going to go ahead and hit the Blog It button.

While we wait for the blogging entry to be submitted to my site, let's switch over and take a look at our Pocket PC, which has a reminder about the keynote. Interesting. Well, I guess we won't be taking a look at our Pocket PC since it's decided to remind me that I'm in the keynote. But, instead, what I will tell you about is some of the great support we've added in Visual Studio 2005 to help you build applications which target multiple phone factors available through the new Windows mobile devices. We've made it easy for you to build a single application that runs on the Smartphone and Pocket PC, a single package that can deploy and run on both, an application that can automatically adapt from landscape to portrait mode into VGA resolutions, et cetera, all from the IDE and all with a very little amount of code required.

Looking back at My Blog site, hit Refresh, and here's the blogging entry that came from my Smartphone with our image and the location from the device.

(Applause.)

What you've seen today is that from scratch we were able to build a new Smartphone application in Visual Studio 2005, to use Visual Basic and the rich Windows mobile client APIs to do location, camera, photo capture, as well as Web service calls, to use Mobile to Market to package, sell, distribute our application to our clients, download it, install it, purchase it, and even use it all in under 10 minutes.

Thanks very much.

(Applause.)

Speech Server

BILL GATES: Well, let's talk about speech. Speech has been a holy grail for a long time in computer interaction. Obviously speech would be immensely beneficial to have as one of the ways of interacting with the computer. And this is a problem that very smart people have been working on for decades. And, in fact there has been substantial progress. The requirements in terms of the low error rate are very demanding. Humans are used to other humans, who are extremely good at recognizing speech. In fact, as we've worked on these problems, our respect for human recognition has simply gone up and up. But, there's a progression here of lower and lower error rates, what you're seeing is from 1993 out, our projection into the future, what the machine error rate will look like. And of course, the human error rate is way down there, a very, very low error rate.

There are two things that humans are particularly good at, compared to computers; one is understanding the context, that is knowing if there's any ambiguity, by knowing who they're speaking to about what, how to resolve that ambiguity, and doing that just subconsciously. And the second is being able to eliminate noise. If you compare computers to humans in a noise-free environment, the differences is much smaller than this. And so a lot of the advances have to do with being smarter about context, and doing a better job with noise elimination. And so together, bringing all the different advances together, including the hardware capabilities that are helpful here, we're bringing the machine error rate down, and bringing that into the mainstream.

Now, one thing, this is showing the toughest problem of all, which is general dictation, where you can use an extremely large vocabulary. Already today, if the vocabulary is limited to a particular domain -- asking about directions, or directory, or weather, or travel flights -- the error rates are very, very low. And so the barrier there has actually been the difficulty of creating applications describing what the domain is, and connecting it up with that computer code. And the Speech Server that we're announcing, and shipping this week, is about eliminating that problem, making it easy to write server- based, voice recognition for domain- specific grammars, and taking the extra effort to do that on top of building a classic application very, very modest. Again, the philosophy is, same tools, Visual Studio, the same platform environment, the .NET environment, that we're bringing there.

Now, Microsoft is very committed to speech. We see this as something that over the rest of this decade will simply become more and more mainstream. The mobile phone, you've seen all these different keyboards that try to make it easy to put information in, those will exist, but speech is preferable when it can be recognized. Even on the PC itself, the combination of keyboard, pointing device, and speech will be part of the interaction technique there. We also believe that you can't just have the world of speech synthesis and interaction, and the world of the keyboard-screen, you want to bring these together, so that even if your input is speech, that the output can often be on the screen.

So, for example, if you want to look at your voice mail, you shouldn't just have to listen to audio, you should have the screen show you that menu, and all the information, and you can easily select that. So the screen and speech should not be separate worlds. And many of the architectures for dealing with speech applications acted like it was separate from screen-based interaction.

Speech run times have to be very low cost, it's our traditional approach to take a high- volume, low-cost approach to these things, and we've got to have examples of where these speech applications are doing some super things. We do have a standard called SALT, that describes how to embed grammar and speech-type information into normal XML expressions. The model here is this Web-based .NET architecture, the Visual Studio environment, and a very simple integration there.

This is a diagram on top of our standard Windows Server, you run this speech server, called Speech Server 2004, which is just coming out now, and that has the application logic, and the speech processing, and then it can connect you, through general telephony, or through the Web, as well, and the data is flowing back and forth to this ASP.NET application. Making the economics of this very, very inexpensive has been a critical thing to us. And working with partners who do the telephony connection piece has been very, very important, as well. And so over the last nine months we've had betas of this out, gotten a lot of feedback. In fact, I think the excitement level, the progress people have made in building applications with this beta has been as strong as any new beta product I've ever seen.

Speech really is something people believe in. They've seen a lot of optimism, they're wondering when it comes to the mainstream, but now we're seeing for a certain class of applications, it is in the mainstream with this software release. So to give you a look at this, and including how the development has been made pretty simple, I'd like to ask Richard Irving, a program manager in our Speech group to come up and show you Speech Server.

(Applause.)

RICHARD IRVING:

Thank you. All right. We've seen some great stuff so far. I think we saved the best for last. I'm going to show you how to leverage VisualStudio.NET, and your Web development skills to speech-enable ASP.NET applications, using Microsoft Speech Server 2004. The scenario that we saw earlier on was an internal application that Consolidated Insurance deployed for its claims adjusters to track -- to file and track claims on behalf of their customers. Of course, Consolidated Insurance also has a customer sevice Web site, to allow the customer a certain set of functionality. So we're going to take a look at that application before we dive deep into the code. There we go.

So here we have the Consolidated Insurance customer self-service Web site. I'm going to go ahead and type in my claim information, so that I can log onto the site, and check the status of the claim that Jay was working on earlier. Now, I can see that the claim has been processed. The claims adjuster has updated with some information on what the damage is, and they've actually assessed a value of $2,400. now, because they've assessed that value, I can take action on this claim directly from this Web site. I can choose to have a check sent to me, or I can choose to get it repaired. Now, I'm going to go ahead and get it repaired, and when I do that, I get a map and a listing of repair centers within a given search radius. And of course, I can change the search radius from 5, 10, 20 miles, and the list will update dynamically, and then I can choose which repair center I want to take my car to.

So this is all really standard stuff. Right. I mean, you guys have built this stuff before, you've used this stuff before, you know how to do this. Well, Consolidated Insurance wants to extend the reach of this application to the most pervasive device in the world, the telephone, using speech technology, and Microsoft Speech Server 2004. And I'm going to do that right now.

We're going to start in Visual Studio.NET. This is a development environment you guys have all come to know and love over the last few years, and I'm looking at the Consolidated Insurance Web project right now. I'm on the status page, I can see basically the design time view of exactly what we just saw through the Web browser. I've got my standard ASP.NET controls in my Web control toolbox there. I've got some controls already on the page, and I've got some data sources. My data sources of available repair centers, and the claim data that I'm binding to this form.

Now, with Microsoft Speech Server 2004, you get a set of tools that are seamlessly integrated with VisualStudio.net that make it very, very easy to speech enable your ASP.NET applications. The first thing that I notice when I have it installed is the speech Web control toolbox. And this is really neat, it gives you a set of standard ASP.NET controls, but to manage the speech interaction in the application. These controls work, and behave, and are configured the exact same way that you're used to with the standard ASP.NET controls, but of course they're doing speech.

Now I want to start building out this actual the speech-enablement portions of this applications. And of course, I've got a couple of things on the page already. So before we dive into it, let's just review real quick what's on the page. I have here a call-management control, which is going to pick up the line and start executing the application when it detects an incoming call. I'm going to say hi, greet the user, get their log- on information, look up the claim, read them back the same sort of detailed information that I got on that Web site, and then I'm going to ask them if they want to have a check cut, or if they want to get the car repaired. Now, if they want to get it repaired, I need to give them that exact same list of available repair center, except over the phone using speech. Now, to do this, there are three concepts that I need to get familiar with, because over the phone, obviously, there is no graphical interface. So there's three concepts that I need to get used to. One is the dialogue, or the conversation the system has with the user. This is your presentation logic, right. That's how you think of it today. That's how you can keep thinking about it with building a speech application. the next thing, in that conversation the system is going to be asking questions of the user, it's going to be saying things to the user. These things are called prompts. And, of course, I need to define a list of things the user can say, constrain it just a little bit, and we call that grammar.

Now, one of the really neat things, talking about these speech Web controls, one of the really neat controls we provide is this data table navigator control. And this data table navigator control, when bound to a data source, will automatically generate all elements of that conversation based on the data I bound it to. So I'm going to go ahead and use this data table navigator control to present the user with the list of available repair centers. And I'm going to customize it in a couple of ways.

The first way I'm going to customize it is to bind it to the repair center data source that you saw on my Web form, and I'm going to extract these two columns, the name of the business, the basic coordinates, so that I can send it off to the MapPoint location server, and calculate the distance, calculate the available repair centers, so that I can provide relevant information to the user.

Now, technically, once I do this, and I provide I specify a place to store the user's selection, I'm done. I don't actually have to go any further. I can hit apply, dismiss this dialogue, run it right now, and it will work, but I really want to show you these tools. So I'm going to go out on the edge here, and I'm going to start customizing a couple more things.

I'm going to customize what the user can say to the application. Now, again, we automatically generate these commands, or what the user can say, based on the data that we're bound to. But, I can also customize it. So I am going to customize the words that the user can say to indicate their selection in a list. And I'm just going to set this up here by specifying a path and a rule, and a grammar that we'll customize in just a second. I just want to prepare the control for this. Then the last thing I'm going to do to the control is provide a really natural sounding voice to this application. And again, I'm just setting this up, and I'm going to do the full customization in just a second. So we're done.

Again, I can build, I can run this right now, and it's going to sound great, but we want it to sound even better. And I want to show you the rest of these tools. So I'm going to customize the commands that the user can say to the application, and I do this through the grammar editor. This is a really cool, really sexy tool that allows you to design the flow and the layout of the user's input into the application.

I can see here, I already have a couple of items in this list. The user can say, OK, yes, or select to indicate their selection, but I'm going to go ahead and add another phrase, because I think it's most natural for a user to say, when they're in the middle of a list, to say, that one to indicate their selection. So I'm going to add that to the list, and that's all I needed to do. The things that the user can say, the input to the application is now fully customized. I'm going to hit save, and I'm done, and I'll overwrite that. So I'm done with that.

Now, the last thing that I want to do is provide a really natural sounding voice to the application. You guys have heard the synthetic voices before, text to speech, all that sort of stuff, and I can use that. I can use that in my application, and that's functional. But I want a really natural sounding voice, and I can do that with Microsoft Speech Server through a tool called the Prompt Editor. And this allows me to insert recorded files or recorded sounds that I might have a professional voice talent recording in a studio, import this into this, and then I can dynamically mix and match these sounds at run-time to provide the most relevant prompt to the user.

So, I'm going to go ahead and import a couple of WAV files associated with that list of available repair centers. And let's see how that sounds. It sounds great, that sounds awesome. That is the exact experience that I want to give users in this application, I want them to hear her voice, I want them to be guided through this application, and that's how I do it.

Now, I can go ahead and build this, and I have a couple of options available to me. I could just hit Run in Visual Studio.NET, and what I get with Microsoft Speech Server is a simulation environment to run on my developer workstation that simulates what it would be like to run this application on the server. So, I don't need any additional software, or any additional hardware to license on my developer workstation. I can just hit run. This is also an ASP.NET application, so I benefit from Xcopy deployment. I can just copy this out to my Web server and, bam, it's deployed, I can use it. But I want to give you guys the full Microsoft Speech Server experience, so I'm going to go ahead and make a call to a server that we have running to this very application and let's see what happens.

VOICE: Good morning, and welcome to the Consolidated Insurance Automated Claim Processing Center. First, I'll need to get your claim number, if you don't know it, please say "help." Otherwise, please speak or type the number now.

RICHARD IRVING: 1M24R.

VOICE: Great. I heard 1M24R, is that right?

RICHARD IRVING: Yes.

VOICE: OK, please wait while I look up your claim.

Thanks for waiting. Your claim is for a total of $2,400, please say "check" to receive a check for this amount, or state "repair" and I'll help you find an appropriate service center.

RICHARD IRVING: I would like to get it repaired.

VOICE: OK. I can help you find the closest service center. Do you want me to search within five, 10 or 20 miles of the address on your policy?

RICHARD IRVING: Ten miles.

VOICE: OK. I've found three centers within 10 miles, Contoso Auto Service is six miles from you. Northwind Import Cars is two miles from you.

RICHARD IRVING: That one.

VOICE: Got it. Northwind Import Cars, I have sent the details to the e-mail address we have on file. Can I help you with anything else?

RICHARD IRVING: No.

VOICE: Thanks for calling Consolidated Insurance. Good-bye.

RICHARD IRVING: Thank you.

(Applause.)

All right. So that sounded pretty good. Thank you, I think it's absolutely awesome as well.

So, now, remember, I speech-enabled an existing ASP.NET application, this is fully integrated, right, so I should be able to log back on to the app, and see if maybe the status has changed with what I did over the phone. So, I'll log back on, and there we go. The car is in repair as indicated by my conversation with the application. My options are disabled, and once it's done being repaired, I'll probably be able to log back on, check on the status again, and anything else that Consolidated Insurance wants to allow their customers to do.

So, hopefully what I've been able to show you here is how you can leverage your existing skill sets, your existing infrastructure investment, to extend the reach of your applications to 2.2 billion phones, 2.2 billion phones, using speech technology and Microsoft Speech Server 2004.

Thank you.

(Applause.)

BILL GATES: That's a huge range of different scenarios. We think that this new speech capability will be used for, ranging from healthcare, we saw insurance, customer relationship management, even internally in Microsoft when somebody wants to call up and get directory information, we now have the Speech Server being used for that with a very high degree of accuracy.

One application that was very exciting to me, it was done on the beta, was done by the New York City Department of Education. This is the largest school system in the U.S., over a million kids going to school and a $6 billion budget. They have a lot of information, 1,200 schools, 80,000 teachers, and they want to make it easy for parents to know what's going on, things like did the kid go to school, what kind of grades did he get, and they really can't afford for transportation or scheduling or other information to have lots of people sitting there manning some call center answering these questions, schedules change, things parents might want to know about. So they built a Web application, and that was a .NET application, very straightforward and very successful, but it was only accessible to families that had computers with Internet access. So, they came to us and a key partner we have called Intervoice, and said, could we take this application and extend it out so that people could dial in on the phone? And this is because the majority of parents for this particular school district did not have computer access. And so between Microsoft and Intervoice, we took the application, and it was a very straightforward thing to do this extension, and so now it's up and running in the New York City School District. So you wouldn't think of them as the cutting edge, state of the art customer, and of course they had to do it with tight budget constraints, and yet with the new platforms that all became practical.

We've got about a thousand applications that have been written as part of the beta test, and that's been part of the refinement capabilities. And so I think we can really say now that speech is starting to move into the mainstream. Kai-Fu Lee, who runs our group doing this work, of course, will be giving a keynote across the street at 11, and that really will get into more depth. It will give you a sense of why we're so excited about this.

Let me just say briefly where we go from here, we talked about Visual Studio, mobility, and speech, and what's here in the near-term. We don't see ourselves backing off in terms of our large scale R&D investments in these areas. We think they're all key areas. Of course, there will be a lot of feedback on the things that we're doing through our community process that will help guide us, but in Visual Studio we see that the XML data model, there's a lot more that can be done, user interface, rich animation, a lot more that can be done. Mobility, getting these media experiences in there, dealing with the device form factors so that the full range between the phone and the mobile PC we can share code across those. The network support, giving us new opportunities, having data and voice connections simultaneously is very key if you want to be interacting with speech and having things come up on the screen. And speech itself, well, of course the idea is to not only do server based speech, but to bring our speech recognition for larger and larger vocabulary sets, down onto the phone itself, and onto the PC itself. We will have a speech dictation application.

In fact, just last year as we were making progress on this with one of our speech researchers over in China, where the keyboard is relatively more difficult to use, there was proposed that there would be a runoff between the keyboard use and speech recognition, and so they got one of the best trained typists in the country, and the speech recognition was better in terms of getting the full accuracy rate of entry type measurement versus the keyboard. And so, that's just a milestone, but eventually we'll think of the PC and the phone as devices that we can talk to, and talk to not just within a limited domain, but talk to in very broadly, even say dictating documents of any type.

A lot of investment to be made there, we've been investing in this area for a decade before we get the problem completely solved, and I'm sure that's another decade of work, but lots of milestones that will let you take those improvements and build applications around them.

So, in conclusion, the seamless theme describes a lot of what we're doing. It describes the importance of software in terms of getting things to work together. The idea of software talking to software through Web services, and our commitment to that as an industry standard, I hope that's coming through in everything we're doing from our initial work around XML to the protocol standards that we're making available, to the interoperability testing with all the other vendors. The mobile space is a very important space, one that we're quite committed to, and seeing some great results. These natural user interfaces, of course, we've always dreamed about those, and it's great to see that it's becoming real.

And all of this in summary, I think, creates opportunities for developers, and so I'll be very excited to see what each of you can do, taking the new tools and new platforms, and building great applications.

Thank you. (Applause.)

posted on 2005-05-27 21:48  Titan  阅读(938)  评论(0编辑  收藏  举报

导航