自动机编程有以下的二项特征:
程式执行的时间中可以清楚划分成数个自动机的步骤(step),每一个步骤即为一个程式区段,有单一的进入点,可以是一个函数或其他程序。若有需要时,程式区段可以再依其状态的不同,划分为子区段。
不同步骤的程式区段只能透过一组清楚标示的变量交换资讯,这些变量称为状态(state),使用自动机编程的程式不能用其他不显然可见的方式标示状态,例如区域变量的数值、回传位址、程式指标的位置等。因此一程式在任二个不同时间下的差异,只有状态数值的不同,其余都相同。
自动机编程的执行过程是一个由自动机步骤形成的循环。
自动机编程中处理问题的思考方式很类似在利用图灵机、马尔可夫算法处理问题时的思考方式。