ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 1주차 프로그래밍 언어란?
    Computer Science🖥️/Programming Language 2021. 9. 24. 20:51

    Programming Languages & Related Issues

    1. Introduction to Programming Languages
    2. Review for Computing Architecture & Environments

     

    1.  Language and programming language 

    - Language

    : 사람 사이에서 소통하기 위한 도구.

    - Programming Language 

    : 컴퓨터를 제어하기위해 사용자들 사이에서의 프로토콜. & 기계 간 통신을 위한 도구.

     

    - Definition of formal language

     :  formal language 란 수학적으로 정확한 구성 규칙을 가진 언어이며 더 정확하겐 일부 알파벳들의 단어 집합이다. 

    예를 들어 문자 a, b, c로 구성된 알파벳을 취하면 이 알파벳에 대한 formal language는 집합 {a, aa, aba, ca}가 될 수 있다.

    물론 이 언어는 그다지 유용하지 않아 보이지만, 주목할 점은 적절한 구성 규칙 세트(문법)를 사용하면 C 또는 PostScript와 같은 언어를

    만들 수 있다는 것이다.

     

    2.  Why we learn programming languages?

    1. 더 효과적인 알고리즘을 구현하기 위해서 
    2. 목적에 따른 더 나은 프로그래밍 언어를 선택하기 위해서 
    3. 새로운 언어를 더 빠르고 쉽게 배우기 위해서
    4. 더 나은 프로그래밍 언어를 개발하기 위해서 

     

    3.  Attributes of a Good Language (5가지) 

    -> 이 속성을 지키면 좋은 언어라는 것

     

     1. Orthogonality (직교성)

    : Ability of combine various features of a language

      - 의존성이 없는 것을 의미하며 이 특징을 갖고 있는 언어라면 그 특징들을 합쳐 또다른 새로운 언어를 만들 수 있다. 

     ex) if (q < r) then S1 else S2 // S1 & S2 는 서로 교집합이 없기 때문에 저 문장이 가능.

                                                        직교성은 서로 교집합이 없고 독립적인 언어의 특징을 의미.

     2. Support for abstraction 

    : Construct to factor out reoccurring patterns // 반복되는 패턴을 배제하기 위한 구성 

    * 추상화(abstraction)는 복잡한 자료, 모듈, 시스템 등으로부터 핵심적인 개념 또는 기능을 간추려 내는 것 

      - 주어진 객체, 작업의 속성들 중에서 사용자에게 필요치 않은 부분은 배제시키는 것.

      - 추상화를 지원하게 되면 일부 속성들만을 가지고 주어진 객체, 작업들을 필요한 정도로 묘사가 가능하다. 

      - 또한 소스 코드의 가독성을 증가시킨다. (생소한 PL이더라도 추상화 된 형태를 보면 짐작 가능)

     

     3. Natural for various applications

    : For business, mathematics, science, game, etc.. 

      - 모든 분야를 표현하기에 좋은 언어를 만든다면 좋겠지만 상당히 어려우므로 적어도 한 domain 에선 자연스럽게 쓰이도록 만들자는 것.

     ex) unity for VR, AR

     

     4. Easy of program verification and debugging

    : Formal verification & desk checking 

     ex) writting in program using indentation 하면 이 프로그램이 correctly 짜진 건지 확인이 빠르다.

     

     5. Portability and Translation 

    : Minimum degree of computation and space complexity

      Considering various architecture

    - 같은 프로그램을 여러 다른 machine에서 돌아갈 수 있도록 이식성이 필요

    - 다른 언어로의 번역도 생각해서 구조를 잘 짜야한다.

     

    4.  Classification of the Languanges

     

    1. Based on application domain : 각 분야에 목적을 갖고 생성된 언어들로 분류

    2. Based on execution environment : 실행 환경을 기준으로 언어 분류

       - bach processing languages -> cpu, 프린트 큐 와 같은 언어 

       - conversational languages -> 1:1대화식 언어  ex) Lisp, Java

       - embedded languages 

    3.  Based on data computational models : 데이터 처리 방식을 기준으로 언어 분류

     

    5.  Models of Programming Languages 

    • Imperative Languages(Command Driven Languages)

Designed by Tistory.