4 ms·
I haven't done anything with Smalltalk, so I can't comment on it. However, learning Lisp (using SICP) and Prolog are both good choices. SICP uses Scheme. It'll
by bpyne 10y ago
I haven't done anything with Smalltalk, so I can't comment on it. However, learning Lisp (using SICP) and Prolog are both good choices. SICP uses Scheme. It'll teach you how simple concepts can be composed to build any software you want. You'll come to understand how interpreters work and execution models. With Prolog, pattern matching will become a dominant way of thinking. Prolog is also fairly unique in its backtracking execution model: backtracking is "baked into" the language itself.
Later on you can utilize your knowledge of Haskell and Prolog by studying Curry, which (sort of) marries the two together.
Depending on the area of AI you choose, Lisp can be a good choice but Prolog can be as well. The class I took focused on supervised learning with support vector machines, decision trees, and neural networks. These topics use fairly advanced mathematical concepts, so the language of choice is one in which libraries exist already. We used R, which the professor uses for his research. Python is also strong with its library support.
It's a good idea for you to narrow the area of AI you want to study and then find out the language people working in that area use.
- rpazyaquian 10y agoSpeaking of SICP, which version of it is the best to dive into? I found the online version of it, but it's kinda clunky to click through. Also pretty dry.
- _ph_ 10y agoI think its totally worth buying the printed version.
- bpyne 10y agoAfter trying to read the online edition, I picked up a soft-cover version. I'll second the sentiment that it's easier (for me) to read it as a continuous read. I can see the online version being great as a reference. But, it didn't work for me.
- qwertyuiop924 10y ago>I found the online version of it, but it's kinda clunky to click through If you don't have the cash for the very expensive softcover, you can grab the unoficial epub, which is a bit nicer than the online edition. >Also pretty dry. yep. I still haven't gotten all the way through the first section. It's a tough read.
- cconroy 10y agoMinor nitpick: prolog uses unification not pattern matching which is more general because it can handle unbound variables. Major nitpick: declarative thinking becomes the dominant way of thinking not pattern matching. When you write prolog declaratively (w/o cuts at the expense of efficiency) your code can answer multiple questions/queries.
- bpyne 10y agoThanks for the clarifications. I learned Prolog over a few weeks for a class I took a year ago. It left a favorable impression on me. With respect to answering "multiple questions/queries", is it fair to draw a parallel with SQL?
- qwertyuiop924 10y agoYes, yes it is. In fact, Picolisp's builtin database uses a built in prolog dialect as its query language.
- cconroy 10y agoI don't think so. Sql is declarative though and the engine does the imperative work for you. A simple example of multiple uses: Simpsons = ['bart', 'lisa', 'homer'], member(X, Simpsons)? will do a for each over the list, with X bound to each character. and the same member definition can also be used to answer Simpsons = ['bart', 'lisa', 'homer'], member('brian griffin', Simpsons)?
- _ph_ 10y agoIf you ever want to get into object oriented programming, learning Smalltalk is the right way. It is a truly object oriented language, there are no non-object types. As it is not statically typed, you don't have to build up complex inheritance hierarchies to satisfy certain static type. It is based on message-passing, that is, you can send a message to any object type - the object then can understand it or not.