Programming

런타임이란? ( 런타임 환경이란? ) 우리가 사용하는 프로그래밍 언어중 일정부분을, 컴파일 시간에 기계어로 변환하지 않고 프로그램이 실행되는 동안 기계어로 변환(컴파일)하는 시스템 javascript가 실행중에, 코드를 컴파일 - 런타임 : browser, Node.js..
👉 namespace 란? 변수나, 함수의 이름을 저장해 모아놓은 공간 👉 필요성 (목적) 변수나, 함수의 이름이 같아서, 이를 구분하고 싶을때, 같은 이름이나, 다른 곳에 존재한다는 사실을 알려주어야 한다. 같은 이름이여도, 다른 namespace에 존재하므로, 컴퓨터가 이를 구분해 올바른 작업을 한다.
attempt : 시도하다 arguments : 인수 (매개변수에 전달되는 값) abbreviate : 축약하다 address : 해결하다 (동사로 쓰는 경우) adjust : 조절하다 acquire : 얻다 absent : 존재하지 않는, 없는 annotation : 주석 aspect : 인공물, 기능 bind : 메모리 주소와 연결한다 boilerplate : 자주 사용하는 문장구 (상용구) concise : 간결한 concrete : 구체적인 corresponding : 일대일로 대응하는, 적합한, 맞는 conventional : 일반적인 ( ex : 코딩 컨벤션 ) comprehensive : 넓은의미의, 포괄적인 comprise : 구성하다 consider : 간주하다 contiguous : 가..
상수란? ( 프로그래밍에서 ) 컴파일 타임에 값이 정해지는 변수 상수의 특징, 활용 과정 1. 컴파일 시작 2. 상수 값을 계산하고, 이진수 (bytecode)로 바꿈 3. 값을 파일에 저장 4. 이후 절대 안변함 5. 실행 환경에서, 값을 가져다 씀 (read only) 상수를 사용하는 이유 개발자가 저장된 데이터를 쉽게 이해할 수 있도록 해준다. 유지보수를 편하게 해준다. ( ex => 1시간을 초단위로 표현 => 60 * 60 * 60 => 216,000 ) 실제로 216000이라는 숫자를 사용하고 싶지만, 코드에서는 60 * 60 * 60 이라고 작성하는 것이 이해하기 쉽고, 그렇다고 해서, 실제 프로그램이 실행될 때(runtime), 이 계산을 해버리면 불필요한 연산이 되어버리므로 컴파일 타임에..
불변성이란? 메모리에 한번 저장한 정보가, 삭제될때까지 변하지 않는 특징 불변성이 필요한 이유는? "불변성이 필요하다"는 말의 의미는 "변하면 안된다"와 동일하기 때문에, 메모리에 한번 저장한 정보가, 삭제될때까지 무한정 변할 수 있을때 발생하는 문제를 살펴보면 거꾸로 불변성의 필요를 알 수 있을 것이다. 문제 변하지 않아야하는 값이, 실행중(runtime)에 변한다. 변하지 않아야 하는 값: 게임 - 몬스터 레벨, 레벨당 레벨업 경험치 물리 - 중력 가속도, 원주율 원인 개발자가 프로그램을 잘못 작성했다. => 변하지 않아야 하는 값을 변경하는 코드를 작성했다. 결과 "많은 시간"을 들여, 컴파일과정을 모두 거침 => 실제 실행환경에서 에러가 "드물게" 발생 개발자가 오류를 수정하기는 커녕, 존재자체를..
· Programming
메타 프로그램이란? 코드를 생성하는 코드 메타 프로그래밍이란? 코드를 직접 작성하지 않고, 코드를 생성하는 함수를 만들어 사용하는 것
checksum 이란? 데이터 전송, 저장 중에 에러가 발생하는 것을 감지하기 위해 사용하는 작은 크기의 데이터 블록 checksum 함수(function), checksum 알고리즘(algorithm) 이란? 체크섬을 만드는 절차
함수형 프로그래밍이란 ? 함수의 호출 방식을, Verb(동사) + Noun(명사) 형식으로 코드를 작성하는 것. ( 기존의 객체지향 프로그래밍은 Noun(명사) + Verb(동사) 형식으로 함 ) # example # 객체 지향 User.create(username, passcode); # 함수형 create(User); 장점 코딩의 자동화가 일정 수준까지 가능 ( 컴파일러 최적화 ) 코드가 간결함 ( 가독성 ) 논리가 명확함 ( 가독성 ) 상태관리가 편함 ( 불변성 - immutable ) 함수형 프로그래밍 언어 동사 + 명사 순서로 작성하도록 만들어진 프로그래밍 언어 Haskell Erlang Rust Elixir Clojure
프로세스 vs 스레드 ( 모든것은 상대적임 ) 프로세스 스레드 크기 큼 작음 ( 프로세스 속에 들어있음 ) 에러 발생시 자기만 에러 남들 까지 에러 ( 스레드 ) 작업 변경 속도 ( Context Switching ) 느림 빠름 동시 작업 난이도 쉬움 어려움 논의할 점 여러개의 스레드를 써야하나, 여러개의 프로세스를 써야 하나? 프로세스 동시 작업 OS가 프로세스마다 자원 나눠줌 ( 할당 ) 근데 나눠주는데 시간 오래걸림 ㅋㅋ ( Context Switching ) 그럼 스레드를 써볼까? 스레드 동시 작업 하나의 자원에, 여러개의 스레드가 동시에 접근하면 안된다 그래서 그런 일이 일어나지 않도록, 한번에 하나의 스레드만 접근가능하도록 제한 하는 것을 "동기화" 라고 부른다. 근데 접근을 제한한다는 것은 ..
MOONCO
'Programming' 카테고리의 글 목록