Hi, I’m a Ph. D. student at MIT in programming languages.
Your choice of names suggests that you’re familiar with existing tactics languages. I don’t see anything stopping you from implementing this as a library in Ltac, the tactics language associated with Coq.
E.g.: you can write a language for creating variants of minimax algorithms, or a language for doing feature extraction for writing heuristic functions, but you wouldn’t think to write either of those unless you knew how a chess AI worked. Without knowing that those are useful things, what’s left? Abstract data types are sufficient for representing chess pieces cleanly. Maybe you’ll decide to write concrete syntax for chess positions (e.g.: write a chess move as Nx6 and have the compiler parse it properly), but, putting aside how superficial that would be, you would do that in a language with extensible syntax (e.g.: Wyvern, Coq, Common Lisp), not a special “chess language.”
The recent-ish development of probabilistic programming (hey, now there’s a family of AI languages) is instructive: first was decades of people developing probabilistic models and inference/sampling algorithms, then came the idea to create a language for probabilistic models backed by an inference engine.
Lisp used to be a very popular language for AI programming. Not because it had features that were specific to AI, but because it was general. Lisp was based on more abstract abstractions, making it easy to choose whichever special cases were most useful to you. Lisp is also more mathematical than most programming languages.
A programming language that lets you define your own functions is more powerful than one that just gives you a fixed list of predefined functions. In a world where no programming language let you define your own functions, and a special purpose chess language has predefined chess functions. Trying to predefine AI related functions to make an “AI programming language” would be hard because you wouldn’t know what to write. Noticing that on many new kinds of software project, being able to define your own functions might be useful, I would consider useful.
The goal isn’t a language specialized to AI, its one that can easily be specialized in that direction. A language closer to “executable mathematics”.
Hi, I’m a Ph. D. student at MIT in programming languages.
Your choice of names suggests that you’re familiar with existing tactics languages. I don’t see anything stopping you from implementing this as a library in Ltac, the tactics language associated with Coq.
I’m familiar with a lot of DSLs (here’s umpteen of them: https://github.com/jeanqasaur/dsl-syllabus-fall-2016/blob/master/README.md ). I’ve never heard of one designed before they had an idea what the engine would be.
E.g.: you can write a language for creating variants of minimax algorithms, or a language for doing feature extraction for writing heuristic functions, but you wouldn’t think to write either of those unless you knew how a chess AI worked. Without knowing that those are useful things, what’s left? Abstract data types are sufficient for representing chess pieces cleanly. Maybe you’ll decide to write concrete syntax for chess positions (e.g.: write a chess move as Nx6 and have the compiler parse it properly), but, putting aside how superficial that would be, you would do that in a language with extensible syntax (e.g.: Wyvern, Coq, Common Lisp), not a special “chess language.”
The recent-ish development of probabilistic programming (hey, now there’s a family of AI languages) is instructive: first was decades of people developing probabilistic models and inference/sampling algorithms, then came the idea to create a language for probabilistic models backed by an inference engine.
Lisp used to be a very popular language for AI programming. Not because it had features that were specific to AI, but because it was general. Lisp was based on more abstract abstractions, making it easy to choose whichever special cases were most useful to you. Lisp is also more mathematical than most programming languages.
A programming language that lets you define your own functions is more powerful than one that just gives you a fixed list of predefined functions. In a world where no programming language let you define your own functions, and a special purpose chess language has predefined chess functions. Trying to predefine AI related functions to make an “AI programming language” would be hard because you wouldn’t know what to write. Noticing that on many new kinds of software project, being able to define your own functions might be useful, I would consider useful.
The goal isn’t a language specialized to AI, its one that can easily be specialized in that direction. A language closer to “executable mathematics”.