프로그래밍 편집하기

이동: 둘러보기, 검색

경고: 로그인하지 않았습니다. 편집을 하면 IP 주소가 공개되게 됩니다. 로그인하거나 계정을 생성하면 편집자가 아이디(ID)으로 기록되고, 다른 장점도 있습니다.

편집을 되돌릴 수 있습니다. 이 편집을 되돌리려면 아래의 바뀐 내용을 확인한 후 저장해주세요.
최신판 당신의 편집
1번째 줄: 1번째 줄:
[[파일:프로그래밍1.jpg|썸네일|350픽셀|'''[[프로그래밍]]'''(Programming)]]
+
[[파일:프로그래밍1.jpeg|썸네일|200픽셀|'''[[프로그래밍]]'''(Programming)]]
 
[[파일:프로그래밍.jpg|썸네일|1000픽셀|'''[[프로그래밍]]'''(Programming)]]
 
[[파일:프로그래밍.jpg|썸네일|1000픽셀|'''[[프로그래밍]]'''(Programming)]]
 +
  
 
'''프로그래밍'''(programming)이란 [[프로그램]]을 짜는 행위를 말한다. 즉, 수식 또는 작업을 [[컴퓨터]] 처리 방식에 맞게 정리하여 순서를 정하고, 특유의 [[명령어]]로 고쳐 쓰는 작업이다. '''컴퓨터 프로그래밍'''(computer programming)이라고 한다.
 
'''프로그래밍'''(programming)이란 [[프로그램]]을 짜는 행위를 말한다. 즉, 수식 또는 작업을 [[컴퓨터]] 처리 방식에 맞게 정리하여 순서를 정하고, 특유의 [[명령어]]로 고쳐 쓰는 작업이다. '''컴퓨터 프로그래밍'''(computer programming)이라고 한다.
26번째 줄: 27번째 줄:
  
 
=== 멀티 프로그래밍 ===
 
=== 멀티 프로그래밍 ===
하나의 처리 장치에 의해서 둘 이상의 컴퓨터 프로그램을 교대로 배치하여 실행하는 기능을 갖춘 조작 형태이다. 하나의 컴퓨터로 복수 개의 프로그램을 겉보기로 동시에 실행하는 것이며, 멀티 프로그래밍의 목적은 처리 장치, 기억 장치, 입출력 장리, 채널 등의 컴퓨터 자원을 병렬적으로 사용하여 시스템 전체의 사용 효능을 높이는 것이다.
+
하나의 처리 장치에 의해서 둘 이상의 컴퓨터 프로그램을 교대로 배치하여 실행하는 기능을 갖춘 조작 형태이다. 하나의 컴퓨터로 복수 개의 프로그램을 겉보기로 동시에 실행하는 것이며, 멀티프로그래밍의 목적은 처리 장치, 기억 장치, 입출력 장리, 채널 등의 컴퓨터 자원을 병렬적으로 사용하여 시스템 전체의 사용 효능을 높이는 것이다.
  
 
'''장점''' : 동시에 여러 프로그램을 실행할 수 있어 처리 능력이 좋음
 
'''장점''' : 동시에 여러 프로그램을 실행할 수 있어 처리 능력이 좋음
  
 
'''단점''' : 여러 프로그램을 관리하기 때문에 운영체제의 구조가 복잡
 
'''단점''' : 여러 프로그램을 관리하기 때문에 운영체제의 구조가 복잡
 
 
=== 모듈 프로그래밍 ===
 
=== 모듈 프로그래밍 ===
프로그램을 모듈화하여 독립성을 갖게 함으로써 다른 모듈에 영향을 받지 않고 모듈의 일부 개량이나 재번역을 가능하게 하는 프로그래밍 기법이다. 각 모듈인 기능이나 서브루틴은 국소적 변수를 써서 독립성을 높이고 있으며, 통합된 기능별로 모듈화 한다. 모듈러 프로그램 작성의 목적은 크고 복잡한 프로그램을 유지를 쉽게 하고, 신뢰성을 높이는 것이다. 모듈러 프로그래밍에서 중요한 점은 하나의 모듈은 한 가지 일만 하도록 작성해야 한다는 것이다. 이런 프로그램이 유지보수 또한 간편하다. 모듈은 오직 한 개의 상태만 가질 수 있는데, 일반적인 기능을 하는 프로시져를 다른 하나의 모듈로 묶어서 각각의 모듈이 독립적인 데이터를 가질 수 있도록 한다. 이 말은 모듈 내의 프로시져가 호출됨으로써 생기게 되는 변경사항에 대해 해당 모듈이 이를 관리할수 있다라는 말이며 독립성을 지니고 있다.
+
프로그램을 모듈화하여 독립성을 갖게 함으로써 다른 모듈에 영향을 받지 않고 모듈의 일부 개량이나 재번역을 가능하게 하는 프로그래밍 기법이다. 각 모듈인 기능이나 서브루틴은 국소적 변수를 써서 독립성을 높이고 있으며, 통합된 기능별로 모듈화 한다. 모듈러 프로그램 작성의 목적은 크고 복잡한 프로그램을 유지를 쉽게 하고, 신뢰성을 높이는 것이다. 모듈러 프로그래밍에서 즁요한 점은 하나의 모듈은 한 가지 일만 하도록 작성해야 한다는 것이다. 이런 프로그램이 유지보수 또한 간편하다. 모듈은 오직 한 개의 상태만 가질 수 있는데, 일반적인 기능을 하는 프로시져를 다른 하나의 모듈로 묶어서 각각의 모듈이 독립적인 데이터를 가질 수 있도록 한다. 이 말은 모듈 내의 프로시져가 호출됨으로써 생기게 되는 변경사항에 대해 해당 모듈이 이를 관리할수 있다라는 말이며 독립성을 지니고 있다.  
  
 
=== 마이크로프로그래밍 ===
 
=== 마이크로프로그래밍 ===
50번째 줄: 50번째 줄:
 
* 반복 : 프로그램이 특정 상태에 도달할 때까지 구문을 반복하여 수행하거나, 집합체 각각의 원소들에 대해 어떤 구문을 반복 수행 ex) while, repeat, for, do..until
 
* 반복 : 프로그램이 특정 상태에 도달할 때까지 구문을 반복하여 수행하거나, 집합체 각각의 원소들에 대해 어떤 구문을 반복 수행 ex) while, repeat, for, do..until
 
==== 고수준 구조 ====
 
==== 고수준 구조 ====
코드 작성자는 큰 조각의 코드를 이해하기 쉬운 크기의 작은 하부 프로그램([[함수]], [[프로시저]], [[메소드]], [[블록]], 등)으로 나누어야 한다. 일반적으로 프로그램은 전역 변수는 거의 사용하지 않아야 하고 대신에 하부 프로그램은 지역 변수를 사용하거나, 값이나 참조에 의한 인자를 받아야 한다. 이런 기법은 전체 프로그램을 한번에 이해하지 않고, 분리된 작은 코드 조각을 쉽게 이해하는 데 도움을 준다.
+
코드 작성자는 큰 조각의 코드를 이해하기 쉬운 크기의 작은 하부 프로그램([[함수]], [[프로시저]], [[메서드]], [[블록]], 등)으로 나누어야 한다. 일반적으로 프로그램은 전역 변수는 거의 사용하지 않아야 하고 대신에 하부 프로그램은 지역 변수를 사용하거나, 값이나 참조에 의한 인자를 받아야 한다. 이런 기법은 전체 프로그램을 한번에 이해하지 않고, 분리된 작은 코드 조각을 쉽게 이해하는 데 도움을 준다.
  
 
=== 객체 지향 프로그래밍 ===
 
=== 객체 지향 프로그래밍 ===
 
객체 지향 프로그래밍(Object-Oriented Programming,OOP)은 컴퓨터 프로그래밍의 패러다임 중 하나이다. 객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시작에서 벗어나 여러 개의 독립된 단위, 즉 [[객체]]들의 모임으로 파악하고자 하는 것이다. 각각 객체는 메시지를 주고받고, 데이터를 처리할 수 있다. 또한, 프로그램을 유연하고 변경이 용이하게 만들기 때문에 대규모 소프트웨어 개발에 많이 사용 된다. 프로그램을 더 배우기 쉽게 하고 소프트웨어 개발과 보수를 간편하게 하며, 보다 직관적인 [[코드]] 분석을 가능하게 하는 장점을 지니고 있다. 그러나 지나친 프로그램의 객체화 경향은 실제 세계의 모습을 그대로 반영하지 못한다는 비판을 받기도 한다.<ref>〈[https://ko.wikipedia.org/wiki/객체_지향_프로그래밍 객체 지향 프로그래밍]〉, 《위키백과》</ref>
 
객체 지향 프로그래밍(Object-Oriented Programming,OOP)은 컴퓨터 프로그래밍의 패러다임 중 하나이다. 객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시작에서 벗어나 여러 개의 독립된 단위, 즉 [[객체]]들의 모임으로 파악하고자 하는 것이다. 각각 객체는 메시지를 주고받고, 데이터를 처리할 수 있다. 또한, 프로그램을 유연하고 변경이 용이하게 만들기 때문에 대규모 소프트웨어 개발에 많이 사용 된다. 프로그램을 더 배우기 쉽게 하고 소프트웨어 개발과 보수를 간편하게 하며, 보다 직관적인 [[코드]] 분석을 가능하게 하는 장점을 지니고 있다. 그러나 지나친 프로그램의 객체화 경향은 실제 세계의 모습을 그대로 반영하지 못한다는 비판을 받기도 한다.<ref>〈[https://ko.wikipedia.org/wiki/객체_지향_프로그래밍 객체 지향 프로그래밍]〉, 《위키백과》</ref>
 
 
==== 기본 구성 ====
 
==== 기본 구성 ====
* [[클래스]](Class) : 같은 종류의 집단에 속하는 속성(attribute)과 행위(behavior)를 정의한 것으로 객체지향 프로그램의 기본적인 사용자 정의 데이터형이라고 할 수 있다.
+
* 클래스(Class) : 같은 종류의 집단에 속하는 속성(attribute)과 행위(behavior)를 정의한 것으로 객체지향 프로그램의 기본적인 사용자 정의 데이터형이라고 할 수 있다.
* [[객체]](Object) : 클래스의 인스턴스이다. 객체는 자신 고유의 속성을 가지며 클래스에서 정의한 행위를 수행할 수 있다.
+
* 객체(Object) : 클래스의 인스턴스이다. 객체는 자신 고유의 속성을 가지며 클래스에서 정의한 행위를 수행할 수 있다.
* [[메소드]](Method), 메시지(Message) : 클래스로부터 생성된 객체를 사용하는 방법으로서 객체에 명령을 내리는 메시지라 할 수 있다. 메소드는 한 객체의 서브루틴(subroutine) 형태로 객체의 속성을 조작하는 데 사용된다.
+
* 메서드(Method), 메시지(Message) : 클래스로부터 생성된 객체를 사용하는 방법으로서 객체에 명령을 내리는 메시지라 할 수 있다. 메서드는 한 객체의 서브루틴(subroutine) 형태로 객체의 속성을 조작하는 데 사용된다.
  
 
=== 관점 지향 프로그래밍 ===
 
=== 관점 지향 프로그래밍 ===
68번째 줄: 67번째 줄:
 
== 동향 ==
 
== 동향 ==
 
프로그래밍 트렌드는 현재의 IT 기술과 서비스 트렌드가 반영될 수밖에 없으며, 따라서 최근에는 모바일 앱 개발을 위한 프로그래밍, 웹2.0의 서비스 조합을 지원하는 매시업 프로그래밍 등이 주류를 형성하고 있다. 모바일 앱 개발에 대한 관심이 급증하면서 나타난 가장 큰 특징인 개방성의 후퇴와 월드가든(walled garden)의 득세는 프로그래밍 트렌드에도 고스란히 반영되고 있다. 또한 소셜 미디어 등 소비자 시장의 서비스가 기업에 접목되고, 기업 활동에 빅 데이터 분석 요구가 대두되면서 프로그래밍 개발 시 고려해야 할 우선순위가 변화되는 추세이다. IT와 통신서비스 환경이 점차 대역폭 이슈에 민감해지고, 사회경제적으로 에너지 절감 문제가 대두되면서 프로그래밍도 대역폭과 에너지 문제에 대한 많은 고려가 필요하다.<ref>〈[http://www.itfind.or.kr/WZIN/jugidong/1527/file29268-152705.pdf 주목할 만한 프로그래밍 프렌드]〉, 《정보통신산업진흥원》, 2011-12-23</ref>
 
프로그래밍 트렌드는 현재의 IT 기술과 서비스 트렌드가 반영될 수밖에 없으며, 따라서 최근에는 모바일 앱 개발을 위한 프로그래밍, 웹2.0의 서비스 조합을 지원하는 매시업 프로그래밍 등이 주류를 형성하고 있다. 모바일 앱 개발에 대한 관심이 급증하면서 나타난 가장 큰 특징인 개방성의 후퇴와 월드가든(walled garden)의 득세는 프로그래밍 트렌드에도 고스란히 반영되고 있다. 또한 소셜 미디어 등 소비자 시장의 서비스가 기업에 접목되고, 기업 활동에 빅 데이터 분석 요구가 대두되면서 프로그래밍 개발 시 고려해야 할 우선순위가 변화되는 추세이다. IT와 통신서비스 환경이 점차 대역폭 이슈에 민감해지고, 사회경제적으로 에너지 절감 문제가 대두되면서 프로그래밍도 대역폭과 에너지 문제에 대한 많은 고려가 필요하다.<ref>〈[http://www.itfind.or.kr/WZIN/jugidong/1527/file29268-152705.pdf 주목할 만한 프로그래밍 프렌드]〉, 《정보통신산업진흥원》, 2011-12-23</ref>
 +
  
 
{{각주}}
 
{{각주}}
89번째 줄: 89번째 줄:
 
* [[소프트웨어]]
 
* [[소프트웨어]]
  
{{프로그래밍|검토 필요}}
+
{{프로그래밍|토막글}}
  
 
[[분류:프로그램]]
 
[[분류:프로그램]]

해시넷에서의 모든 기여는 다른 기여자가 편집, 수정, 삭제할 수 있다는 점을 유의해 주세요. 만약 여기에 동의하지 않는다면, 문서를 저장하지 말아 주세요.
또한, 직접 작성했거나 퍼블릭 도메인과 같은 자유 문서에서 가져왔다는 것을 보증해야 합니다 (자세한 사항은 해시넷:저작권 문서를 보세요). 저작권이 있는 내용을 허가 없이 저장하지 마세요!

취소 | 편집 도움말 (새 창에서 열림)