ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 프로그래밍 기법과 패러다임 종류
    Computer Science 2021. 10. 30. 09:05

     

    프로그래밍 언어의 세 가지 기본 요소

    프로그래밍 언어들은 저마다 용도와 특징이 다르다. 하지만 정보를 조작한다는 같은 목적을 공유한다. 정보를 표현하고 조작하는 데는 세 가지 기본 요소가 필요하다. 정보를 나타내는 값, 값을 만들어 내는 식, 값을 이용하여 컴퓨터에게 명령을 전하는 문이 있다.

     

     

    정보를 나타내는 '값'

    값(value)은 정보를 나타낸다. 컴퓨터는 비트만을 취급함으로 일정한 약속에 따라 정보를 비트로 부호화해야 한다. 하나의 값으로 부호화할 수 있는 정보의 정류는 언어마다 다르다. 정수나 부동소수점 같이 매우 간단한 정보만을 값으로 부호화할 수 있는 수준에서 언어가 복잡해지면서 문자와 문자열도 값으로 다루기 시작했다.

     

    C는 여전히 저수준 언어에 속하지만 프로그래머가 구조(구조체)를 정의하는 것을 지원한다. 구조란 값의 집합으로 이루어진 값을 정의하는 방법이다. 예를 들어 위도와 경도를 나타내는 두 부동소수점으로 이루어진 '좌표'라는 값의 유형을 정의하는 것이다.

     

    값은 너무도 중요하기에, '일급 시민'이라고 부르기도 한다. 일급 시민이라는 것은 실행 시간에 생성하기, 함수에 인자로 전달하기 등의 연산을 허용한다는 뜻이다. 

     

     

    값을 만들어내는 '식'

    식(expression)은 값을 생성하는 표현이다. 값을 생성하는 방법에는 리터럴(literal)을 작성하는 방법과, 함수를 호출해 구하는 방법이 있다. 리터럴 식은 다음과 같이 작성한다.

     

    3

     

    위의 코드를 실행하면, 코드에 표기된 문자 3이 의미하는 대로 값3이 생성된다. 코드의 표현을 그대로 값으로 옮기는 셈이다. 숫자는 대표적인 리터럴이다.  텍스트를 따옴표로 감싼 코드로 문자열도 생성할 수 있다.

     

    함수의 경우, 다른 어딘가에 작성된 방법이나 절차에 따라 명령을 수행함으로써 값을 생성한다.

     

    getPacificTime()

     

    태평양 표준시를 구하는 함수를 호출했다. 현재 시간이 4시라면 4시가 반환된다.

     

    모든 프로그래밍 언어가 제공하는 기본 요소로 연산자(operator)가 있다. 연산자는 간단한 식을 결합해 더 복잡한 식을 형성하는 데 쓰인다. 예를 들어, + 연산자를 사용하면 뉴욕의 시각과 동일한 시간을 구할 수 있다.

     

    3 + getPacificTime()

     

    식의 구성요소라는 리터럴, 연산자, 함수 외에 괄호도 있다. 괄호는 연산자의 평가 순서를 제어하는 데 사용한다.

     

     

    명령을 내리는 '문'

    문(statement)은 컴퓨터에게 무언가를 수행하도록 명령하는 데 사용된다. 예를 들어, print("hello world")는 메시지가 출력되도록 한다. if, while, for 등의 복잡한 문들도 있다.

     

     

    일부 프로그래밍 언어는 정의(definition)라는 특별한 문을 제공한다. 정의는 새로운 값이나 함수처럼, 이전에 존재하지 않았던 대상을 추가하여 프로그램의 상태를 변경하는 것이다. 정의된 대상을 가리킬 수 있으려면 이름을 대상에 연관시켜 두어야 한다. 이를 이름 바인딩(name binding)이라고 한다. 예를 들어 getPacificTime이라는 이름은 어딘가에 정의된 함수에 묶여 있다.

     


     

    프로그래밍 패러다임

    패러다임(paradigm)이란 개념과 관행의 집합이다. 문제에 접근하는 방식, 사용하는 기법, 풀이하는 구조의 방향을 길잡이한다. 같은 물리학을 다루더라도, 뉴턴 학파와 상대론 학파는 서로 다른 패러다임이다.

     

    프로그래밍 패러다임이란 프로그래밍 세계를 바라보는 관점이다. 패러다임은 코드를 작성하는 형식과 기술을 결정한다. 하나의 프로그램에 여러 가지 패러다임을 적용할 수도 있지만, 사용하는 언어가 기반한 패러다임을 따르는 편이 좋다.

     

    프로그래밍 패러다임에는 세 가지 큰 줄기가 있다. 명령형, 선언형, 논리형이다. 올바른 패러다임을 적용할 때 작업의 효율성도 최대로 끌어올릴 수 있다.

     

     

    명령형 프로그래밍

    명령형 프로그래밍 패러다임(imperative-)이란, 수행해야 할 작업을 각 단계마다 특정한 명령을 사용해 명확하게 지시하는 것이다. 각 명령이 수행될 때마다 컴퓨터의 상태가 변화하며, 컴퓨터는 프로그램을 구성하는 일련의 명령을 차례대로 수행한다.

    명령형 프로그래밍은 가장 먼저 등장했으며 가장 널리 알려진 패러다임이다.

     

     

    구조적 프로그래밍

    초창기의 프로그램은 GOTO 명령을 사용해 실행 흐름을 제어했다. GOTO는 실행 흐름을 코드의 다른 영역으로 건너뛰게 하는 명령이다. 갈수록 프로그램이 복잡해지고 다양한 실행 흐름이 모두 GOTO와 JUMP 명령으로 마구 뒤엉켜, 스파게티 코드를 만들어냈다. 그 후 프로그래머는 코드를 논리적 범위에 따라 나누기 시작했다. 아무 데나 GOTO를 사용했던 것에서 벗어나, 짜임새 있는 제어 구조(if, else, while, for)를 사용하기 시작했다.

     

     

    절차적 프로그래밍

    절차적 프로그래밍은 반복 사용 되는 코드를 프로시저(procedure, 절차)로 묶어 내는 것이다. 코드가 반복되는 것을 줄이고 재사용성을 높일 수 있다. 

     

     

    선언형 프로그래밍

    선언형 프로그래밍이란 원하는 결과를 선언하는 방식으로 프로그램을 작성하는 것이다. 작업을 수행하는 방법how을 서술하는 것이 아니라, 원하는 결과what만을 선언하는 것이다. 덕분에 프로그램을 간결하고 단순하게 작성할 수 있다.

     

     

    함수형 프로그래밍

    절차적 프로그래밍 패러다임에서는 흔히 함수와 프로시저는 같은 개념으로 쓰인다. 둘 다 일정한 절차를 나타내는 코드를 묶어둔 것이다. 반면, 함수형 프로그래밍에서는 함수가 단순한 프로시저 그 이상이다. 함수는 여러 대상 사이의 관계를 선언하는 데 사용된다.

     

    함수형 프로그래밍에서는 함수도 '일급 시민'이다. 문자열, 수 등의 다른 데이터 유형과 동일하게 취급된다는 뜻이다. 다른 함수를 인자로 받을 수도 있고, 결과로 함수를 반환할 수도 있다. 이렇게 취급하는 함수를 고차 함수(high-order function)라고 부른다. 

     

    'Computer Science' 카테고리의 다른 글

    OSI 7 Layer와 TCP/IP Protocol  (0) 2021.11.10
    컴퓨터의 동작 원리  (0) 2021.10.28
    컴파일러 언어vs 인터프리터 언어  (0) 2021.05.09
    Home server  (0) 2021.04.10
    문자와 문자열  (0) 2021.03.03
Designed by Tistory.