문서의 임의 삭제는 제재 대상으로, 문서를 삭제하려면 삭제 토론을 진행해야 합니다. 문서 보기문서 삭제토론 의사코드 (문단 편집) == 상세 == 대부분의 프로그래밍 언어는 영어를 기반으로 하기에 영어로 작성된 의사코드는 얼핏 봐서는 실제 코드와 구별이 잘 안 된다. 그러나 변환 과정을 거쳐 컴퓨터가 읽을 수 있게 바꾸는 프로세스가 반드시 있는 [[프로그래밍 언어]]와는 달리, 의사코드는 그런 것이 존재하지 않는다. 당연히 의사코드로 작성된 코드를 컴파일러나 빌더에 넣고 백날 돌려봐야 에러만 뱉어낼 뿐 절대로 실행되지 않는다. 즉, 의사코드는 애초부터 컴퓨터가 읽을 수 없는 코드다. '가짜' 코드라는 말도 의사코드의 이러한 특징에서 비롯된 것이다. 그럼 '컴퓨터에서 작동하지도 않을 무의미한 코드를 왜 짜는가?' 하는 의문이 생길 것이다. 하지만 아무리 유능한 [[프로그래머]]라고 해도 결국은 사람이기 때문에 [[언어적 상대성|머릿속의 생각은 모국어에 묶일 수밖에 없고]], 그러한 이유로 알고리즘을 구상하는 단계에서부터 프로그래밍 언어로 생각을 하는 것은 몹시 힘들고 지치는 작업이 된다. 그렇다고 마냥 자연어로 논문 쓰듯이 코드를 늘어놓자니, 가독성도 떨어지고 코딩 단계에서 그걸 다시 번역하는 과정도 필요해진다. 의사코드는 이런 두 이질적인 언어 체계인 자연어와 프로그래밍 언어 사이를 중계하는 역할을 한다. 문장 하나 하나는 자연어에 가까운 표현을 사용하지만 그걸 실제 프로그래밍과 비슷하게 실행 순서를 명시해 나열함으로써 두 언어의 장점을 적절히 취한 것이다. 의사코드는 알고리즘을 실행 가능한 코드로 옮길 때 높은 편의성을 제공하는 한편, 알고리즘을 특정 프로그래밍 언어에 종속되지 않고 보다 일반적으로 표현할 수 있게 한다. 물론 의사코드는 이 과정에서 엄밀한 문법을 포기하기에 컴퓨터가 알아들을 수는 없게 되지만, 상술했듯이 의사코드는 컴퓨터가 아닌 사람이 보라고 만드는 것이라 이런 단점은 거의 문제가 되지 않는다. 의사코드는 프로그래머들의 협업이 필요한 프로젝트에서 프로그램 제작 과정을 준비하거나 원활한 의사소통을 위해 활용되어 왔다. 일반적인 프로그램 제작 과정을 '''고객 요구 사항→[[UML|설계도]] 작성→[[프로그래밍|프로그램 코드 작성]]→테스트→[[디버깅]]'''이라고 한다면, 여기에 의사코드를 넣은 상황은 '''고객 요구 사항→[[UML|설계도]] 작성→''의사 코드 작성''→[[프로그래밍|프로그램 코드 작성]]→테스트→[[디버깅]]''' 정도로 생각하면 된다. 단, 실제로는 의사 코드 작성은 설계 단계의 일부로 취급하는 경우가 많다. 여러 명이서 작업하는 팀 시스템의 경우 팀을 체계적으로 관리하는 곳에서는 팀 관리에 특화된 멤버들이 투입되는 경우가 많다. 이런 사람들은 프로그래밍 코드를 이해하기 위한 지식은 별로 없거나 전문 언어가 다른 경우가 잦으므로, 그들을 앞에 두고 회의를 할 때엔 의사코드로 된 내용을 첨부하는 것이 진행에 보다 유익하다. 다만 이건 개발자와 관리자의 차이를 인식하고 있는 외국에서나 그렇고 한국은 그렇지 않을 가능성이 높은데, 한국의 IT 문화에서는 몇십 년째 코드밖에 모르고 살던 코덕 개발자가 팀 관리 방법을 배우지도 않고 그대로 팀 관리자로 넘어가는 승진 시스템을 고집하는 경우가 많아 팀 관리자가 기본적인 코드도 이해 못하는 경우는 그다지 없어서이다. 또한 시간이나 일손의 부족으로 알바생을 고용할 때, 알바생이 아무리 실력이 뛰어나다 하더라도 검증되지 않은 사람을 신용하는 것은 무리가 있다. 이러한 작업 방식은 결국 버그나 보안 취약점을 발생시킬 리스크를 안고 있기 때문이다. 이를 줄이기 위해서는 이들에게 보다 구체적으로 "더도 덜도 말고 딱 이렇게만 해!"라는 식으로 지시를 명확하게 할 필요가 있다. 이때 주로 의사 코드를 사용한다. 하지만 위의 응용은 현대에 와서는 퇴색되었는데, 프로그래밍 언어의 발전으로 [[Python]]처럼 의사코드에 가까운 간략한 문법으로 실행 가능한 언어들이 있기 때문이다. 그래서 현업에서 의사코드를 사용할 경우, 회사에서 커뮤니케이션 비효율만 쓸대없이 늘어나는 경우가 늘어났다. 의사코드를 사용하면 오히려 의사코드라는 언어를 새로 배워야 하고, 문법을 사용자가 일일이 검정해야 하는데, 반대로 상용 프로그래밍 언어들은 [[컴파일러]]가 최소한의 문법 검정과 구문 분석은 해 주기 때문에 사용하기에 오히려 더 쉬운 경우가 많다. 게다가 [[언어학]]적으로는 의사코드라도 문법이 엄밀하게 정의되면 [[촘스키 계층]]에 따라 해당 문법의 구문 분석을 기계적으로 해줄 [[컴파일러]]의 존재가 자연스럽게 수반되기 때문에 위에서 말하는 "컴퓨터가 읽어낼 필요가 없는 언어"라는 구분 자체가 의미 없다. 하지만 컴퓨터에 어셈블리로 돌려야 할 이유는 없고, 문서의 표현에만 사용하면 되기 때문에 [[프로그래밍 언어]]가 아니라 [[마크업 언어]]처럼 기능할 수는 있다. 그래서 현대에 와서는 의사코드는 [[수학]]이나 [[전산학]]에서 알고리즘을 표현할 때 정도의 학술적인 용도로 축소되었다. 학술적인 용도로는 알고리즘을 최대한 추상적으로 표현하고자 하기 때문에 특정 프로그래밍 언어에 종속되려고 하지 않는 편이다. 여기에 쓰이는 의사코드는 [[수식]], [[순서도]], [[집합론]], [[논리학]] 등에서 사용되는 추상적인 기호들을 섞어서 사용해서 표현하고 의사코드를 이해하는 능력은 독자의 수학적인 백그라운드에 따르는 편이라고 볼 수 있다.저장 버튼을 클릭하면 당신이 기여한 내용을 CC-BY-NC-SA 2.0 KR으로 배포하고,기여한 문서에 대한 하이퍼링크나 URL을 이용하여 저작자 표시를 하는 것으로 충분하다는 데 동의하는 것입니다.이 동의는 철회할 수 없습니다.캡챠저장미리보기