Still Confused about an A.I language

Started by
9 comments, last by solid_snake41 20 years, 11 months ago
hey guys, i am still confused wich language sould i choose for A.I : LISP or ProLog, can anyone of you give some advice? I already know other know other languages well, so ?...
Snake
Advertisement
I chose one of the languages I already know how to program in.

The language is not important. Sure some languages makes some stuff easier than others, but if it's possible to do something in one language, then its usually possible to do it in any other.

My advice to you, is to stop thinking and get programming.



ai-junkie.com

[edited by - fup on April 29, 2003 6:08:29 PM]
quote:Original post by fup
The language is not important. Sure some languages makes some stuff easier than others, but if it''s possible to do something in one language, then its usually possible to do it in any other.

This is true to a point. For example, you can do everything in C that you can do Lisp, once you have implemented a full Lisp package in C. See how easy it is!

And the same goes for Prolog. You can do everything in C that you can do in Prolog, once you have implemented Prolog in C. By the way, how many lines of code would it take to implement Prolog in C? I don''t know, but one guy implemented Prolog in Lisp and it only required 180 lines of code.

If you are happy with parallel distributed computing (see Rumelhart''s landmark book) then a language like C is fine. Anything which has you working with floating point vectors as your primary inputs and outputs is a good candidate for C.

If on the other hand, you subscribe to semantic networks, set theory, knowledge bases, and the wonderful research done by Roger Schank, then Lisp is the way to go.

_______________________________

"To understand the horse you''ll find that you''re going to be working on yourself. The horse will give you the answers and he will question you to see if you are sure or not."
- Ray Hunt, in Think Harmony With Horses

ALU - SHRDLU - WORDNET - CYC - SWALE - AM - CD - J.M. - K.S. | LANL | CAA - BCHA - AQHA - APHA - R.H. - T.D. | 395 - SPS - GORDIE - SCMA - R.M. - G.R. - V.C. - C.F.
_______________________________
"To understand the horse you'll find that you're going to be working on yourself. The horse will give you the answers and he will question you to see if you are sure or not."
- Ray Hunt, in Think Harmony With Horses
ALU - SHRDLU - WORDNET - CYC - SWALE - AM - CD - J.M. - K.S. | CAA - BCHA - AQHA - APHA - R.H. - T.D. | 395 - SPS - GORDIE - SCMA - R.M. - G.R. - V.C. - C.F.
quote:Original post by solid_snake41
hey guys, i am still confused wich language sould i choose for A.I : LISP or ProLog, can anyone of you give some advice?
I already know other know other languages well, so ?...


I would do everything in C or C++ (I myself am more of a C programmer who uses some C++ constructs). Neither Lisp nor Prolog are seriously used in any part of the game industry, virtually all of your game-related examples are going to use C or C++ , and if you wish to get a job in the industry you're going to need to know them.

All that Lisp or Prolog really give you are ease of AI constructs and a more "natural language" feel to the problem. I personally have never found that enough to use either language.

But hey, that's just my opinion. I could be...no, never mind, I'm not.....




Ferretman

ferretman@gameai.com
www.gameai.com
From the High Mountains of Colorado



[edited by - Ferretman on May 1, 2003 11:02:04 PM]

Ferretman
ferretman@gameai.com
From the High Mountains of Colorado
GameAI.Com

quote:Original post by Ferretman
I would do everything in C or C++ (I myself am more of a C programmer who uses some C++ constructs). Neither Lisp nor Prolog are seriously used in any part of the game industry

Hmmm, so you suggest that one should be a follower, and in general, subscribe to what the masses do?
quote:Original post by Ferretman
... virtually all of your game-related examples are going to use C or C++

Hmmm, so you suggest one only read, study, copy, and implement game related examnples, as opposed to those found in academia? By the time it becomes a game related example, someone else has already done it within the context of a game. That doesn't seem very interesting. Personally, I was becoming interested in neural networks back in the late '80s, after reading Rumelhart's book, and saw the potential for computer games, among other things. I don't recall any game related examples or articles at the time. Also, I became interested in erosion of fractal terrain in the late '90s, after studying Musgrave's work, at which point, I studied Howard's detachment limited model of drainage basin evolution. Again, purely academic stuff; I don't lean towards game related examples or articles.
quote:Original post by Ferretman
... and if you wish to get a job in the industry you're going to need to know them.

Hmmm. I don't recall him mentioning a need to get a job in the industry, but even so, why does knowledge of C or C++ preclude other knowledge?
quote:Original post by Ferretman
All that Lisp or Prolog really give you are ease of AI constructs and a more "natural language" feel to the problem.

Hmmm. I think they offer entirely different paradigms that don't work well at all with C/C++ thinking. One who is secure and always prefers C/C++ would in general not gravitate towards throwing out those paradigms and working from a different one. However, it is generally considered necessary to build on a meta or declaritive model to achieve greater returns with AI unless one is satisfactory with reactionary systems and/or pattern matching systems based on optimization and/or brittle rules embodied within hacked C code. Of course, that's just my opinion.
quote:Original post by Ferretman
I personally have never found that enough to use either language.

Funge used Prolog to help build rational agents based on the situation calculus. As for Lisp, to write it off in favor of C/C++ is, in my opinion, a step backwards.
quote:Original post by Ferretman
But hey, that's just my opinion. I could be...no, never mind, I'm not.....

Hmmm.

_______________________________

"To understand the horse you'll find that you're going to be working on yourself. The horse will give you the answers and he will question you to see if you are sure or not."
- Ray Hunt, in Think Harmony With Horses

ALU - SHRDLU - WORDNET - CYC - SWALE - AM - CD - J.M. - K.S. | LANL | CAA - BCHA - AQHA - APHA - R.H. - T.D. | 395 - SPS - GORDIE - SCMA - R.M. - G.R. - V.C. - C.F.

[edited by - bishop_pass on May 1, 2003 11:55:39 PM]
_______________________________
"To understand the horse you'll find that you're going to be working on yourself. The horse will give you the answers and he will question you to see if you are sure or not."
- Ray Hunt, in Think Harmony With Horses
ALU - SHRDLU - WORDNET - CYC - SWALE - AM - CD - J.M. - K.S. | CAA - BCHA - AQHA - APHA - R.H. - T.D. | 395 - SPS - GORDIE - SCMA - R.M. - G.R. - V.C. - C.F.
Following the masses does have benefits; there is a wider support network, more people you can share you work with, more possibilities for jobs, etc.

That doesn''t mean ignore other possibilities, but .. the value of it shouldn''t be ignored.

For someone starting out, approaching things from a purely academic perspective may not be that helpful. Maybe they should work on getting their feet wet first, dabbling around, before getting into the hardcore research?

Besides, you don''t have to pick a single language anyway -- and rewritting is always a possibility if you do find something you like better.

The most important part is to just get started and make some progress, whatever you are using.
quote:Hmmm, so you suggest that one should be a follower, and in general, subscribe to what the masses do?


Hmmm, I think that he's suggesting exactly what he's saying.

quote: I would do everything in C or C++ (I myself am more of a C programmer who uses some C++ constructs). Neither Lisp nor Prolog are seriously used in any part of the game industry, virtually all of your game-related examples are going to use C or C++ , and if you wish to get a job in the industry you're going to need to know them.


He is saying that neither Lisp nor Prolog are seriously used in the game industry and that *he* would use C or C++. To me that seems like practical advice; I don't see any subversive political messages. I don't see anything about follower vs. leader and "subscribing to what the masses do." But then again, I guess to be an evangelist, you have to make assumptions and inferences where there's nothing to infer. Perhaps the worst thing he did was assume that the original poster was talking about game AI. But then again, this is a game development forum, so I can understand the assumption.

Also, there is no such thing as "C/C++" C and C++ are separate languages, built upon different assumptions, and you cannot and should not speak about them as one "lanugage" when speaking of language paradigms. Referring to "C/C++ thinking" is incorrect, as both languages have different "thinking" as evidenced by the different paths the languages have taken (and will continue to take).

As for which language to learn, I would say learn both C++ and Lisp. As bishop_pass mentioned, there are some areas in which C++ or C might be easier to use, and there are others where Lisp would be far more beneficial.

Generally, functional lanugages are regarded as "easier" to use for AI because most AI algorithms are inherently operations on data, something which functional lanugages like Lisp excel at.
However, that is not to say that a language like C++, with the data structures in the STL, would be "hard" to use.

[edited by - ares32585 on May 2, 2003 2:41:00 PM]
quote:Original post by ares32585
Also, there is no such thing as "C/C++" C and C++ are separate languages, built upon different assumptions, and you cannot and should not speak about them as one "lanugage" when speaking of language paradigms. Referring to "C/C++ thinking" is incorrect, as both languages have different "thinking" as evidenced by the different paths the languages have taken (and will continue to take).

The C/C++ paradigm is in fact a paradigm, and the two languages are very similar, and both encourage the same type of thinking.

When one programs in C, they likely adopt an OOP paradigm, use static typing, compile static code, and look for pedal to the metal speed. C++ uses the exact same syntax, being primarily a superset of C, uses static typing, encourages OOP, but doesn''t enforce it. C/C++ is a set of languages (two languages, to be precise) in which one inherited its roots from the other.

To evangelize that C++ has given you a new way of thinking, different from C, is simply leading yourself to believe that C++ has broadened your potential immensely, rather than realizing that C++ has channeled/stagnated your thinking into a paradigm largely defined by C, but further funneled into a narrow straightjacket.

I don''t disrespect Ferretman''s choices in terms of what he does, but I do point out that his choices can and do influence others into following what is largely a herd mentality. Anyone is free to follow that herd, whether out of convenience, support, productivity, or whatever, but some might want to branch off differently, but if constantly confronted by those advocating a herd mentality, sometimes such aspirations become doused.
_______________________________
"To understand the horse you'll find that you're going to be working on yourself. The horse will give you the answers and he will question you to see if you are sure or not."
- Ray Hunt, in Think Harmony With Horses
ALU - SHRDLU - WORDNET - CYC - SWALE - AM - CD - J.M. - K.S. | CAA - BCHA - AQHA - APHA - R.H. - T.D. | 395 - SPS - GORDIE - SCMA - R.M. - G.R. - V.C. - C.F.
quote:Original post by cannelbrae
For someone starting out, approaching things from a purely academic perspective may not be that helpful. Maybe they should work on getting their feet wet first, dabbling around, before getting into the hardcore research?

He says he knows other languages well. Are his feet not already wet?

He expressed an interest in Lisp and Prolog. Did he ask to have C or C++ recommended to him?
_______________________________
"To understand the horse you'll find that you're going to be working on yourself. The horse will give you the answers and he will question you to see if you are sure or not."
- Ray Hunt, in Think Harmony With Horses
ALU - SHRDLU - WORDNET - CYC - SWALE - AM - CD - J.M. - K.S. | CAA - BCHA - AQHA - APHA - R.H. - T.D. | 395 - SPS - GORDIE - SCMA - R.M. - G.R. - V.C. - C.F.
bishop, my response was to your post (responding to Ferretman), not to the OP.

Note that I did not mention C or C++. I didn't mean to turn this into a language war. I was just attempting to counter a few of your points to provide a balanced view. I would suggesting considering one of the languages the OP knows, whatever it is, as a starting point.

To the OP:
What langagues do you know? What obsticles do you see to using them for AI? Wanting to learn lisp or prolog is fine, but neither is at all required for writting good game AI.

[edited by - cannelbrae on May 2, 2003 3:46:41 PM]

This topic is closed to new replies.

Advertisement