Slashdot Mirror


Building Intelligent .NET Applications

Scott Forsyth writes "'Building Intelligent .NET Applications' is an excellent primer book into the world of Artificial Intelligence (AI) in the business world, specifically related to Microsoft technologies. It is an introduction to the world of Artificial Intelligence (AI) for .NET programmers. It is the first book I have seen that shows professional .NET developers how to incorporate AI into their daily programming. In this accessible guide, developers learn how to enhance new and existing .NET applications with intelligent agents, data mining, rule-based systems, and speech processing." Read the rest of Scott's review. Building Intelligent .NET Applications author Sara Morgan Rea pages 269 publisher Addison Wesley rating reviewer Scott Forsyth ISBN 0-321-24626-8 summary An excellent primer book into the world of Artificial Intelligence (AI) in the business world, specifically related to Microsoft technologies.

Sara dives quite deep into four different branches of the vast world of AI with a great balance of conceptual theory, code samples and real world scenarios. She leads the reader though the complete process of obtaining the technologies to full implication with complete code. Both Visual Basic.Net and C# can be downloaded online while the book gives all examples in Visual Basic.Net.

Sara explores four of the most popular AI technologies by building real-world sample applications that readers can use as the basis for their own applications. Some of the more interesting portions include; Applications that talk-critical for companies seeking to automate their call centers, Speech-enabled mobile applications, Multimodal speech applications, Data-mining predictions, which uncover trends and patterns in large quantities of data, Rule-based programming for applications that can be more reactive to their environments, Multiple software agents that are able to keep remote users up to date and sample applications for Windows and the Web.

The book starts out with a one chapter overview called "Instruction" which is exactly that. It introduces the reader to Business Artificial Intelligence and lays the groundwork for the rest of the book. Immediately in chapter two the book dives into Microsoft Speech Server which is the first of four main technologies that are covered in this book. Microsoft Speech Server is covered until Chapter 5 when the book dives into Data-Mining predictions. Chapter 7 gets into Rule-based systems and Chapter 8 into building Agents.

Chapter 9 finishes off the book with an excellent overview of Artificial Intelligence. In fact, for an overview of AI and Microsoft's investment into it now and in the near future, the final chapter of the book was my favorite. Sara painted an exciting picture of what is in store, as well as opening my eyes to things that exist already. AI isn't a thing of the distant future; in fact there is an exciting array of mature technologies in use and available today.

Personally I felt that Chapter 9 would have made a better introduction chapter. I didn't feel that Artificial Intelligent or Business AI was covered in much depth in the first chapter of the book. By the time chapter 2 dove in deep into the first branch of the four topics, I still had some unanswered overview questions in my mind. After reading Chapter 9 though, the need I felt for more general information was met.

Now with Microsoft Speech server, applications that can talk and interact intelligently with a user is not only possible, it's relatively easy and affordable, even for the small business. Developers can create powerful, intelligent applications that are specific to their business. You can create fully database-driven talking applications that understand speech, talk back (not like a rebellious 15-year-old) and respond differently to each unique situation. This can be used for a telephone application, someone sitting in front of a dumb terminal with audio capability or for a fully configured computer application. Dream big, the options are endless, the solutions are within reach.

Running reports against data has been common for decades, but consider intelligent agents that will dig, analyze, determine a new direction to dig by itself, and return relevant patterns and trends in the data that were never discovered before. Sara covers this very topic with theory, code examples, scenarios and clear and precise explanations.

Agents that self perpetuate, learn their new environment and respond accordingly are the way of the future. The most obvious and painfully in-your-face examples are malicious worms and spyware applications. Worms lodge themselves in an environment, take advantage of their new home by finding important information like a list of emails addresses, and then they spread automatically, continuing this vicious cycle. Spyware agents also install themselves in an environment and start interacting with it to get information to send back to their creator. Now, consider the endless possibilities where Agents can be used for good, and are in use today. The author covers this very topic.

I wouldn't say this book is a general overview of Business Intelligent Design, but rather a specific look at four major technologies and a few minor technologies. The Microsoft products covered are Microsoft Visual Studio.Net, Microsoft Speech Server and SASDK, Microsoft SQL Server, Online Analytical Processing (OLAP), BizTalk Server, Microsoft Agent, Background Intelligent Transfer Service (BITS) and I'm sure a couple other smaller technologies that I didn't list. In addition to these, Sara briefly covers SQL Server 2005, Analysis Services 2005, and Longhorn with Avalon, Indigo, and WinFS.

One of the characteristics of a good technical book is making the complex subjects sound simple. The author has done a tremendous job of that in this book. The range of topics that she covers at first glance seems complex, but at no point does she leave the reader overwhelmed. At the same time she doesn't over explain or drag on needlessly.

This book is about the IA (Intelligent Applications) part of AI (Artificial Intelligence). It focuses on Microsoft solutions for Speech solutions, Agents, Data Mining and Rule-Based Systems, and does a great job of it."

You can purchase Building Intelligent .NET Applications from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page.

8 of 213 comments (clear)

  1. Turing Test Time by slashbob22 · · Score: 1, Interesting

    A turing test will need to be completed of course. Please compare with a control sample..

    --
    Proof by very large bribes. QED.
  2. I'm a bit mystified here... by Da_Biz · · Score: 3, Interesting

    I work as a business systems analyst, and I'm curious: how exactly does the data mining functionality described here compare with what would be available using a J2EE/Websphere environment?

    Did M$ create some libraries specifically to support AI-esque functions, or is this book specifically about how to use .Net to support AI initiatives?

  3. Re:Slashdot is broken by SuperFes · · Score: 2, Interesting

    Next we'll have "Stable" and any product from Microsoft.

    I must say, the original idea behind .NET and its interoperability was something of a good idea, but for the life me and all the development I have ever done, I can't think of many times I would use code from one project in another project save simple basic functions, as either project didn't have anything to do with the other.

    So it just seems to me that the end result is sort of a waste of time, there's almost nothing you can or do port towards different applications.

    Except to bloat and slow down your applications that is, remember kids, reducing languages to the lowest level a computer can understand it can speed up your applications 100s of times over using high level languages, especially those associated with the usual Microsoft bloat. (Not that Microsoft is the only company guilty of bloatware, take a look at Adobe or HP these days)

    --
    Not today, I've another pair of pants to deal with...
  4. I read that book in August by Anonymous Coward · · Score: 2, Interesting

    From what I remember, the book was nothing more than PR for a few libraries (such as a speech API only available in web projects) accessible from .Net. There was nothing insightful about AI for anyone with a CS background.

  5. Re:Slashdot is broken by plover · · Score: 5, Interesting
    Well, there's bloat and then there's bloat. And there's speed, and then there's speed.

    A .NET app is "compiled" to MSIL, the intermediate token language common to .NET (comparable to java bytecode.) Tokens can be smaller than their machine language counterparts simply because they can be used to represent more complex ideas. And, as in java, the .NET libraries are quite extensive, encapsulating lots of functionality available to your application by reference. So MSIL should theoretically be smaller than a .EXE representing the same program, meaning it's not as bloated.

    But then there's the 30MB distro of the runtime engine. And it has something like a 10MB footprint on your local machine's RAM, not counting your application. So there's your bloat.

    As for speed, the runtime environment is smart. When you install it, it looks around your box and says "Hey, you have an Athlon64 4000+, I have all these optimized instructions here for doing for loops, while statements, etc." So each machine has its own unique runtime environment that is optimized for its CPU, drive resources, etc. The app developer doesn't have to ship "lowest common denominator 80386 code." And he doesn't have to ship "fat binaries" to send optimized code containing the differences between Pentiums, Xeons, or Athlons. The code your machine ultimately executes is going to be very close to optimal for your equipment.

    But then again, running a just-in-time compiler means that every single time your application loads up, it's going to dog it until everything's been compiled. JIT is fine for long running apps, but sucks for the transient jobs. Plus, with a giant RAM footprint comes giant amounts of swapping. No matter what you do on a box, it's always slower when it has to swap in some RAM first.

    So, is .NET "bloated" or "slow"? I think that decision hinges more on your application and intended usage.

    --
    John
  6. Re:Book Already Reviewed on Slashdot, Not That Gre by MythMoth · · Score: 2, Interesting

    Do Slashdot reviews ever disparage the books under scrutiny? I've never seen one that did. I'd be curious to know if that's a matter of editorial policy from the /. team, or if it's actually just that they don't get many negative reviews...?

    If it's the latter, I have a few books on the shelf of shame that deserve a basting.

    --
    --- These are not words: wierd, genious, rediculous
  7. Re:I thought there might actually be some discussi by BRSQUIRRL · · Score: 2, Interesting

    VS.NET does try to do as much as possible for you so that you don't go crazy performing the mind-numbing, repetitive tasks that are part of most development jobs. However, I don't think that this is an excuse to not understand what is really happening behind the scenes when you use VS. I don't think Microsoft feels this way either.

    Programming IS hard and requires a lot of knowledge. I personally think that all .NET developers should start by learning how to build applications with a text editor and the command-line compilers that come with the .NET SDK, but I don't think Microsoft could (or should) force people to learn that way.

    Sure, there are crappy developers out there who don't understand how .NET works, are only capable of drag 'n drop development, don't understand the concept of descriptive naming practices for GUI controls (the "TextBox1" problem), variables, functions, etc. but that doesn't mean that Microsoft should deliberately NOT produce tools that make development easier or impose artificial barriers of entry into the field.

  8. Re:I thought there might actually be some discussi by greythax · · Score: 2, Interesting

    The only problem that I have with .Net, and mostly just VS.Net, is that it tries to do everything for you, by holding your hand, and letting you drag and drop to do everything. But, then, it doesn't hold your hand enough, and every text box ends up with a name like textbox1, or something like that.

    I am curious, do you have the same problem with eclipse?

    Then if all someone knows how to do is drag and drop, which is a good portion of .Net programmers...

    Ok, since we are gonna pull out unqualified statements, allow me to inject my own personal experience. My job exposes me to quite a few .net, java, and perl/php developers. I can not count the number of perl scripts I have run accross with idiotic variable names, like a or qx. Additionally, I have seen volumes of cargo code that is about 20 lines longer than it needed to be. However, much of the .net code I have run across has been pretty darn nice. My personal oppinion of this is one of scope. Despite the drag and drop potential of VS.net, it will only take you so far. Many buisness apps that get built with a RAD tend to get very big very quick. Help desk software with thousands of lines seems to be in every company I have come in contact with. In my personal experience, more .net coders seem to be well trained and well bloodied than the scripters of this world. In fact, get a catalog from a major training vendor and see how many microsoft programing courses they offer in comparison to java/perl/whatever. Also, do try to remember that these are the same people who had 4 years of java in school. When you talk about the .net coders, you ARE talking about the java coders.