The Lounge is rated Safe For Work. If you're about to post something inappropriate for a shared office environment, then don't post it. No ads, no abuse, and no programming questions. Trolling, (political, climate, religious or whatever) will result in your account being removed.
I'm trying to come with a simple article on building state machines. I figured it wouldn't be too complicated, nor should it be since I wanted the article to be accessible to beginners.
The trouble is, I can't think of a simple example of a state machine that is real world at all, and I don't want to lead with something contrived because I also want to explain the "why" of state machines with a practical example.
This shouldn't be very complicated. I've been writing state machines for various things since the mid 1980s. In all that time I must have done something simple, especially since I was coding on a 16-bit machine back in the beginning.
I am having a slum in my motivation too... since I got stopped on my UI math problem... (like.. 3 years ago?)
Although.. I started my app recently and got a few new ideas!
But then, I started playing Assassin's Creed: Odyssey again! ^_^
I think the key here is, are there anything you want to learn?
That's what usually start the creative juice again!
Like even now, every now and then, there is a new tech that popup at work that make do some more homework. Like Blazor, Blazor is cool. Though I am holding off for the official WebAssembly release now!
Yeah I thought about learning Blazor but I have little reason to do web dev anymore, except maybe writing blazor components for other people to use.
Still, WebAssembly seems iffy to me to use for a production website, if only because I can't imagine the load times on a large blazor app given how WebAssembly works. Then again, if it's all demand loaded maybe it's not so bad, but I don't see how they can demand load parts of System.dll (or equiv) for example.
Then again, I've never used it - only read about it and have a fair understanding of the general principle, being a more refined, evolved version of web based virtual machines compared to asm.js (which I'm familiar with)
Although.. For Blazor WebAssembly they do a lot of work on trimming down everything...
And the runtime will be cached using HTML5 file access for longer persistance..
And app themselves are usually pretty small...
I guess we shall see soon, the release ETA is sometimes this month!
I've already created a lot of tools for building compiler front-ends. I even developed my own language (actually a subset of C#) for reasons. This however, would be too complicated for the examples I intend to present.
You said you were bored. Think greater! A program for generating any language! An 'inverse-parser' if you will! It could spit out anything, and each syntax could take experts hundreds of years to decipher (or you could make that your next project!)
Heh @ implementing non-finite state machines inside an LBA finite state machine AKA a computer.
I don't know if they're all contrived. I bet your JSON reader uses a state machine if it chunks (rather than reading the entire JSON stream at once) - mine is - I wrote one too because I wanted something fast for bulk processing.
Most of the FSMs I've written were for low level communications protocols (think HDLC/X.25, SDLC/SNA). Never did implement the new-fangled TCP/IP.
One interesting side-effect of implementing some of the older ones (Bisync flavours, anyone?) was proving that the protocols as documented were incomplete. They needed a catch-all state "Human intervention required".
Maybe a toy poll/response protocol? Two interacting FSMs, one for master, one for slave.
Software rusts. Simon Stephenson, ca 1994. So does this signature. me, 2012
There was a QA a while ago about 'decoding' some data - the eventual solution was proposed using a RegEx - I was in two minds about it, I personally would have used a state-machine, or maybe it was a 'borderline case' (as opposed to me, 'nut case')
a simple example of a state machine that is real world at all
Do you own a car ? Think about any car part that is based on electronics or electrical actors -> It runs a state machine. Embedded is full of state machines. Actually, state machines are the AI of embedded world.
When I hear "state machine" I think of games.
Maybe you could write something about that?
Also, don't know if I used it right, but I once used a state machine for order processing.
The order could go from "ordered" to "paid" and "paid" to shipped, but never "ordered" to "shipped", or something like that.
It was a bit more complicated than that, but it's been a while so I don't remember, but it was something like that.
That takes me back a LONG time to my student days. It was an assignment I remember, writing something exactly like this in assembly on some 8 bit processor (6809 rings a vague bell). Can't remember how, but our programs could then be loaded into a board based computer connected to a miniature elevator for everyone to have a go at defeating other people's software.
The tricky bit was deciding when to accept and when to ignore a request from a button push on a given floor or if e.g. someone presses a button to request a lift to take the up, then gets in and presses the button for a lower floor. Decisions would then be based on all the "in-lift" requests plus the "out of lift" requests plus the current direction of travel.
Surprising fun and games for such a simple system.