A self-taught C++ programmer (did I infer correctly which language?) is attempting to build an AI in Dwarf Fortress. I cannot help but give this my fullest support. Don't listen to the nay-sayers. Thinking outside of the box will be necessary for this project, and they simply do not wish to. Luckily, most of Bay12 is willing to. That's why we play the game in the first place.
The speed at which this thing runs is not an important issue right now. Just getting the thing to work should be and is the first and foremost goal. Once it works, then optimizations can be considered.
Don't let roadblocks get in your way. Though they may seem impossible to overcome now, if you keep trying, eventually you will succeed. And, the more problems you solve, the better you get at solving them. Each setback will seem less major than the last. Quitting is for elves.
When life gives you lemons, don't make lemonade. Make life take the lemons back! Get mad! We don't want your damn lemons! What are we supposed to do with these?! Demand to see life's manager! Make life rue the day it thought it could give Bay12ers lemons! Do you know who we are? We're the maniacs who are gonna burn your house down! With the lemons! We're gonna get out engineers to invent a combustible lemon that burns your house down!
C++, yes. I've read C++ Primer Plus I think it's called and done all the little projects on Visual Studio.
Quite honestly though, I haven't needed to use ANY of the things I learned from that book. I'm really not sure that knowing a program language of any kind can help you with Dwarfputing. You don't need to know what an AND is to know that power will only pass through 2 gears if both are on or any of that sort of logic. Really the only thing I learned from it that I can put to use in DF is how binary works and the different ways you can manipulate binary sequences like bitshifting to serve your purpose.
If any knowledge outside DF can help with Dwarfputing it's probably computer engineering. Knowing how RAM, cashes, registers and CPUs work, that's information that will help in making efficient designs. With the simplicity of gears, pressure plates and levers, almost everyone on this forum is verse in the dwarven programming language. It's the physical shit that leads to "Fuck it" moments. You know?
I'm definately trying to optimize this as I go along, but yeah, speed isn't a big issue so long as FPS doesn't get to unbearable levels. If it takes a minute real time for the A.I. to respond, i'll just be happy that it responded at all.
Back on the subject of the project, i'm going to run a few more tests on the advancer. I don't want this built with all the hundreds of linkages set only to find out that there's a 1 in 10 chance something will happen out of order and mess everything up. After that I want to look into backspacing. I haven't gone through it, but i'm hoping that with some additional linkages I can reverse the advancement and reset the previous tile.