Notion에서 정리한 내용을 공유용으로 옮긴 내용입니다.
양식과 구성의 어색함이 있을 수 있습니다.
03/31(월) 학습내용을 바탕으로, 당일이 아닌 추후 업로드하였음
OT를 소요시간 착각으로 앞부분만 듣고
다음 일정을 위해 차를 타러 급하게 가느라 첫날 눈치를 좀 봤다...
그리고 하필 강사님이 자리 비우지 말아라 하시면서 출석 어쩌구 얘기를 꽤 하셨음ㅋㅋㅋ아 찔려
그래도 처음 시작하는 과목인 파이썬은 기존에 유튜브로 공부를 좀 했던 파트라 조금 손쉽게 들을 수 있어 다행이었다. (응 백준 브론즈)
목표는 진짜 꾸준히 출석하기
Python 개요
프로그래밍 언어의 발전
- 프로그래밍 언어의 시초
- 포트란 : 수학 계산 최적화
- Algol : 최초의 프로그래밍 언어. 포트란에 대항하여 만들어짐 = A 언어
- B 언어 = Bell 언어
- 그 후 C 언어 → C++ → C#
++에 ++이 아래로 더 붙어서 # 모양. 아이디어 미쳤
- C 언어
- OS 종류
- 유닉스 : 최초의 OS - 슈퍼,워크스테이션 / IOS 등
- 리눅스 : 라이트 유닉스 - 웹서버/안드로이드에서 사용
- Window
플랫폼
- 플랫폼이란?
- ex) 배민 → 고객과 식당과 배달원을 연결해줌
but 그냥 연결하는 것이 아니라 각각을 위한 어플을 만들어서 그 어플에 맞춰 주문/배달/음식 제공
- 즉, 이미 만들어진 곳에서 들어와서 돌아가는 것
- 규칙, 규격에 맞춰서 작업하면 언제든 사람들이 더 들어오고 확장할 수 있음
이래서 초반에 플랫폼 시장에서 잘 만들어 놓으면 독과점이 쉬워지는…
- 기차들을 '플랫폼'에 맞춰서 만들었기 때문에 승객이 KTX를 타든 1호선을 타든 타고 내릴 수 있음
독립성
개념
- ‘플랫폼 독립적’에서 플랫폼은 'OS'를 말함
- 독립적 ↔ 종속적
- 만약 Window에서 만들어서 Window에서만 돌아간다면 → 플랫폼에 종속적
독립성/종속성 비교
플랫폼에 독립적이냐 종속적이냐를 잘 알고 있어야 함
- 독립적인 소프트웨어
- 느림, 메모리 많음
- 개발자가 만든 코드를 윈도우/맥/리눅스 모두에서 실행 가능
- 결과물이 실행 파일로 나오는 것이 아님. 바이트 코드나 스크립트 형태로 도출되며, 인터프리터나 가상 머신을 통해 실행 (by GPT)
- JAVA, Python : 플랫폼 독립적
- 종속적인 소프트웨어
-
장점 : 메모리 덜 사용, 처리속도 빠름
OS에서만 되게 만들면, 그냥 그 OS에서 지원하는 기능?을 갖다 쓰면 되기 때문에 실행파일로 결과물 도출
실행파일 용량이 적고, 속도가 빠름
그 OS에 최적화되면 메모리, 처리속도에 여유가 있으므로, 그래픽에 더 투자할 수 있음
-
단점 : 각각 OS에 맞춰서 개발자가 여러 개를 만들어야 함
-
C 언어 계열 : 플랫폼 종속적
-
게임은 주로 종속적 ← 속도가 매우 중요
독립성의 이해/비유
ex) 라틴어 책을 읽고 싶다면 취할 수 있는 방법
-
한국 버전 번역서 읽기 = 플랫폼에 종속적
-
번역가가 읽어주기 = 플랫폼에 독립적
-
출판사는 라틴어로 된 책만 출간
-
라틴어를 한국어로 실시간으로 통역하는 사람 고용
라틴어를 일본어로 실시간으로 통역하는 사람 고용
…
→ 라틴어로 된 책을 사면 → 그 나라의 통역가 보내서 읽어줌
-
책은 1번만 쓰임
통역가 미리 대기시키면 됨
-
초기 투자/비용만 들이면 됨
-
매번 실시간으로 한 명 한 명 배당하므로 메모리 많이 사용, 처리속도 느림
-
but 프로그래밍 개발에 주류로 쓰임. Why?
파이썬
- 플랫폼에 독립적
- OS에 맞는 언어 형태로 번역해 줌
- VM(python virtual machine) : 인터프리터 내장 → 파이썬 코드를 win/mac 등등으로 번역해줌
- 어떤 코드를 만들어도 그 OS에 맞춰서 동작함 (윈도우용 파이썬/맥용 파이썬을 설치한다면)
- GPL 라이센스 : 수정/배포에 자유로움
- 개방형 언어 : 여러 개발자가 다같이 발전시킬 수 있음
- 수치 연산 빠르게 가능 : Torch - Numpy
- AI/ML에서 학습/추론이 중요
- 추론은 금방 가능
- but 학습에는 많은 시간이 소요
- 대규모 연산은 시간이 오래 걸림
- Numpy → 빠른 배열 연산 가능
- 계산 단축을 위해 GPU 연산 필요 → Torch : GPU 연산 지원
- 파이썬에 이미 PyTorch 내장, Numpy와 변환도 쉬움
개발도구
방식
- 일반 코딩 방식 : 실행하면 쭉 실행
컴퓨터에서 동작하는 프로그램 만들 때 용이
웹서버, 데몬, 사용자가 사용하는 컴퓨터용 프로그램 등
- 노트북 방식 : 원하는 부분 원할 때 실행
실행 결과가 바로바로 코드 아래에 삽입
데이터 분석 등등
→ 수업에서는 노트북 방식 사용
vscode로 해보긴 하고 그 후 아나콘다 이용
종류
- VS Code : 마이크로소프트 개발. 다양한 개발 분야 지원. 가벼움
- 단점
플러그인 많음
모르면 쓰기 힘듦
프로젝트 폴더 관리의 호불호 (강사님의 불호ㅎㅎ)
- PyCharm : Jet Brains 개발. 파이썬용 개발 도구
- jupyter : notebook 방식, 웹브라우저 사용. (데이터 분야에서 많이 사용)
개발환경 구축
1. python 설치
- python.org
- 다운로드
- 설치시 '반드시' add python x.x to PATH 체크
2. vscode 설치
그냥 설치-쭉 하고
Extention에서 python 설치
3. 아나콘다 설치
- anaconda 사이트
- Free Download → Skip 후 OS 맞춰 설치
- 업데이트 하면 느리므로 하지 말자!
jupyter notebook 실행방법
- anaconda navigator → jupyter notebook
- anaconda prompt → jupyter notebook
- 프롬프트에서 ‘인터넷 주소 부분’ 컨트롤+클릭 or 복붙
4. 주피터 노트북 사용
- PDF 만드는 법
- Save as 에서 HTML 로 변환
- HTML 켜서 인쇄-PDF로 저장
- 만약 ipynb 너무 길어서 안 열리면 txt로 떠서 빼서 저장하기 너무 많이 출력하면 그럴 수 있음
- 안드로이드 뷰어 : ipynb viewer pro (200원)
기타 : 빅데이터 관련 추천
강사님이 봤으면 좋겠다고 추천해 주신 목록들
- Morgan AI로 만든 예고
- 시사기획 창, 빅데이터 세상을 바꾸다
빅데이터, 비지니스를 바꾸다
- 스타트업 마녀(드라마)
아 벨로그 어렵네...양식 엉망이다 진짜
공부 후기라기에는 오늘은 개발환경 구축이 메인이었던 느낌이다
역시 제일 어려운 건 설치...
이게 제일 어렵고 제일 귀찮아
그래도 같이 공유해주는 사람이 있으니까 다들 편하게 하실 수 있었던 듯
(부럽)