기본적인 컴퓨터 시스템


파이썬 개발환경을 준비하기에 앞서서 기본적인 컴퓨터 시스템을 알아봅니다. 그 중에서도 크게 운영체제, 파일 시스템 그리고 터미널 환경에 대해서 알아봅니다.

운영체제

Operating System, 줄여서 OS 라고 하며, 컴퓨터에서 여러 프로그램들이 동작될 수 있는 환경을 제공하는 역할을 합니다. 우리가 사용하는 응용 프로그램과 물리적 하드웨어 사이에서 상호작용하는 소프트웨어라고 할 수 있습니다.

대표적으로 마이크로 소프트 사의 윈도우 10, 애플의 매킨토시, Linux가 운영체제의 한 종류들 입니다.

우리가 사용하는 응용 프로그램들은 운영체제에 의존적(dependent)입니다. 이는 특정 프로그램이 특정 운영체제에서만 실행이 가능한 것을 말합니다. 따라서 응용 프로그램은 특정 운영체제에 맞춰서 개발이 됩니다.

파일 시스템

File system, 파일 시스템은 OS에서 파일을 저장하는 트리 구조 저장 체계 입니다.

크게 두 가지 요소인 디렉터리와 파일로 구성되어 있는 것을 볼 수 있습니다.

  • 디렉터리(Directory) : 폴더라고도 하며, 파일 또는 또 다른 디렉터리를 포함 할 수 있는 단위입니다.
  • 파일(File) : 컴퓨터에서 정보를 저장하는 논리적인 단위입니다. 파일 이름은 파일명과 확장자로 구성되고 이 둘 사이에 .(dot)이 들어가게 됩니다. (main.py). 실행, 쓰기, 읽기 등을 할 수 있습니다.

파일 시스템에서는 파일과 디렉터리들이 최상단의 루트(root)디렉터리 부터 위나 옆으로 가지가 뻗는 듯한 트리 구조로 구성이 되어집니다.

윈도우의 경우 C:\user\... 에서 user가 루트 디렉터리 입니다.

파일 시스템에서의 경로는 컴퓨터 내에서 파일이나 자원의 고유한 위치를 가르키는 주소와 같습니다. 트리 구조 상 노드간의 연결정도로 봐도 좋을 것 같습니다.

절대 경로와 상대경로

  • 절대 경로 : 루트 디렉터리부터 파일 위치까지의 경로. ex) C:\user\codebase\helloworld.py
  • 상대 경로 : 현재 시스템이 위치해 있는 디렉터리부터 우리가 찾고자하는 파일까지의 경로. ex) ../../index.html

터미널

터미널은 보통 CLI(Command Line Interface)라고도 하며, Mouse가 아닌 키보드를 이용해서 명령어 입력을 통해 컴퓨터를 제어하기 위해 사용하는 툴이라고 볼 수 있습니다.

Graphic User Interface (GUI)와는 달리 키보드를 이용해 text로서 명령을 내리는 인터페이스 체계로서, Graphic User Interface (GUI)환경이 일반화 되기 전까지는 이 CLI가 주로 사용 되었습니다. 지금도 맥과 유닉스 계열 시스템에서는 프로그램을 설치하고 여러 라이브러리를 관리하는 데에 이 CLI를 주로 많이 사용하고 있고, github의 사용이 증가함에 따라 다른 환경에서도 CLI의 사용이 많아 지고 있습니다.

다음은 윈도우와 맥에서 터미널을 실행할 수 있는 방법입니다.

  • 윈도우의 경우 : 윈도우 키 + terminal 또는 윈도우 키 + R -> CMD 입력
  • 맥의 경우 : 빠른실행 terminal 입력

쉘은 조개 껍데기라는 의미로서 터미널을 사용하고, 여러 프로그램을 작동시키기 위한 소프트웨어 환경을 말합니다. 쉘은 키보드 입력으로 시스템 전반에 걸쳐 필수적인 파일 구조에 대한 연산(폴더 이동, 복사, 생성, 삭제 등)과 스크립트 작성을 지원하는 등 여러 기능을 제공합니다.

윈도우에서는 cmd나 power shell을 사용하고, 맥에서는 bash나 zsh를 쉘로 사용합니다.

다음은 shell의 일부 명령어 리스트 입니다. (셀 별로 명령어가 상이하거나 같습니다.)

  • 디렉터리 이동 : window cmd - cd, bash - cd
  • 텍스트 전부를 지우기 : window cmd - CLS, bash - clear
  • 파일을 다른 위치로 복사 : window cmd - copy, bash - cp
  • 파일 지우기 : window cmd - del, bash - rm
  • 하위 디렉터리와 파일 보기 : window cmd - dir, bash - ls

파이썬(Python)

데이터 과학과 AI분야에서 널리 쓰이는 파이썬에 대해서 간략히 알아보고 그 특징에 대해서 알아봅니다.

파이썬과 그 특징

파이썬(Python)은 1991년 프로그래머인 귀도 반 로섬이 발표한 고급 프로그래밍 언어로, 플랫폼에 독립적이며 인터프리터식, 객체지향적, 동적 타이핑(dynamically typing) 대화형 언어입니다.

python은 그리스 신화속의 괴물 뱀을 뜻하고, 몬티 파이썬이라는 코메디 그룹의 이름에서 유래되었다고 합니다.

파이썬의 주요 특징은 특징은 다음과 같습니다.

  • 동적 타이핑(dynamically typing) : 프로그램의 실행 시간(run time)에 자료형이 검사되고 결정됩니다.
  • 플랫폼에 독립적 : 여기서 플랫폼은 보통 OS를 일컽는데, 파이썬으로 작성된 프로그램은 OS의 종류에 관계없이 어디서나 실행이 될 수 있다는 것을 의미합니다.
  • 인터프리터식 : 소스코드를 바로 실행할 수 있게 지원하는 프로그램 실행 방법으로서, 별도 번역과정 없이 소스코드를 실행시점에 해석하여 컴퓨터가 처리할 수 있도록 하는 방법입니다.
  • 객체 지향적 언어 : 실행 순서가 아닌 단위 모듈(객체)을 중심으로 프로그램을 작성할 수 있도록 고안된 언어를 말합니다. 객체는 실세계에 존재하는 사물과 같은 개념을 컴퓨터에서 표현하는 것으로, 객체는 속성과 목적을 달성하기 위한 행동을 가지고 있습니다.

여기서 컴파일러와 인터프리터를 좀 더 짚고 넘어가 보겠습니다.

컴파일러

  • 작동방식 : 소스코드를 기계어로 먼저 번역하고 해당 플랫폼에 최적화되어 프로그램을 실행 합니다.
  • 장 단점 : 인터프리터에 비해 상대적으로 실행속도가 빠르지만, 한번의 많은 기억장소를 필요로 합니다.
  • 주요 언어 : 대표적으로 C, 자바, C++, C#가 컴파일러 방식을 채택하고 있습니다.

인터프리터

  • 작동방식 : 소스코드를 기계어로 먼저 번역하고 해당 플랫폼에 최적화되어 프로그램을 실행 합니다.
  • 장 단점 : 간단히 작성하여 실행할 수 있고, 컴파일러에 비해 메모리가 적게 필요하지만 실행속도가 다소 느립니다.
  • 주요 언어 : 대표적으로 파이썬과 스칼라가 인터프리터 방식을 채택하고 있습니다.

Why python?

파이썬은 다른 여타 언어와 비교해 상대적으로 쉽고 코드가 간단합니다. 그래서 프로그래밍에 입문하시는 분들도 쉽게 시작해 보실 수 있는 언어입니다.

화면에 Hello, World 찍기 다음은 자바로 Hello World를 출력하는 코드 입니다.

class HelloWorldApp {
  public static void main(String[] args) {
    System.out.println("Hello World!");
  }
}

다음은 파이썬으로 Hello World를 출력하는 코드 입니다.

print ("Hello World")

파이썬에서의 코드가 비교적 간단하고 명료한 것을 볼 수 있습니다.

파이썬은 또한 이미 다양한 라이브러리가 구현이 되어있고 이것을 손쉽게 가져다가 쓸 수 있습니다. (특히 데이터 사이언스, 분석) 바둑에서 이세돌을 이긴 알파고 부터 중력파 확인과 블랙홀을 탐지하기 위해 지구에서 멀리 떨어져 있는 여러 안테나의 네트워크 통신에 까지 파이썬이 사용되고 있습니다.

그리고 우리가 자주 사용하는 소셜미디어 유튜브, 레딧, 인스타그램 등… 많은 곳에서 파이썬이 사용되고 있습니다.

해외 개발자 사이트 스택 오버플로우의 언어 통계에 따르면 사람들이 지금 가장 많이 사용하는 언어로서 1위를 기록하고 있고, 데이터 사이언스 분야에서는 독보적으로 사용되고 있음을 볼 수 있습니다.

피어세션 정리

오늘은 동료분들과의 첫 만남이었고, 서로 인사하며 얼굴을 트는 기회를 가질 수 있었습니다.

서로 인사하고, 자기소개로 시작하며 피어세션이 진행되었습니다.

공지대로 조 이름, 모더레이터를 정하고, 그라운드 룰은 어떻게 하면 좋을지 서로 논의해 보았습니다.

그리고 동료분들 끼리 이 피어세션 동안 어떤 것을 하면 좋을지에 대해서 토의를 해보는 시간을 가질 수 있었습니다.

피어 플랜으로서, 저희는 딥러닝 백엔드를 하나 선택하여(pandas) 서로 공부하고, 그것을 공유하는 것 하나와 캐글 또 하나는 관련 논문 스터디를 진행하는 쪽으로 의견이 모아졌습니다.

하지만 주차가 지남에 따라 내용이 다소 심화되는 점과 앞으로의 과제를 생각해 볼 때, 피어 플랜을 무리하게 전부 하지 않고 다소 유연하게 하는 쪽으로 가져봄직도 한 것 같습니다.

References

Leave a comment