프로그래밍 언어 활용 분야
PL 평가 기준
PL 발전 과정 ← 영향을 미치는 요소들
Readability (가독성): 코드가 쉽게 이해되고 읽히는 정도
Writability (쓰기 용이성): 코드 작성이 얼마나 쉽고 간단한지, 유지보수 및 수정 용이성을 포함
Reliability (신뢰성): 코드가 얼마나 안정적이고 예측 가능한지, 버그 및 오류 가능성이 낮은지
Cost (비용): 개발 및 유지보수 비용, 퍼포먼스 및 성능에 따른 비용 등을 고려
그외
컴퓨터의 속도는 메모리와 프로세서 간 연결 속도에 영향을 받습니다. 프로그램 명령은 종종 연결 속도보다 훨씬 빠르게 실행될 수 있으므로, 연결 속도는 병목 현상을 초래합니다. 이를 von Neumann 병목 현상이라고 합니다. 이는 컴퓨터 속도의 주요한 제한 요인입니다.
Von Neumann 아키텍처는 임퍼러티브 언어(명령형 언어)의 기초가 되며, 데이터와 프로그램은 메모리에 저장되며 메모리는 CPU와 별도로 구성됩니다. 명령어와 데이터는 메모리에서 CPU로 파이프로 전달되며, 이는 임퍼러티브 언어의 변수와 할당문을 모델링합니다. 또한 반복문은 효율적으로 실행됩니다.
명령형 언어 imperative
함수형 functional
논리형 logic
컴파일 compilation →C, CPP
– Programs are translated into machine language; includes JITsystems
– Use: Large commercial applications
인터프리터 • Pure Interpretation → py
– Programs are interpreted by another program known as an interpreter
– Use: Small programs or when efficiency is not an issue
하이브리드 Hybrid Implementation Systems → java
– A compromise between compilers and pure interpreters
– Use: Small and medium systems when efficiency is not the first concern
- vm(가상머신)에서 돌아감
이거 1장인가바..
하드웨어를 OS가 감싸고 있음
프로그램이 하드웨어에 들어갈 수 있는 소스코드를 줌
소스코드가 하드웨어 상에서 돌아가기 위해서는 일련의 과정이 필요
→ 코드 만들어주면 됨
그 위에서 컴파일러나 인터프리터가 동작함
OS가 하드웨어를 감쌈
하드웨어
컴파일레이션 구현 방식 → C
프로그래밍 언어를 해석해서 하드웨어에서 돌아가게 하는 것이 목표
formal language(형식 언어정형 언어임) ↔ 자연어(인포머. 우리가 쓰는 언어)
랙시컬 분석. 어휘 분석 & symbol table 작성
시멘틱스 분석. 문법 분석
코드 제너레이션
→ 바이트 코드가 나옴
컴파일러가 해석만 해주면 싸고 별거 안해줌
최적화 알고리즘 더 빠르고 뭘 많이 해줌
옵티마이제이션 하면 중간코드 생성 → 실제 코드
컴파일 = 컴파일 +(링킹-라이브러리 포함해서 실행 가능한걸 보여)
하이브리드 구현방식 →java
인터프리테이션 구현방식 → py
프리 프로세싱. 메크로 →C
Formal Language ↔ natural Language 자연어
자연어는 문맥상 어떠한 상황에서 하느냐에 따라 다양한 뜻을 가질 수 있음
포멀 랭귀지는 어떤 경우에도 동일한 뜻을 가짐→ 해석이 쉬움
컨텍스트가 없음
CFG (Context Free Grammar)
랙심→ 토큰
Semantics → 의미 분석
언제 실행하냐?
동적 : 인터프리션
정적 : 컴파일레이션
프로그래밍 환경 : Tool들의 모음