티스토리 뷰

생각정산

전산학 사용법

고래처럼 2023. 4. 20. 20:42

 전산학(컴퓨터 공학, 컴퓨터 과학)의 핵심은 내부 구조를 설계하고 이것을 적당한 것만 추려 드러내는 데에 있다. 이런 기법을 보통 추상화(Abstraction)라고 부른다. 어렵고 복잡한 내용을 중요한 개념으로 간추린다는 의미다. 컴퓨터는 인간이 만들어낸 가장 복잡한 시스템 중 하나다. 한 명의 인간은 생애동안 컴퓨터의 모든 것을 이해할 수 없다. (만약 가능하다고 해도, 인생에서 많은 것을 포기해야만 할 것이다.) 추상화는 컴퓨터 시스템의 각 분야에서 핵심만을 간추려, 우리가 위대한 일을 할 수 있도록 해준다. 프로그래밍 언어, 운영체제, 데이터 구조, 알고리즘, 네트워크 등 전산학에서 다루는 모든 주제에서 이 점을 살펴볼 수 있다.

 

 프로그래밍 언어에서 번역기(컴파일러)의 예를 들어보자. 번역기는 인간이 이해하기 쉬운 프로그래밍 언어를 컴퓨터에서 실행할 수 있는 기계어로 번역하는 역할을 하는 프로그램이다. 컴파일러가 없던 시절에는 C, Python 등 사람이 이해하기 쉬운 언어를 사용할 수 없었다. 애초에 그런 언어가 존재하지도 않았으며, 프로그래머는 기계어를 사용해 직접 프로그램을 작성해야만 했다. 기계어는 CPU를 설계한 회사에 따라, 아키텍처에 따라 달라졌기 때문에 프로그래머는 이런 세부사항들을 직접 이해하고 사용해야만 했다. 하지만 컴파일러가 등장하면서, 프로그래머는 컴퓨터 프로그램의 기본 원리만을 가지고 프로그램을 작성할 수 있게 되었다. CPU나 메모리 구조가 작동하는 최소한의 원리만 알면 프로그램을 작성할 수 있게 된 것이다. 지금도 CPU와 메모리 구조의 동작을 이해하는 것은 프로그램을 작성하는 데 아주 중요하지만, 그런 세부사항을 모른다고 해서 컴퓨터 프로그래밍이 불가능하지는 않다. 컴파일러가 컴퓨터 프로그램의 핵심 원리만을 간추려 내었기 때문에 이제 그 내용만 알면 프로그래밍을 할 수 있다.

  운영체제 또한 추상화의 위대한 업적이다. 운영체제가 없으면 프로그래머는 컴퓨터 시스템이 사용하는 자원을 모두 이해해야만 한다. CPU, 메모리, 네트워크, 저장장치 등등 컴퓨터 시스템의 모든 것을 직접 사용해야 하기 때문이다. 요즘처럼 인터넷 서핑을 하면서, 노래도 듣고, 문자 메시지도 하면서, 넷플릭스도 봐야 하는 세상에서는 있을 수 없는 일이다. 각 프로그램이 서로 모니터를 사용하겠다고, 네트워크를 사용하겠다고, 스피커를 사용하겠다고 경쟁하며 컴퓨터 시스템을 망가뜨릴 것이다. 운영체제는 이런 문제를 해결한다. 운영체제는 각 프로그램들에게 컴퓨터 자원을 공평하게 배분할 권한을 가지고 있기 때문에, 각 프로그램들이 컴퓨터 시스템을 망가뜨리지 않고 적절하게 사용할 수 있도록 강제한다. 운영체제의 도입으로, 어플리케이션 프로그램은 컴퓨터 시스템을 사용할 때 다른 프로그램들이 자원을 어떻게 사용하고 있는지 고려할 필요가 없어졌다. 운영체제가 제공하는 자원을 사용하는 방법만 알면 되었기 때문에, 어플리케이션 프로그램 작성이 아주 간단해졌다. 자원을 구체적으로 어떻게 운용할지는, 운영체제가 해결할 문제다.

 

 전산학은 공부할수록 추상화의 모습이 많이 보인다. 프로그래밍 언어, 운영체제뿐 아니라 다른 곳에서도 이런 패턴은 계속된다. 어떤 내부구조를 가지고 있고 어떤 내용을 추려내 드러낸 것인지 파악해 보면 전산학의 요체를 파악하기 쉬울 것이다. 전공자 거나, 컴퓨터를 제대로 이해하고 싶다면 내부 구조의 세부사항까지 파고들어 가는 것을 권하고 싶다. Python, JavaScript 등 배우기 쉬운 프로그래밍 언어가 득세하고, 컴퓨터가 실제로 어떻게 돌아가는지 고려하지 않고 작성된 프로그램들이 많은 인기를 끄는 것을 볼 수 있는데, 이런 트렌드만을 따르다가는 개인적인 의견이지만 결국 추상화의 한계를 마주할 것이다. 시스템을 심도 있게 이해한다면 머지않아 프로그램을 작성하면서 사소하게 작성했던 코드도 치열하게 고민하며 다시 작성하고 있는 자신의 모습을 볼 수 있을 것이다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday