오토마타(Automaton)와 머신(Machine)
언제부턴가 오토마타라는 단어가 여기저기서 눈에 띈다. 게임 제목에서도 보이고.
보통 우리나라에서 오토마타라고 하면, 단수형인 오토마톤(Automaton)을 입에 더 잘 붙는 복수형으로 그냥 부르면서 굳혀진 명칭이다.
어쨌든 용어의 뜻은 간단히 '기계' 라고 할 수 있다. 머신(Machine)과 비교했을 때,
오토마타도 기계,
머신도 기계다.
일상에서 두 단어의 역할을 명확히 구분 짓긴 어려운 것 같다. 즉, 머신 대신 오토마타를 써도 어떻게든 이해는 한다는 거지.
학문적으로는 그래도 차이가 있다.
오토마타는 입력과 입력에 따른 상태 변화, 상태가 변하면서 도출되는 출력에 중점을 두는 기계다. 즉, 외부 자극(stimulus)이 없으면 동작하지 않는 수동적인 기계다.
반면, 머신은 그야말로 '기계' 그 자체다. 범용적인 의미로 쓰인다는 것이다. 오토마타처럼 수동적인 기계든, 특별한 입력 없이도 스스로 움직이는 능동적 기계든 모두 아우를 수 있는 단어다. (튜링머신, 버철머신, 머신러닝...)
머신이 들어가면서 수동적인 의미를 가진 용어 중 대표적인 것이 스테이트 머신(state machine)인데, 바로 이 스테이트 머신과 오토마타를 동의어라고 봐도 무방할 것이다.
오토마타가 학문적으로는 중요한 용어지만, 실무에서는 (스테이트 머신이 압도적으로 많이 쓰이기 때문에)자주 접할 수 있는 단어가 아니다 보니 학교를 떠난지 오랠수록 더 생경해지는 용어다.
혹시라도 오토마타란 용어 자체에 혼란한 분이 계시다면, 컴퓨터 프로그래밍 쪽으로는 그저 둘 다 코드일 뿐이라고 생각하시면 좋을 것 같다.
두줄 요약
- 오토마타 ≒ 스테이트머신
- 둘 다 그냥 코드