본문 바로가기

공부/프로그래밍 언어론6

[프로그래밍 언어론 과제] 7. Prolog 로 팩토리얼 구현 Prolog란? Prolog는 1973년 개발된 논리지향적 언어다. 특히 술어논리(Predicate Logic)에 기반을두고 있다. 인공지능 언어의 초기인 LISP 보다는 규모가 작아서 더 다양한 종류의 컴퓨터에서 실행 가능하다. Prolog 문법 1) Atom(상수) - 자바에서의 String과 의미가 유사 - 항상 소문자로 시작 - 문자, 숫자, 언더바, ' 로 구성된 데이터 예시) dog, 'hi', chung_god 2) Number(상수) - 숫자 의미 예시) 1, 100, 56, 12.5, -23 3) Variable(변수) - 단어에 뜻대로 변수를 뜻하고 대문자로 시작 예시) A, B, C 과제 목적 Prolog 를 통해서 계승 프로그램 순환, 반복 버전 작성 여기서 순환은 재귀, 반복은 반.. 2021. 5. 21.
[프로그래밍 언어론] 10. 구문론2 syntax 나타내는 방법 문법 가장 작은 계층 정규(reg),CFG,CSF,UG Context-Free Grammar (N,T,P,S) 비단말기호, 단말기호, 생성규칙, 시작기호 Derivation -> Parse Tree (시간) Derivation Ambiguity Grammar 의 결합순서등을 잘못 이해하면 모호해짐 parse tree 가 여러 개 나옴 -> 모호 아래의 parser는 +* 을 통해서 중복되는 parse tree가 만들어짐 모호성을 없애는 방법 Associativity 를 넣음, 같은 수준에서 만들 수 있기 때문에 모호성이 생김 왼쪽 오른쪽 둘다 트리를 만들 수 있는 게 아니라 한쪽만 넣을 수 있게 한다. 아래에서 곱하기 같은 경우 깊이 2 에서만 할 수 있음 term 에서만 만들.. 2021. 4. 14.
[프로그래밍 언어론] 10. 구문론 Defining Languages (프로그래밍 언어 정의) 구문(syntax)와 의미(semantics) 구문은 트리를 정의하는 것과 유사, 계층적 정의 구문을 다루는 건 구문론이고 의미를 다루는 건 의미론 저번주 복습 Fortran - 과학 Lisp - AI Algol - 알고리즘 Cobol - 사무용 이를 통합하자! 하고 만든 게 PL/I 급하게 만들다보니 PL/I 가 너무 커져서 이해하기 힘들었음 시분할 시스템 OS인 MULTICS와 함께 사용 너무 큰 프로그램이라 PL/I 를 C 로 MULTICS를 UNIX 로 축소화 시킴 C는 아주 간단, 대조적은 언어임. 작은 언어. BASIC의 교육열을 이어사 PASCAL이 나옴 이와 유사한 SMALLTALK 나오고 SIMULA의 영향을 많이 받은 Small.. 2021. 4. 13.
[프로그래밍 언어론] 6. 프로그래밍 언어의 발전 3 OOPL은 GUI와 함께 발전했다. PL/I 이전의 언어 FORTRAN, LISP, COBOL 이를 통합하면 PL/I -> MULTICS를 통합 C는 Unix 를 통합 SImula의 클래스 개념이 OOPL 로 발전 오늘 배울 거 Fast movers는 보통 스크립트언어(GLUE) 이다. SIMULA 67 Co-routines Class Server와 Client의 개념이 있는데 이를 클래스로 구현하는 게 더 맞을 거 같아서 Class 구현 객체지향언어의 최고봉이라고 할 수 있는 Smalltalk 스몰톡 80을 통해 유명해짐 IDE 환경과 같이 배포됨 윈도우 시스템이 스몰톡에서 발표 객체지향개념이 성숙화 됨(메타클래스) 근데 이는 여전히 해석기 언어(인터프리터) 였음 그래서 만들어진게 C++ 사실 C++은.. 2021. 4. 13.