T I L / 7월 5일

Jay·2020년 7월 5일
0

Today I Learned 🧐

목록 보기
55/71
post-thumbnail

CS50 정리

  • 컴퓨터는 프로그래밍 언어를 이해할 수 없다. 컴퓨터가 이해할 수 있는 건 0과 1로 이루어진 기계언어이기 때문에, C언어나 자바같은 프로그래밍 언어로 코드를 작성하면 이를 기계어로 바꾸기 위해 컴파일과정을 거쳐야 한다. (C언어에서는 clang이라는 컴파일러가 있다.)
    C언어에서 라이브러리를 사용할 때 import하고 끝나는 것이 아니고, 컴파일 과정을 거칠 때 라이브러리와 작성한 파일을 연결하는 명령어(-l[라이브러리명])를 사용해 연결해 준 뒤 두 코드를 함께 컴파일 해야한다. (이 복잡스러운 과정을 거치고 싶지 않다면 make 명령어를 사용하면 된다.)

  • 램(RAM)이란 단기 기억 장치인데, 하드디스크와는 달리 일시적으로 정보를 저장한다. 현재 실행되고 있는 프로그램의 정보를 저장하기 때문에, 램의 크기가 성능에 중요한 역할을 한다. 하지만 램은 용량이 한정되어 있기 때문에 코드를 입력할 때도 이런 메모리의 특성을 유념해야 한다. 할당된 메모리를 초과하면 불확실한 값을 도출(오버플로우)하기 때문이다. 예를 들면 c언어에서 integer는 4바이트까지만 값을 저장할 수 있기 때문에 2^32(2,147,483,648) 이상은 연산이 안된다.

#include <stdio.h>

int main(void)
{
    int x = 2147483648;
    for (int i = 0; i < 10; i++)
    {
        printf("%f \n", x + i);
    }
}
  • 예전에 맨 처음 프로그래밍 언어 공부할 때 자바로 했는데 몇번을 봐도 이해가 안가서 며칠만에 그만둔 적이 있다.(그리고 접을뻔) 그때는 컴파일 하는게 뭔지도 모르겠고 뭐가 이렇게 복잡스러운가? 이게 다 뭐지? 왜 같은파일이 두개지? 이런 생각을 했었는데, 이 강의로 그동안 덮어둔 컴파일언어의 작동 방식에 대해 알게 됐다.
profile
You're not a computer, you're a tiny stone in a beautiful mosaic

0개의 댓글