Programming Language 98

[PLT/프로그래밍언어론] 14. Logical Programming(2)

14. logical 2#PLT논리 프로그래밍(Logic Programming)First-order Logic논리 프로그램(Logic Program)은 기본적으로 논리식(Logic Formulae)의 집합이다.따라서 이러한 논리식을 작성하기 위한 언어가 필요하다.여기서 다루는 것은 First-order Logic이며, 이는 predicate logic 또는 predicate calculus으로도 알려져 있다.이는 propositional logic(명제 논리), 0th-order 및 higher-order logic와 구분된다.Propositional Logic vs Predicate LogicPropositional Logic와 달리 first-rder logic는 predicate(술어)와 quant..

[PLT/프로그래밍언어론] 13. Logical Programming

13. logical 1#PLT논리 프로그래밍 (Logic Programming)프로그래밍 언어 이론 (Programming Language Theory)목차 (Topics)논리 프로그래밍 소개 (Logic Programming Introduction)프로로그 기초 (Prolog Basics)1순위 논리 (First-order Logic)치환과 통일 (Substitution and Unification)⠀논리 프로그래밍 소개 (Logic Programming Introduction)알고리즘이란 무엇인가? (What is Algorithm?)알고리즘 (Algorithm) = 논리 (Logic) + 제어 (Control)로버트 A. 코월스키 (Robert A. Kowalski)논리는 "무엇을" 해야 하는지를..

[PLT/프로그래밍언어론] 12. Scala - Functional Programming Language

12. functional2#PLT함수형 프로그래밍 (Functional Programming)프로그래밍 언어론 (Programming Language Theory)1. 주제 (Topics)함수형 언어 기초 (Functional Language Fundamentals)패러다임 개요 (Paradigm Overview)표현식 평가 (Expression Evaluation)Scala에서의 함수형 언어 주제 (Functional Language Topics in Scala)블록과 스코프, 패턴 매칭, 커링 (Blocks and Scope, Pattern Matching, Currying)λ-calculus (λ-Calculus)2. 함수형 언어 (Functional Language)Scala에서의 주제 (Top..

[PLT/프로그래밍언어론] 11. Functional Programming(2)

11. functional(2)#PLTλ Calculusλ-term(term) (λ-Term)다항식 x² - 2x + 5을 고려해 봅시다.x = 2일 때 다항식의 값은 얼마일까요?상황을 표현하기 위해 λ-Term을 사용할 수 있습니다.기호 λ는 변수 x를 expression에 바인딩합니다.정의 (Definition)모든 변수는 λ-term입니다.Application Terms: M과 N이 λ-term이라면, (MN)은 λ-term입니다.Abstraction Terms: M이 λ-term이고, x가 변수라면, (λx[M])은 λ-term입니다.Convention: 왼쪽으로 결합M1M2M3...Mn ➞ ((M1M2)M3)...Mn함수형 패러다임에서의 Redex를 기억하세요 - ((fn x => M) arg)..

[PLT/프로그래밍언어론] 11. Functional Programming(1)

11. functional1#PLT함수형 프로그래밍 (Functional Programming)프로그래밍 언어 이론 (Programming Language Theory)목차 (Topics)함수형 언어 기초 (Functional Language Fundamentals)함수형 패러다임 개요 (Functional Paradigm Overview)표현식 평가 (Expression Evaluation)Scala에서의 함수형 언어 주제 (Functional Language Topics in Scala)블록과 스코프 (Blocks and Scope), 패턴 매칭 (Pattern Matching), 커링 (Currying)λ-계산 (λ - Calculus)함수형 패러다임 개요 (Functional Paradigm Ov..

[PLT/프로그래밍언어론] 10. Object Oriented Paradigm

10. OOP()#PLT객체 지향 패러다임(Object-Oriented Paradigm)프로그래밍 언어 이론(Programming Language Theory)객체 지향 프로그래밍(OOP)과 데이터 추상화(Data Abstraction)데이터 추상화(Data Abstraction)물리적 기계는 bit strings이라는 한 가지 타입만 처리합니다.High-level Language에서는 다양한 값을 “wrapping하여 제공합니다.타입(Type): 값 + 연산Data Abstraction: 값들이 하나로 결합되어 새로운, 더 추상적인 타입을 형성하고 적절한 연산을 가질 수 있습니다.이러한 새로운 타입을 통해 실제 세계의 복잡한 객체를 표현할 수 있습니다.장점복잡한 데이터 구조를 더 쉽게 처리할 수 있습니..

[PLT/프로그래밍언어론] 09. PL Paradigms, Scripting Language

09. Paradigms + Scripting Language#PLT프로그래밍 언어 패러다임 및 스크립팅 언어프로그래밍 언어 이론 (Programming Language Theory)목차프로그래밍 언어 패러다임 개요 (PL Paradigm Overview)스크립팅 언어 (Scripting Languages)프로그래밍 언어 패러다임 (Programming Language Paradigms)프로그래밍 언어가 따르는 원칙과 전략입니다.예: 절차적(procedural), 명령형(imperative), 객체 지향(object-oriented, OOP), 함수형(functional), 논리형(logic) 등하나의 프로그래밍 언어가 여러 패러다임을 따를 수 있습니다.예: 자바(Java)는 명령형과 객체 지향 패러다임..

[PLT/프로그래밍언어론] 08. 중간 정리

PLT 중간 정리 1#PLT컴퓨터에서 프로그램이 동작하고, 이 프로그램을 작성할 때 PL이 필요하다.PL을 설계하거나 PL로 프로그램을 개발하기 위해 컴퓨터가 어떻게 작동하는지 알아야 한다.PL 실행 시 고려해야할 것Data Type적용 가능한 computation은 데이터 타입에 따라 달라진다.연산의 정확성을 verify하고 올바른 computation을 choose하기 위해 고려Operator내부적으로 컴퓨터가 어떻게 처리하는지 알 필요는 없다.PL은 우리에게 익숙한 computation을 지원하는 operator를 제공한다.Control of Execution컴퓨터는 연산의 실행을 제어하고, 원하는 결과를 얻으려면 의도한 대로 연산을 실행해야 함.Control of Data메모리에서 값을 레지스터로..

[PLT/프로그래밍언어론] 07. Control Abstraction and Data Types

Control Abstraction and Data Types#PLTControl AbstractionControl Abstraction은 프로그래밍 언어에서 데이터 추상화 (Data Abstraction)와 더불어 가장 중요한 개념 중 하나입니다. 복잡하고 큰 소프트웨어의 경우, 주요 목표를 달성하려면 더 작은 요구 사항을 충족시켜야 합니다. 이 개념은 분할 정복 (Divide and Conquer) 전략과 관련이 있습니다.모바일 쇼핑 앱을 개발한다고 가정해 보겠습니다. 이 앱에는 다음과 같은 기능이 필요합니다:상품 데이터 읽기앱에서 상품 표시상품 검색고객 정보 관리상품 리뷰결제구매 관리배송 옵션 관리이러한 모든 기능을 하나의 큰 프로그램으로 구현하는 것은 좋은 방법이 아닙니다. 대신, 각 기능을 독립..

[PLT/프로그래밍언어론] 06. Control Structure

06. Control Structure#PLT제어 구조표현식표현식(Expression)은 평가가 완료되면 값을 생성하거나 정의되지 않음을 생성하는 구문적 단위입니다(완료되지 않는 경우).표현식은 모든 프로그래밍 언어의 기본 구성 요소 중 하나입니다.함수형 언어처럼 문(statement)이 없는 언어도 있지만, 표현식은 모든 언어에 존재합니다.표현 방식연산자와 피연산자로 표현합니다.예: x + y, b - 1, f(3) >= 0전위(prefix), 중위(infix), 후위(postfix) 표기법이 있습니다.연산자의 위치에 따라 다음과 같은 구문이 있습니다: ::= |... ::= |... ::= |...표기법수학적 식을 예로 들어보겠습니다: a + b * c + d중위 표기법에서는 (a + b) * (c ..