Frontend · React Native · Platform

설계와 운영 사이

사용자에게 보이는 기능부터 빌드·배포 환경까지. 제품을 만들며 경험한 기술적 의사결정과 문제 해결 과정을 기록합니다.

48 POSTS

Notes/CS

[컴퓨터과학개론] 프로그래밍 언어 Notes/CS

[컴퓨터과학개론] 프로그래밍 언어

프로그래밍 언어의 개요 사람의 의도를 컴퓨터에게 전달하여 컴퓨터에게 작업을 수행시키기 위해 만들어짐 사람의 의도를 추상화하여 압축된 언어로 컴퓨터에게 전달되어야 함 의미적으로 애매모호함이 없고 어떤 경우에도 동일한 의미로 해석되어야 함 구문론적 측면에서 명확하게 정의되어야 하며, 의미론적 측면에서 언제나 동일하게 해석되어야 함 논리적으로 설계되어 컴퓨터가 처리할 수 있는 이진코드로의 변환이 명확하고 정확하게 되어야 함 기계어 0과 1의 이진수로 구성되는 언어로 컴퓨터 하드웨어를 직접적으로 제어하기 위한 전기 신호의 표현 형태로 전달될 수 있는 수준의 언어 0과 1로 이루어지기 때문에 사람이 의미를 이해하기 어렵고, 프로그램 작성이 어려움 하드웨어나 컴퓨터 구조에 따라 기계어의 구성과 명령어(0과 1의 나..

2023.12.04 댓글
[자료구조] 선택 트리, 숲, 이진 트리 개수 Notes/CS

[자료구조] 선택 트리, 숲, 이진 트리 개수

선택 트리 합병 정렬 차례로 정렬된 k개의 데이터 목록을 순서를 유지하는 하나의 데이터 리스트로 만드는 과정 일반적으로 데이터 목록이 k개인 경우, k-1번 비교를 통해 데이터 목록에서 가장 작은 값이나 가장 큰 값을 결정할 수 있음 선택 트리를 이용하여 비교 횟수를 줄일 수 있음 승자 트리 각 노드가 두 자식 노드의 작은 값을 갖는 완전 이진 트리 작은 값이 승자가 되어 올라가는 토너먼트 경기와 유사 트리의 각 노드는 두 자식 노드 값의 승자를 자신의 값으로 함 결과적으로 루트의 값이 트리에서 가장 작은 값이 됨 첫번째 단계에서의 비교 횟수를 줄이지는 못했지만, 두번째 비교단계부터는 비교 횟수가 감소됨 재구성 과정에서 빈 리스트가 생기면 큰 값(∞)을 넣어줌 패자 트리 각 노드가 두 자식 노드 중에서 ..

2023.12.04 댓글
Notes/CS

[자료구조] 힙

우선순위 큐 큐: 먼저 들어간 데이터가 먼저 삭제되는 자료구조 우선순위 큐: 대기 리스트에서 우선순위 높은 사람이 먼저 서비스를 받는 구조 데이터 삭제(Delete_q())와 삽입(Add_q(3)): Delete_q()에 의해 큐의 front에 있던 ‘1’이 삭제되면서, 나머지 데이터 중에서 가장 작은 값인 ‘2’가 다음 삭제 위치 즉, front가 가리키는 위치로 이동됨 우선순위 큐의 작동 방식 삭제 명령이 실행되면 저장된 데이터 중에서 가장 작은 값(가장 큰 값)이 삭제된다. 나머지 데이터들은 어떤 순서로 저장되든 문제가 되지 않는다. 힙 추상 자료형 힙 피라미드 모양으로 쌓아 올린 더미 무엇인가를 쌓아놓은 더미이고 항상 가장 위에 있는 것을 우선 꺼내는 구조 부모-자식 노드 사이에서(부분적으로) 정..

2023.12.04 댓글 1
[컴퓨터과학개론] 컴퓨터 구조 Notes/CS

[컴퓨터과학개론] 컴퓨터 구조

불 대수와 논리 게이트 시스템 버스 중앙처리장치, 기억장치, 입출력장치 간의 물리적 연결 및 데이터 교환의 통로 주소 버스 CPU가 기억장치나 입출력장치의 주소 정보를 전송하는 신호선의 집합 버스의 폭이 시스템의 메모리 용량을 결정 → n개의 신호선으로는 2^n개의 주소 지정 가능 단방향 버스 데이터 버스 CPU와 기억장치/입출력장치 사이에 데이터 전송을 위한 신호선 집합 버스의 폭이 한 번에 전송할 수 있는 비트의 수를 의미 → 워드 양방향 버스 제어 버스 CPU가 각종 장치의 동작을 제어하기 위한 다양한 신호들의 통로 버스의 폭(=제어신호의 수)은 CPU나 시스템의 구성에 따라 달라짐 불 대수 이진 변수의 논리 연산을 다루는 대수 영국의 수학자 George Boole 논리적 문제를 해결하기 위한 수학..

2023.12.03 댓글 4
Notes/CS

[프로그래밍 언어론] 복합타입

배열 동질형 데이터의 모음으로 구성된 타입 원소: 각 데이터 배열의 크기: 배열이 갖는 원소의 개수 각 원소는 첨자(첫 원소와의 상대적 위치)로 구별 연산 집합: 배열 전체를 다루는 연산 데이터 집합 원소의 타입에 해당하는 데이터 집합이 배열의 크기만큼 모인 집합 원소의 타입과 배열의 크기에 따라 다양한 타입 존재 원소의 타입: 단순타입, 복합타입 모두 가능 배열의 크기: 양의 정수 범위 * 차원 차원: 배열에 사용되는 첨자의 개수 → 1차원, 2차원, 3차원, … 배열 배열의 구현 저장공간 확보 정적 변수 스택 동적 변수: 배열의 크기는 정적/동적 힙 동적 변수 첨자를 통한 원소의 주소 계산 크기 N인 1차원 배열 A: 주소(A[i]) = 주소(A[0]) + i * 원소크기 크기 M*N인 2차원 배열 ..

2023.12.01 댓글
Notes/CS

[프로그래밍 언어론] 타입

타입의 개요 타입(type) = 데이터 집합 + 연산 집합 데이터 집합: 처리 대상인 데이터의 집합. 도메인(domain) 연산 집합: 해당 데이터에 적용 가능한 연산의 집합 타입 안전성(type safety) 프로그램 내 모든 연산, 함수에 대해 다음 성질이 만족 → 함수 f의 타입이 f(x): A → B 라면 모든 a ∈ A에 대해 f(a) ∈ B여야 함 타입 안전하면 타입 오류가 발생하지 않음 강타입(strongly typed) 언어: 타입 오류를 모두 검출하는 언어(Haskell, ML, Java) 약타입(weakly typed) 언어: 일부 타입 오류를 허용하는 언어(C) 무타입(typeless) 언어: 타입 선언문도 없고 어떤 대상의 타입이 계속 변경될 수 있는 언어(Python) 타입의 분류..

2023.12.01 댓글
Notes/CS

[프로그래밍 언어론] 변수의 영역

영역의 개요 변수의 영역(scope) 프로그램에서 변수를 사용할 수 있는 범위 변수에 값을 대입하거나 변수의 값을 읽어올 수 있는 부분 영역의 시작: 변수 선언 영역과 수명 변수의 영역과 변수의 수명은 다를 수 있음 영역의 시작: 변수 선언 수명의 시작: 변수 선언(동적 바인딩) 또는 프로그램 수행 시작(정적 바인딩) 영역의 단위 블록(block) 영역을 구분해 주는 단위 블록 안에서 변수를 선언할 수 있음 선언된 변수의 영역은 블록이 끝나는 곳까지임 블록은 언어별로 차이가 있음 Algol 60: 복합문(begin~end) C, C++, Java: 복합문({~}), 함수, 클래스 Pascal: 주프로그램, 서브프로그램 블록과 변수 지역변수: 블록 안에서 선언된 변수 비지역변수: 블록 밖에서 선언되었으나 ..

2023.12.01 댓글
[프로그래밍 언어론] 변수와 바인딩 Notes/CS

[프로그래밍 언어론] 변수와 바인딩

변수의 개요 변수(variable) 데이터를 저장하거나 나중에 사용할 수 있도록 메모리를 추상화한 것 변수의 속성 변수명: 변수의 이름. 식별자 타입: 변수에 저장할 수 있는 데이터 집합의 종류 주소: 변수가 사용하는 메모리의 위치 값: 변수에 저장된 데이터. 수행시간동안 바뀔 수 있음 배런(D. W. Barron)의 표기법 하나의 변수를 표현하는 방법 바인딩(binding) 언어 구성 요소의 속성이 구체적으로 결정되는 것 바인딩 시각 구성 요소의 속성이 구체적으로 결정되는 것 언어의 구성 요소 혹은 속성에 따라 바인딩 시간은 다를 수 있음 언어의 정의 시점: 연산자의 의미, 수의 의미 등 언어의 구현 시점: 타입(int 등)의 자릿수, 수의 표기법 등 컴파일 시점: 변수의 타입 등 링크 시점: 라이브러..

2023.12.01 댓글
[컴퓨터과학개론] 운영체제 Notes/CS

[컴퓨터과학개론] 운영체제

운영체제 컴퓨터 하드웨어와 응용프로그램(프로그래머) 혹은 컴퓨터 사용자 사이의 인터페이스를 제공하는 시스템 소프트웨어 사용자 측면에서는 하드웨어에 대한 지식이 없어도 하드웨어에 접근하고 사용할 수 있는 하드웨어 사용의 편리성을 제공함 시스템 측면(개발자 측면)에서는 제한적인 컴퓨터 자원을 효율적으로 사용하기 위한 컴퓨터 자원 관리의 효율성을 제공함 프로세서 관리자 프로세스에게 프로세서(중앙처리장치-CPU)를 할당함 프로세스를 위한 중앙처리장치의 할당과 관리를 담당하고, 이를 위해 각 프로세서의 상태를 모니터링함 프로세스에게 중앙처리장치의 할당이 필요한 경우를 찾아내고 효율적인 관리를 위해 프로세스의 실행 상태를 변화시키기도 함 주기억장치 관리자 프로세스에게 주기억장치를 할당하고 프로세스로부터 할당된 주기..

2023.11.30 댓글
[컴퓨터과학개론] 알고리즘 Notes/CS

[컴퓨터과학개론] 알고리즘

알고리즘 개념 주어진 문제를 풀기 위한 명령어들을 단계적으로 나열한 것 입출력: 0개 이상의 외부 입력, 1개 이상의 출력 명확성: 각 명령은 모호하지 않고 단순 명확해야 함 유한성: 한정된 수의 단계를 거친 후에는 반드시 종료해야 함 유효성: 모든 명령은 컴퓨터에서 실행 가능해야 함 효율성 → 주어진 문제에 대한 결과를 생성하기 위해 모호하지 않고 간단하며 컴퓨터가 수행 가능한 일련의 유한개의 명령들을 순서적으로 구성한 것 알고리즘 생성 단계 설계 표현/기술 정확성 검증 효율성 분석 자료구조와 알고리즘의 관계 자료구조: 데이터 사이의 논리적 관계를 표현하고 조직화 하는 방법 효율적인 프로그램을 위해 자료구조와 알고리즘을 고려해야함 알고리즘 설계 문제와 그에 따른 조건 등이 매우 다양 → 일반적이고 범용..

2023.11.30 댓글 1