컴퓨터와 관련된 수업을 듣다보시면 교수님이 goto 문에 대해서 설명해주십니다. 좀 더 자세히 이야기를 해 주시면 뵘-야코피니 정리에 대해서 자세히 말해주시거나, goto 문 안써도 프로그램 다 만들 수 있다고 간략하게 설명해주시고 넘어가십니다.
goto 문을 항상 쓰지 말아야 할까요? 바이너리 관련된 코드를 작성해보신 분이 있다면 '에휴...' 속으로 한숨을 쉬시고 아무말도 안하실 것 같습니다.
goto 문을 쓰지 말라는 것이 아니라, goto 문을 안써도 되는데 굳이 goto 문을 써가면서 codebase 을 오염시키기 때문에 쓰지말라는 의도였습니다. goto 문이 아니라, function 을 써야하는 부분에서까지요.
C, C++ 으로 쓰여진 코드를 살펴보더라도 똑같은 문법이지만 시대에 따라서 그 코드의 형식이 상이합니다. C++ 코드가 어렵다고 하는 것은, 100% 솔직하게 말해서. 그 코드가 그냥 레거시여서 그렇습니다. 정말로 잘 작성된 C++ 코드는 Python 코드로 작성된 것 보다 엄청나게 더 쉽습니다.
다시 본론으로 돌아가서, goto 문을 쓰지 말라고 하는 것은 코드베이스의 오염을 막기 위해서였습니다.
Monolithic 에서 한계를 많이 느껴서, MSA 으로 넘어갔다고 하는 말을 많이 듣습니다. 그건 위의 이야기와 같습니다. C++ 코드가 너무 어려워서 Python 으로 넘어갔다.
Monolithic 에서 새던 바가지, MSA 이라고 안새는게 아닙니다. Monolithic 에서 새던 바가지의 그 이유가, MSA 에서는 더 크리티컬하게 작동합니다.
본 코스는 "goto 문을 써야할 때만 쓰자"와 같이, "Dependency 가 필요할 때만 쓰자"을 지향합니다.
더 읽어볼거리
구조적 프로그래밍, https://en.wikipedia.org/wiki/Structured_program_theorem
MSA 안티패턴, https://www.developer.com/design/solving-microservices-anti-patterns/
nanoservices, https://medium.com/nerd-for-tech/from-monolithic-to-nanoservice-architecture-d01f35416f18