Do you think VB is a good language for AI? I originally did AI using mainly Lisp and C/C++ when performance was needed, but recently have been doing some VB programming.
VB has the following advantages:
1. Good debugger (essential!)
2. Good inspector (watch facility)
3. Easy syntax (Intellisense comparable to structure editors of late 80’s Lisp environments).
4. Easy to integrate with 3rd party software.
5. Compiles to fast code (CLR performance pretty good)
6. Fast development.
By the way, thanks for all the useful replies. I’ve upvoted everyone who contributed.
7
Answers
I would suggest you go with C# rather than VB.Net.
You get all the nice features that you discuss but a better (and more familiar) syntax.
Which VB are you talking about here? If you’re talking VB.NET then yes, and no.. I would suggest C# or maybe F#.. F# is a functional language and hence is generally better suited for many of the patterns you’ll be dealing with when programming AI. The newer versions of C# also have support for language features such as lambda expressions, anonymous delagates et al which may also benefit you!
1, 2, and 3 are all aspects that any sufficiently advanced IDE has, so that’s not much of an issue for most languages. As for 4, 5, and 6: Python fits 4 and 6, but not 5, as it is not very fast, though some implementations of Python do have better speed than others, depending on their configuration. (Just mentioning Python because you tagged your question with the python tag.)
If you do plan on using the .NET Framework, though, might I suggest C#? The syntax is similar to that of C and C++ (about as similar as the Java syntax is), so it’ll be more familiar to you, and it does exactly the same things that VB does (and has all the same IDE features, as they both use the Visual Studio IDE, though I suppose you could use an alternative IDE if you wished, as the VB and C# compilers actually come with the .NET Framework itself and not with Visual Studio).
When you say AI what do you mean? Its a very broad field. If you’re just skimming the basics, like guided search and simple knowledge bases then yea VB .Net may seem beneficial. But the language structure and syntax makes it very inadequate when you start to delve into theorem proving, ILP and other areas of machine learning you’ll begin to realize that language like Lisp are still being used today because they provide a more natural syntax for expressing AI concepts.
But then you go on and list stuff that most modern implementations of Common Lisp offer, especially the commercial ones.
Have you tried Common Lisp recently? What parts of VB.NET do you miss when you’re programming in CL?
It depends what you mean by “AI”.
One common meaning is just “leading edge software technology” (e.g. chess playing is as of 2010 no longer consider to be very much about artificial intelligence, just a set of basic supporting techniques, because it’s not leading edge any longer). For the leading edge stuff, the language should be chosen to suit the particular technology. Neither VB (various variants) nor C++ are likely to be good candidates then.
On the other hand, one might take AI to mean literally “artifical intelligence”, the attempt to create true AI, even if just at the level of worm or housefly intelligence. Then the main stumbling block, as noted by Scott Fahlman very very long ago (eighties? seventies?), is the ability to perform huge set intersections in huge semantic nets very rapidly, in parallel, e.g. for recognition of that dangerous animal. And since current hardware isn’t up that (the clock speed doesn’t at all compensate for the von Neumann bottleneck), except conceivably stuff used by NSA and suchlike, it’s a fight for sheer computing efficiency, which means that C++ could be a good choice for the lower levels.
Cheers & hth.,
– Alf
Doesn’t matter what language you code AI in, if that language allows you to do complex mathematics. VB.NET has the same features as C# because it uses the same framework. Accessing those parts of the framework may have different callers.
AI requires a lot of optimizations for memory and trimmed custom functions… Get familiar with Reflection namespace for Un-managed memory callers. Pointers are possible and useful in un-managed memory; VB allows for these also which is what all the C# guys fight about because they don’t know how to do it in VB. Memory / Pointer and Disc allocation is located in the Marshall Class which is an Interop Service.
http://msdn.microsoft.com/en-us/library/vstudio/system.runtime.interopservices.marshal%28v=vs.100%29.aspx
Anyone that tells you, C++ is the only way to go doesn’t understand programming or is simply a bigot that believes C++ is the only language in the world.
AI is typically defined by math delegates that are functional representations of an action; therefore if your mathematics is no good; your code will be no good.
Neural Networks doesn’t care what platform they were written in when they are assembled; they are Assembly.