CS
함수형 프로그래밍에 대하여
1. 개요 함수형 프로그래밍은 프로그래밍 패러다임의 일종으로 선언형 프로그래밍에 속한다. 수학적 함수인 순수 함수의 조합으로 프로그램을 설계하는 관점을 의미한다. 명령형 프로그래밍 vs 선언형 프로그래밍 명령형은 프로그램이 동작하는 과정과 방식(어떻게)을 결정하여 프로그램을 설계한다면, 선언형은 처리할 작업(무엇을)을 결정(선언)하여 프로그램을 설계하는 방법이다. 선언형에는 대표적으로 함수형 프로그래밍, 반응형 프로그래밍이 있다. 함수형 프로그래밍 이전의 패러다임은 절차적 프로그래밍에서 객체 지향 프로그래밍으로 변화했다. 하지만 시간이 지나면서 점점 프로그램의 규모가 커지고 복잡해짐에 따라 문제가 발생하게 됐다. 명령형 프로그램은 부작용(또는 부수효과라고 한다)을 이용하여 프로그램을 동작하게 만들기 때문..
Git과 Github에 대하여 (feat. Merge VS Rebase)
1. Git이란? Git은 코드나 소스파일을 버전별로 관리할 수 있는 버전 관리 시스템(VCS) 중 하나이다. Git은 자신이 관리하는 영역의 모든 파일들의 변경사항을 추적한다. Git은 변경사항 뿐 아니라 작업한 사람, 날짜 등을 추적할 수 있어서 협업 시 효과적으로 코드를 관리할 수 있으며 여러 사람들과 동기화가 가능하다는 장점이 있다. 코드와 소스파일을 버전별로 관리하기 때문에 특정 시점(버전)으로 롤백이 가능해서 자유롭게 기능을 개발하고 테스트 할 수 있다. 무엇보다 파일에 문제가 발생했을 때 원인을 파악하고 해결하는 대에 매우 편리하다. 2. Git의 구성 요소 1) Working Directory Git이 관리하는 파일들이 존재하는 영역으로 .git 디렉토리를 제외한 모든 파일들이 포함된다. ..
애자일(Agile)에 대하여
1. 개념 애자일은 소프트웨어 개발 방법 이론 중 하나로 신속한 반복 작업을 통해 소프트웨어를 개발하고 변화를 적극 수용하여 소프트웨어를 지속적으로 개선해나가는 방법을 의미한다. 애자일은 소프트웨어를 개발하기 위한 어떤 규칙을 제공하는 것이 아니라 개발에 필요한 가치를 제공하는 가치 체계이자 업무를 바라보는 관점이다. 따라서 애자일(Agile)은 단어의 뜻 그대로 기민하게 소프트웨어를 개발하기 위한 모든 방법을 포함한다. 애자일 방식의 개발 프로세스에는 XP, Scrum, TDD 등이 있다. 2. 배경 애자일은 전통적인 개발 방법인 워터풀 방식의 문제점을 해결하고자 등장했다. 공장 생산 라인의 제조 방법에서 파생되어 소프트웨어 개발에 적용된 워터풀 방식은 체계적인 절차와 세부적인 계획을 통해서 최초 사양..
RESTful API에 대하여
1. RESTful API란? 1) API의 정의와 역할 API는 Application Programming Interface의 약자로, 서로 다른 프로그램 또는 시스템 사이의 상호작용을 위해 정해놓은 규칙(인터페이스)을 의미한다. UI가 사용자와 프로그램 사이의 중개자라면 API는 프로그램과 프로그램 사이의 중개자로서, 주로 프로그램의 기능을 간접적으로 외부에 제공하고자 할 때 정의하여 사용한다. API 중에서도 네트워크 통신을 사용하는 웹 API는 양쪽 프로그램을 서버와 클라이언트로 나누고 중간에서 게이트웨이 역할을 한다. 웹 API 용어 리소스(Resource): 이미지, 동영상, 텍스트, 사운드 등 모든 유형의 데이터 클라이언트(Client): 리소스에 접근을 요청하는 사용자 또는 프로그램 서버(..
객체 지향 프로그래밍(OOP)에 대하여
1. 개요 객체 지향 프로그래밍은 OOP(Object-Oriented Programming)라고도 하며, 프로그램을 설계하는 방법 이론 중 하나로 명령형 프로그래밍 패러다임에 속한다. 명령형 프로그래밍이란? 프로그래밍 패러다임 중 하나로 여러 작업들이 순차적으로 처리되는 과정과 방식을 결정하여 프로그램을 설계하는 관점이다. 한 예시로 명령형 프로그래밍에 속하는 순차적 프로그래밍은 명령어를 순차적으로 처리하는 방식으로 프로그램을 설계한다. 객체 지향 프로그래밍 이전에는 절차적 프로그래밍 방식이 지배적이었는데, 절차적 프로그래밍은 프로시저(루틴, 서브루틴, 함수, 메서드)를 순차적으로 호출하여 프로그램을 설계했다. 절차적 프로그래밍은 처리 과정을 하나의 묶음으로 구조화할 수 있어서 모듈화가 쉽고 속도가 빨랐..