1. 배경

 블로그 글을 쓴지 3일정도가 되었고 Algorithm 카테고리에는 이제 2개의 글이 올라갔다. Algorithm이라고 거창하게 카테고리를 만들었지만 실제로는 그냥 내가 문제를 푼 해석을 풀이해논 페이지이다. 다양한 언어를 능숙하게 사용한다면 좋겠지만 이전 글을 쓰면서 '내가 다른 언어를 사용할 일이 있을까?'라는 생각이 들었다. 그 생각 결과 음.. 굳이? 라는 생각이 들었다. 그래서 나는 어쩌다가 Python을 선택하게 되었을까를 생각하다가 이렇게 글을 써본다.

 

2. Python이란?

 Python은 1991년 프로그래머인 귀도 반 로섬이 발표한 고급 프로그래밍 언어이다. Python의 특징이라고 하면 인터프리터, 객체지향적 언어라는 것이다. 객체지향적이라는 것은 다른 언어에서도 많이 들었을테니 대충 알 것이고 인터프리터 언어라는 것은 특별한 컴파일이 없어도 바로 idle에서 실행할 수 있는 것을 말한다. Java를 사용해본 유저라면 코드를 작성하고 컴파일을 거친다음 작성한 코드가 실행된다. 하지만 Python에서는 해당 코드를 작성하고 실행을 누르면 바로 실행 시킬 수 있다. 또한 terminal에서도 python3(또는 python2)를 입력하면 바로 실행되어 코드를 작성해도 바로바로 결과를 얻을 수 있다.

 Python은 처음 코딩을 시작하는 사람들에게 가장 많이 추천되는 언어이다. 그 이유는 다른 언어에 비해서 엄청 쉽다. 처음 코딩을 시작해서 Python을 만져보는 사람들은 "이것도 어려워 죽겠는데 도데체 뭐가 쉽다는거지?" 라는 생각이 들 수도 있지만 C++과 Java 등을 만지다가 Python을 만져본 사람들은 엄청난 신세계의 경험을 했을 것이다.

 이러한 이유로 Python의 인기는 계속해서 증가하고 있으며 2016년 알파고와 이세돌의 대국을 통해서 엄청난 관심을 받게된 인공지능을 개발하는 라이브러리인  Pytorch와 TensorFlow도 Python을 기반해서 나왔다.

 

3. 나는 어쩌다가 Python을?

 그렇다면 나는 왜 Python을 선택했을까? 처음부터 나도 Python을 주언어로 선택한 것은 아니다. 대학생 1학년 2학기에 처음으로 자바를 다뤄봤다. 그 당시에는 무슨 생각이었는지 모르겠지만 자바를 만지면서 "와 재미있다.", "멋진 언어다." 라는 생각을 했었다. 지금 생각하면 왜 그랬는지 모르겠다. System.out.println()과 같이 긴 코드들이 멋져보인건지, 어디에 홀린건지..ㅋ 그러다가 방학을 보내고 다시 개강을 했을 때 자바를 보니 이게 무슨일? 하나도 안떠올라.. 간단한 코드를 작성하는데도 빨간 글씨 에러가 얼마나 많이 나오던지..ㅋㅋㅋ (이때부터라도 정신차리고 블로그에 기록을 했어야했네;;) 이전 학기에는 멋져보이던 언어가 너무 귀찮게 느껴졌다. class선언하는데 private, public 고려해야하고, '왜이리 코드들이 길어..' 라는 생각이 계속 들었다. 그래서 점점 java와 거리가 멀어졌고, 2학년 1학기에는 C++수업을 들었다. C++은 처음부터 나랑 안맞는다는 느낌이 들었다 ㅋㅋㅋㅋㅋ iterator도 복잡했고 뭐하나 쉬운게 없었다.. 그래도 소프트웨어과인데 내 주언어는 하나 있어야하지 않을까하다가 Python을 선택했다. 위에서 설명했던 쉽다는 장점이 크게 느껴졌고, 코드를 작성하기 편했다. 그래서 '그래 이게 나한테 맞는거 같아.' 라고 생각이 들었고 그때부터 주 언어로 선택한걸로 기억한다.

 

4. Python을 사용하면서 불편한 점은?

 Python의 큰 장점이 쉽고 편리한 내장함수와 라이브러리가 많다는 장점이 너무 커서 크게 불편했던 적은 없다. 하지만 몇가지 떠오르긴한다.

 우선 다른 언어에 비해 속도가 느린편인 것입니다. 이게 평소에는 별로 차이를 못느끼지만 코딩테스트에서 똑같은 알고리즘은데 C++로는 통과하고 Python으로는 통과하지 못하는 경우가 종종 발생합니다. 이러한 차이가 있는 이유는 파이선이 동적 타입이기 때문에 변수 이름 앞에 string이나 int와 같은 타입 지정없이 알아서 해줍니다. 우리에겐 정말 편리한 기능이지만 그 과정이 파이썬에게는 많이 부담이 되는 과정입니다. 이와 반대로 C++과 Java와 같은 언어들은 변수 앞에 int, string 등등 타입을 지정해줍니다.

 두번째로는 코딩테스트에서 Python을 지원하지 않는 회사가 종종 있습니다. 요즘은 대세 언어이고 인공지능에도 많이 사용하다보니 거의 없지만 대표적인 대기업으로는 삼성이 있습니다. 삼성도 테스트나 때에 따라서 다른거 같지만 삼성 SW역량 테스트에서 Java, C++, C만 지원하는 경우가 있습니다. 정확한 테스트 이름은 기억이 안나지만 올해 삼성에서 열린 코딩테스트가 있었는데 한번 테스트삼아 지원을 하려고했지만 Python이 없는거 보고 좌절... OTL. 다른 회사들도 종종 Python을 테스트 자체에서 지원하지 않는 경우가 종종 있다고 들었습니다. 그 이유는 뭐 여러가지가 있겠지만 인기있는 언어를 이렇게 제외시킨다는 것은 주언어 사용자 입장에서는 많이 슬픕니다..

 

5. Python 관련 추천 책

 저는 Python에 대한 기본 지식은 google에서 검색하면서 공부했고 알고리즘 관련 공부는 아래 책을 사용했습니다.

파이썬 알고리즘 인터뷰

저도 대학 동기한테 추천받아서 읽어보았는데 내용이 튼튼하고 잘 설명되어있었습니다. 개인적으로 책 읽는 것을 별로 안좋아하는데도 나름 재미있게 읽으면서 공부했습니다. 초보자분들도 쉽게 이해할 수 있고 여러 알고리즘에 대해서 익힐 수 있는 책이었습니다.

 코딩테스트 연습은 저는 프로그래머스를 주로 사용하는 편입니다. 카카오 관련 문제나 여러 코딩테스트 문제들이 많이 올라오거든요. 다른 사람들은 백준 사이트도 많이 이용하시는 것 같습니다. 여러 사이트를 이용해보시고 자신에게 맞는 사이트에서 공부하시는게 조금이라도 더 즐겁고 편하겠죠?

 

6. 마치며

이번 글에서는 Python에 대해서 간단하게 소개하며 제가 왜 Python을 사용하게 되었는지 소개했습니다. 혹시 아직 주언어를 정하지 못하신 분들, 처음 코딩을 시도하시는 분들이라면 Python을 주언어로 해보시는 것을 추천드립니다. 정말 편리하거든요bb

읽어주셔서 감사합니다.

+ Recent posts