It 이야기/파이썬 이야기

파이썬을 시작하는데 고민이라면, 몇가지를 기억하세요.

★→←★ 2022. 12. 3.

시대가 빠르게 변하고 있습니다. 필요로하는 기술도 다양하고 복합적으로 작용하고 있습니다. 그만큼 개인에게 요구되는 능력도 많아지고 있기도 합니다. 코딩도 그런 측면에서 같은 맥락이라 할 수 있지 않을까 생각합니다. 무엇보다 인공지능이 두각을 드러내고 있는 상황에 '파이썬'은 재미있는 측면을 많이 가지고 있습니다.

 

인공지능 ai에 대해 배우고 싶다는 생각을 해봤다면 꼭 따라 붙는 단어가 있습니다. 바로 '파이썬(python)'입니다. 신기하게도 ai에 대한 학습에는 파이썬으로 시작하는 것을 추천하는 경우가 많습니다. 그만큼 파이썬이라는 프로그래밍 언어는 ai기술에 특화되어 있을 수도 있습니다.

 

개인적인 생각에는 특화되어 있다는 느낌보다는 다양한 언어와의 연결이 쉽고, 기존 언어에 비해 문법이 직관적이라는 점이 큰 특징으로 작용한 것이 아닐까 생각합니다. 물론, 전문가가 아니기 때문에 확언을 드릴 수는 없습니다. 단지, 이것저것 접근해본 경험을 토대로 이야기를 이어가려 합니다.

 

이제 막 파이썬을 익히고 싶어 다양한 검색을 하는 중이라면, 혹은 파이썬을 익히고 있는 중이라면, 또는 망설이고 있다면 '도전'해보는 것이 좋지 않을까 생각해 봅니다.

 

독학으로 파이썬을 시작할 때 도움이 될 수 있는 부분.

기술을 익히는데는 크게 2가지의 방법이 있습니다. 독학과 강의를 통한 배움이 그것이죠. 가장 대표적으로는 강의를 선택하는 경우가 많습니다. 일부는 독학으로 시작하게 되는데, 사실 어떤 것이든 독학을 하는 것은 쉬운일이 아닙니다. 많은 시행착오와 그것을 해결하기 위한 공부, 그 과정에서 오는 혼란함등과 싸워 이겨야 합니다. 반면, 강의를 듣는다면, 문제점을 해결하는 손쉬운 방법이 존재합니다.

 

장,단점을 나누면 그렇습니다. 개인적으로 추천하고 싶은 방법은 독학입니다. 코딩은 무엇을 '만든다'가 중심이 됩니다. 가장 대표적으로 자신이 원하는 기능을 구현하게 됩니다. 예를 들어, 윈도우 프로그램을 만들고 싶다면 그와 관련된 라이브러리, 프레임워크, 디자인, 함수등을 활용하게 됩니다. 해당 기능들에 대한 설명은 공식 문서를 통해서 습득하거나 커뮤니티에서 원하는 부분들에 대한 정보를 얻게 됩니다.

 

강의의 쟁점은 빠르고 정확하게 길을 찾는 것이죠. 반면, 독학은 비포장 도로를 밤에 손전등으로 걸어가는 것 같은 느낌이기도 합니다. 느리지만 많은 것을 알아가게 되기도 합니다. 만약, 목적성이 뚜렷하다면 독학은 어울리지 않을 수 있습니다. 많은 시간이 걸리기 때문이죠. 이런 경우라면 강의를 선택하시고, 그렇지 않은 경우라면 독학으로 진행해 보실 것을 추천합니다. 어차피 코딩하다보면 막히고, 해결하고, 또 막히고 해결하는 과정을 반복할테니까요. 그리고, 결국 공식문서를 통해야 원하는 기능에 대한 깊이 있는 이해와 활용이 가능할 수 밖에 없습니다.

 

파이썬 독학을 선택했다면, 몇가지의 기본서를 봐야합니다.

독학을 선택하셨다면 이제 계획을 세워야 합니다. 코딩의 시작은 '규칙'에서 출발한다고 생각합니다. 언어마다 가지고 있는 기본적인 규칙이 존재합니다. 이 규칙을 어기게 되면 원하는 기능을 구현할 수 없고, 코드들은 붉은 색의 오류만을 내뱉을 뿐입니다. 처음에는 막막합니다. 시간이 지나면, '그럴 줄 알았다.'라는 반응이 될 수 있습니다. 가끔 '왜!!!'라고 소리치기도 하죠. 어쨌든, 규칙은 중요합니다.

 

이런 규칙에 대해서는 지루하지만, 꼼꼼한 학습이 필요할 수 있습니다. 모든 규칙을 한번에 알 수는 없지만, 대략적인 흐름을 알아야 합니다. 또한, 어느 부분에서 오류가 발생되는지 알기 위해서는 규칙과 구성요소를 알아야 합니다. 예를 들어, 변수를 잘 못 사용했거나, 함수, 클래스 설정을 잘 못했다면 해당 부분에서 문제로 발생된 부분을 찾아야 합니다. 그런 기본적인 것을 개인적으로 '규칙'이라는 단어로 총칭하고 있습니다.

 

책을 선택하는 것도 어려움이 있습니다. 단순히 리뷰와 별점으로 선택하려니 광고같기도 합니다. 그렇다고 잘 모르는 분야에서 두껍고 양이 많은 책을 선택하면 너무 지루해서 포기하고 싶어지기도 합니다. 어떻게 하는게 좋을까요. 가장 좋은 해답은 2종류의 책을 선택하는 것이 아닐까 생각합니다.

 

첫번째는 가볍고, 심플한 구성으로 기본에만 충실한 내용의 책입니다. 이런 책을 이용해 빠르게 흐름을 파악할 수 있습니다. 1회독이 끝나면 웬지모를 뿌듯함과 자신감이 붙기도 합니다. 얼마지나지 않아 이 자신감은 산산조각 나기도 합니다. 하나 구현하는데 다양한 오류와 내용이 필요할 수 있기 때문이죠.

 

어쨌든, 비교적 얇고 가벼운 책, 그리고 프로젝트보다는 설명과 실습으로 진행되는 책을 선택할 것을 추천합니다. 돈을 들여 멋진 책을 구매하는 것도 좋은 방법입니다. 또는, wikidocs.net와 같은 인터넷 책의 정보를 활용하는 것도 좋은 방법이 될 수 있습니다. 

 

위키독스는 온라인으로 제작한 책을 공유하는 플랫폼입니다. 자유롭게 이용이 가능하고 오픈되어 있기 때문에 많은 도움이 될 수 있습니다. 더불어, 온라인으로 빠르게 검색할 수 있다는 장점도 있습니다. 여기서 파이썬에 대한 기본서를 선택하는 것도 좋습니다. 개인적으로 다음의 책을 추천합니다.

  • 점프 투 파이썬 - 박응용  
    • 2022년 12월 01일이 최신이네요. 지속적인 업데이트와 관리가 이루어지는 것 같습니다. 해당 책을 통해 가볍게 파이썬에 대한 변수, 함수, 클래스등의 규칙들을 살펴볼 수 있습니다. 다만, 예제는 유료라고 명시되어 있네요.
    • 이전에는 몰랐는데, '박응용님'이 위키독스의 대표였네요. 점프 투 시리즈는 파이썬 이외에도 다양하게 있습니다. 
  • 파이썬 공식 문서  
    • 언젠가는 만나야 합니다. 굳이 친해지고 싶지는 않지만, 큰 매력을 가지고 있는 '공식문서'란 녀석입니다. 가장 친해지기 어려운 이유는 너무 딱딱하고, 불친절 합니다.
    • 딱 정해진 부분에 대해서 간략하게 설명하고 부연 설명이 부실합니다. 하지만, 깔끔하게 잘 정리되어 있어 익숙해지시길 추천합니다.
  • 파이썬 예제 관련 책들.
    • 찾아보면 파이썬에 관련된 다양한 예제를 수록한 책들이 있습니다. 해당 책들은 내용보다는 보기 편한 것으로 선택하실 것을 추천합니다. 어차피 가장 중요한 것은 자신이 원하는 기능을 만드는 것이죠. 그 과정 자체가 가장 큰 예제가 되어 줄 것이기 때문에 예제 관련책에서는 로직, 알고리즘등을 만들때 보편화되고 빠르게 코딩하는 기술적인 부분을 익히는 것이 좋을 것이라 생각합니다.
  • 유튜브
    • 과거에는 '독학'하면 책이 전부였습니다. 문서로 이루어진 내용을 활용해 필요한 정보를 배웠죠. 하지만, 이제는 동영상시대입니다. 유튜브에서도 학습하는데 많은 도움을 받을 수 있습니다.
    • 이미 유명하신 분들이 많이 있으니, 천천히 둘러보면서 자신과 가장 잘 맞는 영상을 선택하면 좋을 것 같습니다.

 

책 혹은 동영상 또는 그 외의 다양한 방법으로 선택을 했습니다. 이제부터 중요한 것은 연습과 연습이며, 뚜렷한 목적성이 있어야 합니다. 목적지가 없는 길은 방향을 잃기 쉽습니다. 방향을 잃으면 결국, 마지막을 보지 못하고 포기할 가능성도 높습니다.

 

파이썬으로 할 수 있는 것들.

뚜렷한 목적성이 없다면 다양한 가능성을 살펴보는 것도 도움이 될 수 있습니다. 원하는 기능 혹은 분야가 없는데, 파이썬을 익히고 싶을 수도 있습니다. 저도 처음에는 그런 식이었습니다. 그렇게 하나씩 알아가다보면 뚜렷한 원하는 것이 존재할 수 있습니다. 인간은 경험이 참 중요한 것 같습니다. 아래는 파이썬으로 할 수 있는 것들입니다.

 

인공지능, AI 분야

구글 알파고가 몇년전, 전세계 사람들에게 인공지능의 성능에 대한 일침을 가했습니다. 무수히 많은 경우의 수가 존재하는 바둑에서 각국 대표에게 승리하는 모습을 보였기 때문이죠. 때마침, 인공지능에 관련된 서비스도 활성화를 띄면서 많은 사람들이 관시을 가지는 분야가 되었고, 현재도 성장하고 있는 분야이기도 합니다. 

  • 파이썬 인공지능 분야에 대한 접근 방법.
    • anaconda 개발 환경, jupyter notebook을 사용하여 즉각적이고 시각적인 데이터 통계 및 결과를 확인할 수 있습니다. 대표적인 개발 환경이 될 수 있을 것입니다.
  • 관련 라이브러리들.
    • konlpy, matplotlib, torch, GPT, RNN, pillow, opencv, numpy 등
    • 훨씬 많은데, 기억이 잘 나지 않네요. 추가적인 부분은 후에 보충하겠습니다.
  • 관련 개념들.
    • 머신러닝 : 지도학습 / 비지도학습 / 강화학습(ex,딥러닝)

 

해당 분야가 광범위한 만큼 쓸 수 있는 모든 수단을 동원해 기술 개발이 진행중이라는 느낌이 강합니다. 아주 기본적인 예제를 활용해 볼 수 있기 위해 위에서 언급한 라이브러리와 개념은 알고 접근하는 것이 좋을 것이란 생각을 합니다.

 

윈도우 프로그램(어플리케이션) 개발

우리는 여러 업무 환경에서 작업을 하게 됩니다. 사무직이라 통칭되는 분야에서 컴퓨터는 빠질 수 없는 필수적인 요소이기도 합니다. 이런 업무 환경에서는 다양한 프로그램을 활용하게 됩니다. 기본적인 os(윈도우, 맥)을 선택하고 그에 맞는 프로그램을 활용하게 됩니다. 그리고 원하는 작업을 진행하게 됩니다.

 

파이썬을 이용해 해당되는 프로그램을 만들어 볼 수 있습니다. 파이썬 코딩을 통해 모든 것을 직접 코딩하는 것도 방법이 될 수 있으며, 윈도우 api등을 이용해 외부 프로그램을 조작하여 컨트롤 하는 것도 방법이 될 수 있습니다. 또는, 백그라운드에서 스크립트를 실행해 다양한 보조 업무를 시킬 수도 있습니다.

 

  • 파이썬 윈도우 프로그램 개발
    • 스크립트 작성에 도움이 되는 라이브러들(내부)
      • 필요한 기능에 따라 필요로 하는 라이르버리는 달라지게 됩니다. 모든 종류를 나열할 수는 없기데 대표적인 것들을 나열합니다.
      • win32api, pyautogui, selenium, requests, BeautifulSoup, openpyxl, pillow, win10toast, 등등
    • 스크립트에 외모를 꾸며주는 방법(외부)
      • pyqt, qtdesigner, ktinter 등등

 

그 밖에도 다양한 라이브러리, 플레임 워크를 이용할 수 있습니다. 언제나 그렇듯 모든 것에 욕심내지 않으셔도 됩니다. 필요할 때, 필요한 기능을 사용할 수 있는 녀석들을 이용하면 되니까요.

 

안드로이 어플리케이션 개발

지금은 과거에 비해 보편화되어 있습니다. 스마트폰은 정말 다재다능하며, 이제는 일상에서 빼놓을 수 없는 중요한 녀석임에 분명합니다. 파이썬을 이용해 안드로이드 스마트폰에서 이용할 수 있는 어플을 만들 수도 있습니다. 개인적으로 언젠가 도전해보고 싶은 것이기도 합니다.

 

  • 파이썬 안드로이드 어플리에키션 개발 
    • kivy, buildozer

 

웹사이트 개발

이쯤되면 못하는게 먼가 싶을 정도로 거의 모든 분야에 파이썬으로 해결할 수 있을 것 같습니다. 웹사이트 개발 보다는 웹서비스 개발이라는 명칭이 더 어울리는 모습이기도 합니다. 유저의 반응에 즉각적으로 반응하여 빠르게 페이지를 보여줄 수 있습니다. 대표적으로 인스타그램이 있습니다.

 

  • 파이썬 웹사이트 개발 프레임 워크
    • django, flask 등

 


뒤로 갈 수록 첨언이 적어졌습니다. 간략하게 언급하는 것이 좋아보였습니다. 그렇다고 이미 적은 내용을 지우고 싶지는 않아 위와 같은 형태가 되었네요.

 

파이썬으로 할 수 있는 것은 정말 다양합니다. 상상하는 모든 것을 구현할 수 있을지도 모릅니다. 웬만한 기능들은 라이브러리 혹은 프레임워크의 형태로 지원되고 있습니다. 잘 가져와서 기능 혹은 서비스를 구현하면 마무리가 될 수 있습니다.


파이썬 코딩 중 막히면 해결할 때 도움이 되는 3가지 방법.

코딩은 오류와의 싸움인 것 같습니다. '이게 왜 되지?' 또는 '이게 왜 안되지?'라는 의문이 자주 들곤 합니다. 거기에 갑자기 나타나는 error메시지는 참 익숙해지지 않습니다. 이런 경우, 해결해야겠죠. 그 때, 도움을 받을 수 있는 방법입니다.

 

1️⃣ 구글링

구글은 참 깔끔하게 원하는 결과를 보여주곤 합니다. 그냥, error메시지로 검색하면 관련 내용들을 확인할 수 있습니다. 가장 좋은 것은 한글로 된 내용인데, 아쉽지만 그런 좋은 문서를 만나지 못하는 경우도 많습니다. 이럴때 언어가 장벽이 될 수 있습니다. 개인적으로 크롬의 번역기능을 자주 활용합니다.

 

2️⃣ stack overflow

이미 많이들 알고 있을 수 있습니다. 전계적으로 거대한 커뮤니티입니다. 오랜 시간 운영되어온 만큼 웬만한 문제점은 다 찾아볼 수 있습니다. 이 또한 언어의 장벽이 느껴질 수 있는데, 적당히 번역하여 코드를 살펴보면 큰 도움이 되곤 합니다. 

 

3️⃣ 공식문서

정말로 친해지기 어렵게 생겼습니다. 그저 딱딱하기만 하다는 느낌이 강합니다. 하지만, 가장 강력하기도 합니다. 공식문서를 통해 해당 기능을 알고, 옵션과 활용등을 파악할 수 있습니다. 다만, 직접적이고 구체적인 예시가 부족하기 때문에 커뮤니티에서 먼저 찾는 것을 추천합니다.


그 밖에도 다양한 부분들이 있을 수 있겠죠. 원하는 것을 얻는 과정은 참 쉽지 않기도 합니다. 얼마나 걸릴지도 알 수 없고요. 하지만, 이미 시작했다면 끝을 보는 것도 좋을 것 같습니다. 결과물이 완성되면 뿌듯함과 흥미가 생길 수 있을 것입니다. 이 글이 시작하는 사람들에게 작은 도움이 되기를 바라며, 글을 마칩니다.

댓글