Software Engineering 5

Difference between Process and Thread (+ Program)

프로세스와 스레드의 차이가 뭐죠? 차이점도 설명해주세요! 기술 면접 단골 질문으로 알려진 프로세스와 스레드의 차이점, 몰랐다! 매번 실무 얘기 하다가 기술 질문을 던져주시는 사수분께 감사한다. (꾸벅) 제대로 공부했음을 증명? 하기 위해 그리고 기록하기 위해 포스팅을 한다. 나처럼 프로세스와 스레드의 차이점에 대해 잘 모르는 분들께 도움이 되기 위한 글이다. 나는 운영체제 OS와 같은 CS 지식에 어려움을 느끼고 있고 이해를 하기 위해서 여러 번 반복해서 곱씹어보아야 한다. 익히기에 좋은 배경을 갖고 있지 않았지만 부족함을 채우려 지속적으로 노력 중이다. 이 글을 보고나서 모든 분들이 헷갈리던 개념에 대해 제대로 이해할 수 있었으면 좋겠다. 운영체제는 현재 하드웨어의 상태는 어떠한지, 여러분의 코드가 어..

Single Linked list 자료구조 이해하기, 알고리즘, JavaScript

코딩테스트를 이전에 보았었는데 큰 어려움을 느꼈었다. 원인으로 자료구조에 대한 이해가 부족함을 깨닫고 유데미에서 알고리즘 강의를 두 가지 듣게 되었다. 시간 복잡도와 공간 복잡도.. 등에 대한 개념과 여러 자료구조를 접하고 보고 퀴즈를 풀 수는 있었지만 그것을 직접 코드로 만들어내는 부분, 실제로 알고리즘 문제를 풀어낼 때 연결할 수 있는 부분이 약했다. 강의를 통해 스스로 시각화를 해내는 법을 익혔지만 휘발성이 강하여 강제로 계속 반복적으로 기억해 내기 위해 Linked list라는 주제부터 꺼내오게 되었다. 그리고 어째서 이 자료구조에 대한 특성들을 알아야 하는가,,에 대한 고찰을 담아보려 한다. 시간복잡도 Big O에 대한 개념 설명은 생략한다! Linked List 연결 리스트 요소 간의 연결(L..

MVC Pattern의 본질, GUI, 관심사의 분리, 파생된 아키텍처 패턴 알아보기

이번에 리액트 기초 공부 시작을 위해 수강하게 된 강의에서 MVC패턴을 사용하여 코드를 짜게 되었다. MVC패턴이 무엇인지, 다른 디자인 패턴의 종류도 궁금했고 본질이 궁금하여 알아보게 되었다. History of MVC 1979년 MVC의 탄생 1979년, Xerox Parc(Palo Alto Research Center) 연구원들은 현재 우리가 누리고 있는 IT 기술의 여러 원형을 개발, 연구 중이었다. 그 중 TrygveReenskaug 트라이브 린스케이지는 다이나북(Dynabook) 팀에서 일하게 되었다. 다이나북은 최초의 태블릿 PC로, 전문 지식의 여부나 남녀노소에 상관없이 모두가 직관적으로 사용할 수 있어야한다는 철학을 내세우고 있었으며 프로그래머들이 쓸 수 있는 CLI가 아닌 일반 사람들의..

프레임워크와 라이브러리의 차이점, Inversion of Control과 Dependency Injection

프레임워크와 라이브러리의 차이점은 무엇일까? 개발자들은 흔하게 접할 수 있는 단어다. 다만 그 차이를 명확하게 한 줄로 설명할 수 있는가,,? 나는 못한다. 그래서 정리하기 위해 포스팅을 해본다! Framework와 Library 프레임워크는 다양한 라이브러리의 모음이라고 대답하는 경우가 많다. 하지만 이 정의는 전적으로 사실이라 할 수 없다. 정확한 구분을 위해선 "누가 누구를 호출하는가?" caller/callee를 정의해야 한다. Framwork 🖼️ 프레임워크는 사용자가 사용자 지정 애플리케이션을 만들기 위해 작성하는 개방형, 또는 구현되지 않은 함수 또는 객체를 정의한다. 프레임워크는 그 자체로 애플리케이션이기 때문에 범위가 더 넓고 사용자의 필요에 따라 사용자 애플리케이션을 만드는 데 필요한 ..

Imperative 명령형, Declarative Programming 선언형 프로그래밍

이전에 공부했던 키워드이지만 명확하게 한마디로 정의할 수 없어서 복습을 위해 다시 공부해본다! Programming Paradigms 프로그래밍 패러다임 Paradigm은 어떤 문제를 해결하거나 어떤 작업을 수행하는 방법 어떻게 프로그래밍을 할 것인가? Programming Paradigm은 특정 프로그래밍 언어를 사용하여 문제를 해결하는 접근 방식, 또는 특정 접근 방식에 따라 사용할 수 있는 도구와 기술을 사용하여 문제를 해결하는 방법이다. 프로그래밍 언어는 알려진 것이 많지만 모두 구현할 때 몇 가지의 전략을 따르는데, 이 방법론/전략이 패러다임이다. 프로그래머에게 프로그래밍 관점을 갖게 하고 코드를 어떻게 작성할지 결정하는 역할을 한다. 새로운 프로그래밍 패러다임을 통해서 새로운 방식으로 생각하는..