programming Language

이현빈·2023년 3월 28일
0

CE blog

목록 보기
6/21

programming Language

  • 어떤 문제를 해결하기 위해 인간과 컴퓨터 사이에서 의사 소통을 가능케 하는 인공적인 언어
    • 자연어와 달리 미리 정해진 규칙에 따라 엄격하게 정의된다.
    • machine language로 변환되어 수행된다.

classification of programming language

Low level vs High level

  • 기계친화적인지 인간친화적인지에 따른 분류: Abstraction 수준에 의한 분류
  • low level Language
    • H/W 내의 물리적 동작을 이해한 후 각 동작에 대응하는 명령어를 이용하여 프로그래밍하는 언어
    • H/W에 대한 지식이 매우 많이 요구된다.
    • 기계가 이해하기 쉬워서 동작이 빠르나 사람은 이해하기 어렵다.
    • e.g. Machine language, Assembly language
  • High level Language
    • Abstraction이라는 개념을 도입하여 H/W에 대한 직접적 이해없이도 프로그래밍이 가능한 언어
    • Abstraction은 기억장소의 address 대신 variable의 이름으로 데이터를 기억장치에 쓰거나 읽을 수 있으며 자연어의 단어나 표현을 이용하여 동작을 추상화하고 한 표현으로 여러 기계어 코드의 동작을 지시할 수 있다.
    • e.g. 오늘날 프로그래밍 언어라고 불리는 모든 것들이 다 high level language이다.

Abstraction

  • 주어진 작업이나 객체를 속성들의 일부분을 가지고 필요한 만큼 묘사할 수 있는 방법을 지원하는 것
  • 필수적인 attribute들만으로 주어진 것을 묘사하므로 나머지 attribute들은 추상화, 은닉 또는 삭제됨

추상화의 범주

  • 자료의 추상화
    • 계산될 자료의 특성을 추상화
    • string, number, tree 등
  • 제어 추상화
    • 실행 순서를 제어하는 특성을 추상화
    • 여러 기계어를 모아 이해하기 쉬운 추상 구문으로 만드는 것
    • 관련된 프로시저 그룹의 추상화(library)
    • e.g. 반복문, 조건문 등

compiler vs interpreter

  • 작동 방식에 따른 분류

compiler

  • 프로그램 전체를 읽어들여 이를 object code로 바꾸고 compiler 능력에 따른 최적화가 가능하다
  • 한 번 번역한 경우 빠르게 프로그램 전체 실행이 가능하나 소스 변경 시 전체를 다시 컴파일해야 한다.
  • e.g. Fortran, C, C++
  • JAVA도 compiler language로 볼 수 있으며 compile의 결과물인 byte code가 JAVA VM에서 동작한다.

interpreter

  • interpreter에 의해 line 단위로 컴파일 없이 실행되는 언어
  • script language로도 불린다.
    • 컴파일 없이 line 단위이므로 개발단계에서 적은 양의 수정에 대한 결과를 쉽게 확인할 수 있다.
    • 대화식 프로그래밍이 가능하여 교육용으로 적합하다.
    • e.g. python, java script 등이 있다.

object code

  • object module이라고도 불리며 compiler가 source code로부터 compile을 수행하여 생성한 code 혹은 file을 의미한다.
  • machine language나 intermediate language(ragister transfer language, RLT)와 같은 binary code이며 linker 등을 통해 여러 다른 object code와 연결되어 executable code가 된다.

structured programming vs OOP

  • 프로그래밍을 할 때의 paradigm으로 가장 모호한 분류이다.

    python은 structure programming과 OOP 모두 해당한다.


reference
CE mkdocs

1개의 댓글

comment-user-thumbnail
2023년 9월 19일

Totally! Your questions are great and show a real desire to learn. It is inspiring to see someone actively searching for information and participating in lively discussions. This is an excellent opportunity to show off your knowledge and passion. You can gain a better understanding of your life and yourself by asking questions. Your curiosity will prove to be an invaluable asset in your journey. Never stop exploring and using your curiosity. Every question can lead you to amazing insights and discoveries. https://www.sevenmentor.com/data-structures-and-algorithms-with-c-course-in-pune.php

답글 달기