목록BOOKS (46)
\(@^0^@)/
프로그래밍 패러다임 (Programming paradigm) 프로그래머에게 프로그래밍의 관점을 갖게 해 주고, 결정하는 역할을 하는 개발 방법론 예를 들어, 객체지향 프로그래밍은 프로그래머들이 프로그램을 상호 작용하는 객체들의 집합으로 볼 수 있게 하는 반면에, 함수형 프로그래밍은 상태값을 지니지 않는 함숫값들의 연속으로 생각할 수 있게 해 준다. 프로그래밍 패러다임은 크게 선언형, 명령형으로 나누며, 선언형은 함수형이라는 하위 집합을 갖고, 명령형은 다시 객체지향, 절차지향으로 나눈다. 선언형 프로그래밍(declarative programming) '무엇을' 풀어내는가에 집중하는 패러다임 "프로그램은 함수로 이루어진 것이다"라는 명제가 담겨 있는 패러다임 함수형 프로그래밍(functional progr..
개발자가 프로그래밍할 때 쓰는 React.js, Vue.js 등의 라이브러리나 프레임워크의 기본이 되는 디자인 패턴의 종류와 특징들에 대해 알아보자. 디자인 패턴 소프트웨어 개발 방법에서 사용되는 디자인 패턴은 프로그램 개발에서 자주 나타나는 과제를 해결하기 위한 방법 중 하나로, 과거의 소프트웨어 개발 과정에서 발견된 설계의 노하우를 축적하여 이름을 붙여, 이후에 재이용하기 좋은 형태로 특정의 규약을 묶어서 정리한 것이다. 알고리즘과 같이 프로그램 코드로 바로 변환될 수 있는 형태는 아니지만, 특정한 상황에서 구조적인 문제를 해결하는 방식을 설명해 준다. - 위키백과 - 싱글톤 패턴 (singleton pattern) 하나의 클래스에 오직 하나의 인스턴스만 가지는 패턴. 데이터베이스 연결 모듈에 많이 ..
예전에 추천받아서 구매했던 책인데, 한 장도 읽지 않고 구매와 동시에 빳빳한 상태로 책장에 바로 꽂아 두었다가 최근에 진행하는 프로젝트의 리팩터링과 사용성을 생각해 보니, 해당 책이 떠올라서 읽게 되었음. (사용자를) 생각하게 하지 마! 웹과 모바일 사용성 원칙으로 디자인하는 UX 스티브 크룩 지음, 이미령 옮김 스티브 크룩의 사용성 제1원칙 : 사용자를 고민에 빠뜨리지 마라! 사용자가 사이트를 보며 고민하지 않고 명확하게 해결할 수 있어야 된다. 즉, 자명하게 이해되는 페이지, 아니면 최소한 설명이 없어도 이해할 수 있는 페이지를 만들어야 한다. 우리가 실제 웹을 사용하는 방법 사용자는 웹 페이지를 읽지 않는다, 훑어본다. 웹은 도구에 불과하다, 필요 이상의 것을 읽을 시간이 없다. 모든 것을 읽을 필..
액션과 계산, 데이터 구분하기 절차적인 방법으로 구현한 쇼핑몰 페이지의 코드를 함수형으로 리팩터링 하기 위해서 액션, 계산, 데이터로 구분해보자. 액션은 코드 전체로 퍼진다. 어떤 함수 안에 액션이 하나만 있어도 그 함수 전체가 액션이 된다. 함수에는 입력과 출력이 있다 정보는 입력을 통해 함수 안으로 들어간다. 정보나 어떤 효과는 출력으로 함수 밖으로 나온다. 입력과 출력은 명시적이거나 암묵적일 수도 있다. 인자는 명시적인 입력이다. 리턴 값은 명시적인 출력이다. 하지만 암묵적으로 함수로 들어가거나 나오는 정보도 있다. let total = 0; function add_to_total(amount) { // 인자는 명시적 입력 console.log("합계 :" + total); // 전역변수를 읽는 것..
액션과 계산, 데이터의 차이를 알기 챕터 1부터 계속 말하고 있지만, 다시 한번 정리해보자. 액션 실행 시점과 횟수에 의존한다. 다른 말로 부수 효과(side-effects), 부수 효과가 있는 함수(side-effecting function), 순수하지 않은 함수(impure function)라고 부르기도 한다. ex) 이메일 보내기, 데이터 베이스 읽기 계산 입력으로 출력을 계산한다. 다른 말로 순수 함수(pure function), 수학 함수(mathematical function)라고 부르기도 한다. 계산은 계산을 호출하는 코드를 계산 결과로 바꿀 수 있기 때문에 참조 투명(referentially transparent)한다. ex) 최댓값 찾기, 이메일 주소가 올바른지 확인하기 데이터 이벤트에 ..
챕터 2 - 현실에서의 함수형 사고 피자를 만드는 함수형 사고를 사용한 로봇을 예로 들어서 1. 함수형 사고 기술인 액션과 계산, 데이터 각 분류에 해당하는 예를 살펴보고 코드에 적용한 계층형 설계(stratufued design) 원칙과 2. 일급 추상의 분산 시스템을 이해하기 위한 타임라인 다이어그램(timeline diagram)에 대해 살펴보자. 1. 액션 액션은 호출 횟수와 시점에 의존하는 것. 오븐이나 배달차 같은 자원과 요리 재료를 사용하는 것은 액션. ex) 반죽 펴기, 피자 배달, 재료 주문 2. 계산 어떤 것을 결정하거나 계획하는 것은 계산. 계산은 실행해도 다른 곳에 영향을 주지 않음. 따라서 계산은 아무 때나 사용해도 됨. ex) 조리법에 나온 것을 두 배로 만들기, 쇼핑 목록 결정..
많은 함수형 프로그래밍 자료에서 함수형 프로그래밍은 부수 효과가 없는 순수한 함수로 프로그래밍을 해야 한다고 말한다. 함수형 프로그래밍을 하려면 부수 효과를 처리하는 방법을 알아야 한다. 부수 효과를 처리한다는 말은, 없앨 수 있는 부수 효과는 없애고 필요한 부수 효과는 잘 두는 것을 의미한다. 함수형 프로그래밍의 핵심 개념 계산과 액션을 구분하는 것 계산은 외부에 어떤 영향을 주지 않기 때문에 여러 번 실행해도 같은 결과를 돌려준다. 하지만 액션은 부수 효과를 가지고 있다. 화면에 글씨를 표시하거나 로켓을 발사하는 것과 같은 액션은 실행할 때마다 다른 결과가 나올 수 있다. 코드에 어떤 부분에 부수 효과가 있고 어떤 부분이 '순수한 계산' 인지 쉽게 구분할 수 있는 패턴으로 구성하면 프로그램을 쉽게 이..
[ 3장 재귀] 재귀를 쓴다고 성능이 더 나아지지는 않는다. 사실 반복문이 더 성능이 좋은 경우가 많다. 프로그램에 반복문을 사용하면 프로그램의 성능을 향상시킬 수 있지만, 재귀를 사용하면 프로그래머의 능력을 향상시킬 수 있다. 상황에 따라 적절한 방법을 골라 사용해야 한다. 대부분의 중요한 알고리즘들이 재귀를 사용하므로 개념을 잘 이해해야 한다. [ 3장 요약 ] 재귀는 함수가 스스로를 호출하는 것이다. 모든 재귀 함수는 기본 단계와 재귀 단계라는 두 부분으로 나누어져 있다. 스택에는 push와 pop이라는 두 가지 연산이 있다. 모든 함수 호출은 호출 스택을 사용한다. 호출 스택은 너무 커져서 메모리를 엄청나게 소비할 수도 있다. [4장 퀵 정렬] 분할 정복 문제 해결 방법 중에서 가장 유명한 재귀..
[ 1장 알고리즘 소개 ] 많이 사용하는 빅오 실행 시간의 예 O(log n), 로그 시간 : 예) 이진 탐색 O(n), 선형 시간 : 예) 단순 탐색 O(n * log n) : 예) 퀵 정렬과 같이 빠른 정렬 알고리즘 O(n²) : 예) 선택 정렬과 같이 느린 정렬 알고리즘 O(n!) : 예) 외판원 문제와 같이 정말 느린 알고리즘 빈 종이에 16개의 네모칸을 만드는 문제를 예로 들어 각 빅오 실행 시간을 알아보자. 네모 칸의 수 O(log n) O(n) O(n log n) O(n²) O(n!) 16개 0.4초 1.6초 6.4초 25.6초 66301년 256개 0.8초 25.6초 3.4분 1.8시간 2. x 10⁴⁹⁸년 1024개 1.0초 1.7분 17분 1.2일 1.72 x 10²⁶³¹년 이진 탐색은..
오늘 읽은 범위 : (프로토타입) p.160 ~ p.174 프로토타입 체인 메서드 오버라이드 인스턴스가 동일한 이름의 프로퍼티 또는 메서드를 가지고 있는 상황이라면? var Person = function (name) { this.name = name; }; Person.prototype.getName = function () { return this.name; }; var iu = new Person('지금'); iu.getName = function () { return '바로 ' + this.name; }; console.log(iu.getName()); // 바로 지금 당연히 iu.__proto__.getName이 아닌 iu 객체에 있는 getName 메서드를 호..