CS50 - 3.배열(1)

KIMMY·2020년 7월 15일

CS50

목록 보기
3/8

1. 컴파일링

컴파일링은
전처리 -> 컴파일 -> 어셈블 -> 링크
순서로 진행된다.

소스코드는 전처리를 거치고 컴파일을 거쳐 '어셈블리어'로 되고 이는 '어셈블'과정을 거쳐 오브젝트코드(컴퓨터가 이해하는 언어 0,1)로 바꿔준다. 이후 프로그램이 여러 파일로 이루어져있다면 '링크'를 통해 하나의 오브젝트코드로합쳐준다.

2. 디버깅

디버깅은 프로그램을 특정 지점에서 멈춘 후 스텝 바이 스텝으로 진행해 볼 수 있다. 이를통해 어디서 문제가 생겼는지 알 수 있게 됨.

3. 코드의 디자인

코드는 유지보수가 쉽게 작성되어야한다.
최소한 내가 만든 코드를 며칠 뒤에 봤을 때 '아니 이게뭐지?'라는 반응은 나오면 안된다.
다른 사람이 봐도 읽기쉬운 코드를 작성하기위해 노력해야한다.
+여러 도구의 도움을 받아 코드를 잘 작성할 수 있다.
+러버덕 디버깅이라는 방법을 통해 버그를 해결할 수도 있다.

  • 러버덕 디버깅이란, 오리인형(러버덕)을 두고, 친구에게 말하듯 내 코드(논리)를 설명하는 것이다. 그러던 중 아! 아니지! 이거지! 같은 순간을 만날 수 있다.
  • 이는 그저 매우 신중한 사고 과정을 위한 방법이다.

4. 배열

배열은 왜 필요했을까? 생각해 본적은 없었다.
해당 강의를 통해 어떤 필요에 의해 생기게 되었는지 생각해 볼 수 있었다.

  • 배열은 같은 자료형의 데이터를 메모리상에 연이어서 저장하고 이를 하나의 변수로 관리하기 위해 사용된다.
  • 이를통해 같은 형태의 변수들을 계속 생성할 필요가 없어진다.
  • js에서는 사실 다른 자료형도 object도 들어간다 또 다른 배열도 들어간다 (아직까지 배운 바로는 C는 안되나보다) 그래서 js의 배열은 진짜 배열이 아니다 라는 말이 있나?

c라는 언어는 js보단 불편해 보인다. float 또는 int라고 꼭 명시를 해줘야 하고, number로는 되지 않나보다.
또 특이한 것은 함수 앞에 어떤 값이 return될지 선언하고 시작된다. (float, int, etc..) 그리고 sefl 호이스팅까지.

profile
SO HUMAN

0개의 댓글