CS지식
-
함수형 프로그래밍(FP) - 액션에서 계산 빼내기CS지식/함수형 프로그래밍 2024. 3. 27. 12:10
액션에서 계산 빼내기 MeaMart 예시 항상 가득 차있는 장바구니 MegaMart는 온라인 쇼핑몰이다. 경쟁력을 유지하고 있는 중요한 기능 중 하나는 쇼핑 중 장바구니에 담겨 있는 제품의 금액 합계를 볼 수 있는 기능이다. //장바구니 제품과 금액 합계를 //담고 있는 전역변수 let shoppingCart = []; let shppingCartTotal = 0; function addItemToCart(name, price){ shopingCart.push({ name, price }); calcCartTotal(); } function calcCartTotal(){ shoppingCartToal = 0; for(const sc of shoppingCart){ shoppinCartTotal += sc..
-
함수형 프로그래밍(FP) - 액션과 계산, 데이터CS지식/함수형 프로그래밍 2024. 3. 26. 15:42
액션과 계산, 데이터 액션 실행 시점과 횟수에 의존한다. 다른말로 부수효과(side-effects), 부수효과가 있는 함수(side-effecting function), 순수하지 않은 함수(impure function)라고 부르기도 한다. ex) 이메일 보내기, 데이터베이스 읽기 계산 입력값을 계산해 출력같은 반환한다. 다른함로 순수함수(pure function)부르기도 한다. ex) 최댓값 찾기, 이메일 주소가 올바른지 확인하기 데이터 이벤트에 대한 사실 ex) 사용자가 입려간 이메일 주소, 은행 API로 읽은 달러 수량 액션과 계산, 데이터는 어디나 적용할 수 있다. 일상에서 자주하는 활동인 장보기에 액션과, 계산 데이터를 적용해보자 함수형 프로그래밍이 아닌 방법으로 장보기 과정을 그린다면 아래 그림..
-
함수형 프로그래밍(FP) - 현실에서 함수형 사고CS지식/함수형 프로그래밍 2024. 3. 26. 12:23
현실에서 함수형 사고 미래에 피자 가게를 운영하는 토니는 피자를 만드는 로봇에 함수형 사고를 많이 적용시켰다. 먼저 토지의 가게가 어떻게 돌아가고 있는지, 또 주방과 재고 창고는 어떻게 운영되고 있는지 살표보며 함수형 사고가 어떨게 적용되었는지 알아보자 액션 반죽 펴기 피자 배달 재료 주문 액션은 호출 횟수와 시점에 의존한다. 배달차 같은 자원과 요리재료를사용하는 것은 액션이다. 액션을 사용할 때 조심해야 한다. 계산 조리법에 나온 것을 두 배로 만들기 쇼핑 목록 결정 어떤 것을 결정하거나 계획하는 것은 계산이다. 계산은 실행해도 다른 곳에 영향을 주지 않는다. 계산은 아무 때나 사용해도 주방이 엉망진창이 될 걱정이 없기 때문에 토니는 계산을 좋아한다. 데이터 고객 주문 영수증 조리법 토니는 변경 불가능..
-
함수형 프로그래밍(FP) - FP 프롤로그CS지식/함수형 프로그래밍 2024. 3. 25. 18:28
FP 프롤로그 함수형 프로그래밍(functional programming, FP) 1. 수학 함수를 사용하고 부수 효과(side effect)를 피하는 것이 특징인 프로그래밍 패러다임 2. 부수 효과 없이 순수 함수 pure function만 사용하는 프로그래밍 스타일 부수 효과 함수가 리터값 이외에 하는 모든 일을 말한다. 예를 들어 메일보내기나 전역 상태 수정하기 같은 일이 부수 효과이다. 부수 효과는 함수를 부를 때마다 발생하기 때문에 문제가 될 수 있다. 어떤 경우에는 리턴값이 필요해서 불렀지만 의도하지 않게 부수 효과가 발생할 수 있다. 불필요한 부수 효과를 가능한 사용하지 않으려고 합니다. ➕ 추가 (하지만, 이런 것이 소프트웨어를 사용하는 근본적인 이유이다.) 부수 효과에는 다음과 같은 것이..
-
함수형 프로그래밍 - 평가와 일급, 고차함수, 리스트 순회CS지식/함수형 프로그래밍 2024. 3. 25. 12:42
평가와 일급 평가 코드가 계산(Evaluation)되어 값을 만드는 것이다. 즉 평가라는 것은 코드가 계산되는 것을 의미한다. 일급 const log = console.log; //10은 값으로 다룰 수 있다. const a = 10; const add10 = a => a +10; //add10의 인자로 변수a가 전달 될 수 있다. add10(a); //a +10은 함수의 결과로 사용된다. //즉 다시 변수 r에 담아 사용가능하다. const r = add10(a); log(r); 값으로 다룰 수 있다. 변수에 담을 수 있다. 함수의 인자로 사용될 수 있다. 함수의 결과(return)로 사용될 수 있다. 일급 함수 const log = console.log; /**일급함수 */ const add5 = a..
-
하드웨어 레벨 - 메인보드CS지식/운영체제 2024. 1. 30. 09:24
메인보드 1️⃣ 가장 큼 사각형은 메인보드이다. 2️⃣ 메인보드 안에 시스템 버스(양방향 수직 화살표)가 있다. 3️⃣ CPU 내부에는 ALU(산술논리연산장치),제어장치 와 여러 레지스터가 있다. CPU는 메인보드 내 시스템 버스와 연결되어 있다. 4️⃣ 메모리는 메인보드 내 시스템 버스와 연결되어 있다. 5️⃣ 보조기억장치는 메인보드 내 시스쳄 버스와 연결되어 있다. 메모리 메모리는 현재 실행되는 프로그램의 명령어와 데이터를 저장하는 부품이다. 컴퓨터가 빠르게 작동하기 위해서는 메모리 속 명령어와 데이터가 중구난방으로 저장되어 있으면 안된다. 저장된 명령어와 데이터의 위치는 정돈이 되어 있어야한다. 그래서 메모리에 저장된 값에 빠르고 효율적으로 접근하기 위해 주소(address)라는 개념이 사용된다. ..
-
리눅스 - 라이브러리CS지식/운영체제 2024. 1. 14. 16:56
리눅스 OS가 제공하는 라이브러리(library)를 살펴보자. 프로그래밍 언어는 다수의 프로그램에서 공통으로 사용하는 처리를 라이브러리로 합쳐서 제공하는 기능이 있다. 이걸 사용해서 프로그래머는 미리 만들어지 대량의 라이브러리에서 필요한 걸 골라서 효율적으로 프로그램을 개발할 수 있다. 라이브러리 중에는 OS가 미리 공통된 기능을 가진 라이브러리를 준비해서 제공하는 경우도 있다. 프로세스가 라이브러리를 사용할 때 소프트 웨어 계층은 [그림 01-06]과 같다. 그림 01 - 06 프로세스의 소프트웨어 계층 표준 C 라이브러리 C언어는 국제 표준화 기구(ISO)에서 정한 표준 라이브러리가 존재한다. 리눅스에서도 이런 표준 C라이즈러리가 제공된다. 일반적으로 GNU 프로젝트 에서 제공하는 glibc를 표준 ..
-
리눅스 - 프로그램과 프로세스, 커널, 시스템 콜CS지식/운영체제 2024. 1. 14. 13:39
리눅스 프로그램과 프로세스 리눅스에서는 다양한 프로그램이 동작한다. 프로그램이란 컴퓨터에서 동작하는 관련된 명령 및 데이터를 하나로 묶은 것이다. Go언어와 같은 컴파일형 언어라면 소스코드를 빌드해서 만들어진 실행 파일을 프로그램이라고 부른다. 파이썬 같은 스크립트 언어는 소스코드 그 자체가 프로그램이 된다. 커널(Kernel)도 프로그램의 일종이다. 컴퓨터를 켜면 처음에 커널이 실행된다. 그외의 모든 프로그램은 커널 이후에 실행된다. 리눅스에서 동작하는 프로그램은 다음과 같은 다양한 종류가 있다. 웹브라우저: 크롬, 파이어폭스 웹서버: 아파치,Nginx 텍스트 에디터: Vim,이맥스 프로그래밍 언어 관련: Go컴파일러, 파이썬 인터프리터 등 셸(shell) : bash,zsh 등 시스템 전체 관리 소프..