저도 잘쪼개고, 잘 붙이기 위해 노력합니다. 대충 이런식이네요
- 점과 선으로 그래프 구조의 논리식을 세운다
- 이 때 그래프는 프로그램이 자신을 참조하거나 입력으로 받는 람다식의 특성상 순환구조가 나타나게 된다
- 이 때 그래프의 어떤 부분은 유향 비순환이고, 이것들은 대부분 쉽게 검증할수 있다. 그렇기에 이 것들을 최대한 끼고 살아야 한다
- 클린아키텍쳐, 의존성 역전, 구상보다는 추상에 의존하기 등등 수단과 방법을 가리지않고 부분을 유향비순환으로 격리, 즉 "잘 쪼개고"를 한다
- 이때 큰 구조는 최대한 단방향 의존성을 만들어 최대한 순환참조를 배제한다. 루프는 최대한 부분구조에 둔다
- 하지만 화면에 그림을 그리는 컴퓨터 구조는 기본적으로 이미 루프이다. 계속해서 화면을 뿌리는동안 사용자 입력을 중간중간 끼워넣고 컴퓨테이션 하는 식이다. e.g. 게임 루프
- 마찮가지로 동시성을 흉내내기위한 시분할이라던지, 비동기 연산등 컴퓨터, OS, 프로그래밍 언어 런타임등도 이벤트 루프등 루프를 활용한다
- 이렇게 제공되는 환경은 어쩔 수 없으니 그 외에 순환구조를 해야만 한다면, 자료구조 자체를 불변구조로 사용해서 최대한 정보를 가역적으로 유지한다. 정보에 대한 컴퓨테이션이 특히 루프에서 비가역적일경우 디버깅은 지옥으로 빠진다. react.js, flutter, swift ui 등 많은 현대 ui 라이브러리에서 이런 방식이 사용된다