본문 바로가기

전체 글74

[프로그래밍언어론] 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.
[프로그래밍언어론] 1. 개념과 패러다임 우리는 주로 소프트웨어 개발을 할때 프로그래밍 언어를 주로 "사용" 해왔다. 그렇다면 프로그래밍 언어를 "만드는" 것은 어떤가? 프로그래밍 언어론은 좋은 프로그래밍 언어를 설계하는 방법과 프로그래밍 언어 개발을 위한 기반을 구축하는 방법을 다룬다. 많은 프로그래밍 언어는 유사한 패러다임을 따르는 유사한 개념을 다르게 구현한다. 예를 들어 "정렬 프로그램"을 생각해 보자. 다양한 언어는 각각의 다양한 알고리즘을 구현을 통해 정렬 프로그램을 작성할 수 있다. 각각의 프로그램은 뭔가를 나름대로 순서대로 정리할 것이다. 이번 강좌를 통해 프로그래밍 언어의 설계 원리와 개념 프로그래밍 언어의 설계와 구현 방법 다양한 그로그래밍 언어 패러다임 프로그래밍 언어의 종류 등에 대하여 공부한다. PL(Programming.. 2023. 9. 5.