포스트

프로그래밍 언어 - 언어 설계에 영향을 주는 요소들

프로그래밍 언어 - 언어 설계에 영향을 주는 요소들

🌑 프로그래밍 언어

일부 언어에만 해당되는 특수 케이스는 제외하고, 대부분 언어에서 통용되는 일반적인 내용만 정리했다. 예를 들어 Fortran과 Ada는, 배열의 원소 참조를 위해 소괄호 ()를 사용하지만, 대부분 언어에서 대괄호 []를 사용하고 있기 때문에, 배열 원소 참조에 대한 설명에 원소 참조를 위해 대괄호 []를 사용 이라고 표현했다. 때문에 특정 언어에는 맞지 않는, 예외인 내용이 있을 수 있다. 또한, 비주류 언어에 대한 내용은, 꼭 필요한 것이 아니라면 생략했다. (필자의 주관으로)


💫 프로그래밍 언어 설계에 영향을 주는 요소들


컴퓨터 구조, 프로그래밍 방법론

💫 컴퓨터 구조


@ U 중간고사 출제 : 언어 설계에 영향을 주는 요소는 무엇이 있고, 그 중 컴퓨터 구조는 왜 영향을 주는가?

🫧 폰 노이만 구조 - Von Neumann Architecture

폰 노이만이 고안한 컴퓨터 구조로, 프로그램 내장 방식 (메모리에 명령어/데이터 저장)과 명령어의 순차적 실행, CPU Cycle(명령어 인출, 해석, 실행)을 가지는 것이 특징이다.

@ vs 프로그램 외장 방식 (기계 자체에)

🫧 명령형 언어 - Imperative Language

기계 구조 관점에서 모델링된, 폰 노이만 구조 기반의 언어이다. 변수, 반복문, 배정문(Assignment)이 특징이다. 효율 측면에서 함수형 언어나 논리형 언어에 비해 뛰어나다.

💫 프로그래밍 방법론


  • 1960년대 말, 하향식 설계기능 단위 단계적 세분화 (서브 프로그램), GOTO 지양에 관한 구조화 프로그래밍 운동
  • 1970년대 말, 프로세스-지향데이터-지향 (데이터 추상화, Simula 67)
  • 1980년대 초, 객체-지향

이와 같은 프로그래밍 방법론, SW 개발 방법론들은 이후 만들어지는 언어 설계에 큰 영향을 주었다.

🫧 추상화 - Abstraction

복잡하고/실제적이고/구체적인 개념을 숨기고 요약하여, 보다 높은 수준의 개념을 유도하는 과정.
컴퓨터(명령형 언어)에서 데이터흐름 제어를 추상화 할 수 있다.

데이터 추상화 - Data Abstraction

  • 기본 추상화
    • 변수 Variable : 데이터 메모리 주소
    • 자료형 DataType : int, float, double, …
  • 구조적 추상화
    • 연관된 데이터의 모음 : 배열, 레코드 (구조체)

추상 자료형

데이터와 그와 관련된 연산을 함께 캡슐화하여 정의한 자료형을 뜻한다.
C++의 Stack, Queue, Deck 등의 클래스를 추상 자료형이라고 할 수 있다.

흐름 제어 추상화 - Flow Control Abstraction

  • 기본 추상화
    • 기계 명령어 몇 줄을 요약
    • 대입문 x = x + 3 ← (Load, Add, Store), Goto ← Jump
  • 구조적 제어 추상화
    • 중첩된? 기계 명령어 요약
    • if, switch, for, while 등
    • 중첩 가능 → 중첩 for문, While 안에 For, …
  • 서브 프로그램 : 함수, 프로시저, 메소드
    • 기능을 하나의 이름으로 요약

흐름 제어 추상화를 통해, 기계에 대한 추상화와 요약된 관점을 제공할 수 있다.

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.