
Chapter 03. 언어 설계와 파서 구현 프로그래밍 언어론 원리와 실제 - 창병모 교수님 3.1 프로그래밍 언어 S 1) 언어 설계 목표 간단한 교육용 언어로 쉽게 이해하고 구현할 수 있도록 설계한다 대화형 인터프리터 방시으로도 동작할 수 있도록 설계한다 프로그래밍 언어의 주요 개념을 쉽게 이해할 수 있도록 설계한다. 수식, 실행 문장, 변수 선언, 함수 정의, 예외 처리, 타입 검사 등을 포함한다. 블록 중첩을 허용하는 블록 구조 언어를 설계한다. 전역 변수, 지역 변수, 유효범위 등의 개념을 포함 실행 전에 타입 검사를 수행하는 강한 타입 언어로 설계한다. 안전한 타입 시스템을 설계하고 이를 바탕으로 타입 검사기를 구현 주요 기능을 점차적으로 추가하면서 이 언어의 어휘분석기, 파서, AST, 타입..

Chapter 02. 구문법(Syntax) 프로그래밍 언어론 원리와 실제 - 창병모 교수님 2.1 구문 및 문법 Q. 가능한 문장 혹은 프로그램의 개수가 무한하지 않은가? 무한한 것들을 어떻게 유한하게 정의할 수 있는가? A. 점화식 혹은 재귀식(recursive relation)을 이용하여 해결할 수 있음 1) 이진수의 구문법 - 이진수를 구성하는 방법 (1) 숫자(D)는 '0' 혹은 '1'이다. (2) 이진수(N)를 구성하는 방법은 두 가지가 있는데 첫 번째 방법은 숫자(D) 하나로 구성하는 것이다. 두 번째 방법은 이진수(N) 다음에 숫자(D)를 하나 붙여서 구성하는 것이다. - 논리 규칙 형태 - 문법 형태 N → D N → ND or N → D | ND - 이진수의 의미: 보통 이진수의 의미를 ..

Chapter 01. 서론 프로그래밍 언어론 원리와 실제 - 창병모 교수님 1.1 프로그래밍 언어란 무엇인가? 1) 프로그래밍 언어란 무엇인가? - 프로그래밍 언어: 계산 과정을 기계가 읽을 수 있고 사람이 읽을 수 있도록 기술하기 위한 일종의 표기법. 즉, 기계가 해석할 수 있고 사람이 이해할 수 있어야 함 계산(Computation): 컴퓨터가 할 수 있는 연산들을 나타내며 덧셈, 뺄셈, 비교와 같은 데이터 조작, 문자 입출력과 같은 텍스트 처리, 정보 저장 및 검색 등을 의미 기계 읽기(machine readability): 효율적인 번역 혹은 실행이 가능해야 함을 뜻함 사람 읽기(human readability): 사람이 쉽게 프로그래밍할 수 있도록 편의성을 제공해야 하며 컴퓨터 연산들이 이해하기..

Chapter 05. 병행 프로세스와 동기화 누워서 보는 운영체제 이야기 - 김주균 교수님 ▶ 병행(Concurrent) 같이 (메모리에) 존재하고 있다는 뜻 메모리에 다수의 프로세스가 같이 존재한다는 것과 같은 의미 CPU 하나가 있는 단일처리 시스템에서는 병행 프로세스 중 한 개만이 실제로 실행되지만, CPU 처리 시간을 효과적으로 나눔으로써 겉으로는 병행 프로세스들이 동시에 처리되는 것 ▶ 병렬(Parallel) 다중처리 시스템의 경우는 여러 개의 프로세스가 동시에 실행 ▶ 비동기적(Asynchronous) 프로세스들이 어떤 상태에 있는지, 어떤 자원을 가지고 있는지, 어디까지 실행됐는지 등에 대해 모른 체 실행되고 있음을 의미 # 5.1 병행 프로세스(Concurrent Proccess) ex1 ..

Chapter 04. CPU 스케줄링 누워서 보는 운영체제 이야기 - 김주균 교수님 현재 실행 중인 프로세스로부터 다른 프로세스로 CPU를 넘겨줘야 할 때, 기다리고 있는 여러 프로세스 중에 누구를 선택해야 할지에 대한 방식이나 기준이 있어야 하는데 이때 필요한 것이 스케줄링 기법임 여러 프로세스들이 번갈아 사용해야 하는 자원이 있을 경우, 주어진 시점에서 어떤 프로세스가 이 자원을 사용할 것인가를 결정하는 것을 스케줄링(Scheduling)이라 하며 그 자원이 CPU일 경우 CPU 스케줄링이 되는 것 # 4.1 스케줄링(Scheduling)의 단계 ▶ 스케줄링 시점을 기준으로 구분 장기(Long-term), 중기(Medium-term), 단기(Short-term) 스케줄링의 세 가지로 나눔 ▶ 장기 스..

Chapter 03. 프로세스와 스레드 누워서 보는 운영체제 이야기 - 김주균 교수님 # 3.1 프로세스란 무엇인가? ▶ Job: 시스템에서 처리해줘야 할 일거리 하나의 단위 = process(Task, Thread) ≠ processor(H/W): 일을 처리할 수 있는 기능을 가짐 ex) CPU ▶ 프로세서의 정의 수행 중인 프로그램 (A program in execution) 수행 중(in execution): 어떤 일을 함을 나타내는 프로그램과 이때 필요한 값들을 저장하고 있는 처리기 레지스터, 스택 등의 데이터와 함께, 어느 정도 진행되었는지를 나타내는 PC 값 등으로 표현되어, 커널에 등록되어 있다는 것을 의미 ▶ 프로그램과 데이터를 기본으로 정상적인 실행을 위해 필요한 환경을 시스템으로부터 부..

Chapter 02. 들어가기 전에 누워서 보는 운영체제 이야기 - 김주균 교수님 # 2.1 OS의 목적 - 운영체제 사용자와 컴퓨터 사이의 가교 역할을 한다고 하였는데, 이것은 사용자가 컴퓨터를 보다 편리하게 사용할 수 있도록 해 주어야 한다는 것을 의미 하드웨어가 가지는 능력을 십분 발휘 되도록 제어한다고 하였는데, 이것은 컴퓨터 시스템의 자원들을 효율적으로 사용될 수 있게 해야 한다는 말. 즉, 사용자의 편리성과 자원의 효율적 사용이 그 목적임 효과적인 점검과 개발이 가능하고, 새로운 기능들이 추가될 수 있도록 만들어져서 사용자에게 보다 나은 서비스를 제공할 수 있도록 만들어져야 할 것 다른 각도에서 더 설명하자면 운영체제를 사용하는 사람들의 입장에서 보면 사용하기에는 쉽고 편리하며 배우기에는 쉽고..

Chapter 01. OS? Oh Yes! 누워서 보는 운영체제 이야기 - 김주균 교수님 # 1.1 OS? - 운영체제의 정의 컴퓨터의 여러 응용 프로그램을 설치되게 해 주고, 여러 가지 장치를 효율적으로 작동하도록 하며, 사용자가 컴퓨터를 손쉽게 이용할 수 있도록 해 주는 프로그램의 집단 컴퓨터의 사용자와 하드웨어 사이에서 가교(interfacing) 역할을 하는 프로그램 하드웨어 그 자체가 가지고 있는 능력을 십분 발휘되도록 제어해 주는 프로그램 컴퓨터가 컴퓨터 밖의 세계와 상호 동작하는 방법을 정의한 프로그램 - 운영체제의 역할 운영체제 역할: 사용자 인터페이스(User Interface)와 자원 관리(Resource Management)를 위한 프로그램 집합 시스템 프로그램: 컴퓨터 하드웨어에 의..

프로젝트를 하다보니 로그아웃 그리고 회원탈퇴를 한 후, 앱을 처음 실행하는 로그인 액티비티로 이동하고 싶어졌다 내 프로젝트의 각 액티비티와 프래그먼트를 대충 설명해보자면,,, MainActivity: homefragment, likefragment, userfragment가 띄워짐 userfragment: firebase에서 현재 로그인된 user의 정보(닉네임, 이메일)를 받아오며 정보 수정으로 이동하는 버튼, 로그아웃 버튼, 회원 탈퇴 버튼이 있음 주제와 관련된 요소들은 위에가 끝일 것 같다 처음에 구현한 코드는 이러했다 //탈퇴 버튼 btnDrop.setOnClickListener { mFirebaseAuth!!.currentUser!!.delete() mDatabaseRef.removeValue(..
생활코딩 javascript 객체예고(29) - 객체의 활용(33) 1. 객체 - 관련 있는 함수들을 group하는 수납 상자 ex) var coworkers = { }; //객체 생성 배열 [ ] 사용 객체 { } 사용 2. 객체 쓰기와 읽기 var coworkers = { “programmer” : “egoing” // 객체의 프로퍼티: programmer “designer” : “leezche” // 객체의 프로퍼티: designer } ; document.write(“programmer:”+coworkers.programmer); // programmer : egoing 출력 coworkers.bookkeeper = “duru” ; // 객체 내용 추가 coworkers[“data scientis..