Web/별별 개발 이야기

[별별 개발 이야기] 프로그래밍 입문자, 어떤 언어를 배워야 할까?

JuniorEinstein 2019. 7. 24. 16:39
728x90

0. 도입

프로그래밍 기술이 대세가 되면서 프로그래밍을 배우고 싶어 하는 사람들이 더 많아졌습니다! 프로그래밍에 대한 수요는 앞으로도 꾸준히 증가할 것이기 때문에 프로그래밍을 공부하는 것이 앞으로의 인생에 있어서 절.대. 손해가 될 일은 없을 겁니다.

자, 그러면. 프로그래밍을 배워야 하는데 과연 어떤 것을 먼저 시작해야 할까요? 어떤 언어를 먼저 공부해야 할까요?

오늘은 프로그래밍을 처음 시작하는 사람들은 위한 가이드라인을 제시하려고 합니다.

물론! 이 가이드라인은 저의 주관적인 의견에 따라 작성되었기 때문에 참고해주시고, 다른 사람들이 작성해 놓은 가이드라인도 함께 참고하시면 더 많은 도움이 될 것입니다!

 

1. 프로그래밍, 왜 공부해야 하는가?

모든 배움에는 이유가 있습니다. 학교에서 가르치는 일방적인 강의를 듣고 시험을 위해 공부하는 의미 없는 학습의 시대는 지나갔습니다.

그러면 우리는 왜 프로그래밍을 배워야 할까요? 생각해보면 일상생활을 하면서 프로그래밍을 해야하는 상황은 극히 드문 일인데 말이죠.

그것은 바로 프로그래밍을 공부하는 것이 프로그래밍만을 배우는 것이 아니기 때문입니다. 프로그래밍을 하기 위해서는 우선 컴퓨터와 친해져야 합니다. 컴퓨터를 이해해야 하고, 컴퓨터가 어떤 방식으로 동작하는지, 그리고 우리가 사용하는 프로그램들에는 어떤 원리가 숨어있는지 알아야 합니다. 그런 과정에서 우리는 프로그래밍 뿐만 아니라 컴퓨터를 더 잘 다룰 수 있게 됩니다.

컴퓨터를 잘 다루는 것은 21세기를 살아갈 우리들에게, 혹은 더 먼 미래를 살아가게 될 후손들에게도 중요한 능력입니다. 그렇기 때문에 우리는 프로그래밍을 공부해야 하는 것이죠.

프로그래밍을 해야 하는 이유에 대한 유명한 영상이 있습니다. 저는 제가 나가는 모든 강연들을 이 영상과 함께 시작하는데요, 함께 보시죠.

프로그래밍을 배워야 하는 이유

잘 보셨나요?

영상을 보면 마크 저커버그나 다른 유명한 프로그래머들도 모두 아주 단순한 프로그래밍으로 시작해 현재 우리가 사용하고 있는 서비스들을 만들어냈다는 것이 놀랍습니다. 그렇기 때문에 우리도 충분히 할 수 있습니다! 물론 저도, 처음에는 화면에 "Hello, World!"를 출력하는 것으로 프로그래밍을 시작했으니깐요 ㅎㅎ

 

2. 어떤 언어를 공부해야 할까?

많은 사람들이 시작을 두려워합니다. 어려우면 어쩌지? 이거 깔면 컴퓨터 고장나는거 아니야? 어떻게 시작해야하지? 등의 의문 때문입니다.

하지만 시작을 두려워할 이유는 전혀 없습니다! 우리 모두 실패를 딛고 지금까지 살아왔으니까요.

아참, 그전에 혹시 학원을 등록하려는 분들이 계시다면 전혀 그럴 필요가 없다고 말씀드리고 싶습니다. 물론 학원에서 많은 도움을 받을 수 있는 것은 사실이지만, 인터넷에는 더 많은 정보들이 있다는 사실! 저처럼 블로그를 운영하는 사람들도 있고 유튜브에도 좋은 강의들이 많이 있으니 먼저 시도해 보시길 바랍니다.

프로그래밍 언어를 선택하는 과정은 프로그래밍을 처음 배울 때만 있는 일이 아닙니다. 어떤 회사에서든 크고 작은 프로젝트를 시작할 때, 이번 서비서는 어떤 언어로 개발할 것이고, 어떤 툴을 사용하여 개발할 것인지 정하는 과정이 최우선이 되기 때문입니다.

그렇기 때문에 언어를 선택하는 일은 특별한 일이 아니라 늘상 있는 일이며! 한 가지 언어만을 고집할 이유도 전혀 없습니다. 시도해 보고 그 언어가 자신과 맞지 않는다는 생각이 들면, 다른 언어를 공부하면 되니까요!

그러면 이제부터 프로그래밍 입문자들이 배우기 좋은 몇 가지 언어를 소개해 드리겠습니다.

 

- 파이썬(Python)

첫번째 타자는 파이썬(Python)입니다. 아마 들어보신 분들도 있을 겁니다. 특히 프로그래밍 교육의 필요성을 일찍이 느낀 선진국들은 파이썬으로 프로그래밍 기초 교육을 실시하고 있을 정도로 유명하고 많이 쓰이는 언어입니다.

파이썬은 1991년 귀도 반 로섬(Guido van Rossum)이라는 사람에 의해 고안되었습니다. 파이썬이라는 이름은 그가 평소에 즐겨보턴 코미디 <Monty Python's Flying Circus>에서 따온 이름이라고 하는군요.

현재 파이썬은 비영리의 파이썬 소프트웨어 재단에서 관리하고 업데이트 되고 있습니다.

Python 공식 웹사이트 - https://python.org/

파이썬 공식 웹사이트

위키백과에는 파이썬의 철학에 대한 내용이 있는데요. 다음과 같습니다.

  • "아름다운게 추한 것보다 낫다." (Beautiful is better than ugly)
  • "명시적인 것이 암시적인 것 보다 낫다." (Explicit is better than implicit)
  • "단순함이 복잡함보다 낫다." (Simple is better than complex)
  • "복잡함이 난해한 것보다 낫다." (Complex is better than complicated)
  • "가독성은 중요하다." (Readability counts)

이렇듯 파이썬은 누구나 더 쉽게 작성하고 읽을 수 있는 언어가 되는 것을 목표로 하고 있습니다. 많은 사람들이 파이썬을 사용하고 파이썬을 배우는 이유이기도 합니다.

파이썬의 장점

  • 배우기 쉽다.
  • 문법이 간결하고 직관적이다.
  • 사용자 커뮤니티가 크고 한글 자료가 많다.

파이썬의 단점

  • 다른 언어에 비해 느리다. - 하지만 요즘은 컴퓨터가 좋아져서 차이가 거의 없습니다.

파이썬을 할 수 있는 것

  • 웹 서버 개발
  • 웹 크롤러 개발
  • 인공지능 개발 (Tensorflow, PyTorch)
  • 빅데이터 분석 (Matplot, Pandas)

파이썬으로 할 수 없는 것

  • 모바일 앱 개발 (가능은 하지만 아직 추천하지는 않습니다.)
  • 게임 개발 (가능은 하지만 마찬가지로 추천하지는 않습니다.)

이런 분들에게 추천드립니다.

  • 막연하게 프로그래밍의 맛을 보고 싶은 사람
  • 앞으로 프로그래밍을 전문적으로 하고 싶어하는 사람

파이썬 공부하기

  • jump2python (pdf) - 어느 순간부터 jump2python 책의 pdf가 인터넷에 돌아다니더군요. 솔직하게 썩 좋은 책은 아니지만 파이썬을 공부하기에 나쁘지는 않을 겁니다.

jump2python.pdf
1.41MB

 

파이썬은 할 수 있는 것도 많고 쉬운 언어이기 때문에 많은 분들에게 추천하고 싶습니다. 사실은 프로그래밍을 시작하려는 분들에게 권장하고 있습니다만 파이썬을 공부하시면 앞으로 다른 언어들을 공부할 때도 많은 도움을 받으실 수 있을 것입니다.

 

- HTML(HyperText Markup Language)

두 번째는 바로 HTML입니다. HTML은 HyperText Markup Language의 줄인말로, HyperText라는 단어는 Text가 텍스트 이상(Hyper)의 의미를 가지고 있는 언어라는 뜻입니다.

HTML은 웹 사이트를 구성하고 있는 뼈대 언어이기도 합니다. 그 증거는 웹사이트의 소스코드를 열어보면 알 수 있습니다.

크롬 브라우저로 아무 웹사이트에 접속한 다음, 마우스 우클릭을 하면 있는 '페이지 소스 보기'를 눌러봅시다. 그러면 그 웹사이트를 구성하고 있는 HTML 소스 코드를 볼 수 있습니다.

마우스 우클릭 > 페이지 소스 보기
네이버 웹사이트의 소스 코드

잠깐 살펴보면 HTML은 좌우의 화살괄호(<, >)로 되어 있는 것이 특징입니다. 화살괄호 한 쌍으로 이루어진 단위를 '태그(Tag)'라고 부르는데요, 이런 특징을 가진 언어들을 '마크업 언어(Markup Language)'라고 부릅니다. 다른 마크업 언어에는 XML(EXtensible Markup Language)이 있습니다.

HTML은 웹사이트를 만들기 위해 제작된 언어지만, 최근에는 모바일 앱 및 웹 게임 개발에도 사용되고 있습니다. 웹 서비스를 만들고 싶으신 분들은 HTML을 먼저 공부하시면 됩니다.

제가 느낀 HTML의 가장 큰 재미는 결과를 바로바로 볼 수 있다는 점입니다. 내가 짠 HTML 코드를 웹 브라우저에서 실행하면 내가 작성한 코드의 결과를 시각적으로 볼 수 있어서 재밌었습니다. 그게 제가 웹 개발에 매력을 느낀 부분이기도 하고 여러분에게 HTML로 프로그래밍 시작하는 것을 추천해드리는 이유이기도 합니다.

HTML의 장점

  • 배우기 쉽다.
  • 결과를 웹 브라우저(크롬 등)로 바로바로 볼 수 있다.

HTML의 단점

  • 웹 사이트만을 개발할 수 있다.
  • 언어의 독립성이 떨어지고, 다른 언어들을 함께 사용해야 한다. (CSS, javascript 등)

HTML로 할 수 있는 것

  • 웹 개발

HTML로 할 수 없는 것

  • 웹 개발을 제외한 나머지

이런 분들에게 추천드립니다.

  • 웹 사이트를 개발하고 싶은 사람

HTML 공부하기

 

- Go언어

세 번째는 바로 Go언어 입니다. 사람들이 아직 잘 모르는 언어고 생소한 언어이기도 합니다. 하지만 제가 Go언어를 추천드리는 이유는 앞으로 무궁무진한 가능성을 가지고 있는 언어이기 때문입니다.

2018/04/27 - [Web/Go Lang] - [Go언어] 요즘 뜨는 Go언어... 왜?

Go언어는 구글에서 개발한 언어입니다. 구글에서 개발한 언어라는 사실만으로도 개발자들 사이에서는 많은 화제가 되었습니다. 그리고 제가 직접 구글 본사에 가서 인터뷰를 진행해본 결과, 새롭게 시작하는 구글 프로젝트들 중 많은 것들은 Go언어로 작성되고 있다고 합니다.

Go언어는 배우기 쉽고 빠릅니다. 단점은 한글 커뮤니티가 많이 없고 아직 사용자층이 적다는 점입니다.

하지만 제가 사용해본 Go언어는 특정 부분을 개발할 때 있어서 월등히 빠른 개발 속도와 성능을 보였고, 앞으로는 실제 서비스에도 적용시켜보고 싶다는 생각이 들었습니다. (저는 간단한 게임 서버를 Go언어로 짜봤는데 정말 좋았습니다.)

Go언어 공식 웹사이트 - https://golang.org/

Go언어 공식 웹사이트

Go언어의 장점

  • 구글에서 개발했다. - 앞으로 무궁무진한 가능성이 있는 언어이다.

Go언어의 단점

  • 한글로 된 자료들이 적다. 사용하는 사람들도 비교적 적다.

Go언어로 할 수 있는 것

  • 웹 서버 개발, 게임 서버 개발
  • 사실 거의 모든 분야의 개발이 가능합니다.
  • 시스템 관련 개발 (OS 등)

Go언어로 할 수 없는 것

  • 모바일 앱 개발 - 연구가 활발히 진행되고 있기 때문에 가까운 미래에 가능할 것으로 보입니다.

이런 분들에게 추천드립니다.

  • 색다른 언어를 공부해 보고 싶은 사람
  • 앞으로 프로그래밍 시장에서 경쟁력을 갖고 싶은 사람

Go언어 공부하기

 

- C언어

마지막으로 C언어입니다. 워낙 오래된 언어이고 많은 사람들이 프로그래밍을 시작할 때 배우던 언어이기 때문에 긴 설명을 하진 않겠습니다.

우선 C언어는 다른 언어들의 기본이 되는 언어입니다. 다른 언어의 기본이 된다는 것은 문법이 비슷하다는 뜻일 수도 있고, 언어를 개발할 때 C언어로 개발을 했다는 뜻일 수도 있습니다. 대표적으로 Python이 C언어로 작성되었습니다. Go언어도 처음에는 C언어도 작성되었다가, 지금은 완전히 Go언어 자기 자신으로 대체되었습니다. 그리고 많은 운영체제(OS)들이 C언어로 작성되었습니다.

이런 만능 C언어! 할 수 있는 것이 가장 많은데 왜 저는 Python을 권장할까요?

그것은 바로 개발 효율성의 문제에 있습니다.

결론만 이야기 하자만 같은 동작을 하는 코드를 C언어로 짜는 것보다 Python으로 짜는 것이 훨씬 쉽고 간단하다는 뜻입니다. 그렇기 때문에 Python으로 프로그래밍을 시작하는 것을 권장드립니다.

하지만 C언어를 공부해야만 하는 상황들도 있겠죠! 바로 다음과 같은 상황들입니다.

  • 정보올림피아드에 출전하고자 할 때
  • 알고리즘을 공부하고자 할 때
  • 시스템 쪽 개발을 하고 싶을 때
  • 전문적으로 게임 개발을 시작하려고 할 때

위에서 C언어는 다른 언어들의 기본이 되는 언어라고 했습니다. 그렇기 때문에 C언어로 짜여진 언어들은 C언어보다 동작 속도가 빠를 수 없습니다. 그러므로 알고리즘을 전문적으로 공부하고 싶은 사람들에게 C언어를 추천드립니다.

C언어의 장점

  • 프로그램의 동작 속도가 빠르다.

C언어의 단점

  • 개발하는데 시간이 많이 걸린다.

C언어로 할 수 있는 것

  • 알고리즘 개발
  • 시스템 개발
  • 인공지능 관련 개발
  • 게임 개발
  • 영상 분석과 그래픽 관련 개발

C언어로 할 수 없는 것

  • 웹 개발

이런 분들에게 추천드립니다.

  • 알고리즘을 공부하고 싶은 사람
  • 앞으로 게임 개발을 전문적으로 하고 싶은 사람 - 게임 엔진들은 대부분 C언어나 C 계열의 언어는 사용합니다.
  • 컴퓨터를 심도있게 이해하고 공부하려는 사람

C언어 공부하기

  • 윤성우의 열혈 C 프로그래밍 (책)

 

3. 프로그래밍을 입문하려는 모험가를 위한 마지막 조언

어떤 프로그래밍 언어를 공부하든 간에 "도전을 두려워 하시면 안됩니다."

  • 컴퓨터는 여러분을 해치치 않습니다.
  • 프로그래밍은 컴퓨터를 박살내지 않습니다. 혹시 컴퓨터가 고장나면 포맷하면 됩니다.
  • 하다가 꼬이면, 처음부터 다시하면 됩니다.
  • 에러를 두려워하지 마세요.
  • 영어로 된 자료 읽기를 포기하지 마세요.

끝까지 읽어주셔서 감사합니다! 혹시 궁금하신 점이 있거나 추가적으로 설명이 필요하신 부분들은 언제든지 댓글로 알려주시면 됩니다. 감사합니다!

728x90