당연히 if-else에는 영향을 미치지 않는다. for, while만 탈출!
파이썬에는 원래 struct가 없다... namedtuple이라는 라이브러리를 사용해서 구현할 수 있었다. from collections import namedtuple MyStruct = namedtuple("MyStruct", "a b c") m = MyStruct("a", "b", "c") ====파이썬 3.7이상이면 dataclass를 사용할 수 있다. 파이썬의 decoration(자바의 annotation같은거) 를 쓰면 된다. from dataclasses import dataclass @dataclass class Product: weight:int = None price:int = None apple = Product() apple.weight = 10
Chapter 9의 내용이다! automaton의 4가지 부류 Finite-state machine : 간단~ Pushdown automata Linear-bounded automata Turing machine: 복잡~ finite state machine인데 inverse가 true 아니다. 그 중 Turing Machine은 최고 등급의 automaton라고 볼 수 있다. 이 챕터를 배우기 위해서 그동안 오토마타를 배워왔다고 해도 과언이 아닐 만큼... https://namu.wiki/w/튜링%20머신 https://namu.wiki/w/오토마타 꽤 재미있으니까 위 나무위키 문서를 읽어보길 바란다 :) Turing Machine의 정의 Turing Machine M은, M = (Q, Σ, Γ, 𝛿,..
Chapter 8의 내용이다! CFG의 특성에 대해서는 이미 정의할 때 한번 다뤘는데 왜 또 얘기하지? 싶었는데 Pumping Lemma를 다루기 위한 것이였던 것 같다! Theorem 8.3, 8.4 CFL은 union, concatenation, star-closure에 닫혀 있다. intersection과 complementation에는 닫혀 있지가 않다. Theorem 8.5 L1이 context free language이고 L2이 regular language라면 L1 교집합 L2는 context free이다. Theorem 8.6 Context-free grammar G=(V, T, S, P)에 대하여, L(G)가 비어있는지 아닌지를 결정하는 알고리즘이 있다. Theorem 8.7 Contex..
Chapter 7의 내용이다! 일단 Pushdown Automata와 그 전의 automata와 가장 크게 다른 점은 pushdown automata는 스택을 사용할 수 있다는 것이다! Nondeterministic Pushdown Automata Pushdown Automata의 정의 M = (Q, Σ, Γ, 𝛿, q_0, z, F) * Γ 은 감마라고 부른다. 잘 보면 기존에 배웠던 finite automata에서 2가지의 원소가 추가되었다. 바로 Γ 와 z이다. Q: control unit의 initernal state의 유한 집합Σ: input alphabet Γ: 유한한 개수의 집합인 stack alphabet 𝛿: Q X ( Σ sum {ƛ}) X Γ : transifion function이 ..
RAM하면 일반적으로 SRAM, DRAM을 생각하고 volatile memory라고 생각한다. SRAM => cache - I-Cache(Instruction Cache) - D-Cache(Data Memory Cache) DRAM => Memory SSD HDD( Magnetic Disk ) 순으로 있다! 그러나 차세대 메모리들은 non-volatile하게 나온다. (NVM, Non-volatile memory) 자주 등장하는 키워드들은 MRAM, FRAM이다. 모두 비휘발성이지만 플래시 메모리(ex: SSD) - NAND 와 NOR flash를 사용해서 데이터를 저장함. 자기 저장소(ex. HDD) - magnetic disk에 저장한다.
friend함수는, 클래스의 멤버함수가 아닌 다른 외부 함수에게 클래스의 모든 멤버를 접근할 수 있는 권한을 부여한다. 클래스의 멤버로 선언하기에는 무리가 있고, 클래스의 모든 멤버를 자유롭게 접근할 수 있는 함수를 작성할 때 쓰면 좋다. 프렌드 유형에는 3가지가 있다. 1) 전역 함수 예: // 외부 함수 equals() 가져오기 class Rect { ... friend bool equals(Rect r, Rect s); }; 2) 다른 클래스의 멤버 함수 예: // RectManager 클래스의 equals() 가져오기 class Rect { ... friend bool RectManager::equals(Rect r, Rect s); }; 3) 다른 클래스 전체 // RectManager 클래스의..
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..