기타

의사코드(pseudocode)란?

참깨빵위에참깨빵_ 2021. 6. 18. 23:36
728x90
반응형

이번 포스팅에서 설명할 키워드는 의사코드(pseudocode, 슈도코드)다. '의사'와 '코드'라는 2개 단어가 합쳐진 말인데 '의사'의 사전적 정의는 검색한 결과 나오지 않는다. 대신 의사코드의 사전적 정의가 있으니 그 뜻을 적어보면 아래와 같다.

의사코드 : 프로그램을 작성할 때 각 모듈이 작동하는 논리를 표현하기 위한 언어. 다른 프로그램 개발자나 이용자에게 모듈이 하는 일과 작동 원리 따위를 설명하는 데 쓰인다. 실제 프로그래밍 언어처럼 컴퓨터에서 실행할 수는 없다.

프로그래밍 언어처럼 컴퓨터에서 실행할 수는 없지만, 프로그램이 어떻게 돌아가는지를 설명하는 언어라는 것 같다. 다른 개발자와 이용자 모두에게 설명해야 하니 한글 또는 영어를 써서 코드처럼 보이도록 한 유사 코드이지 않을까 싶다. 이렇게 생각한 이유는 의사코드를 구글에 검색하면 아래와 같은 이미지들이 많이 나온다.

좀 더 정확한 설명은 없는지 위키피디아를 확인해봤다.

의사코드는 알고리즘 또는 다른 시스템의 단계에 대한 일반 언어 설명이다. 의사 코드는 종종 일반 프로그래밍 언어의 구조적 규칙을 사용하지만 기계 읽기보다는 사람이 읽기 위한 것이다. 일반적으로 변수 선언 및 언어별 코드와 같이 알고리즘의 세계 이해에 필수적인 세부 정보는 생략한다...(중략)...의사 코드를 쓰는 목적은 사람들이 기존의 프로그래밍 언어 코드보다 이해하기 쉽고 알고리즘 핵심 원칙에 대한 효율적이고 환경 독립적인 설명이라는 것이다. 일반적으로 교과서, 과학 출판물에서 알고리즘을 문서화하고 소프트웨어 및 기타 알고리즘을 계획하는 데 사용된다. 의사 코드의 프로그램은 실행 가능한 프로그램이 아니기 때문에 의사코드 구문에 대한 광범위한 표준은 없지만 특정 제한된 표준이 존재한다.(의사코드는 일반적으로 특정 언어의 구문 규칙을 따르지 않는다) 의사코드는 오류없이 컴파일할 수 있는 스켈레톤 프로그램과 유사하다. 순서도, drakon-charts, UML(Unified Modeling Language) 차트는 의사코드에 대한 그래픽 대안으로 생각할 수 있지만 더 많은 종이가 필요하다...(중략)...

위에서 말한대로, 의사코드를 쓰는 목적은 사람들이 알고리즘, 코드 따위를 이해시키기 위함이라는 걸 알 수 있다.

그래서인지 프로그래밍 언어의 구문 규칙을 따르지 않는다. 실제 코드가 아닌 사람들의 이해가 목적이기 때문인 것 같다.

코드를 모르는 사람들도 이해할 수 있는 문서라면 주석으로 활용할 가치도 있을 것 같다. 저 사람들이 이해하는 말을 개발자가 이해하지 못할 리는 없으니까.

 

그럼 의사코드는 어떻게 작성할까? 정형화된 틀은 없다더라도 먼저 써본 사람들이 제시한 의견같은 게 있을 것이다. 아니면 다른 설명이라던가...그래서 한번 찾아봤다.

https://medium.com/djangogirlsseoul-codecamp/%EC%9D%98%EC%82%AC%EC%BD%94%EB%93%9C-pseudo-code-%EB%9E%80-d892a3479b1d

 

의사코드(pseudo-code)란?

의사코드(pseudo-code)란 무엇인가요?

medium.com

왜 의사코드를 써야 하는가?

- 의사코드는 코딩하기 전 사고를 명확히 정립하게 해서 프로그램 설계하는데 도움이 된다. 단순히 소스코드를 입력하는 것보다 함수(function) 프로그램을 만들 때 많은 시간을 낭비할 수 있다. 10분 정도 각 풀이법의 장단점을 보면서 의사코드를 작성하면 이후 디버깅 및 코드를 재분해하는데 걸리는 시간을 단축할 수 있다.

- 코드 리뷰가 쉬워진다. 의사코드로 코드 실행없이 상세 설계를 검토할 수 있다. 의사코드는 하위 설계 단계의 프로그램을 쉽게 검토할 수 있어, 작성된 프로그램의 검토 시간을 줄일 수 있다.

- 코드 수정에 용이하다. 일부 의사코드 몇 줄을 수정하는 건 한 페이지 전체의 코드를 수정하는 것보다 쉽다. 소프트웨어에 큰 물리적 변화를 주는 건 아니지만, 수정이 거의 필요없는 제품을 개선할 경우 쓰이는 일반적인 방법이다. 성공적인 프로젝트를 만들려면 최소한의 노력으로 고칠 수 있는 단계(least-value stage)에서 오류를 잡는 게 매우 중요하다. 나중에 코딩, 테스트, 디버깅 단계에서 작업하는 것보다 의사코드 설계 단계에서 미리 오류를 수정하는 것이 경제적이다.

- 주석 작성에 대한 부담을 덜어준다. 보통 코딩 후 코드에 대한 부가적인 설명 내용을 쓰는데, 의사코드를 쓰면 의사코드 서술 내용 자체가 주석이 된다. 그리고 설계 문서보다 유지보수가 쉽다. 코드와 분리된 채로 설계문서를 쓴다면 어떤 부분에 수정변동이 있을 시 모두 일관성이 없어지지만, 의사코드는 코드 안에 작성된다. 때문에 주석이 계속 추가되며 의사코드 설계 작성이 정교해질 수 있다.

https://economictimes.indiatimes.com/definition/pseudocode

 

What is Pseudocode? Definition of Pseudocode, Pseudocode Meaning - The Economic Times

Pseudocode definition - What is meant by the term Pseudocode ? meaning of IPO, Definition of Pseudocode on The Economic Times.

economictimes.indiatimes.com

의사 코드는 엄격한 프로그래밍 언어 구문이나 기본 기술 고려사항이 필요없는 비공식적 프로그래밍 설명 방법이다. 프로그램의 개요 또는 초안을 작성할 때 쓰인다. 의사 코드는 프로그램의 흐름을 요약하지만 기본 세부 정보는 제외한다...(중략)...의사 코드를 쓰는 목적은 알고리즘의 효율적 핵심 원칙이다. 실제 코딩이 이뤄지기 전에 프로그램의 구조를 스케치하는 알고리즘 계획에 쓰인다.

https://www.geeksforgeeks.org/how-to-write-a-pseudo-code/

 

How to write a Pseudo Code? - GeeksforGeeks

A Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming articles, quizzes and practice/competitive programming/company interview Questions.

www.geeksforgeeks.org

의사 코드는 프로그래밍 및 알고리즘 기반 분야에서 자주 쓰이는 용어다. 개발자가 알고리즘의 구현을 나타낼 수 있도록 하는 방법론이다. 알고리즘의 완성된 표현이라고 할 수 있다. 종종 알고리즘은 프로그래밍 배경이나 지식에 상관없이 개발자가 해석할 수 있으므로 의사 코드의 도움으로 표현된다...(중략)...의사 코드는 일반 영어로 작성된 주석 및 정보 텍스트 형태로 알고리즘을 구현한 것이다. 프로그래밍 언어와 같은 구문이 없으므로 컴퓨터에서 컴파일하거나 해석(interpreted)할 수 없다. 의사 코드의 주 목표는 프로그램의 각 라인이 정확히 뭘 해야 하는지 설명하는 것이므로, 개발자가 코드 구성을 더 쉽게 수행할 수 있다.

의사 코드의 단점) 프로그래밍 논리를 시각적으로 표현하지 않는다.
for문의 의사코드를 작성할 때 적절한 형식이 없다.
문서 유지관리가 필요하다.
반응형