Myugyin's Watchtower

기술스택 정리 - 다룰 수 있는 언어의 첫인상과 해봤던 것들 본문

카테고리 없음

기술스택 정리 - 다룰 수 있는 언어의 첫인상과 해봤던 것들

Myugyin 2021. 1. 28. 18:30

개발자로 인턴 근무를 하다보니 다시 한 번 기술스택을 정리해야할 것 같은 생각이 든다. 비록 22살짜리 완전 초짜 개발자이지만, 지금 알고 있는 지식들도 많은데, 나중에 계속해서 공부하면 그 양이 버거워질 것 같다. 일단 내가 할 수 있는 언어들을 적어보고, 해당 언어들에 대해서 시간이 생길때마다 포스팅을 해야할 것 같다. 사람의 기억은 생각보다 믿을만한 것이 되지 못하거둔...

 

기본적인 것부터 차근차근 적어보자! 적어도 6개월 이상 사용해보거나, 해당 언어를 가지고 프로젝트를 진행한 적이 있으면 여기에 적기로 했다.

 

1. C 

가장 기본적이지만  가장 어려운 언어

   C... 프로그래밍을 C로 처음 입문한 나에게 코딩이란 너무 가혹한 존재였다. 포인터니 주소값이니 뭐니...대학 전공 과목중에 C프로그래밍이라는 과목이 있어 공부를 시작했던 것 같다. 주변에 나 처럼 C로 (전공때문에) 프로그래밍 입문한 사람들 중 많은 사람이 코딩에 흥미를 읽고 떨어져 나갔다. 만약 나도 여기서 넘어졌으면 개발자로 살아가고있는 나 자신은 존재하지 않았을 것이다. 온통 검은색의 CMD 화면에서 별찍기 조차도 너무 어려워했었던 나. 

 

  그런데 오히려 C 덕분에 현재 코드들이 돌 때 어떻게 동작하는지, 어셈블리 언어가 동작하는 방법같은 기본적인 것 부터 해서, 코드가 돌아가는 것을 분석할 때 다른 사람들보다 더욱 편하게 할 수 있는 것 같다. 포인터 개념이 한 번 확실히 박히니까 코딩이라는 모든 분야의 진입장벽이 낮아진 것 같은 기분이 든다.

 

 C로는 임베디드 시스템을 만들때 사용해봤다. 제한된 CPU와 하드웨어에서 가장 최고의 효율을 내려면 높은 수준의 메모리 관리와 포인터 시스템이 필요한데, C언어는 여기에 제격이었다. (더 효율적이려면 어셈블리 레벨까지 내려가는데, 세상에 마조히스트가 아닌 이상 어셈블리를 좋아하는 사람이 세상에 어디있어!!! 있으면 나와봐요. 존경합니다.) 기껏 만든 임베디드 시스템이어봤자 버튼과 Array FND를 사용한 계산기였지만, 검은 색 창에 별찍기가 아닌 눈에 보이는 무언가를 C로 해냈다는 것에 의의를 두고싶다. 소켓 프로그래밍을 통한 네트워크 서버&클라이언트도 만든적도 있지만, 진짜 별거 아니어서 넘어가기~

 

C++도 다뤄봤으나...진짜 공부만 해보고 프젝에는 사용해보지 않아서 바로 다음 언어로 넘어갈거당

2. Python

  내가 코딩에 관심을 갖고, 개발자의 길을 생각해보게 만든 언어이다. CMD에서 별찍기만 하던 나에게 눈에 보이는 것을 코딩하는 경험은 너무나 새로웠다. 개발자로 진로를 생각하게 된 이유가 무엇이냐고 물어보면, 주저하지 않고 대학교 새내기때 프로젝트로 사용해본 Python 덕분이라고 말할것이다.

 

 하지만 지금 생각해보니 Python으로는 PyQt5로 위젯을 만드는 정도...만 해본 것 같다. 실제로 새내기때 PyQt5로 위젯만드는 프젝 말고는 크게 다룬적이 없는 것 같거둔... 더 나아가면 OS와 스레드 공부할때 잠깐? 하지만 기회가 된다면 내가 제일 공부하고 싶은 프레임워크가 많은 언어이기도 하다. Django, Flask와 같이 멋있는 웹 Framework가 잔뜩하거든. 잠깐 바람이 들어 웹 크롤링을 공부할때도 이 언어를 사용했던 것 같다.

 

  여담으로, 대학 동기들하고 같이 일하는 사람에게 밥먹듯이 하는 소리가 "나 파이썬 마음에 안들어요"라는 소리다...ㅋㅋ 나 솔직히 아직도 Identation기반 문법은 적응이 안된단 말이야... {}로 감싸주고싶어..

 

3. C#

 

  C#은 Unity Engine으로 게임을 만들때 사용해봤다. 뭔가 C++인 것 같은데 JAVA의 느낌도 나는...? 사용해보면서 계속 내가 C++을 하는지 JAVA를 하는지, 정신 똑바로 안차리면 어느순간 JAVA문법을 치고있는 나를 보게 된다. 사용해본 후기는 움...나쁘지는 않지만 손이 가지 않는달까? 굳이? 라는 생각이 든다. 아무래도 Unity로 또 개발을 할 일이 없으면 사용하지는 않을 것 같다.

 

 그리고 Unity로 게임 개발하면서 느낀 점. 난 게임 개발자를 정말 존경하게 되었다. 진짜 내가 하는 게임 중에서 버그 나와도 화가 안나. 그냥 클라이언트가 버그 리폿했을 때 그 원인을 찾으려 밤샘을 하는 개발자들이 생각나 눈물이 날 뿐...

 

4. JAVA

  내 개발 경력 중에서 가장 많이 사용한 언어일 것 같다. 본인은 안드로이드 앱 개발을 제일 많이 했는데, 그때마다 이 언어를 썼거든. 솔직히 IntelliJ IDE가 예뻐서 계속 사용하게 되는건가 싶기도 하고ㅋㅋㅋ 솔직히 아마 나중에 개발자를 한다면 이 언어와고는 떨어질래야 떨어질 수 없는 개발자가 될 것 같다. 

 

 실제로 JAVA개발을 하면서 SOLID와 같이 객체지향 프로그래밍에 필요한 다양한 개념들, Classpath와 같이 귀찮지만 꼭 확인해야 하는 것들에 대해서 배우게 되었다. 이 언어를 사용하면서 내 전체적인 개발 수준도 높아졌달까. ghkrt

 

 가장 내가 프로젝트할 때 많이 사용한 언어도 JAVA이다. (아마 내 Git의 90%는 JAVA일 것이다.) 위에서 말했듯, 안드로이드 JAVA 개발을 주로 했었고, 데이터베이스를 활용한 커뮤니티 앱, 음악 스트리밍 서비스 등 여러가지를 JAVA로 개발했다. 어떠한 프로젝트를 맡거나 시작할 때, "이걸 자바로 하면 어떻게 할 수 있지?"라는 생각을 먼저 하게 될 정도로 많이 사용한 언어이다. 하지만 아직 Spring Framework도 잘 사용해보지 않았고, 여전히 배워야할 점이 많은 언어라고 생각이 된다.

 

5. Javascript

  JS를 처음 접한 것은 HTML, CSS와 함께 웹 Frontend를 간단하게 끄적일때 같이 접한 것 같다. JS는 내가 기존에 가지고 있던 코딩의 기본적인 사고 방식을 부수는 언어였다. 내가 평소에 알고있던 컨벤션과 너무도 다른 컨벤션을 가지고 있고, 몇가지 문법에 대해서는 "이게 돼?? 이게 왜 돼??" 했던게 기억 난다. 아니 솔직히ㅋㅋㅋㅋ 맨날 string을 숫자로 바꿀려고 casting도 하고, parseInt()이런거 써가면서 겨우겨우 바꿨는데, 0 == "0"을 true라고 뱉는 걸 보면 누구도 충격을 안받지 않을 것 같은데ㅋㅋㅋ 첫인상이 굉장히 강렬했던 친구 중 하나.

 

 Frontend할때 말고도, 친구들과 간간히 서버를 공부하며 REST나 Endpoint등등 개념을 알아갈 때 NodeJS를 사용하면서 간단한 서버를 만들며 공부를 했던 것 같다. JS를 실제 프젝에 쓴 것은 Frontend UI를 만들때 React Framework를 사용하여 한 것 말고는 존재하지 않은게 아쉽다. 여러모로 큰 프젝에는 사용하지 않았지만, 은근 많이 사용한 언어.

 

 여담으로, 주변에서 굉장히 호불호가 많이 갈리는 언어이다. 선호하는 사람은 무조건 JS만 사용하고, 싫어하는 사람은 극도로 혐오하는 등....ㅋㅋ (혐오할 것 까지야...) 온도차가 굉장히 심한 언어이다. 개발하는 사람 만났을 때 "혹시...JS는 어떠세요?"라고 물어볼때마다 반응이 너무 재밌다ㅎㅎ

6. Go

 짠! 우리 귀여운 비버친구가 나왔다. Go Language는 회사 인턴으로 근무할때 첫 개발작업시 사용했던 언어이다. 당시 내가 맡았던 업무는 Task 지향형 Chatbot API 개발이었는데, Chatbot의 Webhook Server를 만들때 CTO님이 Go Language를 추천해주셨다. 서버를 공부한 것은 위에서 NodeJS로 공부한 것이 처음이라고 했지만, 실제 서버를 만들어 API까지 만드는 프젝은 Go language가 처음이다.

 

 첫인상은 음... 뭔가 C, Python, JS에서 코딩하던 천재들이 "우리가 한번 언어를 만들어볼까?"라고 만든 언어인 것 같다. 세가지 언어의 특징이 모두 보이는 언어였다. 더 자세히 말하자면, 3가지 언어의 장점을 마구 우겨넣어서 만든 언어라고 할까. 역시 Google이 대단한 회사인건 맞는 것 같다.

 

 익히는데에도 굉장히 쉬운 언어 중 하나였다. 문법이 얼마 안되어서 익히는데 쉬웠고, Go Language를 처음 써본 나여도 사용할 Framework까지 분석하여 실제 API 개발에 착수하는데까지 이틀이 채 걸리지 않았다. 비록 한글 자료가 많지 않아 영문 Docs와 여러 해외자료로도 필요한 Router/Testing Frameworks등을 발견할 수 있었다. 개발하면서 언어를 익히는데에 이렇게 힘을 들이지 않은 언어도 처음인 것 같다.

 

 정해진 Naming 컨벤션이 있다는 것도 새로웠다. camelCase로 변수와 함수 이름을 작성하는 것이 익숙한 나에게 당혹스러웠던 부분이기도 했다. 내부에서만 사용할거면 camelCase로 사용하지만, public처럼 외부에서도 사용할 언어는 PascalCase로 앞 부분을 대문자 처리한 후, 바로 위에 //주석으로 - 설명을 이렇게 달아야 하는 점. 이런 점이 매우 새로웠다.

 

 하지만 중앙 저장소가 없다는 사실을 듣고 안습... npm이런것이 없어서 패키지를 불러올 때 git 주소를 그대로 긁어오는 것을 보고 안쓰러웠다. 또한 제네릭도 지원하지 않고, 여러모로 계속해서 발전되어야할 언어이다.

 


 이 정도가 내가 자신있게 말할 수 있는 기술스택인 것 같다. 현재 공부할 계획아래에 있는 언어는 2가지, Kotlin과 Typescript정도다. 특히 Kotlin은 정말 각 잡고 공부해야하는게, 안드로이드 거의 대부분이 이제 코틀린으로 개발이 된다. 세상에, JAVA로 할 수 있는 것을 Kotlin으로 완벽 대체가 가능하고, 더욱 쉽게 가능하다면 당연히 Kotlin을 쓰는게 맞쥐... 

 

다음에 글을 올리게 된다면 Framework를 주제로 올려보는 것도 재밌겠다! :) 

 

 

Comments