본문 바로가기
공부/Deep Learning : 네부캠 AI Tech

부스트캠프 1주차 #1 - OS, 터미널, 개발환경

by 도리언 옐로우 2023. 11. 7.

 

1. 서

부스트캠프가 본격적으로 시작되었다. 1주차의 수업은 지원과정에서 미리 제공된 pre-course의 강의와 합격후 온보딩 클래스에서 제공된 강의내용과 겹치는 부분이 많다. 굉장히 기초적인 부분도 세세하게 설명해주셔서, 기초부터 탄탄히 세우고 싶었던 나에게 정말 잘 맞았다. 오늘부터는 그날그날 공부한 내용을 리마인드하는 느낌으로 가급적 매일 기록을 남기려 한다. 기록의 방향성은 개별지식의 재구조화(컨텐츠 보호를 위해 단순정리,요약은 금지된다)를 통한 학습데이터의 정리 쯤으로 잡았다. 좀더 구체적으로는 학습내용에서부터 파생되는 개념이나 짚고넘어갈 부분들로 확장하여 정리해보는 것이 목적이다. 어쨌든, "정리되지 않은 지식은 내 것이 아니다"라는 공부계의 명언을 새기며 차근차근 정리해보려 한다.

 

 

2. 공부내용 리뷰 - 컴퓨터OS, 터미널, 개발환경

(1) 컴퓨터 OS

비전공자인 내가 개발자가 되기 위해서는 CS 공부를 꾸준히 해나가야 하는데, 대표적으로 공부해야 하는 과목중 하나가 '운영체제'이다. 자세한 공부는 추후에 하기로 하고 여기서는 쌩기초 개념을 정리해본다.

 

컴퓨터OS(Operating System, 운영체제)는 프로그램이 동작할 수 있는 구동환경을 말하는데, 대표적인 OS의 예시로는  Windows, Mac, Linux, Unix 등을 들 수 있다. 운영체제는 컴퓨터 시스템의 한정된 자원을 관리하고 사용자에게 컴퓨터 사용환경을 제공한다. 

 

운영체제의 구성요소로는 커널(kernel)과 셸(shell)이 있다. 커널은 운영체제의 핵심요소로,  소프트웨어로부터의 system call을 하드웨어가 처리할 수 있도록 변환하는 역할을 한다. 운영체제의 정체성은 커널에 의해 결정된다고 한다.

Kernel (위키백과)

 

셸은 사용자와 커널 사이에서 사용자의 명령어를 해석하여 커널을 통해 하드웨어를 제어하고 그 결과를 사용자가 확인할 수 있게 한다. 셸의 종류에는 CLI(Command-Line Interface)와 GUI(Graphical User Interface)가 있다. 예를들어 명령프롬프트는 CLI, 스마트폰 터치스크린이나 윈도우공간 GUI로 이해하면 된다.

 

Application은 운영체제에 맞춰 제작되기 때문에 다른 운영체제에서는 돌아지 않는다.

 

 

(2) 터미널

터미널은 명령어 입력을 통해 컴퓨터를 제어하는 소프트웨어이다. 앞서 살핀 셸은 터미널을 사용하기 위한 소프트웨어 환경으로 사용자의 입력을 해석하여 수행한 결과를 다시 터미널로 보내는 역할을 수행하고, CLI는 터미널에서 텍스트로 컴퓨터를 제어하는 방식에 해당한다. 

 

내가 사용하고 있는 윈도우는 기본적으로 CMD(Command Prompt, 명령 프롬프트)을 제공한다. 여기서 터미널은 콘솔이나 cmd창과 같은 개념으로 이해해도 무방하다. 이외에 스토어에서 Windows Terminal이나 Ubuntu를 설치해서 사용해도 되고, cmder를 설치해서 사용해도 된다. 수업에서는 cmder나 미니콘다를 많이 사용할 것 같다고 하니 이러한 툴에 익숙해 질 필요가 있을 것 같다. cmd창 기본 명령어로 cd, cls, copy, del, dir, mkdir 등은 기본적으로 숙지해야 할 것이다.

 

터미널을 통해 파일시스템을 다룰 수 있다. 파일은 정보의 저장 단위로 파일명과 확장자로 식별된다. 이러한 파일을 포함할 수 있는 것을 디렉토리(폴더)라고 하는데, 디렉토리에는 다른 디렉토리가 포함될 수 도 있어 트리구조를 이루게 된다. 파일의 고유한 위치를 나타내는 방법으로 루트 디렉토리로부터 구하는 절대경로와 현재 디렉토리에서부터 구하는 상대경로가 있다. 디렉토리 이동 명령어로 cd(디렉토리 변경), cd .(현재 디렉토리), cd ..(상위 디렉토리), cd /(최상위 디렉토리), cd -(이전 디렉토리) 정도는 자주 사용할 것으로 보인다.

 

(3) 개발환경

파이썬 개발환경을 결정하려면 운영체제, 파이썬 interpreter, editor를 결정해야 한다. 운영체제는 현재 선택의 여지 없이 윈도우OS이다. 파이썬 인터프리터를 살피기 이전에 개념을 정리하면, 인터프리터 언어는 실행시 소스코드를 한줄씩 기계어로 번역하는 방식의 언어를 말하고 이와 대비되는 컴파일 언어는 소스코드를 기계어로 컴파일하여 실행파일을 만들어 실행하는 언어를 말한다. 파이썬과 같은 인터프리터 언어는 컴파일언어에 비해 느리지만, 수정이 간단하고 문법이 간단하다는 장점이 있다. 파이썬 인터프리터는 파이썬 코드를 OS에 번역해주는 프로그램으로, 최근에는 3.11 버전까지 출시된 것으로 보인다. 가장 많이 쓰이는 것은 기본적인 Python과 다양한 모듈을 묶은 패키지인 Anaconda 두 가지라고 하는데, 수업에서는 아나콘다에서도 미니콘다를 사용할 것이라고 한다.

 

파이썬 코드의 편집기로는 메모장부터해서 내가 최근까지 쓰던 Pycharm 등이 있는데, 최근에는 Visual Studio Code를 많이 쓴다고 하고 수업에서도 많이 활용될 것으로 보이므로 비쥬얼 스튜디오 코드에 익숙해질 수 있도록 많이 사용해볼 필요가 있다고 느꼈다. 파이참과 비주얼 스튜디오 코드의 차이점에 대해 검색해보니 파이참이 좀더 헤비하고 비주얼 스튜디오 코드가 좀더 가볍다고 하는데, 아직은 이게 정확히 어떤 의미인지는 모르겠다.

 

비쥬얼 스튜디오 코드같은 편집기 외에도 웹기반의 인터랙티브 편집기도 있는데, Jupyter와 colab이다. 이들 또한 수업에서 자주 활용될 것이므로 마찬가지로 자주 사용하면서 익숙해져보려 한다.

 

 

3. 느낀점

오늘 학습한 내용중에는 파이썬의 기초문법도 포함되어 있으나 별도 정리할 필요까지는 없어 보여 생략하였다. 그러다보니 정리한 내용들이 추상적인 것들이 많은데, 결국 내가 목표로 삼은 개발자의 기초체력은 이러한 기본적인 개념 정립에서 부터 길러지는게 아닐까 생각해 보았다. 다만 정확히 정리한 것인지 헷갈리는 부분이 몇개 있는데, 더 공부한 뒤 다시 확인하여 수정해야 할 부분은 추가적으로 수정해놓을 생각이다. 당장 이해안되는 부분이 이후 공부과정을 통해 자연스럽게 깨닫게 되는 것을 수도없이 경험해 보았기 때문이다.

 

동료학습인 피어세션은 부스트캠프 과정의 꽃이라고 한다. 부스트캠프에서는 동료학습을 철저하게 원칙으로 삼고 있다. 그 취지에 대하여는 사실 막연하게 이해되는 정도에 불과하지만 다 뜻이 있어서 그렇게 설계했을 것이다. 만성 I를 극복하고 열심히 참여하여 최대한 성장할 수 있는 기회가 되도록 노력하기로 다짐한다.