[부스트캠프 AI Tech][Week01]Day01 - 파이썬/AI 개발환경 준비하기

Carvin·2021년 4월 6일
0

Week01 - Python

[Day 01] - 파이썬/AI 개발환경 준비하기

1. Hidden class - Basic computer class for newbies

1) 컴퓨터 OS

OS, operating System은 운영체제라고 하며, 우리의 프로그램이 동작할 수 있는 구동 환경을 의미합니다. 보통 컴퓨터를 구성하는 요소를 크게 '소포트웨어'와 '하드웨어'로 구분할 수 있습니다. 여기서 '하드웨어'는 모니터, 마우스, CPU 등과 같은 물리적 기기를 의미하며 '소프트웨어'는 우리가 컴퓨터 내에서 사용하는 어떠한 프로그램을 의미합니다.
그렇다면 이렇게 독립적으로 존재하는, 하드웨어에서 소프트웨어를 실행시키기 위해 어떠한 환경을 구축하고 연결 기반을 제공하는 시스템을 운영체제라고 합니다.

대중적으로 알려져있는 운영체제의 종류로는 Windows, macOS, Linux 등이 있습니다. 다른 종류의 운영체제는 각 운영체제에 따라 다른 환경으로 구축되어 있기 때문에 서로 100% 호환되지 않습니다. 그렇기 때문에 현재 작업하고 있는 운영체제에 따라 구축해야하는 환경이 달라질 수 있습니다.

하지만 앞으로 배울 Python, 파이썬은 운영체제에 독립적인 언어라고 할 수 있습니다.

2) 파일 시스템

파일 시스템은 OS, 운영체제에서 파일을 저장하는 트리구조 저장 체계입니다. 파일, File 이란 '컴퓨터 등의 기기에서 의미 있는 정보를 담는 논리적인 단위를 말하며, 모든 프로그램은 파일로 구성되어 있고, 파일을 사용함'를 의미합니다..(출처 : https://ko.wikipedia.org/wiki/컴퓨터_파일)

이 때, 파일은 디렉토리(Directory)파일(File) 로 구분할 수 있습니다.

  • 디렉토리(Directory)
    • 폴더 또는 디렉토리로 불림
    • 파일과 다른 디렉토리를 포함할 수 있음
  • 파일(File)
    • 컴퓨터에서 정보를 저장하는 논리적인 단위
    • 파일은 파일명과 확장자로 식별됨(.csv, .py, .pdf..)
    • 실행, 쓰기, 읽기 등을 할 수 있음

이렇게 파일이 어느 디렉토리에 저장되게 되면 파일은 고유한 주소 혹은 경로를 가지게 됩니다. 경로란 '컴퓨터 파일의 고유한 위치, 트리구조상 노드의 연결'을 말하며 절대 경로상대 경로로 구분됩니다.

  • 절대 경로: Root 디렉토리부터 해당 파일의 위치까지의 경로를 말하며, 최초의 시작점으로 경유한 경로를 전부 기입하는 고유한, 최초의 시작점이 기준인 절대적인 경로

    /Users/jinseok/Jupyter/boostcamp-AI-Tech/README.md

  • 상대 경로: 어떠한 경로에서 해당 파일의 위치까지의 경로를 말하며, 기준이 상황에 따라 달리지며, 그에 따라 경로도 달라지는 상대적인 경로

    ../README.md

위에서 표시한 절대 경로와 상대 경로는 모두 README.md 파일의 위치를 보여주고 있으며, 절대 경로는 README.md 파일이 가지는 고유한 절대 경로를 의미하며, 상대 경로는 Day01.md 파일로부터 README.md 파일이 존재하는 디렉토리의 상대 경로를 말합니다.

이렇게 절대 경로와 상대 경로의 차이를 구별하고 다르게 표기하는 것이 중요한 이유는 절대 경로는 내 local 환경에서는 충분히 작동하지만 다른 사람의 파일 시스템과는 다를 수 있기 때문에 오류가 발생할 수 있습니다. 특히 프로젝트를 하게 되면 하나의 저장소 안에서 똑같은 파일구조를 가지게 되기 때문에 상대 경로를 통해서 보다 깔끔함과 가독성을 갖출 수 있다고 생각합니다.

추가적으로 가끔 프로젝트를 진행하게 되면 다음과 같은 오류가 발생하곤 합니다. 아직도 어떤 오류인지 정확하게 이해하지는 못했지만 상대경로를 직접 추가해줌으로써 문제를 해결할 수 있었습니다. (해당 문제를 정확하게 이해하면 이해한 내용을 첨부할 예정입니다. 출처 : https://m.blog.naver.com/wideeyed/221839634437)

ImportError: attempted relative import with no known parent package

3) 터미널

먼저 '터미널'에 대한 내용을 다루기 앞서 컴퓨터가 어떻게 사람들의 명령을 실행하는 지에 대한 소통 과정을 다뤄볼 필요가 있습니다. 아주 간단하게 설명하자면, 사람들은 컴퓨터가 행동을 하게 만들기 위해 어떠한 입력을 하게 되는데, 사람의 입력이 컴퓨터를 제어하기 위해서는 컴퓨터가 이해할 수 있는 명령어로 변환되는 일련의 과정을 필요하게 됩니다. 일련의 과정이란, 사람이 어떠한 명령어를 입력하게 되면 컴퓨터 내부에서는 쉘(Shell)이 이를 받아들이고, 명령어를 해석하는 커널(Kernel)을 통해 하드웨어가 움직이게 됨을 말합니다.

쉘(Shell) 은 사용자의 명령어를 해석하여 커널에 전달해주는 인터페이스 역할을 하게 됩니다.. 이 때, 사용자가 명령어를 입력하는 방법어로는 2가지가 있습니다.

  • CLI (Command Line Interface): 명령어 기반 인터페이스로 터미널 등의 프로그램을 통해서 문자열을 입력하고 문자로 반환된 결과를 확인하는 인터페이스
  • GUL (Graphic User Interface): 그래픽 유저 인터페이스로서 사용자가 편리하고 직관적으로 알아볼 수 있도록 그래픽으로 입출력등의 기능을 수행

GUI의 편리성과 쉬운 접근성으로 인해 대부분의 운영체제는 GUI기반으로 움직이지만, GUI가 필요없는 환경, 또는 CLI는 간편하고 빠르며 자동화 할 수 있는 일들이 존재하기에 현재까지 많이 사용되고 있습니다. MacOS에서는 이러한 CLI 프로그램은 Terminal이라고 하며, Windows에서는 CMD가 있습니다.

CMDShellDescription
CDcdchange directory
CLSclearclear screen
COPYcpcopy file
DELrmdelete file
DIRlsshow file & directory

📌 Linux, 리눅스

앞서 언급했듯이, Linux(리눅스)는 현재 존재하는 운영체제 중 하나이며, 오픈소스 운영체제라는 특징을 가지고 있습니다. 개발 혹은 AI 분야를 공부하다보면 리눅스에 대한 언급을 피해갈 수 없을 것입니다. 오픈 소스의 강점을 가지고 있는 리눅스가 많이 사용되고 있는 이유에 대해서 다음과 같이 정리할 수 있습니다.

  • 다중 사용자 및 다중 처리 시스템
  • 커널을 비롯하여 대부분의 응용 프로그램의 소스 코드가 공개된 시스템
  • 다양한 네트워크 및 프로토콜 및 환경지원
  • C언어로 이루어진 커널로 인한 뛰어난 이식성 + 유연성과 확장성
  • 뛰어난 안정성과 보안성(오픈 소스의 결과물)
  • 다양한 배포판의 존재

2. 파이썬 개요

파이썬 특징

  • 플랫폼 독립적: 운영체제에 상관없이(독립적) 작동되는 언어
  • 인터프리터 언어
  • 객체 지향적 언어: 실행 순서가 아닌 단위 모듈(객체) 중심으로 프로그램을 작성
  • 동적 타이핑 언어: 프로그램이 실행하는 시점에 프로그램이 사용해야할 데이터에 대한 타입을 결정
특징컴파일러인터프리터
작동 방식소스코드를 기계어로 먼저 번역소스코드를 실행시점에 해석
장점실행속도가 빠름간단히 작성 가능, 적은 메모리 요구
단점한번의 많은 기억장소 필요실행속도가 느림
주요 언어C, JAVA, C++, C#python, scala

❗️ 인터프리터 언어가 컴파일러보다 느린 이유는 인터프리터 언어는 기계어로 번역되는 과정이 실시간으로 라인별로 적용되기 때문입니다. 반면에 컴파일러는 기계어로 번역되는 과정이 빌드 과정을 거쳐 한번에 실행되며 실행될 때는 이미 번역된 기계어만이 실행되기 때문에 속도가 더욱 빠릅니다. 출처 : https://www.youtube.com/watch?v=9sSxdhYGYSM)

0개의 댓글