Chapter2에 나오는 이야기이다! 2.1 Zuse’s Plankalkül 2.2 Pseudocodes 2.3 The IBM 704 and Fortran 2.4 Functional Programming: Lisp 2.5 The First Step Toward Sophistication: ALGOL 60 2.6 Computerizing Business Records: COBOL 2.7 The Beginnings of Timesharing: Basic 2.8 Everything for Everybody: PL/I 2.9 Two Early Dynamic Languages: APL and SNOBOL 2.10 The Beginnings of Data Abstraction: SIMULA 67 2.11 Ortho..
대부분의 언어에서는 pass by value를 쓴다. 그것이 안전하기 때문!!! pass by value 함수 호출 시에 매개변수의 값을 복사해서 전달한다. int val = 3 add(val) add함수 안에서 인자는 바꿔보았자 바깥이 val이 바뀌지 않는다. pass by reference 인자로 받은 값을 바꾸면 바깥의 값도 바뀐다. c에서는 아예 pass by reference 지원하지 않고, c++에서는 pass by reference도 지원한다. c에서 간혹 가다 포인터를 매개변수로 넘겨주는 것을 pass-by-reference로 가르치는 경우가 있는데 이는 명백한 오류이다. pass by assignment mutable한 오브젝트면 pass-by-reference방식으로, immutable..
과제라서 하게 되었다.... 내가 만들어야 하는건 사칙연산과 괄호, 정수를 지원하는 lexical analyzer였다. 그림에서 보이다싶이 lexical analyzer는 입력받은 코드를, syntax analyzer ( parser)에게 lexical unit으로 쪼개서 전달해야 한다. 그리고 symbol table을 만들어야 한다. 물론 모든 문법을 지원하면 좋겠지만 내가 만든 Lexical analyzer에서 지원해야 문법은 다음과 같았다. → → | → → → | ε → → | ε → | | → any decimal numbers → any names conforming to C identifier rules → := → ; → + | - → * | / → ( → ) 예를 들어 보자! operan..
이번 포스팅에서는 Chapter3를 다뤄보려고 한다! Syntax(구문): Semantic(의미론): 의미는 구문과 매우 밀접하다. 보고 유추할 수 있을 정도여야 한다! 용어 정리하기 sentence: character로 구성된 문장 language: sentence의 집합 lexeme(어휘 항목): language의 가장 낮은 level의 syntatic unit (ex: *, sum, begin) token: lexeme의 한 분류 (ex: identifier) 예시) Language란? 정의해보자! 크게 두가지 방식 - Recognizer(인식에 의한 정의) - parser같은거, Generator(생성에 의한 정의) BNF(Backus-Naur Form)와 Context-Free Grammar(문..
WIP
언어를 평가하는 기준 1. Readability Orthogonality (직교성) Orthogonality가 높아지면, 여러개의 원시 타입을 원하는 대로 비치해도 전부 다 코드가 성립하고 원시 타입을 이용해서 고급 자료 구조를 구현하는 것도 쉬워진다. 하지만, Orthogonality가 높아지면 에러를 잡기가 어려워진다. 2. Writability 3. Reliability Reliability는 다음과 같은 성질에 의해서 결정된다. Type Checking Exception Handling Aliasing Readability & Writability 4. Cost 5. 그 외 Portability Generality Well-definedness von-Neumann Architecture 구현 방..