재미로보는 프로그램 언어의 시작~2편 프로그래밍의 3가지 방법을 알아보자
2012.07.13 22:58
이번 강의(?) 는 개인적으로 적어봅니다
그래서 어느부분은 틀린것도 있을것입니다 또한 뒤처진 지식일수 있구요
프로그래밍 방식은 크게 3가지로 있습니다
1.순차적
2,구조적
3,객체 지향적
이런순으로 단계적으로 발전 해왔습니다 이방법 3가지를 설명하것습니다~
순차적 프로그램밍 방법입니다.
이방법은 매우 원시적 방법이라 말할수 있습니다
도스 창에서 한줄식 명령어를 쳐서 사용하는방식이죠 지금의 OS 처럼 여러작업이 불가능한 방법입니다
즉 한글을 사용하면서 영상을 본다던지 음악을 들으면서 인터넷을 사용한다던지 복수의 프로그램이 불가능한 기술이죠
지금이야 하나의 일을 1만큼 처리하고 다른프로그램을 1만큼처리하고 이런식으로 사용이 가능하지만 이건 안됀다는 말이기도 합니다
하지만 간단하고 작성도 쉬운면이 있어 가끔 사용하는 기술이기는 합니다.
EX)
파일 편집 프로그램이 있다 합시다 이걸 순차적프로그래밍을 한다면?
1.파일을 연다
2,키보드로부터 값을 입력받는다
3,화면에 문자를 표시한다
4,파일을 저장한다
5파일을 연다
6.마우스로부터 값을 입력 받는다
7.메모리에 값을 저장한다
이처럼 순차적으로 처리하기때문에 많은 부분이 불편합니다 그래서 다음방법으로 나온것이
구조적 프로그래밍 방법 입니다
구조적 프로그래밍 방법
구조적 방법의 가장큰 개념? 은 바로 중복 사용입니다 서로다른 프로그램 이더라도 같은 기능을 사용할떄가 있습니다
이경우 비효율적이게 따로 구현하는것이 아니라 공통적 소스를 만들어 필요한 프로그램에서 이프로그램을 사용하는 방식입니다
이것을 모듈이라 칭하구요~
간단히 c의 예를 들어보자면 공통적 사용이 가능한 것을 함수라 이야기합니다(c에서 공통적으로 사용이 가능한 코드)
함수는 다른 프로그램에서도 사용이 가능하며 동일한 프로그램 내에서도 하나의 함수를 필요한곳에서 호출하여 사용이 가능합니다 이것을 (비슷한 기능끼리) 묶어놓은것을 라이브러리라고 말합니다. 즉 불필요하게 공통적 기능을 하는 소스를 따로따로 만든것이 아니라
하나의 소스를 다른 프로그램에서 공통적으로 사용을 가능하게 하여 불필요한 시간을 없애는 기능을 합니다
하지만 이것도 단점은 있습니다 .
바로 기능에 따라 모듈을 작성하는대 이것이 약간만 다른 기능을 하더라도 따로 짜주어야 하는것입니다
예를 들자면 두프로그램 있습니다 이프로그램들은 파일 불러오기 저장 계산 등의 기능이 비슷하게 있습니다
하지만 불러오는 파일이 달르며 계산방식이 하나는 사칙연산만 다른하나는 루트등 공학용 계산이 가능하다면?
기본적 기능은 같아 보이지만 따지고 보면 다른 기능들이 있습니다 이럴경우 공통적으로 보이다 실상 하는일이 달라 따로 짜주어야 하기때문에 불편함이 있습니다 이러하기때문에 재사용(소스를 재사용 하는것) 어렵다는 점이 있습니다. 이러한 단점이 있다면 공통적으로 사용이라는 부분이 있지만 프로그래밍쪽에서는 불편함이 많이 있습니다 그리하여 나온것이 바로
객체지향 프로그래밍 입니다. 객채 지향형 프로그램은 구조적 프로그램의 장점에 되도록 수정하지 않고 코드자체를 공유하여 사용하는 방식입니다.
객체 지향 프로그래밍 방법
이것의 가장큰예라면 클레스입니다 아마 약간 프로그램을 공부 하셧다면 아시리라 생각합니다.
기능과 데이터를 하나오 묶어 만든것이 클래스입니다 클래스를 사용할경우 레고처럼 여러 클래스를 부쳐 사용이 가능해집니다.
음 좀더 간단히 설명하자면 마치 하나의 클래스가 레고의 부품이 되어 하나씩 붙혀나가면서 거대한 조형물이 되는 형식입니다.
덕분에 클레스가 미리 짜여 있다면 사용면에서는 매우 간단합니다 그냥 가져와 사용하면 돼는 것이기 때문이죠
하지만! 사용법이 간단한 만큼 그것을 만드는대는 그만큼의 어려움도 있습니다.
사용법은 간단해졌지만 그것을 완벽히 만들수 있는 경지는 어려워 진셈입니다
(참고로 c#나 자바 c++ 등이 객체 지향성 언어 입니다)
ㅇ
으음 이걸 좀더 쉽게 설명할려니 어렵내요 말로 설명하라고 하면 하것지만 글로 쓰라니 정말 힘듭니다
또한 이걸 공부한때가 몇년전이라 기역이 가물가물하여 필기한 내용을 보니 더욱 맨붕이 오더라구요 ㅎㅎ;;;
코멘트 15
-
초익
07.13 23:08
받침만 프로그램을 이용해서 수정한다면 완벽할 글인것 같습니다. 기초가 부족했는데 재밌게 봤습니다. 요즘은 강좌는 않쓰고 목차작성에 열두중입니다.......ㅜㅡㅜ -
잇힝...사실 다리나가서 코원w2의 화상키보드로 작성중입니다. 키보드도 좀 심한디 이건더 힘드내용
-
초익
07.13 23:38
흐흐 제가 모바일로만 글 작성해봐서 그 마음 이해합니다. 힘들죠 글쓰다가 내가 왜 이러고 있는지 의문도 가끔씩 들고.....ㅎㅎ -
해색주
07.14 00:08
구조체와 클래스의 차이가 명확히 이해가 안갑니다. ^^
-
클래스의 경우 아직 나올 단계가 가 아니여서요 ㅎㅎ 대신 좋은 설명이 있는 링크로 대체 합니다 http://boxbop.tistory.com/53
혹시 구조체가 아니라 구조적 프로그래밍 방법이 이해가 가지 않는다는 이야기이신가요?
-
해색주
07.15 00:44
저는 통계프로그래밍만 해보고 전문적인 프로그래머는 아니에요. 스크립트 쟈키로 보면 됩니다. 객체지향 프로그래밍이 더 이해가 잘 안가요. ㅎㅎ
-
아음 머라 설명해야 쉬울까요 겍채지향.....c++보셧다면 이해가 쉬울탠대 말이죠 간단히 말하자면 각 담당파트(하는일) 이 같은걸
부품으로 만들어 하나의 완성채를 만든다는 계념입니다.
-
언이아빠
07.14 00:21
왜 논리 프로그래밍이나 (Prolog) 함수 프로그래밍은 (Haskell) 빠진 건가요?
-
잇힝 아직 거기까지는 논술할 실력이 읎어용 ㅠㅠ;;; 학생이다보니 아직 배우는 중입니다 ㅎㅎ c++ 을 아직 배우고 있기 때문에 용 ~
-
왕초보
07.14 02:56
스파르타님이나 초익님은 프로그래밍을 같이 공부하자는 취지로 글을 올리고 계신 겁니다. 프로그래밍 게시판을 하나 만들어서 하나씩 따로 써나가는 것도 재미있을 겁니다. 베이직도 요즘 매우 강력해졌다구욧!
-
비베는요,,,배우다 포기했어용! 는 거짓말입니다 ㅎㅎ 책은 사놓고 반권읽고 때려친......아마초6때 때려쳣어요 이유는 까먹었어용 ㅎㅎ
-
해색주
07.15 00:45
vb는 지원이 끝나지 않았나요? 요즘은 vb.Net이라고 있기는 하던데 잘 안쓰고 다들 C#을 쓰고 있더라구요.
-
지원이전에 아직 쓰고 있으니까요 ㅎㅎ
-
왕초보
07.14 03:00
저는 소프트웨어쟁이가 아니라서..
객체.. 라는 넘이 저 이름을 갖게된 이유가 있답니다. 물론 객체지향언어로도 과거의 순차형이나 구조형 프로그래밍이 가능하고, 그것때문에 아직도 C++이나 C# 코드의 99%가 실은 C 코드라는 비평도 있습니다만.. 객체지향 프로그래밍의 제일 큰 특징은 (제가 보기엔)..
message passing
인듯 합니다. 즉 프로그래밍이 어떤 순서나 구조를 정의한다기 보다는.. 독립된 (동시에 동작할 수도 있고 여러 다른 머신에서 동작할 수도 있는) 객체간의 message passing으로 정의되는 것이죠. override, polymorphism, inheritence 이런 것들도 중요하기는 하지만 저 개념은 컴터의 하드웨어 구조도 완전히 바꾸게된 개념이라고 봅니다.
-
으힝....댓글쓰다 날라갔어용////
제가 배운내용이 저것이라서요 ㅎㅎ (독학? 이라 해야하나요?)
객체지향특징은 클래스 인것 같아요 각각의 블록(클래스) 를 이용하여 하나의 완성품을 완성하는것이요
하지만 부품을 사용하는것은 쉽지만 부품을 만드는것은 어려운것 같아요