Review:Developing Intelligent Agents for Distributed Systems 37
Developing Intelligent Agents for Distributed Systems | |
author | Michael Knapik and Jay Johnson |
pages | |
publisher | McGraw-Hill |
rating | 6 |
reviewer | Sam Mulder |
ISBN | |
summary | This is a high level overview of intelligent agents that is suitable for someone getting started in the field. |
The Scenario
Knapik and Johnson attempt to provide an overview on the field of intelligent agents. They claim to cover "virtually all aspects of intelligent agent technology." They do cover a wide variety of topics such as object orientation in at least enough detail to get started. Other areas such as artificial intelligence are just too broad for them to discuss at any useful level.
What's Bad?
The main problem that I had with this book was that it tried to take on too much. While trying to cover every aspect involved in developing agents, it ends up covering none of them very well. Instead of detailed coverage of any subject, we get a brief introduction to a wide spread of subjects and pointers for further information.Another thing that I found annoying is the authors' exuberance for Smalltalk and Java and their downplaying the power of C++. They seem to be under the impression that C++ is dead and obsolete. They also completely fail to mention Perl. This is curious considering the power of Perl for these sorts of applications. I suppose they don't like it because they are trying to develop a pure object oriented system but it is by far the easiest way to rip apart HTML documents. While Java may be the language of the future, I think C++ with maybe some Perl tools provides the best platform for agent development today.
What's Good?
The huge range of topics covered in this book is both a strength and a weakness. If you want to get a very general overview of many of these areas, it would be much cheaper to buy and read this book than a dozen books covering them in detail. This book would probably be good to give a manager or non-programmer when trying to explain what an agent is and what technologies are used to develop them.In addition, the discussion of agent architectures is somewhat interesting and useful. I haven't seen many books cover this stuff very well. Several different organizational possibilities are presented with advantages and disadvantages. I found some of this to be rather shallow and commonsensical but I suppose it would be useful to someone with no knowledge of agents.
So What's In It For Me?
If you are looking for a good overview of a wide range of fields involved in the development of intelligent agents, this book may be for you. It introduces artificial intelligence, fuzzy logic, object orientation, distributed computing, agent architecture, and several programming languages. Unfortunately, to actually start writing agents, you will need to read separate books on most of these topics. It does give you a starting place and some ideas about the approaches that others are trying. If you are an experienced programmer looking to start into agents, you will need to skip over large sections (like the introduction to object oriented programming) to keep from being bored. The sections on agent architecture are the best and are probably worth reading if you are trying to get into the field. Overall though, I found this book fairly disappointing. In the authors' defense, this is a large subject that would be difficult to cover with the wide scope that they are attempting. I think it is better left to books specializing on more manageable sub-areas.Purchase this book over at Computer Literacy, and help Slashdot out.
Table of Contents
- Introduction
- From Artificial Intelligence Comes Intelligent Agents
- Converging Technologies that Facilitate and Enable Agents
- Agent-Enabling Infrastructures
- Agent Architectures
- Agent Design Considerations
- Developing Intelligent Agents Now
- Agent Applications
- Agent Futures
What are Intelligent Agents? (Score:1)
We use intelligent agents in modeling problems and they simulate people. They are programmed with relatively simple rules and they interact with each other and sometimes learn (which would make them adaptive intelligent agents).
Forget about Objective C. (Score:1)
Forget about Objective C. (Score:1)
If Swarm were ported to C++ and were allowed some kind of i-o with a database it might actually become an application that people used to solve real problems using real data. Until that time it will remain a strictly "academic" application.
Java... don't believe the hype (Score:1)
The lack of features in Java makes programming unneccessary complicated (at least for people who use it >40hrs/week, if you want to write 1000 line programs your needs will be different).
I don't have the any practical experience with Dylan, but after reading the Dylan Language I had the impression that it was not very suited for designing big programs. I don't like its hybrid-oop concept (seperating methods from objects), it is even worse than Java's hybrid concept, and I cannot imagine how to design programs in a object-oriented way. It feels more like a functional language with object-oriented structures, and I don't like functional programming.
Java is definatly a better choice... (Score:1)
Perhaps most important, agents fit very, very well into the whole OOP idea (one agent = one object), and Perl's OOP capabilities suck by the way.
Java FUD (Score:1)
Blatant plug: ObjectSpace Voyager (Score:1)
Agent.of( myObject ).moveTo( remoteHost, method );
Voyager will move the agent to remoteHost and execute the given method upon arrival.
Voyager Core Technology is free to download/use. Check out http://www.objectspace.com for more.
And no, it doesn't come with source code, but it's still a cool product. And they don't pay me to say that
Not my favourite review (Score:1)
Since when do intelligent agents rip apart HTML documents ? Come to think of it, what does the reviewer think intelligent agents are ?
My experience is that 'agent' tends to refer to programs given an 'AI-type' task by a user, which they then perform, possibly by moving themselves over the network.
I think the whole idea is a bit naff - thats probably why it is hard to define, but I certianly don't think code examples in C++ or Perl are a good idea. They are hard to read, hard to translate into other languages and non-portable.
PS. Smalltalk is cool
OK, Shameless Plug Here... (Score:1)
These are my friends, and my old place of work, so...
If you want the definative place to see research on Agents and related technologies, see the M.I.T. Media Lab [mit.edu].
Specifically, the following three groups:
C++ generics (Score:1)
Smalltalk does not need generics because everything is generic! So what if Smalltalk is dynamically typed? It may be SLOW, but dynamic typing allows cool stuff like interpratation and clock constucts.
--Ivan, weenie NT4 user, Jon Katz hater: bite me!
downplaying C++ (Score:1)
Follow the Black Valley Trail of Death,
MEEPT!! (Score:1)
MEEPT
C++ generics (repost with proper tags) (Score:1)
Actually my personal beef with smalltalk has nothing to do with speed. Speed is, IMHO, the most over rated and mis-optimized thing in programming. If programmers (myself included, I've been a hacker since the early days when speed mattered. Those habits die hard) paid more attention to the usability/productivity/efficiency of the system and less to how quickly routine n could run through the CPU then perhaps we would be using better designed applications that allow us to get a task done in three steps that are CPU wasteful but complete the task more quickly than 5 steps of highly optimized code.
I think as a community there is a lot of focus on the wrong issues.
Woops, I'm ranting. To get back to your point about dynamic typing.
My beef is that it turns application users into testers. The axiom 'you can't test quality into a system' is amplified by anything that takes the typing out of the language and relies more heavily on either the programmers skills or fanatical testing to find problems in the system.
Since programmers aren't smart enough to grok (in the strong sense of the word) the complexity of anything but the most trivial application the responsibility falls on the test team to provide really exceptional coverage in their tests. That never happens (see the axiom above) so the user ends up finding significant problems, often after the system has been deployed.
better? (Score:1)
http://www.cse.rmit.edu.au/~rdsek/
Especially the layer agent pattern.
More to C++ that speed (Score:1)
That isn't the only power. Two other significant ones are:
1) You can get a stable, standard compliant c++ compiler for just about any platform. Java is still an infant.
2) Java lacks any concept of genericity and Smalltalk lacks typing. I don't care to get into a fundementals of OO here since most people aren't interested, but for people who value the chance to have the compiler find many of their blunders and value the ability to express code in a generic fashion C++ is currently the only game in town.
Having said that I program in Python and Java regularly and Smalltalk with less frequency. IOW, I'm not a language bigot claiming that C++ is that ultimate hammer, but I wanted to correct the statement that the speed of a compiled language is its only advantage to using it.
Speed ain't dead yet (Score:1)
Sam
Speed ain't dead yet (duh) (Score:1)
Sam
Not my favourite review (Score:1)
I understand the authors omittance of Perl. I was just trying to point out that it could be useful for agent development today.
Sam
better? (Score:1)
For intelligent agents specifically there just aren't many good ones.
Sam
Sorry! (Score:1)
Sam
better? (Score:1)
ML (Score:1)
> I don't care to get into a fundementals of OO here since most people aren't interested, but for people who value the chance to have the compiler find many of their blunders and value the ability to express code in a generic fashion C++ is currently the only game in town.
What's bad? (Score:2)
The only power of C++ is that it runs faster since you compile directly to the native OS byte code. Other than that, it's just an imperative language with OO built on top of it.
For AI, or knowledge representation, more reflective languages like Smalltalk fare much better. AI is not rexeps, therefore why would the author use Perl? Java and many dialects of Smalltalk have builtin classes for networking, making the distrubuted part a cinch.
Smalltalkers do: [
--Ivan, weenie NT4 user, Jon Katz hater: bite me!