Day2
오늘은 STAR(simple TAR-like file archiving program)를 만들기 시작했다. 먼저 command line interface를 만들고, 그 후에 여러가지 test case들을 만들었다. 다음으로는 1개의 파일에 대해 동작하는 프로그램을 구현하기 시작했는데, 생각만큼 쉽지 않았다.
- 테스트 케이스들을 먼저 잘 설계하는 것이, 이후에 직접 프로그램을 짜는데에 도움이 된다는 것을 배웠다. 테스트 케이스를 통해서 상황들을 먼저 잘 정리해두면, 직접 구현할 때 놓치지 않고 잘 설계할 수 있겠다는 생각이 들었다.
- 코드를 짤 때 실제로 내부에서 시스템이 어떻게 돌아갈지 생각하는 것이 왜 중요한지 생각해 보았다.
내 코드는 시스템의 입장에서 너무 낭비되는 부분이 많았다. 이유를 생각 해 보았는데, 첫째로는 내가 사용법만 보고 가져다 쓴 함수들의 내부 동작을 정확하게 이해하지 못했기 때문인 것 같고(이게 왜 위험한지 느낄 수 있었다.), 둘째로는 아직 시스템의 구조나 상황에 대한 개념이 정확하게 잡히지 않았기 때문이라는 생각이 들었다.
- C언어에서 구조체가 메모리에 어떻게 올라가는지를 알게 되었다. 구조체는 배열의 개념처럼 각각의 멤버들이 순서대로 나열되어 있다. 또한 C언어를 작성할때는, 어셈블리 언어로 어떻게 해석될지를 이해해야 하는 것이 중요하다는 것을 배웠다.
- fread(), fwrite() 함수를 사용하려고 하니 아직 헷갈리는 부분들이 많았다. 그래서 다시 살펴보게 되었다.
두번째 와 세번째 인자는 각각 size 와 count를 나타내는데, salloc() 함수와 비슷하다고 생각하니 이해하기가 수월했다. 제대로 알지 못하고 함수를 사용하니 결국에는 다시 공부를 해야했다. 처음부터 사용하기 전에 확실히 공부를 해야겠다는 생각이 들었다.
- Command line interface를 먼저 꼼꼼하게 작성하면서 프로그램작성을 시작해 보았다. command line interface를 잘 만드는 것이 대부분의 에러처리를 하는 것이라고 한다. 나름 열심히 작성 해 보았는데, 만들고 나니 구조가 깔끔하게 잡히는 느낌이 들었다.