반응형
객체지향프로그래밍 ( Object Oriented Programming ) 이란 ? 먼저 OOP를 이해하기 위해선 절차지향적 프로그래밍에 대해 알아야하는데요, 절차 지향 프로그래밍 ( PP : Procedural Programming )에 대해 설명하자면, 순차적인 처리를 중요시하며, 프로그램 전체가 유기적으로 연결되어 있습니다. 그렇기 때문에 프로그램을 이해하기 어렵고 유지보수가 어렵다는 등의 단점이 있지만 속도가 빠르다는 장점이 있습니다. OOP는 위와 같은 절차지향적 프로그래밍의 단점을 보완하기 위해서 만들어졌습니다. 객체란 "실제로 존재하는 것"으로 우리가 주변에서 볼 수 있는 책상, 의자, 컴퓨터와 같은 사물들을 곧 객체라고 할 수 있습니다. 이처럼, 객체지향프로그래밍 ( OOP )은 현실 세계..
개발을 하다 보면 아스키 코드, 유니코드란 말 참 많이들어 보셨을겁니다. 많이는 들어봤지만 자바스크립트를 공부할때는 실제로 크게 쓰이지않아 나중에 알아봐야지 했지만, 자바를 공부하고 나서 아스키코드와 유니코드를 이해하는게 필요하다고 느끼게 되어 ASCII(아스키 코드)와 Unicode(유니코드)가 무엇인지에 대해 포스팅해보려 합니다. 설명하기 앞서 인코딩(encoding)과 디코딩(decoding)에 대해 알아보겠습니다. 위 그림을 보면 문자 'A'의 유니코드가 65인 것을 알 수 있습니다. 그래서 문자 'A'를 인코딩하면 65가 되고, 반대로 65 유니코드를 디코딩하면 문자 'A'가 됩니다. 여기서 인코딩이란 ? 문자를 코드로 변환하는 것을 말합니다. 즉, 컴퓨터는 0과 1밖에 모르기 때문에 'A'라는..
TDD ( Test Driven Development ) TDD란 "Test Driven Development"의 약자로 "테스트 주도 개발"이라고 합니다. 제품이 오류 없이 정상 작동하는지 확인하기 위해 모든 코드는 프로그래머가 작성하고 나서 테스트를 거치게 되는데, TDD에서는 제품의 기능 구현을 위한 코드와 별개로, 해당 기능이 정상적으로 움직이는지 검증하기 위한 테스트 코드를 작성합니다. 이를 통해 테스트가 실패할 경우, 테스트를 통과하기 위한 최소한으로 코드를 개선하고, 최종적으로 테스트에 성공한 코드를 리팩토링 하는 과정을 거칩니다. TDD 개발 절차 테스트 주도 개발은 다음과 같은 개발 절차를 가집니다. RED ( Write a failing test ) : 실패하는 테스트 코드를 먼저 작성..
이전 포스팅에선 프로세스와 스레드에 대해 알아보았습니다. 이번 포스팅에선 멀티 프로세스와 멀티 스레드에 대해 알아볼건데요. 프로세스와 스레드가 무엇인지에 대해 이해가 안가신다면 아래 포스팅을 참고하시면 됩니다. 프로세스와 스레드(process, thread)에 대해 알아보자. Process ( 프로세스 ) “프로그램 ( 어떤 작업을 위해 실행할 수 있는 파일 .exe )이 메모리에 올라와 운영체제로 부터 CPU를 할당받고 프로그램이 연속적으로 실행되고있는 상태.” ( 일을 처리하는 hstory0208.tistory.com 멀티 프로세스 ( Multi Process ) 하나의 프로세스는 하나의 작업만 처리할 수 있기 때문에 여러 작업을 동시에 처리할 수 없습니다. 그렇기 때문에 부모 프로세스를 fork 해..
2022.10.04 - [CS 기초 지식/[운영체제]] - 멀티 프로세스와 멀티 스레드란 ?Process ( 프로세스 )“프로그램 ( 어떤 작업을 위해 실행할 수 있는 파일 .exe )이 메모리에 올라와 운영체제로 부터 CPU를 할당받고 프로그램이 연속적으로 실행되고있는 상태.” ( 일을 처리하는 일련의 과정 ) 음식을 예로 우리가 치킨을 먹기 위해 BBQ 치킨에 갔다고 가정해봅시다.BBQ에가서 치킨을 주문시키면 BBQ의 레시피를 주는 것이아니라 BBQ만의 특별한 레시피를 가지고 치킨을 만들어 주겠죠 ? 여기서 레시피가 코드 파일 ( 프로그램 )이고, 치킨은 프로그램이 실행 되어 우리가 사용할 수 있는 프로세스 입니다.레시피를 통해 치킨을 만드는 것처럼, 코드 파일( 프로그램 )을 실행 시켜 "프로세..
컴퓨터는 크게 2가지로 구분할 수 있습니다. 물리적으로 만질 수 있는 하드웨어(키보드, 모니터, 컴퓨터 본체와 본체 안에 있는 CPU, 메모리 등) 물리적으로 존재하지 않는 소프트웨어 그리고, 소프트웨어는 운영체제(Linux, MacOS, Windows 등)와 그 위에 설치되는 프로그램인 응용 프로그램 (Exel, Chrome 등)으로 다시 나눌 수 있습니다. 그리고 운영체제는 커널(Kernel)과 시스템 프로그램으로 구분됩니다. 커널(Kernel)과 시스템 프로그램 커널은 운영체제의 핵심부분으로써 주로 디바이스 관리, 프로세스 관리, 메모리 관리, 시스템 콜 제공 같은 기능을 관리하는 등, 컴퓨터 자원을 관리합니다. 하지만 커널은 항상 컴퓨터 자원들만 바라보고 있어 사용자와 직접적인 상호작용은 하지 않..