JAVA, C, C++, C# 언어 선택 고민하는 신입과 경력자분에게

프로그래머 지망하는 신입과 현직 개발자분들에게 JAVA, C, C++, C# 언어 선택 고민?


신입 개발자를 지망하는 분들이 흔히 하는 고민입니다. C/C++은 조금 하고 JAVA는 배우는 중인데 C++은 어려워 손이 안 가지만 JAVA는 할만합니다. 객체지향이란 무엇인지 자바를 보면 알 수 있어요. 


어느 날, C# 언어를 봤는데 많이 놀랍니다. WinAPI 보다가 C# 코드를 보니 같은 기능을 구현하더라도 속도가 훨씬 빨라요. C#의 장점을 알고 나니 C#을 파고들어 가고 싶은 욕심이 생깁니다. 그렇다고 C/C++ 배운 게 있는데 버리기는 아까워요. C#에 욕심은 나는데 C++ 손을 놓자니 이러지도 저러지도 못하겠습니다.



JAVA, C, C++, C# 언어 선택 고민하는 신입과 경력자분에게코딩 입문 생각할 점



그러면 문득 이런 생각을 합니다.


JAVA 배우고 C#에 집중하자!! C#이 나아 보여~!! 난 C# 개발자가 될 거야!!


앞으로 C# 추세인 거 같은데 C++을 더 깊이 파고들어야 할까? 고민됩니다.


저 같은 프로그래머 경력자들은 이렇게 말합니다.


『언어는 도구에 불과』합니다. 목수에겐 톱을 고르는 능력보다 건축 기술이 더 필요하죠.

아키텍쳐와 프로그래밍 기초를 이해하는 게 중요하다는 뜻입니다. 사실 C++을 주로 다루는 저도 C++11, C++ 14, C++17 계속 발전하는 언어라 끝이 안 보여요. 또한, C# 개발 속도, 그러니깐 생산성이 높은 건 사실이지만, C++, JAVA도 잘 다루면 생산속도 높일 수 있습니다. 개발자의 한계는 계속 연장되는 겁니다.


그 사이에 포기해야 할 부분도 많을 거라는 생각도 해봐야 합니다. 가령 inline 함수 단점이 구성된 코드 양이 많아질수록 퍼포먼스에 악영향을 줍니다. 인라인 써도 되는데, 쓰면 좋은데 그 이면에 생각할 점이 많습니다. 이건 닷넷 프레임워크라고 예외는 아닙니다.



장비 회사 프로그래머코딩 입문 생각할 점



그래서 시스템이 잘 갖춰진 회사일수록 개발 언어를 선택할 때, 같은 기능을 여러 언어로 구현해 보고 퍼포먼스 테스트를 진행합니다. 상황에 어울리는 언어를 선택할 줄 아는 능력이 필요한 셈이죠. 개발자에게 필수입니다.


C++ 탄생 이후 많은 객체지향 언어가 생겼습니다. 객체지향의 개념을 본떠서 새로운 언어가 만들어지고 있으며, 기본 원리는 비슷합니다. 그러니 C++을 할까, 자바를 할까, C#을 할까 이런 고민 자체는 학생이라면 본질적으로 무의미합니다. 현업에서 일하는 프로그래머들에겐 중요할 수 있는데 이제 배우는 학생들은 고민할 여지가 없죠.


닥치는 대로 배우고 닥치는 대로 이해하세요.


이건 제가 학생들에게 할 수 있는 최고의 조언입니다.



프로그래머 개발자 언어 선택코딩 입문 생각할 점




그리고 하나 더 생각해보죠. JSP, JAVA, PHP를 다루던 웹 개발자가 C++, JAVA 언어 전향을 생각합니다. 그럼, 윈도우 환경에서 비주얼스튜디오 다루는 것이 첫 번째라 할 수 있어요. 물론 학교 다닐 때 C++ C# 자바 기초는 배웠기에 대충은 알고 있습니다. 문제는 현업 경력이죠.


웹 프로그래밍해 본 분들은 아시겠지만, 『CS 환경과는 개념』이 달라요. 그래서 처음 이해하는데 있어서 어려운 점이 많습니다. 그래서 체계적인 공부 방법이 필요하죠.



프로그래머 언어 선택 고민코딩 입문 생각할 점



자신감은 실력에서 나온다는 말이 있습니다. 프로그래머 업무를 통해 경험을 쌓는 것도 중요하지만, 웹에서 CS로 전향한다면 무조건 남의 도움을 받는 것이 좋습니다. 현실적으로 회사 내 CS 개발자에게 해당 언어를 배우는 것이 좋고, 기회가 된다면 실제 업무를 맡아보는 게 좋아요.


  • 로그 메시지 바꾸는 단순한 일부터 시작하면 금상첨화죠.


그게 안 된다면, 재직자 학원 과정(JAVA, C++, C#)을 밟는 것도 좋습니다. 혼자 집에서 공부하고 그러는 거 저는 추천하지 않습니다. 아무것도 모른다면 도움을 받고 기초를 쌓으세요. 이후에 혼자 공부하는 게 좋습니다. 숫자를 모르는 사람이 수학 공부를 하고 싶습니다. 그럼 숫자와 기초 연산 방법을 남에게 배우고 깊이를 추구하는 게 합리적이죠. 프로그래밍도 마찬가집니다.



개발자 공부 cs 프로그래밍코딩 입문 생각할 점



대게 현업 프로그래머가 전향하려는 데엔 결정적 이유가 있습니다. 생계를 위해서건 미래를 위해서건 자기 업종을 바꾼다는 게 보통 이유론 실행되지 않아요. C++을 포함한 윈도우 개발자인 제가 웹으로 전향한다면 엄청나게 심각한 일이 걸렸다는 전제가 성립되어야 합니다.


  • 그러니, 현업에서 업종 변환하려면 꼭 도움을 받으세요.



c++ 자바 루비 c언어코딩 입문 생각할 점



또한, 장비 업체로 가는 건 좋은데, 장비 업체는 하드웨어 이해도 필요하므로 적응하는데 어려울 수 있습니다. 가령, 시리얼 통신을 하는데 현장마다 에러 유형이 다를 수 있어요. 그럼 소프트웨어보단 하드웨어와 설치 환경을 분석해야 합니다. 이런 과정이 괴로울 수 있어요. 적성에 맞으면 다행이지만.


물론 이때도 언어 선택의 고민이 들 겁니다. 그러나 CS로 전향하기로 했다면 C++, JAVA, C# 상관없습니다. 하나만 제대로 알면 짬이 있는데 나머지 언어 이해 못 하겠습니까? 언어 하나 이해하는 게 중요합니다. 경력자라면 나머지 이해하는 거 어렵지 않아요. 용기를 내세요. 


프로그래머 지망하는 신입과 현직 개발자분들에게 JAVA, C, C++, C# 언어 선택 고민?




댓글(5)

  • 2019.02.26 16:11 신고

    처음 프로그래밍을 시작하려고 하는 학생에게 아주 좋은 글이네요. 언어는 도구일뿐 이라는 말이 아주 공감됩니다.

    • 2019.02.26 19:58 신고

      넵. 언어는 도구일 뿐 입니다. 일단 하나 배워놓으면 다른 거 배우기 편해요.

      입문 단계라면 입문용 언어 선택해서 기초 쌓으시고 시간이 지날 때 마다 다른 언어 특징들 살펴보세요.

      화이팅~~!!

  • 2019.10.26 05:05 신고

    ㅎㅏ ~ 그런데 말입니다.
    새로운 언어 사용 방법을 배우는 데 몇 달씩이나 걸린다는 말이지 말입니다.
    익숙해지려면 더 많은 시간이 걸리고, 말입니다.

    C언어를 이용해 문자로 된 프로그램을 하다가, 문득 이게 GUI를 못 하는데? 형편없네. 이거 완전 반쪽 아냐? 그래서 자바로 갈아타고 신세계를 만났죠. 이거 완전 환상적인데, 포인터와 구조체가 없어도 뭐 잘 돌아가네. 두 손 두 발 다 묶였다가 팔이 풀린 느낌이었죠. Class 만세~! 그래도...

    GUI는 아직 못 하고 있어…. 난 멋진 인터넷 페이지도 만들고 싶고, 계산기도 내 맘에 쏙 드는 디자인을 해서 만들고 싶고, 탐색기도 내가 보기 좋게 만들고 싶고, 그림판이나 워드 프로그램도 직접 내 손으로 수정해서 사용하고 싶어, 그리고 결정적으로 환상적인 게임도 만들고 싶어 컴퓨터를 사용하면서 다루고 있는 주변 프로그램을 다 만들어 보고 싶은데, 개뿔 아무것도 제대로 하는 게 하나도 없어요.

    JSP로 겨우겨우 데이터베이스 연동하고 번호 달린 게시판 하나 딸랑 만들어 보고는, 이거 뭐 이래 겨우 이거 하는데, 이렇게나 시간이 오래 걸려... ㅠㅠ 내가 만들고 싶은 것은 이게 아닌데... 그리고 이건 윈도우 환경이 아니잖아 ㅠㅠ 내가 만들고 싶은 것이랑 다르잖아 그나마 버튼이나 텍스트 박스도 좀 만들어 보고했지만 윈도우 기본 프로그램인 메모장, 그림판, 계산기 이런 것들의 발바닥도 못 따라갔던 거지요.

    하~ 도대체 뭘 배워야 내가 익숙한 윈도우 프로그램들을 내 손으로 직접 만들지 4년을 배워도 못하니 ㅠㅠ

    C#을 졸업하고 만났는데 그나마 이제 메모장도 가능하겠고, 그림판도 가능하겠고, 계산기도 만들겠고, JSP에서 생 고생을 하면서 만들었던 데이터베이스 연동과 C언어 파일 입출력은 껌이었고, 게임은 아직 엄두도 못 내는 중에 ㅎㅏ ~!! 이게 또 뭘 하려면 내 맘대로 안 돼요. 꼭 틀에 박힌 대로만 해야 하니 답답하죠. API 인가 나발인가를 알아야 할 필요성을 느낀 거죠.

    재귀? 회귀? 다시 처음으로 돌아가야 하나 ㅠㅠ 자바를 하면서 C언어의 구조체를 더 잘 이해하게 되었고, 클래스를 더 쉽게 이해하게 되었는데, 이것도 마찬가진가? C#이 MFC보다 더 쉽고 빠른 프로그램 구현력 덕분에 MFC를 좀 더 이해하는 중인데, API라니 ㅠㅠ 마우스로 뭘 하려고 해도 API, 키보드로 뭘 하려고 해도 API 구글 문서를 작성한 사람들이 API를 하던 사람이라 그런지 아니면 원래 C#이 API를 delegate를 해야만 하는 개발 언어인지는 몰라도 이게 뭘 좀 하려면 늘 막혀요.

    끝이 없음.

    하나를 맞추면 다른 곳이 틀어지고, 또 맞추면 다른 곳이 더 많이 틀어져 버리는 그런 이상한 퍼즐 같다고나 할까요? 그러면서 앞선 개발자들은 이런 말을 하죠. 다 중요하고 다 알아야 한다.

    하지만 내 경험에 의하면 지금까지 해본 언어 중에 C#이 내가 상상했던 언어에 젤 가까운 것 같아요. 실무는 안 해 봤으니까 모르겠고, C#을 하고 다음 차례로 Unity를 할 예정입니다. 그러면 이제 내가 상상해 왔던 윈도우 주변 프로그램이나 게임을 이제 조금이라도 하지 않을까 생각해 봅니다.

    하지만 이것도 함정일 게 분명해 보이는 느낌적인 느낌? 언어를 시작하시는 분들이여. 그냥 교수님이 하는 말에 속고, 선배 개발자들 말에 속고, 그러고는 후회하고 새로운 언어를 발견하면서 깨닫고 하세요. 왕도는 없는 듯... 그래도 개 생초보인 나에겐 C#이 젤 와닿는 언어이었어요. 남들은 C++이 최고라고 하든데...

    자바를 해도 Console, C#을 해도 Console 프로그램을 배우는데, C는 왜 배우나 몰랑 ㅡㅡ;;;
    어셈블리어처럼 따로 빼야 하는 것 아닌가 몰랑.

    • 2019.10.26 05:32 신고

      이게 참 이상한 게 처음 배울 때 이걸 알아야 하는데 다 배우고 나니 이런 글이라도 쓰네요.
      뭔가 꺼꾸로 된 느낌 ^^&& 지금은 무쓸모.

    • 2019.10.26 09:56 신고

      MFC, C언어는 요즘 굳이 배울 필요가 없다고 생각해요. 저, 님처럼 이미 프로그래밍 배운 사람들은 겪어봤겠지만 요즘 어린 아이들이나 젊은 친구들이 굳이 배워야할 필요는 ... 글쎄요. 전 없다고 생각해요.

      말씀처럼 기능적 한계도 있고, 코틀린, vue js 처럼 기능,성능 좋은 언어가 계속 나오고 있습니다.

      점점 편해지고 있습니다.

      편해진 만큼 생산성과 완성도는 높아질테죠.

      어셈블리는 예전에도 그랬고 앞으로도 그럴테지만, "다룰 일 아예 없습니다."

      소수 인원이 다뤄야한다고 보편화할 순 없겠죠.

Designed by JB FACTORY