본문 바로가기

프로그래밍언어론31

[프로그래밍언어론] 6. 컴파일러와 인터프리터 컴파일러와 인터프리터는 모두 사람이 작성한 코드를 기계가 실행할 수 있는 하위 수준 코드로 변환한다. 컴파일러 vs 인터프리터 컴파일러 인터프리터 완전한 코드 → 실행 가능한 프로그램 생성된 실행 프로그램의 실행 성능과 효율성에 중점 코드와 실행을 연결하는 것이 상대적으로 어렵다. 컴파일 시간에 오류를 찾는다. C++ 표현식 읽고 평가 → 명령 실행 구현하기는 쉽지만 속도가 느리다. 런타임 오류 → 코드에 직접 연결 부분 코드를 실행 가능(일부 표현식) Python 컴파일러 고급 언어 코드 → 컴퓨터에서 실행 가능한 기계 명령어 인간과 기계 사이의 번역기 object file : 컴파일러는 객체(대상) 언어로 코드를 생성 그런 다음 이러한 개체 파일은 하나의 실행 가능한 프로그램으로 결합 컴파일 단계 어.. 2023. 9. 11.
[프로그래밍언어론] 5. 프로그래밍 언어 설계 새로운 PL을 설계하려면 먼저 새로운 프로그래밍 언어의 목적을 알아야한다. 예) 수치계산, 웹 프로그래밍, 시스템 프로그래밍 등 그리고 새로운 프로그래밍 언어의 목적에 유용한 공통 개념을 구현하고 목적을 달성하기 위해 이러한 개념으로 인해 발생하는 단점을 최소화시킨다. 예) Null Safety 언어 설계 기준 좋은 프로그래밍 언어 디자인은 다양한 기준을 고려한다. 이러한 기준은 언어의 다양한 특성에 영향을 받는다. Readability(가독성) : 언어를 읽고 이해하는 것이 얼마나 쉬운가? Writability(작성가능성) : 우리가 원하는 프로그램을 작성하는 데 언어가 얼마나 쉬운가? 예) 어셈블리 언어 vs. C/C++ vs. Python. Reliability(신뢰성) : 언어가 항상 예상대로 작.. 2023. 9. 11.
[프로그래밍언어론] 4. 튜링 머신, 튜링 완전성 튜링 머신 1936년 앨런 튜링(Alan Turing)이 고안하였다. 원래는 자동 기계를 의미하는 "a-machine" 이라 불렀다. 계산 전반의 특성을 증명하기 위해 발명된 이론적이고 상상적인 기계 현대 컴퓨터의 기초 테이프(Tape) : 일정한 크기의 셀(Cell)로 나뉘어 있는 종이 테이프. 각 셀에는 기호가 기록, 길이는 무한 헤드(Head) : 종이 테이프의 특정 한 셀을 읽을 수 있는 헤드 행동표 : 특정 상태에서 특정 기호를 읽었을 때 해야 할 행동을 지시 기호 삭제나 수정, 헤드를 오른쪽/왼쪽 한 칸 이동, 상태를 변경 테이프에 기록될 수 있는 기호 및 튜링 머신의 상태와 행동표의 개수는 모두 유한해야 하며 서로 구분된다. '현재 상태가 1인데 기호 'A'를 읽었다면 'B'를 기록하고 정지.. 2023. 9. 11.
[프로그래밍언어론] 3. PL의 관점에서 본 컴퓨터 프로그래밍 언어는 결국 컴퓨터에서 실행된다. 따라서 프로그래밍 언어를 설계하거나 이를 사용하여 프로그램을 개발하려면 컴퓨터가 어떻게 작동하는지 이해가 필요하다. 우리는 무엇을 고려해야 할까? = 컴퓨터에서 PL을 실행할 때 무엇을 고려하는가? 따라서 우리는 컴퓨터가 PL에 제공하는 것이 무엇인지 알아야 한다. PL이 제공받는 것은 다음과 같다. 데이터 유형(Data types) 연산자(Operators) 실행 통제(Control of Execution) 데이터 통제(Control of Data) 메모리 관리(Memory Management) 입력과 출력(Input and Output) 데이터 유형(Data types) 컴퓨터가 계산을 수행할 때 데이터에 대한 계산이 수행되는 경우가 많다. 다양한 데이터 .. 2023. 9. 11.
[프로그래밍언어론] 2. 통합개발환경(IDE), VSCode 여러 언어를 작성하기 위해 컴파일러와 인터프리터를 설치해야한다. 따라서 자신만의 소프트웨어 개발환경을 구축해야한다. 본 강좌에서는 VSCode를 중심으로 실습을 진행한다. 그러나 다른 툴을 사용해도 무관하다. 통합개발환경(IDE) 다양한 소프트웨어 개발 작업을 지원하는 프로그램이다. 예: VSCode, Eclipse, IntelliJ, PyCharm 등 IDE의 주요기능은 다음과 같다. 구문 강조(Syntax Highlight) • 다양한 구문 위치에 있는 단어를 강조 표시 • 코드의 가독성 크게 향상되어 생산성 향상 • 코드 편집기에서 사전 컴파일 시간에 구문 오류를 확인 자동 완성(Auto Completion) • 몇 글자만 입력하면 자동으로 코드를 추천하거나 완성 • IDE의 가장 뛰어난 기능 중 .. 2023. 9. 5.