pseudo code(의사코드)란?

홍성민·2023년 1월 5일
1

knowledge

목록 보기
1/2
post-thumbnail

🔥 Intro

여러분이 대학전공을 하던, 부트캠프를 가던, 독학을 하던 개발을 공부하다 보면 한번쯤 pseudo code 라는것을 들어본 적이 있을 것입니다. 저같은 경우에도 개발을 배우며 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의 사전적 의미를 보면 가짜라는 뜻을 가지고 있습니다.

즉 알고리즘이 수행될 내용을 인간의 언어로 간략히 설명해 놓은것을 말합니다.



🔥 psuedo code(의사코드)의 작성이유

그렇다면 이런 pseudo code(의사코드)를 작성하는 이유는 무엇일까요?
사실 간단한 로직이라면 의사코드를 작성하는 것에 대한 의미를 못느끼고 시간낭비라고 생각할지도 모르겠습니다. 하지만 프로젝트가 복잡해지고 크기가 커지며 어려운 기능들이 포함된다면 이야기가 달라집니다.


- 프로그램 설계와 코드 구성 단순화에 도움이 된다

의사코드를 실제 코드로 변환하기 전에 전반적인 로직을 명확하게 정립하여 설계하는데 도움이 됩니다. 처음부터 실제코드를 작성하려고 하면, 작성하다가 오류를 발견하여 다시 생각하여 수정하는 등 많은 시간이 소요될 수 있습니다. 하지만 잘 정리된 의사코드를 보고 작성을 하면 이후 디버깅 및 코드 재분배 소요시간을 줄일 수 있습니다. 그리고 의사코드를 잘 정리해 두면 어떤 프로그래밍 언어로 작성하든 실제 코드로 변환하는 속도가 훨씬 빠릅니다.

- 코드리뷰와 의사소통이 편해집니다

의사코드로 실제 코드 작성없이 상세 설계를 검토할 수 있습니다. 종종 개발자들은 다양한 분야의 비즈니스 파트너들과 일합니다. 이럴 때, 의사코드를 사용하여 코드의 매커니즘을 설명하면 의사소통이 더 쉽고 효율적으로 이루어질 수 있습니다.

- 빠른 버그 감지 및 수정이 가능합니다

성공적인 프로젝트를 위해서는 쉽게 수정이 가능한단계(least-value stage)에서 미리 수정하는것이 중요합니다. 의사코드는 사람이 읽을 수 있는 형식으로 작성되기 때문에 수정하고 버그를 발견하는것이 더 쉽다는것을 보았을 때 least-value stage = psuedo code 라고 볼 수 있습니다. 이미 구현이 많이 된 상태에서 수정을 하려고 한다면 다른 곳에 줄 수 있는 영향도나 다양한 고려사항들로 인해 여간 힘들어지는것이 아니기 때문입니다. 그래서 실제 코드를 테스트, 디버깅 및 수정하는 것보다 의사 코드로 하는것이 더 효율적으로 버그 감지 및 수정이 가능합니다.

- 문서화 및 주석 작성에 유용합니다

문서화는 좋은 프로젝트를 위한 필수적인 부분이지만 문서화를 시작하는것은 쉬운 일은 아닙니다. 그리고 코딩 후 코드에 대한 부가적인 설명을 주석으로 작성하는데, 이 주석도 나중에 쓰려고 하면 쉽지 않습니다. 하지만 의사코드를 작성하면 이 내용자체가 주석이 되기도 하고 문서의 기반이 될 수 있습니다.

- 순서도와 코드 사이의 중간 다리 역할을 합니다

아이디어에서 순서도, 코드로 다이렉트로 진행하는것이 항상 순조롭게 이루어지지는 않습니다. 여기에 의사코드가 있다면 서로 다른 단계 사이의 중간 다리역할을 하며 단계들의 진행을 간단하게 만드는 방법을 제시해줄 수 있습니다.




🔥 psuedo code(의사코드) 작성방법


그렇다면 이 의사코드는 어떻게 작성해야 할까요?

사실 의사코드는 프로그래밍 언어처럼 엄격한 규칙이나 고려사항이 없는 자유로운 설명 방법 중 하나입니다. 그래서 프로그램의 개요 및 초안을 작성할 때 주로 쓰입니다. 그래서 반드시 따라야 할 규칙은 없지만 다음과 같은 항목들을 가이드로 생각하고 작성하면 됩니다.

  • 순서에 따라 순차적으로 작성합니다

  • 영어로 작성할 경우 항상 첫 단어를 대문자로 시작합니다

  • 한 줄에 한 문장만 작성합니다

  • 들여쓰기를 통해 계층 구조를 표시하고 가독성을 개선하며 중첩된 구조를 표시합니다

  • 반복문이나 조건문 같은 범위가 있는 문법을 사용할 때, 항상 END 키워드(ENDIF, ENDWHILE 등)를 사용하여 섹션을 종료해야합니다

  • 명령문 프로그래밍 언어를 독립적으로 유지합니다

  • 구현이 아닌 연산같은 문제나 변수들은 말로 풀어서 설명합니다
    ex) "이름 = 이름 + 성","nm = firstNm + lastNm" 대신 "이름에 성을 추가합니다."

  • 문장을 길지 않게 간단하고 간결하며 읽기 쉽게 작성합니다

  • 불필요한 내용은 무시하고 반복하지 않습니다




그럼 영어로 자주 쓰이는 단어를 구조에 따라 보겠습니다.
출처 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




위와 같은 형식으로 작성한것을 바탕으로 실제 코드를 작성한다면 더욱 편하게 작성할 수 있을 것입니다.

의사코드는 개발자 커뮤니티 내에서 다소 과소평가를 받고 활용도가 낮다고 많이들 이야기하지만, 실제코드를 간결하게 하고 아이디어를 구현하는 과정에서 큰차이를 만들 수 있는 좋은 도구가 될 수 있습니다.




🔥 REFERENCE

https://42kchoi.tistory.com/114
https://onlyfor-me-blog.tistory.com/339
https://builtin.com/data-science/pseudocode




profile
모두의개발

0개의 댓글