* 해당 포스트는 실습 과정 중 학습을 정리하는 글이기에 주관적인 내용이 포함되어 있을 수 있습니다.
잘못된 부분이 있다면 걸러들으시거나 댓글로 남겨주시면 감사하겠습니다. 학습이 진행되며 글은 수정될 수 있습니다. 대신 수정한 부분에는 주석을 추가하였으니 이런 생각을 했었구나 정도로 알아주시면 됩니다.
* 처음 프로그래밍 입문때 적은 글이라 정말 입문자나 교양으로 보실 분들만 보고 넘어가주세요. ^^
😀 이 글은 정말로 입문자나 교양으로 보실 분들만 보세요. 언어 선택에 대한 내용은 다음 글로 이어집니다. 링크는 https://fadet-coding.tistory.com/4
# 개요
현재 자바를 주로 사용하는 제가 처음 프로그래밍을 접했을때 배운 언어는 중학교 때 정말 잠깐 살펴보고 대학교 입학해서도 진짜 잠깐 배운 C입니다만 본격적으로 처음에 배웠다고 할만한 언어는 파이썬입니다. 계기는 C를 배울때 사실 어려웠어서 좀 쉬운 언어로 입문해보자하고 둘러보다 눈에 띈 게 파이썬이었고 파이썬의 생산성이 높고 간결한 문법에 끌렸습니다.
* 지금보니 처음 파이썬을 살짝 찍어보고 아무렇게나 적은 글이라 많이 부족한게 보이네요.
이번 포스트는 Python, Django에서 JAVA, Spring으로 넘어가는 시점에서 한번 파이썬에 대해 생각해보자는 차원에서 쓰는 글이고 전자가 허접하고 마음에 들지 않아서 넘어가는 것이 아니라 초보자가 쓰기엔 타입 체크, OOP가 더 강하고 채용률이 높은 JAVA를 배우기 위해 넘어가는 것이기에 이 글을 보고 혹시라도 오해하지 않았으면 합니다. 더 자세한 내용은 다음 글을 참고해주세요.
# 파이썬
우선 파이썬에 대해 간략히 설명하겠습니다. 파이썬은 객체지향이 포함된, 인터프리터방식의 동적 프로그래밍언어입니다. 객체지향이란 말 그대로 다수의 객체를 생성하여 이들의 interaction으로 동작하는 방식을 뜻하며 기존의 순서에 크게 엄격하고 유지보수가 어려운 절차지향 방식(그렇다고 객체지향의 대척점에 있지는 아니고 여러가지 방식 중 하나)의 단점을 보완하기 위해 나온 방식입니다. 사실 파이썬뿐만 아니라 다음 글에서 다룰 자바 역시도 객체 지향 언어입니다.
주요 특징인 캡슐화와 다형성을 통해 코드의 재사용성을 높여 비대해지는 프로그램들의 유지보수에 큰 장점을 가지고 있습니다. 또한 인터프리터 방식은 개발자가 고급 언어(사람이 이해할 수 있는 언어)로 쓴 코드를 컴퓨터가 이해하도록 어셈블리어(컴퓨터만 이해할 수 있는 언어)로 바꾸는 과정에서 코드를 한줄한줄 읽고 변환하는데 이에 대척점으로 있는 자바나 C 등 컴파일러를 쓰는 언어보다 초기엔 속도 면에선 뒤쳐진다는게 흠이었지만 최근엔 PC의 성능이 갈수록 높아져 기존 컴파일러 방식 언어보다 속도가 느리다는 단점은 거의 문제가 안되고 오히려 설계가 더 쉽다는 장점이 크게 주목받아 현재 고급 프로그래밍 언어의 반 이상이 인터프리터 언어입니다.
파이썬이 동적 언어인 이유는 var와 같은 동적 타입을 선언하기 때문입니다. 자바스크립트를 공부해보셨다면 이 부분을 알고계실텐데 코딩에서 자료형이 결정되는 건 컴파일(개발자가 작성한 코드를 컴퓨터가 읽을 수 있게 바꾸는 과정)이냐 런타임이냐입니다. 각각 장단점이 있는데 동적 언어의 장점은 문법이 더 간결해지고 유연성이 증가하기에 생산성에 있어서 강점이 있습니다. 하지만 타입이 동적인만큼 코드가 길어지면 오류가 생길 리스크가 증가하기에 후에 프로그램이 비대해져 코드가 길어지면 유지보수 측면에서 그만큼 손해를 봅니다.
여기까지가 언어적 특성에 대한 이론이며 파이썬은 타 유명 프로그래밍 언어에 비해 압도적으로 간결한 문법을 자랑하며 그로 인해 과학 및 공학 등 연구가 필요한 곳에서 주로 쓰이는 언어이고, 개발자들 사이에서 주력 언어가 다른 언어라도 간단하게 프로그래밍을 하기에 이만큼 생산성이 높은 언어가 없기에 서브 언어로 많이 채용됩니다. 생태계가 거대한만큼 그 쓰임새도 다양한데, 과학 및 공학 분야에서 많이 쓰이고 최근에 주목받는 머신러닝, 빅데이터 분야의 주 언어 역시 파이썬입니다. 또한 파이썬으로 웹을 만들고 싶다면 django, flask같은 웹프레임워크를 쓰면되고, GUI프로그램을 만들때도 tkinter와 같은 기본 모듈부터 PyQt같은 프레임워크를 쓸 수 있습니다.
이 중 파이썬 기본문법을 공부한 후 제가 지금껏 학습한 분야는 파이썬 기반 웹프레임워크인 django입니다. 쉽게 말해 파이썬을 이용해 웹 서버를 만들어보고 싶다면 저와 같은 걸 공부하면 되겠죠?
django는 마이크로 웹 프레임워크인 flask와 다르게 풀스택 프레임워크이며, flask가 커스텀이 더욱 용이하지만 그말인즉슨 생산성은 django가 높다는 이야기고 이에 맞게 관리자페이지를 기본제공하여 관리가 용이한 것부터 ORM을 제공하여 migration을 통한 보다 편리한 DB관리가 가능합니다. django는 기본적으로 자바 spring으로 대표되는 mvc구조에서 파생된 mvt구조에 따라 웹을 만들고 풀스택 프레임워크답게 프론트단을 직접 구성할수도 있습니다.
여기까지가 간략한 파이썬에 대한 소개이며 이 글을 보시기 전 만약 자신이 어떤 언어로 웹 개발에 입문해야할까 고민 중이셨다면 다음 글을 참고해주세요.