일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 이모지
- bash
- ASMR
- 코틀린
- Flutter
- Streaming
- 좋은글필사하기
- 이모지메모
- kotlin
- 벤자민플랭클린
- 넷플릭스
- 공자명언
- 명언모음
- 공부집중
- DART
- 장자명언
- 1인개발자
- 오픈소스
- Linux
- 명심보감
- Coroutine
- Firebase
- 파이썬
- 소울칼리버6
- recyclerview
- FSM
- jetpack compose
- Android
- androidx
- Freesound
Archives
- Today
- Total
Vintage appMaker의 Tech Blog
fsm-c-style- FSM을 사용하는 이유 본문
fsm-c-style- FSM을 사용하는 이유
https://github.com/VintageAppMaker/fsm-c-style-
FSM은 유한상태기계(Finite State Machine)의 약자이다.
말 자체는 어렵게 느껴지지만 목적은 “우리가 만드는 프로그램의 모든 상황과 이벤트를 하나의 Logic으로 관리하자”이다.
왜 이런 것이 필요하게 되었을까?
이유는 간단하다.
“사람이 알아보기 편하게 하기 위해서”이다.
우리가 흔히 말하는 “라면코드”로 만들지 못할 프로그램은 없다. 라면코드는 “..라면”의 뜻을 가진 if 문을 무식하게 발라대는 코드를 말한다. 그러나 라면 코드의 최강의 문제점은 프로그램의 기능이 추가되면 추가될 수록, 개발자의 고통도 추가된다는 것이다.
FSM이 주로 사용되는 곳
- 동기적 API 사용이 불가능(이벤트와 핸들러)한 “임베디드 S/W”
- 각종 통신 프로토콜 S/W
- 많은 로직이 구현되는 게임시스템
구현로직
이 예제는 FSM을 구현하는 방법에서 Table을 이용하여 Event와 State를 관리하는 방법을 설명한다.
- Table을 이용하여 Event와 State를 관리
- 각 상황에 따른 핸들러 작성
makefile
OBJECTS = main.o fsm.o main_fsm.o
SRCS = main.c fsm.c main_fsm.c
CC = gcc
CFLAGS = -g -c
TARGET =fsm
$(TARGET) : $(OBJECTS)
$(CC) -o $(TARGET) -g $(OBJECTS)
clean :
rm -f $(OBJECTS) $(TARGET)
debugging
'Source code or Tip > Others' 카테고리의 다른 글
HTML5 튜토리얼 사이트 - W3School(javascript, css, ...) (0) | 2020.09.23 |
---|---|
Online Compiler(Playground) - Kotlin, Swift, SwiftUI, Dart, Flutter (0) | 2020.09.11 |
라즈베리파이 3 – SDCard에 파일설정해서 Wifi 접속 (0) | 2020.08.07 |
java에서 fsm구현을 위해 reflection 사용 (0) | 2020.07.20 |
fsm (0) | 2020.07.20 |
Comments