본문 바로가기

프로그래밍 언어(이론)/프로그래밍 언어

프로그래밍 언어

 

프로그래밍 언어를 알기 이전에 언어라는 것은 무엇인가?

 

언어: 의사 전달 수단

즉, 사람 대 사람 사이에 생각을 전달하는데 의사소통을 하기위해 사용된다.

말과 글 (자연어) , 이 2가지 형태로 존재한다.

 

그래서 프로그래밍 언어가 무엇인가?

 

- 프로그래밍 언어 또한 의사를 전달하는 수단이다.

 

누구에게 전달하는것일까?

 

사람이 프로그램 작성에서 사용되는 언어로 사람이 기계에게 생각을 전달하는 수단이다.(하지만 사람도 고려해야함.)

 *프로그램 : 컴퓨터가 수행할 명령어를 순서대로 나열해둔 것.

 

즉 프로그래밍 언어는 컴퓨터가 수행할 수 있고 사람이 읽을 수 있는 형태로 계산을 나타내는 표기 체계이다.

 

# 프로그램 언어의 기본 기능

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) 서브프로그램의 분류

    함수: 연산 수행 결과 값을 반환하는 서브프로그램 (public int add() {} => return 값 존재)

    프로시저: 결과 값을 반환하지 않는 서브 프로그램(public void add() {} => return 값 없음)

 

5. 타입

 : 데이터 집합과  연산 집합을 합친 개념으로 연산의 안전성 보장을 위해 필요하다.(정수와 정수를 더할 수 있다 등)

 

  * 프로그래밍 언어의 분류

  • 강타입 언어: 타입 오류를 모두 검출하는 언어 (JAVA)
  • 약타입 언어: 일부 타입 오류를 허용하는 언어 
  • 무타입 언어: 타입 선언문도 없고 어떤 대상의 타입이 계속 변경될 수 있는 언어 (Python)

6. 모듈

: 독립적인 프로그램 구성단위로 서브프로그램도 모듈의 일종으로 볼 수 있다. (클래스 등)

 

* 특징

   1) 내/외부를 구별하며 독자적인 이름 공간을 차지

   2) 변수, 함수, 타입 등 프로그래밍 언어에서 제공하는 거의 모든 것을 포함하는 단위