ComputerScience 38

프로그래밍 패러다임

목차 선언형과 함수형 프로그래밍 순수함수 고차함수 일급 객체 객체지향 프로그래밍 추상화 캡슐화 상속성 다형성 오버로딩 오버라이딩 OOP 설계 원칙 단일 책임 원칙 개방-폐쇄 원칙 리스코프 치환 원칙 인터페이스 분리 원칙 의존 역전 원칙 절차지향형 프로그래밍 프로그래밍 패러다임(programming paradigm)은 프로그래머에게 프로그래밍의 관점을 갖게 해주는 역할을 하는 개발 방법론입니다. 예를 들어 객체지향 프로그래밍은 프로그래머들이 프로그램을 상호 작용하는 객체들의 집합으로 볼 수 있게 하는 반면에, 함수형 프로그래밍은 상태 값을 지니지 않는 함숫값들의 연속으로 생각할 수 있게 해 줍니다. 프로그래밍 패러다임은 크게 선언형, 명령형으로 나누며, 선언형은 함수형이라는 하위 집합을 갖습니다. 또한, ..

ComputerScience 2023.11.09

프론트엔드에서 MV* 아키텍쳐란 무엇인가요?

프롤로그 MVC, MVVM, MVI 아키텍쳐가 어쩌고 저쩌고... 소프트웨어를 공부하다 보면 한번쯤은 MV~로 시작되는 무슨 무슨 아키텍쳐라는 말을 들어본 적이 있을 겁니다. 실제로 프로그래밍을 할 때에는 중요하지 않아 보이는데 이따금씩 눈에 밟혀 왠지 알고 가야할 것 같은 개념인 아키텍쳐와 MVC에 대해 웹 프론트엔드 개발자 관점에서 알아야 할 내용들을 정리해보았습니다. 지난 글에도 언급했지만 최대한 풀어서 쉽게 쓰는 방향으로 글을 쓰려하고 있고 그런만큼 비약이 있을 수 있으니 여기서 얻은 이해를 바탕으로 검색을 통해 실제의 모습도 꼭 확인하시기 바랍니다. 이번 글의 목차는 다음과 같습니다. 아티텍쳐란 무엇일까요? 웹 프론트엔드 아키텍쳐 이야기 현대 웹프론트엔드의 아키텍쳐 방향성 1. 아키텍쳐란 무엇일..

ComputerScience 2023.11.08

디자인 패턴이란? 디자인 패턴의 종류

디자인 패턴이란? 일종의 설계 기법이며, 설계 방법이다. 목적 SW 재사용성, 호환성, 유지 보수성을 보장. 특징 특징프로젝트에 항상 적용해야 하는 것은 아니지만, 추후 재사용, 호환, 유지 보수시 발생하는 문제 해결을 예방하기 위해 패턴을 만들어 둔 것임. 디자인 패턴은 아이디어임, 특정한 구현이 아님. 원칙 SOLID (객체지향 설계 원칙) Single Responsibility Principle 하나의 클래스는 하나의 역할만 해야 함. Open - Close Principle 확장 (상속)에는 열려있고, 수정에는 닫혀 있어야 함. Liskov Substitution Principle 자식이 부모의 자리에 항상 교체될 수 있어야 함. Interface Segregation Principle 인터페이스..

ComputerScience 2023.11.08

메모리

1 메모리 계층 메모리 계층은 레지스터, 캐시, 메모리, 저장장치로 구성되어 있다. - 레지스터 : CPU 안에 있는 작은 메모리, 휘발성, 속도 가장 빠름, 기억 용량이 가장 적다. - 캐시 : L1, L2 캐시를 지칭한다. 휘발성, 속도 빠름, 기억 용량이 적다. 참고로 L3 캐시도 있다. - 주기억장치 : RAM을 가리킵니다. 휘발성, 속도 보통, 기억 용량 보통 - 보조기억장치 : HDD, SSD를 일컬으며 비휘발성, 속도 낮음, 기억 용량이 많다. 램은 하드디스크로부터 일정량의 데이터를 복사해서 임시 저장하고 이를 필요 시마다 CPU에 빠르게 전달하는 역할을 한다. 🟡 캐시 캐시(cache)는 데이터를 미리 복사해 놓는 임시 저장소이자 빠른 장치와 느린 장치에서 속도 차이에 따른 병목 현상을 줄..

ComputerScience 2023.11.08

페이징과 세그먼테이션

기법을 쓰는 이유 다중 프로그래밍 시스템에 여러 프로세스를 수용하기 위해 주기억장치를 동적 분할하는 메모리 관리 작업이 필요하기 때문 메모리 관리 기법 연속 메모리 관리 고정 분할 기법 : 주기억장치가 고정된 파티션으로 분할 (내부 단편화 발생) 동적 분할 기법 : 파티션들이 동적 생성되며 자신의 크기와 같은 파티션에 적재 (외부 단편화 발생) 프로그램 전체가 하나의 커다란 공간에 연속적으로 할당되어야 함 불연속 메모리 관리페이지 : 고정 사이즈의 작은 프로세스 조각단편화 : 기억 장치의 빈 공간 or 자료가 여러 조각으로 나뉘는 현상 고정 크기 : 페이징(Paging) 단순 페이징외부 단편화 X 소량의 내부 단편화 존재 각 프로세스는 프레임들과 같은 길이를 가진 균등 페이지로 나뉨 가변 크기 : 세그먼..

ComputerScience 2023.11.08

프로세스 & 스레드

프로세스 : 프로그램을 메모리 상에서 실행중인 작업 스레드 : 프로세스 안에서 실행되는 여러 흐름 단위 기본적으로 프로세스마다 최소 1개의 스레드 소유 (메인 스레드 포함) 프로세스는 각각 별도의 주소공간 할당 (독립적) Code : 코드 자체를 구성하는 메모리 영역(프로그램 명령) Data : 전역변수, 정적변수, 배열 등 초기화 된 데이터는 data 영역에 저장 초기화 되지 않은 데이터는 bss 영역에 저장 Heap : 동적 할당 시 사용 (new(), malloc() 등) Stack : 지역변수, 매개변수, 리턴 값 (임시 메모리 영역) 스레드는 Stack만 따로 할당 받고 나머지 영역은 서로 공유 하나의 프로세스가 생성될 때, 기본적으로 하나의 스레드 같이 생성 프로세스는 자신만의 고유 공간과 자..

ComputerScience 2023.11.06

운영 체제란 무엇인가?

운영 체제(OS, Operating System) : 하드웨어를 관리하고, 컴퓨터 시스템의 자원들을 효율적으로 관리하며, 응용 프로그램과 하드웨어 간의 인터페이스로써 다른 응용 프로그램이 유용한 작업을 할 수 있도록 환경을 제공해준다. 즉, 운영 체제는 사용자가 컴퓨터를 편리하고 효과적으로 사용할 수 있도록 환경을 제공하는 시스템 소프트웨어라고 할 수 있다. (종류로는 Windows, Linux, UNIX, MS-DOS 등이 있으며, 시스템의 역할 구분에 따라 각각 용이점이 있다.) [ 운영체제의 역할 ] 1. 프로세스 관리 프로세스, 스레드 스케줄링 동기화 IPC 통신 2. 저장장치 관리 메모리 관리 가상 메모리 파일 시스템 3. 네트워킹 TCP/IP 기타 프로토콜 4. 사용자 관리 계정 관리 접근권한..

ComputerScience 2023.11.06

운영 체제 (CPU, RAM, GPU, 메모리) 란?

운영 체제 (Operating System, OS)는 컴퓨터 시스템의 핵심 소프트웨어로, 하드웨어 리소스를 관리하고 응용 프로그램을 실행하는 역할을 합니다. 이것은 다양한 하드웨어 구성 요소와 상호 작용하여 사용자 및 응용 프로그램의 작업을 조율하고 컴퓨터 시스템을 효율적으로 동작하게 하는 중요한 역할을 합니다. CPU (Central Processing Unit, 중앙 처리 장치): CPU는 컴퓨터의 "두뇌"로서 중앙 처리 장치라고도 불립니다. 프로그램 명령을 실행하고 산술 및 논리 연산을 수행합니다. CPU는 클럭 속도와 코어 수로 설명되는 성능 지표를 가지고 있습니다. RAM (Random Access Memory, 랜덤 액세스 메모리): RAM은 컴퓨터의 주기억 장치로서 현재 실행 중인 프로그램 ..

ComputerScience 2023.11.06

메모리의 구조 (코드, 데이터, 힙, 스택 영역)

목차 메모리 코드(code) 영역 데이터(data) 영역 힙(heap) 영역 스택(stack) 영역 오버 플로우 메모리 프로그램 실행 순서 위 그림과 같이, 프로그램이 실행되기 위해서는 운영체제(OS)가 프로그램의 정보를 메모리에 로드 해야 한다. 또한 프로그램이 실행되는 동안 CPU가 코드를 처리하기 위해서는, 메모리가 명령어와 데이터들을 저장해야 한다. 메모리 공간 이렇게 프로그램이 운영체제(OS)로 부터 할당받는 대표적인 메모리 공간은 코드(code) 영역, 데이터(data) 영역, 힙(heap) 영역, 스택(stack) 영역으로 구성되어 있다. 코드(code) 영역 코드 영역은 실행할 프로그램의 코드가 저장되는 영역이다. 텍스트 영역이라고 부르기도 한다. CPU는 코드 영역에 저장된 명령을 하나씩..

ComputerScience 2023.10.16

OSI 7계층이란 ?

OSI 7계층이란 ? OSI 7 계층(OSI 7 Layer)는 네트워크 프로토콜이 통신하는 구조를 7개의 계층으로 분리하여 각 계층간 상호 작동하는 방식을 정해 놓은 것 이다. 이는 ISO(국제표준화기구)에서 개발한 모델이다. 나눈 이유? 계층을 나눈 이유는 통신이 일어나는 과정이 단계별로 파악할 수 있기 때문이다. 흐름을 한눈에 알아보기 쉽고, 사람들이 이해하기 쉽고, 7단계 중 특정한 곳에 이상이 생기면 다른 단계의 장비 및 소프트웨어를 건들이지 않고도 이상이 생긴 단계만 고칠 수 있기 때문이다. OSI 7계층 7 응용 계층 응용 계층(Application Layer, 7계층)에서는 OSI 7계층 모델에서 최상위 계층으로 사용자가 네트워크 자원에 접근하는 방법을 제공한다. 그리고 계층 7은 최종적으로..

ComputerScience 2023.09.03