프로그래밍 언어 - 언어 설계에 영향을 주는 요소들
🌑 프로그래밍 언어
일부 언어에만 해당되는 특수 케이스는 제외하고, 대부분 언어에서 통용되는 일반적인 내용만 정리했다. 예를 들어 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, …
- 서브 프로그램 : 함수, 프로시저, 메소드
- 기능을 하나의 이름으로 요약
흐름 제어 추상화를 통해, 기계에 대한 추상화와 요약된 관점을 제공할 수 있다.