목록분류 전체보기 (41)
프랙티스만이 살길. 프랙티스만이 살길.
make나 clang을 사용할 때, 4가지 단계를 거칩니다. 전처리(Precompile) 첫 번째 단계는 전처리인데, 전처리기에 의해 수행된다. # 으로 시작되는 C 소스 코드는 전처리기에게 실질적인 컴파일이 이루어지기 전에 무언가를 실행하라고 알려준다. 예를 들어, #include는 전처리기에게 다른 파일의 내용을 포함시키라고 알려줍니다. 프로그램의 소스 코드에 #include 와 같은 줄을 포함하면, 전처리기는 새로운 파일을 생성하는데 이 파일은 여전히 C 소스 코드 형태이며 stdio.h 파일의 내용이 #include 부분에 포함됩니다. 컴파일(Compile) 컴파일러라고 불리는 프로그램은 C 코드를 어셈블리어라는 저수준 프로그래밍 언어로 컴파일한다. 어셈블리는 C보다 연산의 종류가 훨씬 적지만, ..
C언어 C언어는 오래되고 전통적인 순수 텍스트 기반의 언어이다. #include int main(void) { printf("hello, world\\n"); } int main(void)는 시작한다의 의미를 가지고있고, 뒤에 {}중괄호에 코드를 작성한다. stdio.h는 “stdio.h”라는 이름의 파일안에 printf라는 함수를 찾아서 접근 할 수 있도록 해준다. C언어로 작성한 코드를 “name.c”로 저장해야한다. 컴파일러 위 처럼 작성된 코드를 **“소스코드”**라고 부른다. 이를 2진수로 작성된 **“머신코드”**로 변환하면 컴퓨터가 이해할 수 있다. 이 작업을 컴파일러라는 프로그램이 수행해준다. clang은 코드를 컴파일하는 프로그램의 이름이다. 터미널에 clang name.c라는 명령어를 ..
컴퓨터 과학 문제해결을 위한 학문으로, 문제해결은 입력(input)을 받아 출력(out put)을 만드는 과정이다. 2진법 0과 1로 수를 표현하는 것. 컴퓨터는 이진법을 이용한다. 컴퓨터의 수많은 트렌지스터가 on/off 상태를 이용하여 0과 1을 표현한다. 2진법에서 하나의 자릿수를 표현하는 단위를 비트(bit)라고한다. 비트는 binary digit의 줄임말로서, 0과 1 중 하나만 가질 수 있는 측정단위이다. 바이트(byte)는 8개의 비트가 모여 만들어진 것이다. 하나의 비트에는 0과 1이 들어갈 수 있고, 여덟자리가 있기 때문에 $2^8$개의 서로 다른 바이트가 존재 할 수 있다.비트와 바이트 ASCII 컴퓨터는 0과1밖에 사용하지 않기 때문에 문자를 숫자로 표현하기 위해서는 0과1의 조합으로..
데이터과학부생활을 하며 컴퓨터에 대한 지식이 타 학과 생들에 비해 부족함을 느꼈었다. 통상적인 커리큘럼을 통한 학습보다는 가볍게 교양적 지식만 훝어볼 것이기에 boostcourse의 강좌인 모두를 위한 컴퓨터 과학 (CS50 2019)를 선택했다.(*CS50 : 하버드 대학교의 컴퓨터과학 입문 강좌) 하버드의 David J. Malan (데이비드 J. 말란)교수님의 야무진 강의를 듣고, 키워드 위주로 정리해보려 한다.
LSE(least squares estimation)는 주어진 데이터 포인트들과 그에 대응하는 예측값 사이의 오차를 최소화하는 방법입니다. 어떤 행렬 A의 column space위에 존재하지 않는 벡터 b가 있을때. b룰 c(a)에 정사영을 내린 벡터 AX̂을 찾는 방법입니다. b - AX̂를 e라고 하면 $||e||^2$가 가장 작을때 AX̂가 b의 정사영이 됩니다. $(b - A\hat{X})^{T}A\hat{X} = 0$ $(b^{T}A - \hat{X}^{T}A^{T}A)\hat{X} = 0$ $b^{T}A = \hat{X}^{T}A^{T}A \Leftrightarrow A^{T}b = A^{T}A\hat{X}$ $A^{T}b = A^{T}A\hat{X}$를 정규방정식(normal equation..