여러분이 대학전공을 하던, 부트캠프를 가던, 독학을 하던 개발을 공부하다 보면 한번쯤 pseudo code 라는것을 들어본 적이 있을 것입니다. 저같은 경우에도 개발을 배우며 pseudo code 를 마주쳤었고, 처음에는 심지어 어떻게 읽는건지부터가 고민이었던 기억이 있습니다.
그럼 이 pseudo code 가 무엇인지 차근차근 알아보겠습니다.
pseudo code란 무엇일까요? 위키피디아에서는 다음과 같이 안내하고 있습니다.
의사코드(슈도코드, pseudocode[1])는 프로그램을 작성할 때 각 모듈이 작동하는 논리를 표현하기 위한 언어이다. 특정 프로그래밍 언어의 문법에 따라 쓰인 것이 아니라, 일반적인 언어로 코드를 흉내 내어 알고리즘을 써놓은 코드를 말한다. 의사(疑似)코드는 말 그대로 흉내만 내는 코드이기 때문에, 실제적인 프로그래밍 언어로 작성된 코드처럼 컴퓨터에서 실행할 수 없으며, 특정 언어로 프로그램을 작성하기 전에 알고리즘의 모델을 대략적으로 모델링하는 데에 쓰인다.
출처 https://ko.wikipedia.org/wiki/%EC%9D%98%EC%82%AC%EC%BD%94%EB%93%9C
말이 조금 어렵게 느껴지겠지만 결국 pseudo code(의사코드) 란 사람이 보고 알고리즘, 코드 등을 이해하기 편하게 일련의 규칙에 따라 인간의 언어로 작성한 기록물이라고 볼 수 있습니다. 물론 프로그래밍 언어의 규칙을 따라 쓴것이 아니기 때문에 컴퓨터에서 실행할 수는 없습니다. 즉, 프로그램이 어떻게 돌아가는지 보여주고 설명하기 위한 인간의 언어로된 유사코드 라고 볼 수 있을것 같습니다.
pseudo의 사전적 의미를 보면 가짜라는 뜻을 가지고 있습니다.
즉 알고리즘이 수행될 내용을 인간의 언어로 간략히 설명해 놓은것을 말합니다.
그렇다면 이런 pseudo code(의사코드)를 작성하는 이유는 무엇일까요?
사실 간단한 로직이라면 의사코드를 작성하는 것에 대한 의미를 못느끼고 시간낭비라고 생각할지도 모르겠습니다. 하지만 프로젝트가 복잡해지고 크기가 커지며 어려운 기능들이 포함된다면 이야기가 달라집니다.
의사코드를 실제 코드로 변환하기 전에 전반적인 로직을 명확하게 정립하여 설계하는데 도움이 됩니다. 처음부터 실제코드를 작성하려고 하면, 작성하다가 오류를 발견하여 다시 생각하여 수정하는 등 많은 시간이 소요될 수 있습니다. 하지만 잘 정리된 의사코드를 보고 작성을 하면 이후 디버깅 및 코드 재분배 소요시간을 줄일 수 있습니다. 그리고 의사코드를 잘 정리해 두면 어떤 프로그래밍 언어로 작성하든 실제 코드로 변환하는 속도가 훨씬 빠릅니다.
의사코드로 실제 코드 작성없이 상세 설계를 검토할 수 있습니다. 종종 개발자들은 다양한 분야의 비즈니스 파트너들과 일합니다. 이럴 때, 의사코드를 사용하여 코드의 매커니즘을 설명하면 의사소통이 더 쉽고 효율적으로 이루어질 수 있습니다.
성공적인 프로젝트를 위해서는 쉽게 수정이 가능한단계(least-value stage)에서 미리 수정하는것이 중요합니다. 의사코드는 사람이 읽을 수 있는 형식으로 작성되기 때문에 수정하고 버그를 발견하는것이 더 쉽다는것을 보았을 때 least-value stage = psuedo code 라고 볼 수 있습니다. 이미 구현이 많이 된 상태에서 수정을 하려고 한다면 다른 곳에 줄 수 있는 영향도나 다양한 고려사항들로 인해 여간 힘들어지는것이 아니기 때문입니다. 그래서 실제 코드를 테스트, 디버깅 및 수정하는 것보다 의사 코드로 하는것이 더 효율적으로 버그 감지 및 수정이 가능합니다.
문서화는 좋은 프로젝트를 위한 필수적인 부분이지만 문서화를 시작하는것은 쉬운 일은 아닙니다. 그리고 코딩 후 코드에 대한 부가적인 설명을 주석으로 작성하는데, 이 주석도 나중에 쓰려고 하면 쉽지 않습니다. 하지만 의사코드를 작성하면 이 내용자체가 주석이 되기도 하고 문서의 기반이 될 수 있습니다.
아이디어에서 순서도, 코드로 다이렉트로 진행하는것이 항상 순조롭게 이루어지지는 않습니다. 여기에 의사코드가 있다면 서로 다른 단계 사이의 중간 다리역할을 하며 단계들의 진행을 간단하게 만드는 방법을 제시해줄 수 있습니다.
사실 의사코드는 프로그래밍 언어처럼 엄격한 규칙이나 고려사항이 없는 자유로운 설명 방법 중 하나입니다. 그래서 프로그램의 개요 및 초안을 작성할 때 주로 쓰입니다. 그래서 반드시 따라야 할 규칙은 없지만 다음과 같은 항목들을 가이드로 생각하고 작성하면 됩니다.
그럼 영어로 자주 쓰이는 단어를 구조에 따라 보겠습니다.
출처 https://builtin.com/data-science/pseudocode
위에서 언급했던 방식대로 FOR와 WHILE문 같은 문법들은 끝에 ENDFOR, ENDWHILE 같이 END를 접두어로 붙여 마지막을 알려주고 있습니다.
그렇다면 이 단어들을 이용해 간단히 의사코드를 작성해보겠습니다.
Exception을 처리하는 것을 예로 들어보겠습니다.
BEGIN
statements
EXCEPTION
WHEN exception
statements to handle the exception
WHEN another exception
statements to handel the exception
END
위와 같은 형식으로 작성한것을 바탕으로 실제 코드를 작성한다면 더욱 편하게 작성할 수 있을 것입니다.
의사코드는 개발자 커뮤니티 내에서 다소 과소평가를 받고 활용도가 낮다고 많이들 이야기하지만, 실제코드를 간결하게 하고 아이디어를 구현하는 과정에서 큰차이를 만들 수 있는 좋은 도구가 될 수 있습니다.
https://42kchoi.tistory.com/114
https://onlyfor-me-blog.tistory.com/339
https://builtin.com/data-science/pseudocode