프로그래밍이란 무엇입니까?

  • 프로그래밍(programming)

컴퓨터에 부여하는 명령을 만드는 작업. 수식이나 작업을 컴퓨터에 알맞도록 정리해서 순서를 정하고 컴퓨터 특유의 명령코드로 고쳐 쓰는 작업을 총칭해서 프로그래밍이라 하고, 컴퓨터의 명령 코드를 쓰는 작업을 특히 코딩(coding)이라고도 한다. 컴퓨터가 처음 나타난 1950년대 초기까지는 프로그래밍은 숫자를 나열한 명령코드를 쓰는 것이었다. 이것을 기계어(machine language)라 한다.

그러나 기계어에서는 틀리기 쉽고, 또한 틀린 곳을 발견하기가 어렵다는 등 작업하기가 곤란하므로, 그 후 인간이 외우기 쉬운 기호나 언어 ·수식을 사용해서 프로그램을 쓰고, 그것을 일단 컴퓨터에 넣어서 컴퓨터 자신의 명령코드로 고쳐 그것으로부터 계산을 실시하는 방식이 고안되었다. 이것은 프로그램을 만드는 작업의 일부를 컴퓨터 자체에 부담시켜 작업 능률을 향상시키자는 방식이다.

  • 프로그래밍 언어

특정한 프로그래밍 언어로 쓰인 프로그램은 기계어로 번역되어 컴퓨터에 의해 실행되며, 어떤 프로그래밍 언어도 기계어로 번역이 가능하다. 어떤 언어에서는 기계어 대신 p-부호로 불리는 바이너리를 생성하기도 한다. 프로그래머가 기계 부호로 직접 작성하는 것도 가능하지만, 이는 굉장히 어려운 작업이다. 때문에 저 수준 에서의 컴퓨터 제어가 필요한 경우 프로그래머들은 기계어 명령어에 대한 일대일 연상 기호 대응인 어셈블리어를 사용한다.

서로 다른 프로그래밍 언어는 다른 프로그래밍 유형을 지원하기 때문에, 분야에 따라 적합한 언어가 존재한다. 또한 언어마다 프로그래머가 알고리즘을 구현할 때 그 구체적인 방법과 수준의 차이가 있기 때문에, 사용의 편의성과 성능 사이에서 적절한 타협이 이루어진다.

  • 프로그래밍 언어의 종류

1. 저급 언어와 고급 언어

가. 저급 언어 (Low-Level Language)

- 기계 중심의 언어

- 실행 속도가 빠름

- 상이한 기계에서 수정을 해야 실행 가능하다

기계어 (Machine Language)

어셈블리어 (Assembly Language)

- 컴퓨터가 직접 이해할 수 있는 언어, 0과 1의 2진수 형태로 표현되며 수행시간이 빠름

- 전문적인 지식이 없으면 프로그램 작성 및 이해가 어렵다, 기종마다 기계어가 다르므로 언어의 호환성이 없음

- 프로그램 유지보수가 어렵다.

- 기계어와 1:1로 대응되는 기호로 이루어진 언어, 기호 코드(Mnemonic Code)라고도 함

- 기계어와 가장 유사하며, 기계어로 번역하기 위해서는 어셈블러(Assembler)가 필요함

나. 고급 언어 (High-Level Language)

- 사람 중심의 언어

- 실행을 위해서는 번역하는 과정이 필요함

- 상이한 기계에서 별다른 수정 없이 실행이 가능함

- 포트란 (FORTRAN) : 과학 계산용 언어로서, 뛰어난 실행 효율성으로 성공한 언어

- 코불 (COBOL) : 회사의 사무용 자료처리 언어로 개발되었다. 기계 독립적인 부분과 기계 종속적인 부분을 분리하는데 성공한 언어이다.

- ALGOL : 알로리즘의 연구개발을 위한 목적으로 개발된 언어, 실무보다는 주로 교육용으로 사용되었다.

- LISP : 리스트 처리용 언어, 인공지능 분야에서 주로 사용되었다.

- APL : 고급 수학용 프로그래밍 언어

- PL/1 : 과학, 공학 및 산업 응용 프로그램을 위해 개벌된 명령형 프로그래밍 언어

- BASIC : 교육용으로 개발된 프로그래밍 언어

- SNOBOL : 스트림 자료 활용이 가장 많은 언어, 문자열 대치, 복사, 치환 등과 같은 문자열의 조작을 편리하게 수행할 수 있도록 여러 가지 기능을 제공함

- Pascal : 간결하면서도 강력한 언어로 손꼽히고 있다. 교육용 언어로는 뛰어나다는 평가를 받고 있다

- PROLOG : 논리 기반의 비절차적 언어, 인공지능 분야에서 주로 사용되었다

- Ada : 미 국방성의 주도로 개발된 고급 프로그램 작성 언어, 데이터 추출과 정보 은폐에 주안점을 두었고, 입출력 기능이 뛰어나서 대량 자료 처리에 적합함

- C : 1972년 미국 벨연구소의 데니스 리치에 의해 개발된 언어, 고급 언어 프로그래밍과 저급 언어 프로그래밍도 가능하다. 시스템 프로그래밍에 가장 적합한 언어이다.

- Java : 썬 마이크로시스템즈에서 개발한 객체 지향 프로그래밍 언어이다.

다. 저급 언어와 고급 언어의 특징

구분

고급 언어

저급 언어

호환성

좋다.

나쁘다.

용이성

쉽다.

어렵다.

실행속도

상대적으로 느리다.

빠르다.

2. 객체지향 프로그래밍 언어

가. 객체지향 프로그래밍 언어의 개념

- 현실 세계의 현상을 컴퓨터상에 객체(Object)로 모델화함으로써, 컴퓨터를 자연스러운 형태를 사용하여 여러 가지 문제를 해결할 수 있는 언어이다.

- 절차적 언어에 비해 특히 유지보수성(Maintainalbility) 과 재사용성(Reusability) 이 좋다.

- 종류 : Ada, Smalltalk, C++, Java 등

나. 객체지향 언어의 기본 구성 요소

객체(Object)

- 데이터와 메소드로 구성된다.

- 데이터(Data) : 객체가 가지고 있는 정보로서, 속성(Attribute)이라고도 한다.

- 메소드(Method) : 객체가 메시지를 받아 실행해야 할 구체적인 연산을 정의한다.

클래스(Class)

- 하나 이상의 유사한 객체들을 묶어서 하나의 공통된

특성을 표현한 것이다.

메시지(Message)

- 객체들 간의 상호작용을 위한 수단으로 사용되며, 메시지를 받은 객체는 메소드를 수행한다.

다. 객체지향 언어의 주요 특징

- 캡슐화 (Encapsulation) : 데이터와 메소드를 하나로 묶는 것으로, 객체 내부에서 필요로 하는 정보를 외부로부터 은닉시킨다.

- 추상화 (Abstraction) : 객체의 불필요한 부분은 숨기고 객체의 속성 중에서 가장 중요한 것에만 중점을 두고 모델화하는 것

- 상속 (Inheritance) : 이미 정의되어 있는 상위 클래스와 메소드를 비롯한 모든 속성을 하위 클래스가 물려받는 것이다.

  • 소프트웨어 개발

소프트웨어는 컴퓨터 프로그램과 데이터를 총칭하는 용어이다. 이에 수반한 문서 자료는 소프트웨어의 필수 요소로 간주되지만, 실제 프로그래밍 과정에 포함되는 것은 아니다.

소프트웨어의 제작은 아래와 같은 과정을 포함한다.:

(1) 특정 문제를 해결하기 위한 프로그램의 요구를 인지한다.

(2) 프로그램을 기획하고, 도구(하드웨어 플랫폼과 프로그래밍 언어를 포함한)를 선택한다.

(3) 프로그램 언어를 사용하여 프로그램을 제작한다.

(4) 테스트 등을 통하여 디버깅 과정을 거친다.

(5) 일반 사용자에게 공개한 후, 지속적인 유지/보수를 한다.

프로그래밍

정렬 알고리즘 중 가장 빠른 방식에 대해 설명해보세요.

프로그래밍

함수에 대해 설명해보세요.

커뮤니티 Q&A

이론과 관련된 게시글이에요.

이해가 안 되거나 궁금한 점이 있다면 커뮤니티에 질문해 보세요!

게시글 작성하기