[컴퓨터개론] 4강. 프로그래밍 언어

프로그래밍 언어


프로그래밍 언어 개요

알고리즘


알고리즘의 중요성


100만명을 대상으로 각자가 낸 납세액이 전체 납세액에서 차지하는 비율은 얼마인가?

(1)

1. 100만 명의 납세액을 입력받는다. (1초)
2. 대상자의 납세액을 읽어온다. (1/100만 초)
3. 100만 명의 납세액 총액을 구한다. (100만 * 1/100만 초 + (100만 - 1) * 1/ 100만 초)
4. 2의 값을 총합으로 나누어 납세 비중을 구한다 (1/100만 초)
5. 아직 남은 대상자가 있으면 2~4의 과정을 반복한다.

총 소요시간 : 1 + (1/100만 + 2 + 1/100만) * 100만 = 약 200만 초

(2)

1. 100만 명의 납세액을 입력받는다. (1초)
2. 100만 명의 납세액 총액을 구한다. (100만 * 1/100만 초 + (100만 - 1) * 1/ 100만 초)
3. 대상자의 납세액을 읽어온다. (1/100만 초)
4. 3의 값을 2에서 계산한 값으로 나누어 납세 비중을 구한다 (1/100만 초)
5. 아직 남은 대상자가 있으면 3~4의 과정을 반복한다.

총 소요시간 : 1 + 2  + (1/100만 + 1/100만) * 100만 = 약 5초

1보다 2가 훨씬 효율적이다.
이 것이 알고리즘의 중요성이다.


프로그래밍 언어의 필요성


프로그래밍 언어를 공부해야 하는 이유


저급 언어와 고급 언어


저급 언어 (Low Level Language)

기계어 어셈블리어
* 0과 1로 표현
* 컴퓨터가 직접 이해할 수 있는 유일한 언어
* 연산 코드와 피연산자로 구성
* 프로그래밍 하기가 상당히 어려움
* 컴퓨터 하드웨어에 대한 강력한 통제가 가능
* 복잡한 기계어를 간략하게 기호화함
* 기계어의 연산코드와 피연산자를 프로그래머가 이해하기 쉬운
기호형태로 일대일 대응시킨 언어
* 하드웨어 장치에 대한 강력한 통제 가능


순서 기계어 어셈블리어 의미
명령어1 0101000000000100 LDA A 메모리 A의 내용을 누산 레지스터(AC)에 저장
명령어2 0111000000000110 ADD A 메모리 B의 내용과 누산 레지스터(AC)의 값을
더하여 누산 레지스터 (AC)에 다시 저장
명령어3 0100000000000111 STA C 누산 레지스터(AC)의 값을 메모리 C에 저장
명령어4 0011000000000000 HLT 프로그램 종료


고급 언어 (High Level Language)


프로그램 구현

프로그램이란?


프로그래머


프로그램 개발 환경


통합 개발 환경 (Intergrated Development Environments)

프로그램을 개발하는데 필요한 컴파일러, 디버거, 링커, 에디터 등을 통합적으로 제공하는 개발 환경 (Visual C++, Eclipse등..)


프로그램 구현 과정

소스작성 : 프로그램 언어를 이용하여 원하는 작업을 기술한 내용을 소스코드(Source Code) 또는 간단히 코드(Code)라 함
컴파일러 : 소스(Source)파일(원시파일)을 목적파일(Object File)로 만들어주는 프로그램
어셈블러 : 어셈블리 언어의 프로그램을 기계어로 변환
링커 : 목적 파일을 실행 가능한 실행 파일로 만들어주는 프로그램


원시 코드에서 실행파일이 되어 실행되는 과정

원시코드 => (어셈블러, 컴파일러, 인터프리터) => 목적코드 => (링커) => 실행파일 => (로더) => 메모리 => 실행파일


디버거 (Debugger)


에러 또는 오류


디버깅 (Debugging)


인터프리터 (Interpreter)


컴파일러 (Compiler)


인터프리터 특징 컴파일러
실행되는 줄(라인)단위 번역 번역 방법 프로그램 전체 번역
번역 과정이 비교적 간단하고 대화형 언어에 편리함 장점 한 번 컴파일 한 후에 매번 빠른 시간 내 전체 실행 가능
실행할 떄마다 매번 기계어로 바꾸는 과정을 다시 수행해야 하기에 항상 인터프리터가 필요함 단점 프로그램 일부를 수정하는 경우에도 전체 프로그램을 다시 컴파일 해야 함
즉시 실행 출력물 목적 코드
BASIC, Javascript 언어 C, COBOL..


컴파일러와 인터프리터의 특징을 모두 갖는 방식

자바 언어와 C# 언어


고급 프로그래밍 언어 종류

포트란 (FORTRAN)


코볼 (COBOL)


파스칼


BASIC


C


C++


C언어 계열의 장점과 단점


JAVA


프로그래밍 언어와 구성 요소

주석과 문장

주석


문장


블록 : 여러 문장의 모임


변수


제어 구조


순차 구조


선택 구조


반복 구조


객체지향 프로그래밍

객체지향 개요


객체


객체지향의 특징


객체의 구성


프로그램 방식에 따른 언어의 분류