프로그래밍 언어란?
- 컴퓨터와 의사소통하기 위한 표현법. 현재는 개념이 확장되어 명령을 내리기 위한 방법뿐만 아니라 시스템을 설계하고 명세화하기 위한 방법으로 쓰임. ex) XML(문서 명세), Veriling(컴퓨터 하드웨어 설계)
- 1940년대 이후 프로그래밍 언어라는 개념이 생김. 40년대 이전에는 배전반에서 전선을 연결하여(배선) 컴퓨터에 명령을 내렸음. 이후에는 폰노이만(내장 컴퓨터) 방식으로 컴퓨터에 명령.
1) CPU가 처리할 작업을 명령 코드로 작성
2) 메모리에 저장
3) 읽기, 해석
4) 실행 - 사용되는 언어는 크게 기계어 / 저급언어 / 고급언어로 나눌 수 있음.
기계어는 저급언어는 '어셈블리어'라고도 불림. 어셈블리어는 LDA와 같은 symbol을 사용하여 표현하고 기계 종속적이며 읽고 쓰기 어려움.
고급언어는 간략하며 이해가 쉽고 배정, 반복, 선택( ex) if ) 개념이 있음. 고급언어를 사용함으로써 컴퓨터 기종에 상관없이 같은 언어를 사용할 수 있게 됨(이식성 증가). - 즉, 프로그래밍 언어는 기계가 읽을 수 있고 사람이 읽을 수 있는 형식으로 계산을 기술하는 표현체 계임.
프로그래밍 언어 분석 방법
1) 언어 특성 파악
2) 구현과 구현할 때 발생하는 문제점 파악
3) 특성 설계 방법, 표현방법 조사
4) 비교 분석
ex) 객체지향 언어들은 상속 기능이 있다 -> 다중 상속을 할 때 멤버 변수의 중복으로 문제가 발생한다 -> 이를 그래프 로 표현 -> C++은 클래스 다중 상속을 허용하는데 JAVA는 클래스 다중상속을 허용하지 않는다!
계산이란?(computation)
- 컴퓨터가 처리할 수 있는 작업. 누가 해석하더라도 같은 결과가 나와야 한다. 즉, 애매모호하면 안 된다.(일의성)
- 기계가 읽을 수 있는 조건
-효과적인 번역이 가능해야 함(간결한 언어 구조)
-단순 번역 알고리즘이 존재해야 함
-제한된 시간 안에 번역이 가능해야 함(프로그램 크기에 선형적 비례하는 것이 이상적) - 사람이 읽을 수 있는 조건
-자연어 형태로 표현 가능해야함
-프로그램 분할, 모듈화 등 지역성이 요구됨
추상화란?(abstraction)
- 필요한 일부 속상으로만 시스템을 기술하는 방법. 불필요한 속성들은 은닉, 삭제됨.
- 범주에 따라 자료 추상화 / 제어 추상화로 나뉨.
-자료 추상화: 이진수로 표현되는 자료를 문자열, 수, 구조체로 추상화하는 것.
-제어 추상화(알고리즘 추상화): 실행 순서를 제어하는 특성을 추상화하는 것. ex) 반복문, 조건문, 프로시저 호출 - 정보 양에 따라 기본 추상화 / 구조 추상화 / 단위 추상화로 나뉨.
-기본 추상화(basis abstraction): 가장 지역적인 기계 정보 추상화 (연산)
-구조 추상화(structured abstraction): 기본 추상화보다 전역적인 프로그램의 구조 추상화 (배열, 반복문)
-단위 추상화(unit abstraction): 단위 프로그램 전체 추상화. 자료 추상화와 제어 추상화의 결합. (C++, JAVA의 클래스)
※ 잘못된 내용이 기재되어 있다면 댓글로 알려주세요 :}