티스토리 뷰
주어진 학습목표를 이루기 위해서 이해를 우선으로 두고 공부할 것이다.
들어가기 전에 학습목표, 핵심 단어는 강의 자료를 가져올 것이고 그 이후로는 내가 이해하고 공부한 부분을 직접 적고, 마지막에는 배운 점이나 느낀 점을 적도록 하겠다.
들어가기 전에
그래픽 인터페이스로 상호작용성이 좋은 스크래치로도 간단한 프로그래밍을 할 수 있지만, 텍스트 기반의 프로그래밍 언어를 이용해도 컴퓨터에게 동일한 일을 하게 할 수 있습니다. 가장 널리 쓰이는 프로그래밍 언어중 하나인 C의 기초를 배워보겠습니다.
학습 목표
C로 “hello, world”를 출력하는 프로그램을 만들 수 있습니다.
핵심 단어
- stdio.h
- clang
- 컴파일러
stdio.h
C는 아주 오래되고 전통적인 순수 텍스트 기반의 언어이다. 아래는 "hello, world"를 줄바꿈으로 출력하는 코드이다.
#include <stdio.h> : "stdio.h"라는 이름의 파일을 찾아서 "print"함수에 접근시켜준다.
int main(void)'시작한다'라는 의미를 담고있다.
앞으로 작성할 코드는 int main(void) {} 중괄호 사이에 작성하게 된다.
#include <stdio.h>
int main(void)
{
printf("hello, world\n");
}
컴파일러
위의 코드는 우리가 직접 작성한 "소스코드"라고 한다. 하지만 컴퓨터는 이 문자를 곧이 곧대로 이해할 수 없기 때문에 2진수로 바꿔서 컴퓨터에게 전송해야한다. 그 2진수로 작성된 코드는 "머신코드"라고 하며 이 과정을 컴파일러라는 프로그램이 수행해준다.
"clang"이라는 컴파일러로 "hello.c"라는 코드를 컴파일 하라는 명령어이다.
$ clang hello.c
그 결과로 a.out이라는 파일이 생성된다. 이는 머신코드이다.
컴퓨터가 현재 디렉토리에 있는 a.out이라는 프로그램을 실행시켜준다. 맨앞의 .은 현재 폴더를 의미한다.
$ ./a.out
물론 이런식으로 다른 이름의 머신파일을 저장할 수 도있다.
$ clang -o hello hello.c
// 실행
$ ./hello
명령어 프롬프트를 사용해 리스트나 파일을 삭제 할 수 있다. (ls, rm)
ls를 통해 현재 디렉토리에 있는 파일의 목록이 나온다. 파일명 뒤에 *은 실행할 수 있는 머신파일을 의미한다.
$ ls
// a.out* hello* hello.c
생각해보기
C언어는 처음이지만 이번 강의를 통해 가볍게 한 번 접해보는 것도 아주 좋은 기회라는 생각이 들었다. (물론 가볍게 배울 수 있는 언어는 아니지만..? )
그동안 공부하면서 '이진수로만 이뤄진 컴퓨터가 어떻게 내가 쓰는 코드를 이해하지?' 라는 것에 대해 의문을 가져본적이 없었다.
하지만 첫 강의부터 듣다보니 그 궁금증이 생기고, 오늘 컴파일러라는 프로그램을 배우면서 좀 더 컴퓨터를 이해할 수 있게 되었다.
Reference : CS50
'CS (Computer science)' 카테고리의 다른 글
[CS50 | 모두를 위한 컴퓨터 과학] C - 조건문과 루프 (0) | 2022.04.06 |
---|---|
[CS50 | 모두를 위한 컴퓨터 과학] C - 문자열 (0) | 2022.04.05 |
[CS50 | 모두를 위한 컴퓨터 과학] 컴퓨팅사고 - 스크래치(기초,심화) (0) | 2022.04.01 |
[CS50 | 모두를 위한 컴퓨터 과학] 컴퓨팅사고 - 알고리즘 (0) | 2022.03.31 |
[CS50 | 모두를 위한 컴퓨터 과학] 컴퓨팅사고 - 정보의 표현 (0) | 2022.03.30 |
- Total
- Today
- Yesterday
- 클로저
- 프로그래머스 베스트앨범 자바스크립트
- network
- 실전프로젝트
- 백준
- 항해99
- css
- 알고리즘자바스크립트
- 자바스크립트 비동기 처리
- 타입스크립트
- 자바스크립트 클로저
- GIT
- 모두를 위한 컴퓨터 과학
- 프로그래머스 자바스크립트
- 네트워크
- html
- React Query
- cs50
- python
- 자바스크립트
- github
- 모두를위한컴퓨터과학
- 자바스크립트알고리즘
- 리액트네이티브
- React
- javascript
- 리액트
- reactquery
- 프로그래머스
- 무한스크롤
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |