프로그래밍 언어를 알기 이전에 언어라는 것은 무엇인가?
언어 → 의사 전달 수단
즉, 언어란 사람 대 사람 사이에 생각을 전달하는데 의사소통을 하기 위해 사용된다.
사람 간의 의사소통의 형태는 말과 글 (자연어), 이 두 가지 형태로 존재한다.
그렇다면 프로그래밍 언어는? 프로그래밍 언어 또한 의사를 전달하는 수단이다.
프로그래밍 언어는 누구에게 무엇을 전달하는것일까?
사람 → 기계
사람이 프로그램 작성에서 사용되는 언어로 사람이 기계에게 생각을 전달하는 수단이다.(하지만 사람도 고려해야 함.)
*프로그램 : 컴퓨터가 수행할 명령어를 순서대로 나열해 둔 것.
즉 프로그래밍 언어는 컴퓨터가 수행할 수 있고 사람이 읽을 수 있는 형태로 계산을 나타내는 표기 체계이다.
# 프로그램 언어의 기본 기능
1. 작성력 : 프로그래머의 의도를 나타낼 수 있도록 하는 기능
2. 가독성 : 프로그램을 쉽게 해독할 수 있도록 하는 기능
3. 실행가능성 : 컴퓨터에서 실행될 수 있도록 하는 기능
# 부가 기능
1. 추상화: 어떤 대상을 간략하게 추려(대상의 특징을) 나타내는 방법
2. 모듈화: 복잡한 대상을 나누어 구성할 수 있는 방법
# 프로그래밍 언어의 특성
1) 기계적: 기계적으로 처리할 수 있어야 한다.
⇢ 엄밀한 규칙에 따라 정의되어 있어야 함.
2) 구조적: 복잡한 구조를 나타낼 수 있어야 한다.
⇢ 자료구조, 제어구조를 통해 어떠한 자료를 표현할 때 구조화시켜 처리
3) 가변적: 시대의 필요에 따라 바뀔 수 있다.
⇢ 파이썬 최초 명령형 언어의 특성을 가졌었지만 요구에 따라 객체지향 개념을 탑재시킴.
# 추상화 수준에 따라 언어가 정의되고 있다.
- 추상화가 잘 된 언어일 수 록 사용자가 쉽게 사용가능. - *고급언어 (Python, JAVA, C 등)
- 추상화가 안된 언어일수록 컴퓨터가 이해하기 쉬움. - *저급언어 (기계어, 어셈블리어)
* 고급언어: 기계 독립적으로 정의되고 실행될 수 있는 언어
* 저급언어: 기계에 종속적인 언어
# 프로그래밍 언어의 구성요소
1. 데이터
: 자료를 프로그램이 처리할 수 있는 형태로 나타낸 것으로 수, 문자, 문자열 등이 있다.
* 데이터의 분류
- 이진데이터: 데이터들을 이진수의 나열로 표현한 데이터(정수, 실수 값 등)
- 텍스트데이터: 문자열을 나타내는 데이터
2. 연산
- 데이터처리 방법
- 연산 적용 후, 새로운 데이터를 결과로 얻는다.
1) 용어정의
- 연산자: 특별한 연산을 수행하는 함수
- 변수: 연산 결과를 저장하는 이름
2) 연산 표현 구조
- 수식: 값을 나타내는 표현 ( 2+3으로도 값이 5라는 것을 알 수 있다.)
- 문장: 처리를 나타내는 표현 ( if문, for문을 통해 처리 )
3) 연산의 종류
- 원시연산: 언어가 기본적으로 제공하고 있는 연산( +, -, x 등)
- 사용자정의연산: 프로그래머가 추가로 정의한 연산
- 라이브러리: 사용자가 자주 사용할만한 연산을 미리 정의해 둔 것 (Math 등)
3. 명령어
: 특정 작업을 지시하는 단어 (if, while 등)
4. 서브프로그램
: 전체 프로그램을 이루는 작은 코드 블록에 이름을 붙인 것으로 서브루틴이라고 부르기도 한다.
1) 서브프로그램의 분류
함수: 연산 수행 결과 값을 반환하는 서브프로그램 ( ex. public int add() {} => return 값 존재 )
프로시저: 결과 값을 반환하지 않는 서브 프로그램( ex. public void add() {} => return 값 없음 )
5. 타입
: 데이터 집합과 연산 집합을 합친 개념으로 연산의 안전성 보장을 위해 필요하다.(정수와 정수를 더할 수 있다 등)
* 프로그래밍 언어의 분류
- 강타입 언어: 타입 오류를 모두 검출하는 언어 (JAVA)
- 약타입 언어: 일부 타입 오류를 허용하는 언어
- 무타입 언어: 타입 선언문도 없고 어떤 대상의 타입이 계속 변경될 수 있는 언어 (Python)
6. 모듈
: 독립적인 프로그램 구성단위로 서브프로그램도 모듈의 일종으로 볼 수 있다. (클래스 등)
* 특징
1) 내/외부를 구별하며 독자적인 이름 공간을 차지
2) 변수, 함수, 타입 등 프로그래밍 언어에서 제공하는 거의 모든 것을 포함하는 단위
'CS(Computer Science knowledge) > 프로그래밍 언어론' 카테고리의 다른 글
저급 언어와 고급언어 (0) | 2024.12.30 |
---|