Hi Guys,

I need to create a system that can answer a question related to basic programming. It is somewhat like Artificial Intelligence.

Does anyone have ideas to how can i do it?

Thanks

Edited 5 Years Ago by pilipinas: n/a

I don't think neural networks will help with this, you are looking more for knowledge based systems. Here is an article, but it uses CLIPS as the language.

You have a lot of learning to do first, before you can even begin to start.

You haven't given much detail of what you're doing, details will, I'm sure, change the answer. Here's some suggestions.

1) If you know exactly how your reasoning is going to work, you can program up a custom solution pretty quickly. It gets faster as you do it more often! A lot of people will tell you that you need to study at length and use somebody else's tool. If you know in detail exactly what you're doing that's not particularly true.

2) If you're prepared to accept a somewhat robotic approach, where you're not sure how it works, there are tools to help. I haven't evaluated these in detail for years so I suggest looking up "Expert System Shell". Some shells used to be exceptionally good (in my view) but many force you into thinking about the situation in rather simplified ways. This might suit your needs, but I find it often makes for poor solutions.

3) If you want to go beyond the basics one way is to try it yourself, then learn about other approaches and steadily refine your code.

4) There used to be a magazine called "AI Expert" which was useful. If you can find some editions of that it might help.

5) For real systems that do important work (that is not widely understood) you need to get an understanding of how the problem is solved, from a real expert. That is somebody who performs orders of magnitude better than a help desk staffer or the average joe. They may be hard to find but are worth the effort, if it's an important job. Finding expertise can be the real job. Not the programming. It's worth giving that some real thought. (When you get a real expert beware of trying to shoe-horn how he or she thinks into boolean logic, or anything else. There's a good chance that the real thinking is more sophisticated than that, it pays to be alert and find a way to express that in code.) If this system needs to analyse code fragments it could turn out to be a very interesting project indeed. In such a case code parsers etc. may be needed. They may well take the place of a human expert in some ways. If that is the case I'd advise checking what is available in open source compilers etc, and maybe consider getting to grips with F#.

Summary:

A) If it's a quick job, not important. Get your knowledge code it up, quickly. Just do it. (It really isn't hard in many cases.)

B) If you don't want to program find a shell. Better still find several, so that you can find out for yourself where they fall short!

C) If it's important you need to get the best reasoning you can. That's the critical focus. (Once you have that you may need to write some of your own code, if the off the shelf stuff isn't right.)

Hope that helps.

(I see this is listed as C#. C# can do a great job of these systems. So can other languages, VB.NET and F# immediately come to mind in the .NET space. The ability to use assemblies originally coded in different languages can be very useful!)

Edited 5 Years Ago by Mike Gale: Add note about languages.

This article has been dead for over six months. Start a new discussion instead.