처음 프로그래밍을 배울 때, 순서도의 중요성에 대한 고견을 듣

zepinos의 이미지

짜가 프로그래머인 제가 요즘 친구에게 프로그래밍을 가르쳐주고 있습니다.

며칠을 목이 아파해가면서 열변을 토하는 도중, 오늘 아주 엄청난 일을 겪고 말았습니다.
순서도를 전혀 모르는 것이었습니다. :shock:
그리고, 순서도보다는 실제 코딩 기법에 집착을 많이 하더군요.

어떠한 문제를 해결해보라고 주었는데 전체적인 그림을 그리는 것 보다는, DB 연결 부분의 코딩이 잘 안된다고 그것만 들여다보고 있더군요. 물론 전 친구의 프로그램의 전체적인 그림이 엉망이라는 건 한 눈에 알아봤습니다.

친구는 컴퓨터공학과 4학년에 올라가는 놈입니다. 물론 하드웨어 위주가 아닌 철저한 소프트웨어 위주의 학과구요.

이럴 경우 순서도를 이용해서 전체 그림을 그리는 법(전 이 작업을 인간의 그림에서 컴퓨터의 그림으로 바꾸는 작업이라고 생각합니다)에 대해서 먼저 알려주는게 옳은 방법이 아닐까요? 아니면, 역시 코딩 기술을 먼저 알려주는 것이 좋을까요-책 한 권 줄줄 익혀나가듯-?
프로그래밍 입문자에게 해주실 고견을 경청하겠습니다. 많은 의견 부탁드리겠습니다.

LispM의 이미지

순서도는 하나의 도구일 뿐이며, 저도 순서도 그리는 방법 잊었습니다 :) (읽고 이해는 하지만 그리라고 하면 쉽게 하지 못하는 중증 단계입니다)

제 생각엔 "추상화"에 대한 이해가 필요하다고 봅니다.

가장 하이레벨에서 간략하게 프로그램을 하고 점점 로우레벨로 내려가면서 필요한 기능을 구체적으로 구현해 내면 되겠습니다. 저 같은 경우는 첫 코딩에 가상의 함수들 이름만을 나열하면서 전체 구조를 파악하면서 내려갔다 올라갔다 하면서 프로그램을 작성합니다. (계속 하이레벨과 로우레벨을 refine 해야 합니다. 문제가 명확해질수로 함수 이름이나 데이터구조, 파라미터, 아규먼트 등의 호칭, 내부 프로세스 등이 변경되야 할 필요가 생기기 때문이죠)

종종 테스트 코드를 먼저 써보는 것도 문제를 이해하는 데 큰 도움이 됩니다. 저는 스펙을 만들어서 해야 할 때 특히 이 방법을 사용합니다.

그럴듯한 책으로는 How to design programs를 추천합니다.
http://www.htdp.org/2003-09-26/Book/

http://lisp.or.kr http://lisp.kldp.org - 한국 리습 사용자 모임

다크슈테펜의 이미지

순서도에는 너무 집착할 필요는 없다고 생각합니다.
그러나 대략적인 프로그램 구조 계획은 먼저 생각하는 편이 좋을것 같습니다.그게 순서도등 아니면 자신만의 메모던 상관없지만 먼저 프로그램을 작성한다면 대략적인 개요는 정해둬야 된다고 생각합니다.그게 공적이던 아니면 사적이던 말이죠...
그냥 저같으면 아직은 초보지만 먼저 프로그램을 짜기 전에 저의 프로젝트라면 대략적인 기능이나 그런거는 먼저 생각해둡니다.순서도는 그리지는 않지만(그리는 법도 잘모릅니다.ㅋㅋㅋㅋ) 그리고 나서 살을 붙여 나갑니다.우선 코딩은 어떻게 하는 가 문법부터 안다음에는 어느정도 후에는 계획을 세워서 나가는 편이 좋을 것 같네요...
사람의 몸도 뼈가 있어야지 거기에 살이 붙듯이 프로그램도 마찬가지라고 생각합니다.

인생이란게 다 그런게 아니겠어요....? 뭘(?)
http://schutepen.egloos.com

bubicom의 이미지

순서도 이야기가 아니라, 전체적인 순서-윤곽을 그리지 않고(이해없이) 작업한다는 이야기 같습니다.

-------------------------
모든것에 감사합니다.
http://bubicom.winmir.com

bleu의 이미지

나무도 제대로 보지 못하는 분께..
숲을 보라고 강요하는건 좀 무리지 싶네요..
가끔 숲을 보고 나무를 보려는 분도 계시긴 하지만..

codebank의 이미지

세월이 흘러서 순서도의 중요성이 많이 사라진것 같습니다만 제가 생각할 때는
순서도는 상당히 중요한 부분이라고 생각합니다.
순서도를 잘만 정립해놓으면 간단한 프로그램의 경우 단한번의 디버깅없이 프로그램이
가능할 정도로 저는 순서도는 상당히 중요한 부분이라고 생각합니다.
물론 실제 프로그램을 작성할 때는 순서도를 거의 그리지 않습니다.
이유는 이미 머리속으로 그려놓고 있기 때문이죠.

프로그램을 처음 배우는 사람이라면 반드시 순서도는 배우고(차후에 써먹질 않더라도)
넘어가는게 좋다고 생각합니다.
너무 틀에 맞춰서 생각하는게 아니냐라는 생각도 들겠지만 어떤 일이든 틀없이 시작하지는
않는다고 봅니다. 천재가 아닌이상...

순서도는 프로그램의 흐름을 눈으로 볼여줄 수 있는 도구가 아닐까 생각합니다.
프로그램을 처음 배우는 사람에게 그 흐름을 직접 보여주는 것만큼 좋은 것은
없다고 생각합니다.
어느정도 익숙해지면 순서도가 떠올라서 필요없겠지만 처음 배우는 사람에게는
꼭 필요한 존재가 아닐까 생각해 봅니다.

취미로 프로그램을 배우는 사람이라면 그 사람이 원하는대로 알려주세요.
그렇지 않고 직업으로 생각을 하는 사람이라면 기초부터 가르쳐주는게 좋습니다.
가끔 코딩이 끝나면 플로우챠트를 원하는 기업도 있으니까요.

------------------------------
좋은 하루 되세요.

ydhoney의 이미지

OOP의 UML과는 별개로 구조적 프로그래밍에서의 순서도는 굉장히 중요하다고 생각하는 사람입니다만..

적어도 프로그래밍 초기에 순서도를 그려버릇하지 않으면 말로만 구조적이라는 단어 자체가 아연실색한 프로그래밍을 하게 되지 않나 합니다.

실제로 pseudo코드를 짜거나 순서도를 그리지 않고, 아니 적어도 어떻게 짤지 구조조차도 생ㅤㄱㅏㄲ해보지 않고 구조적 프로그래밍을 하는 사람은 둘중의 하나가 아닌가요?

천재..혹은 바보..

joohyun의 이미지

순서도.. 고등학교 과정에서도 배우죠...

어떤 물건을 만들때 설계도를 그리듯이
소프트웨어를 만들때도 설계도가 필요 하다고 생각합니다.
그 설계도에 해당하는것이 바로 대표적으로 순서도 가 아닐까 하는데요..

체계적이고 효율적인 프로그램을 위해서 무조건 바로 코딩으로 들어가는것 보다는 어떻게 문제를 처리할것인지 순서도까지는 몰라도 대략적인 그림이라도 그려보고 시작하는게 중요하다고 생각합니다..
많이 그리다 보면 생각하는것도 체계적이고 코딩에 적합한 생각을할수있게 되겠죠..ㅎㅎ
그런 대략적인 구상에서
일반적이고 대표적이며 표준화되었다고 할만한것이 순서도 구요..

결론은... ; 실무에 적용하든 안하는 자주쓰던말던의 문제를 떠나서 순서도 정도는 기본적으로 그릴줄 알아야되지않겠나.. 라는 생각입니다.

재수생
전주현

vhrvnd723의 이미지

흐름을 파악하는 방법으로 간단한 도형을 가려쳐주시면

큰 도움이 돼지 않을까요...?

글보다는 그림이 편하니까 ^^:;

/ㅡ0-/ 우오~

lifthrasiir의 이미지

순서도든 UML이든 사실 도구에 불과하지만... 아무튼 코딩 전에 계획을 세워야 한다는 것에는 동의합니다. (pseudo-code도 한 방법이 되겠지요...)

- 토끼군

peccavi의 이미지

좀 오래된 글타래이지만 질문좀 드리겠습니다..

일반적인 하향식 순서도 말고, MS윈도같은 이벤트 기반의 응용프로그램은 순서도를 어떻게 그려야 하나요?

좋은 예제가 있으면 소개좀 부탁드립니다..

요즘 개발방법론에 관한 책을 몇권 읽다보니, 갑자기 그림좀 그리겠다고 난립니다.. :oops:

----
jai guru deva om...

litdream의 이미지

저는 UML 을 잘 모르는대신, 제가 나름대로 그림을 그리는 스타일인데요..
이벤트에 관련된 부분은 UML 의 Use Case 다이어그램 비슷한걸 제 나름대로
그립니다.

여러장의 종이에, 기본적인 케이스를 먼저 그리면서, 종이에 번호를 붙입니다.
점점 케이스가 복잡해지면서, 번호체계도 점점 복잡해지고,
그러다 보면, 같은 케이스로 묶일수 있는것도 나오고,
복잡한 경우를 생각할때 위에서 빠진부분이 있는것들도 나오고..
그런식이죠.

지난번 프로젝트는 가희 그림을 100장 가까이 그렸던 기억이 납니다만,
덕분에, ROCK SOLID 하게 자아알~ 돌아갑니다.

삽질의 대마왕...

acidd15의 이미지

순서도...흔히 플로우 챠트를 그린다고 합니다.

개발을 할때 플로우 챠트라는걸 그리게 되면 여러모로 이득이 있습니다.다만 익숙하지 않기 때문에 귀찮은 일 정도로 취급되고 있을뿐이죠.

플로우를 그리게 되면 개발시에 발생할수 있는 문제점이나 혹은 잊었던 문제들을 찾게 됩니다.그리고 완성된 플로우를 가지고 고객과 직접 커뮤니케이션 하게 되면 고객에게서 무엇은 잘되고 못됐는지를 아주쉽게 찾아낼수 있게 되구요.아무래도 백번 말로 설명하는것보다는 어떤식으로 돌아가는지 직접 고객에게 한번 보여 주는게 낫겠죠..(윗분 말씀 마따나 글보다는 그림이 편하니까 ^^)그 과정에서 고객은 "어? 여기서는 이렇게 되면 안되고 저렇게 되야해" 라고 바로 지적할수 있을테니까요.

그렇게 수정된 플로우를 가지고 세부적(함수수준까지)인 부분까지를 단계별로 나눠 그려서 비로소 프로그램을 짜게 되면 더 쉽게 짤수 있을 겁니다.

뭐 저도 이건 배운내용입니다.저도 지금까지는 간과하고 있었던 개발 방법론에 대해서 배우고,그 목적과 내가 프로젝트 했을때 왜 그렇게 진행이 더디고 고객과의 마찰이 생겼는지를 알겠더군요.ㅎㅎ

Quote:

취미로 프로그램을 배우는 사람이라면 그 사람이 원하는대로 알려주세요.
그렇지 않고 직업으로 생각을 하는 사람이라면 기초부터 가르쳐주는게 좋습니다.
가끔 코딩이 끝나면 플로우챠트를 원하는 기업도 있으니까요.

코딩이 끝난다음에 플로우챠트를 제시하는건 잘못된 방법입니다.마치 집다짓고 도면 그려서 주는거하고 똑같은 거지요..코딩이 아무리 잘된다고 해도 그 후에 플로우 챠트를 제시한다면.....ㅎㅎ..왜냐하면 플로우 챠트가 위에서 말씀 드렸던바와 같이 코딩전 문제해결의 한방안이기 때문입니다.

acidd15의 이미지

그리고 순서도 그리는 법은 따로 없습니다.뭐 중고등학교때 그 순서도모양이 아니더라도 나름대로 순서도 규칙을 명시하고 순서도를 그리면 됩니다.

gimmesilver의 이미지

peccavi wrote:
좀 오래된 글타래이지만 질문좀 드리겠습니다..

일반적인 하향식 순서도 말고, MS윈도같은 이벤트 기반의 응용프로그램은 순서도를 어떻게 그려야 하나요?

좋은 예제가 있으면 소개좀 부탁드립니다..

요즘 개발방법론에 관한 책을 몇권 읽다보니, 갑자기 그림좀 그리겠다고 난립니다.. :oops:

UML의 Activity diagram, sequence diagram, state diagram 에 대해서 알아보시기 바랍니다.

------------------------
http://agbird.egloos.com

bear의 이미지

간단한 순서도나 pseudo-code를 써서 일단 자신의 머리에 구체화 하도록 하는 단계는 정말 중요 하다고 생각합니다.

단지 결과만 보고 설계를 하지 않고 그냥 프로그램을 하게 되는 경우에 혼자 한다면 혼자서 고치면 됩니다. 그러나, 여러명이 프로젝트를 하는데 이런일들을 하지 않고 하는 경우에는 다른 사람들이 피해를 봅니다.

이런 경우를 몇번 경험 하다보니... 정말... 너무 하다는 생각만 합니다...

그냥 결과만 해 놓고.. 다 했다고 던져 줍니다... 너무 합니다...

그래서, 엔진 개발자에게 이것도 필요 한데요.. 저것도 필요 한데요..

이런 상황이 발생합니다...

그래서 요즘은 이것 저것 이렇게 필요 합니다.. 결과 값은 이렇게 넣어서 주시면 됩니다...

이런식으로 이야기를 해주고 모듈을 받아서 개발 합니다.

그래야 시간이 적게 들고 오류 사항도 적게 나오더군요...

그러나, 혼자서 하게 되다 보니. 저 또한 오류를 범하는 경우가 있습니다.

이런일이 없을려면... 제 생각에는 흐름을 파악하고 예외의 경우도 생각을 해 볼수 있는 방법들을 익히는건 정말 필요한 필수 라고 생각합니다.

다크슈테펜의 이미지

peccavi wrote:
좀 오래된 글타래이지만 질문좀 드리겠습니다..

일반적인 하향식 순서도 말고, MS윈도같은 이벤트 기반의 응용프로그램은 순서도를 어떻게 그려야 하나요?

좋은 예제가 있으면 소개좀 부탁드립니다..

요즘 개발방법론에 관한 책을 몇권 읽다보니, 갑자기 그림좀 그리겠다고 난립니다.. :oops:


만약 마이크로소프트 비주얼 스튜디오를 사용하신다면 볼랜드의 투게더 한번 써보세요 몇번 코드 작성후에 다이어그램을 떠보시면 감이 잡히실듯합니다.
기본적으로 클래스 다이어 그램과 시퀀스 다이어그램은 자동으로 생성되기 때문에 아마 도움이 되실수도.
평가판도 있으니까 볼랜드 사이트 한번 방문해보세요

인생이란게 다 그런게 아니겠어요....? 뭘(?)
http://schutepen.egloos.com

jin6093의 이미지

순서도를 그려보려고 MS Visio 몇 번 사용해 본 적이 있습니다. 매뉴얼없이 영문판으로 해보려니 어렵더군요. 혹시 활용하시는 분중 팁이나 사용법에 관련된 reference있으시면 소개 부탁드립니다.

냐옹이의 이미지

순서도를 그리는 법을 가르켜주는게 좋을거 같은데요.
필요 없다고 하면 가르켜 주지 마시길 바랍니다.
그건 필요에 따라 하는것이라고 생각 됩니다.
단순한 99단 프로그래밍 하는데 누가 순서도를 그리겠습니까???
그런데 프로젝트가 커지면 당연 순서도도 필요하고 다른 뭐라고 하지?? ㅡ,.ㅡ;;;
함수 형 이나 멤버함수 정리한게 필요할것입니다. 그때 왜 필요한지 알게 될것입니다.
아니면 아주 99단 프로그램이라도 시간이 지나서 보게 되면 도통 이해가 않되는경우가 있습니다. :lol: (그럴일이 없나요???) 암튼 그런경우가 생기면 플로우 차트는 쓰게 마련이라고 생각됩니다.
자신이 엄청나게 머리가 좋아서 필요 없다고 한다면, 이렇게 이야기를 해주세요. 나중에 인수인계할때 어떻게 할것이냐??? 그 많은 코드를 설명하고 있을것인가???
아마 필요에 의해서 사용하게 될것입니다... :oops:

------------------------
냐옹~~