ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [프로그래밍 언어] 선언형 언어
    프로그래밍 언어/개념 2021. 6. 10. 00:49

    선언형 언어

    "아, 전 이거 할거에요. 근데 어떻게 할지는 몰라요 ㅋㅋㄹㅃㅃ~  누가 해주겠죠."  -  선언형 언어

    선언형 언어는 자신이 수행할 목표를 명시하지만, 목표를 어떻게 수행할 지에 대해서는 명시하지 않는 언어이다.

    프로그램을 수행할 방법을 기술하는데 집중하는 명령형 언어(C, JAVA, FORTRAN 등)과는 반대되는 개념이다.

     

    선언형 언어의 특성을 보여주는 대표적인 예시로는 HTML을 들 수 있다.

    HTML로 작성한 페이지의 예시

    위의 사진을 보면 Hello World를 표시하는 HTML 코드를 볼 수 있다.

    HTML 코드는 h1 사이즈로 hello world! 룰 출력한다, h2 사이즈로 hello world! 를 출력한다 ... 등 무엇을 보여줄 것인지에 대한 기술만 되어있으며, 어떻게 보여주는지는 전혀 나와있지 않다.

     

    즉 선언형 언어는 프로그램이 수행해야하는 문제만을 기술하는 언어이다.

     

    결론 : 선언형 언어는 "무엇을 할까?" 에 집중한 언어이다.

    선언형 언어의 장점

    선언형 언어는 가독성이 높다. 보통 다른 해석이나 계산 없이도 읽기만 해도 의미가 해석되는 편이다.

    선언형 언어는 재사용성이 높다.

    작동 순서를 구체적으로 작성하지 않아서 오류가 적다.

    프로그램 동작을 변경하지 않고도 관련 값을 대체할 수 있다. 

    해당 언어에서 문제가 발생해도 다른 것에 영향을 주지 않는다. (이것을 참조 투명성이라고 합니다.)

     

    선언형 언어의 단점

    아직 이렇다 할 단점이 발견되지 않았다. (정보처리기사 교재 참조 결과... 혹시 단점이 있다면 댓글로 알려주시면 수정하겠습니다.)

     


    선언형 언어의 분류

    선언형 언어의 큰 분류로 꼽히는 것으로 함수형 언어와 논리형 언어를 들 수 있다. 참고로 선언형 언어이면서 함수형 언어나 논리형 언어 안에 들어있지 않은 순수 선언형 언어도 존재한다.

     

    1. 함수형 언어

    • 수학적 함수를 조합하여 문제를 해결하는 언어. 알려진 값을 함수에 적용하는 것을 기반으로 한다.
    • side effect 가 발생하지 않도록 함수를 짜야 한다.
      • side effect : 함수의 실행 결과가 함수 밖의 상황에 영향을 끼치거나, 함수 밖의 상황이 함수의 실행결과에 영향을 미치는 것을 말한다. 
      • side effect가 없으려면 입력받은 파라미터 외의 전역변수 등을 참조하지 않아야 하며, 수정해서도 안된다. return 값이 있어야하며, 함수를 이용하는 이유는 오직 이 return 값을 받기 위해서이다.
    • 재귀 호출이 자주 이용된다.
    • 병렬 처리에 유리하다
    • 종류 : LISP

    2. 논리형 언어

    • 기호 논리학에 기반을 둔 언어로, 논리 문장을 이용하여 프로그램을 표현하고 계산한다.
    • 반복문이나 선택문을 사용하지 않는다
    • 비 절차적 언어이다
    • 종류: PROLOG

     


    선언형 언어의 종류

    1. HTML (Hyper Text Markup Language)

    • 웹 브라우져의 표준 문서인 HyperText 문서를 만들기 위해 사용하는 언어
    • 특별한 데이터 타입이 없고 변수 사용이 없다.
    • 호환성이 좋고 사용이 편리하다.

    2. LISP 

    • 아주 오래된 유서깊은 언어 중 하나
    • 대표적인 함수형 언어
    • 특이하게 전위 표기법을 사용한다. ( 3 + 3 을 + 3 3 으로 쓴다던지...)
    • 기본 자료구조가 linked list이며 재귀 호출을 많이 사용한다
    • 인공지능 분야에서 사용되는 언어이다.

    3. PROLOG

    • 대표적인 논리형 언어
    • 인공 지능 분야에서 논리적인 추론이나 리스트 처리에 주로 사용된다.
    • Object(객체) 간의 Relation을 표기하는 데 집중하는 언어이다.

    4. XML

    • 기존 HTML의 단점을 보완하여 웹에서 구조화된 다양한 문서들을 상호 교환할 수 있도록 설계된 언어이다.
    • HTML에 사용자가 새로운 태그를 정의할 수 있고, 이를 표현하는 방식이 독립적이다.

    5. Haskell

    • 함수형 프로그래밍 언어의 한 종류
    • 코드가 간결하고 에러 발생 가능성이 낮다.

     

     

    댓글

Designed by Tistory.