파이썬자습서 공략집 (객체지향프로그래밍, 동적타이핑, 인터프리터)
파이썬자습서 공략집 (객체지향프로그래밍, 동적타이핑, 인터프리터) — #파이썬자습서 #객체지향프로그래밍 #동적타이핑 #인터프리터 AI스쿨 msa기반 java 백엔드 코스 중에 공...
#파이썬자습서 #객체지향프로그래밍 #동적타이핑 #인터프리터
AI스쿨 msa기반 java 백엔드 코스 중에 공부한 내용을 작성하였습니다
파이썬자습서 소개
백엔드 과정의 첫발을 내딛기 위해 파이썬을 공부중입니다. 아직 코딩에 대한 기초체력도 없는 상태기 때문에 파이썬을 통해 기본적인 기초체력을 다져볼까합니다. 파이썬 자습서 문서를 하나 하나 해석하여 천천히 그리고 꾸준히 공부해나갈 예정입니다.
개발자라면 누구나 정규화된 개발문서를 읽을줄 알아야합니다. 이번기회에 정규화된 문서를 읽는 감각을 기르고자 합니다. 초보자에게는 이것도 어려운 행동이지만, 개발자들 사이에서는 파이썬 자습서는 꽤나 쉬운 문서입니다.
개발자의 길은 정말이지 끝없는 공부의 연속인듯 합니다.
파이썬 자습서 프롤로그
파이썬 자습서의 프롤로그에는 파이썬에 대한 간단하면서도 핵심적인 정보를 담고 있습니다. 문서를 읽다보면 모르는 단어들이 많이 등장하는데 이번글에서는 이 단어들을 짚고 넘어가고자합니다. 최대한 간단하게 단어의 의미를 풀어 설명해 보겠습니다.
"
파이썬은 배우기 쉽고, 강력한 프로그래밍 언어입니다. 효율적인 자료 구조들과 객체 지향 프로그래밍 에 대해 간단하고도 효과적인 접근법을 제공합니다. 우아한 문법과 동적 타이핑(typing) 은, 인터프리터 적인 특징들과 더불어, 대부분 플랫폼과 다양한 문제 영역에서 스크립트 작성과 빠른 응용 프로그램 개발에 이상적인 환경을 제공합니다.
"
모르는 단어를 발견했습니다. 사실 어디서 들어본적있지만, 말로 설명하자니 참 어려운것 같습니다.
객체 지향 프로그래밍
객체 지향 프로그래밍 vs 절차지향프로그래밍
객체 지향 프로그래밍의 반댓말은 무엇일까요? 바로 절차 지향 프로그래밍입니다. 사실 반대라고 하기보다는, 대응되는 단어로 자주 등장하는 개념인데 알아두면 객체 지향 프로그래밍을 좀 더 이해하기 편합니다.
그럼 절차 지향 프로그래밍은 무엇일까요? C언어의 경우에 코드를 순서에 맞춰서 설계합니다. 전지적 시점에서 모든 코드를 동일한 입장에서 보면서 TOP-DOWN 방식으로 코드를 설계합니다.
반면에 객체 지향 프로그래밍은 모두 같은 코드로 보는 것이아닌, 기능에 따라 개별 이름을 부여합니다(Class). 부여 받은 이름에 따라 코드의 동작이 정해져있습니다.
좀 더 쉬운예로 보자면, 거스름돈을 돌려주는 기계를 프로그래밍 한다고 생각해봅시다. 절차 지향 프로그래밍의 경우 좌측과 같이 모든 기능을 동일한 관점에서 순서대로 코드를 작성합니다. 하지만, 객체 지향 프로그래밍은 사람(객체)과 기계(객체) 사이에서 일어날 수 있는 동작들을 세세하게 나눈 후 각 기능을 코드로 작성합니다(이름도 붙여줍니다).
어디까지나 프로그래밍을 방법론에서의 차이이기 때문에(지향) 둘 중 뭐가 좋고, 나쁘다라고 할 수 없습니다. 각각의 장단점이 존재하기 때문에 기능에 따라 효율적인 방법을 찾아 쓰는게 중요합니다.
동적 타이핑
대응되는개념
공부를 하면서 느낀건데, 개발 관련 용어에는 항상 대응하는 무언가가 있다는것입니다. 그리고 이 대응되는 개념까지 한번에 공부하면 훨씬 더 이해하기가 쉽습니다.
동적타이핑 vs 정적타이핑
동적타이핑도 마찬가지다 대응되는 정적타이핑이라는 개념을 알고나면 훨씬 이해하기 쉬울 것입니다. 정적타이핑은 프로그래밍시에 모든 변수에 대한 타입(type)을 개발자가 직접 지정해줘야합니다. 즉 a=10이라는 숫자를 넣고 싶으면, int a= 10으로 코드를 작성해야한다. 일일히 변수에 타입을 지정해줘야해서 개발 시간도 오래걸리고, 코드도 길어저 복잡해집니다.
반대로 동적타이핑은 컴퓨터가 자료형을 스스로 알아서 해석합니다. a= 10을 넣으면 "아 a는 숫자구나"라고 스스로 해석합니다. 변수 타입에 대한 부분을 컴퓨터에게 맡기니 동작이 상대적으로 느리나 코드는 더 깔끔해집니다.
인터프리터
컴퓨터가 코드를 읽는법
보통 프로그래밍을 할때 우리는 영어를 사용합니다. 'alert(I'am English)'라는 코드를 작성했다고 가정해봅시다(in JS) . 분명 영어로 작성했지만, 컴퓨터는 우리가 작성한 코드를 이해하고 I'am English라는 경고창을 띄울 것입니다.
사실 영어로 작성한 코드를 컴퓨터가 스스로 알지는 못하고 바로 인터프리터라는 것을 사용해서 해석합니다. 인터프리터와 대응되는 컴파일러도 똑같은 기능을 제공합니다. 다만 둘의 차이는 명확합니다.
인터프리터 vs 컴파일러
컴파일러의 경우에는 원시코드(사용자가 최초 작성한 코드)를 컴파일링하여 다른 코드로 변환시켜줍니다. 원시코드와 똑같은 기능을 가진 새로운 코드를 만들어 내는 것입니다.
반면, 인터프리터는 원시코드를 그대로 해석하고 실행합니다. 한줄씩 해석하고 바로 실행하기 때문에, 실행속도가 느리다는 특징이 있습니다.
인터프리터는 해석은 빠르나 실행은 느리고, 컴파일러는 해석은 느리나 실행은 빠릅니다.
가볍게 넘어갔던 내용도 자세히 풀어서 설명하려면 상당한 시간이 걸리는걸 깨달아버렸습니다. 문서를 읽을때 모르는게 있으면 최대한 이해하고 넘어가는 습관을 들여야겠습니다 :D





