C++, JAVA, Python, C# 누가 짱인가?

코딩소녀·2024년 1월 15일
4
post-thumbnail

(귀찮은 사람을 위한 요약)

언어든든한 빽특장점
C++Unreal메모리 관리 커스텀 가능
C#Unity, Microsoft걍 빽이 개쩜
JAVAOracle, Android Studio도대체왜쓰는거임
Python??? 없는데 왜 인기짱 ...?프레임워크 유용한거많음



안녕 일기장아!

나는 ASP C# .NET Core 서버 프로그래머로 일하고 있어.
저번 주말에는 다른 회사 게임서버 개발자분들과 이야기할 기회가 생겼는데, 아니 글쎄 나만 C#을 쓰고 있는거야😱

개발 언어는 트렌드에 정말 민감해. 다른 좋은 게 나와 버리면 내가 사용하던 언어는 구닥다리 취급을 받으며 어디에서도 알아주지 않는 기술이 될 수도 있어. 내 경력이 통째로 사라질 수도 있고 말이야.
(실제로 연세 많으신 교수님들이 사용하셨던 언어는 지금은 안 쓰는게 많아.
삼가고Lisp의 명복을 빕니다.. 제발 관짝으로 들어가 제발ㅠ 다신 나오지마)

그러다 보니 지금 내가 사용하고 있는 언어의 장단점이 뭔지 파악하고 싶어졌어! (제발 C#만의 장점 독보적이어라 ...)
이번 일기에서는 C#, C++, JAVA, Python 서버의 장단점을 비교해 보려고 해!

1. 프레임워크는 안중요한듯?? (배신쩌네...)

'코딩 진짜 어려운 거구나...' 하고 생각하게 만든 가장 첫 관문은 이 화면들이었어.

'도대체 뭘 골라야하는거지?!?'
'교수님은 이거 다뭐하는건지 아실까???'
'이 중에서 뭐로 먹고살아야 잘 먹고산다고 소문나지??' 싶었지...

처음에는 완전 나를 겁줬던 이녀석들... 이제 보니 다 알 필요 없는 애들이었어;;
처음에는 완전 웹 프레임워크 선택하면 영원히(?) 그 프로젝트 내에서는 웹만 짜야 한다고 생각했는데, 우리 회사에는 웹 프레임워크로 tcp 서버 짜고 있더라고ㅋㅋ

이런 것처럼 각 프레임워크는 설계가 조금씩 차이는 있지만 사실 빈 프로젝트에서 뭔가 몇줄 초기 세팅 해준다는 정도? 인것같아.

그래서 C++ Qt를 하던~ Boost를 하던~ 'C++'이 중요한거고, Python Django를 하던~ Fast API를 하던 'Python'이 중요한 것 같아!
프레임워크보다는 개발 언어의 특징이 프로그램에 큰 영향을 미치는 것 같다는거지 !
(아직 내가 쪼렙이어서 그렇게 생각하는 것일 가능성 높음)

2. 굳이 프레임워크별로 차이를 묻는다면?

프레임워크별로 사실 다른점이 있긴 하지. 근데 여전히 프레임워크보다는 언어의 특징과 해당 회사에서 채택한 클라이언트의 종류가 더 중요한것같기는 해.

그래도 굳이굳이 어떤 프레임워크가 좋냐 묻는다면, 대충 정리해보도록 하쥐

1️⃣ Python 프레임워크

  • FastAPI : swagger로 ui 만드는거 진심개꿀, 협업할때 문서 만들 필요 없어서 좋음
    - 참고한 글
  • AWS CHALICE : aws 에서 지원하는거라 관리 짱짱함 (서버용량, 트래픽, 로그 이쁘게 남기기 걱정 X)
  • Django : MVC 안쓰고 MTV 패턴 사용함
    - 참고한 글

2️⃣ Java 프레임워크

  • Spring : ... 아무리 검색해도 진짜 모르겠음, 몸소 써봐야 알듯함
    - 참고한 글 (이분도 저랑 똑같이 생각하시는듯)

#️⃣ C++, C# 프레임워크
이 둘은 프레임워크의 특징보다는 언어적 특징이나 사용처가 더 중요한거같아!
C++의 특징과 C#을 꼭 알아야 하는 이유는 아래에서 설명할게!

3. 각 언어의 특징 (면접 단골질문ㅋㅋ)

사실 이거 취준할때 면접 질문으로 진짜 자주 나왔던건데 왜 물어봤는지 이제야 알것같네 ㅋㅋ 이런 고민을 해본적이 있는지 물어보셨던 거였나봐.

우선 C++의 가장 큰 특징은 역시 가비지컬렉터가 없다는 것이라고 볼 수 있지!

언어 C++ C# Python JAVA
가비지 컬렉터 x o o o

가비지 컬렉터는 사실 자동으로 돌아가는 것이기 때문에, 개발자의 의도와 100% 일치하게 작동하지는 않아. 순환 참조를 하는 포인터가 있다면 영원히 가비지 콜렉터가 수거해가지 않는 문제가 발생하기도 하거든. 그리고 GC가 너무 잦게 호출되면 프로그램이 엄청 느려지더라고.

솔직히... 나머지 언어의 특징은 아직 잘모르겠어

C++이 너무 특이한 언어라 나머지 언어들의 특징도 이만큼 도드라진걸 찾으라면 진짜 어려운것같아. 아직 경험이 많이 부족하기도 하고. (JAVA 클라이언트만 해봄, Python Django, FastAPI 해봤는데 C#이랑 별로 크게 다른점 못느끼겠음)

+) 오 하나 생각났다. Python은 스크립트 언어야.

쉽게 설명하면 대학생들이 Python 공부할때 구글 Colab 많이들 쓰는데
Colab 보면 막 위에 블럭 갔다가 아래 블럭 실행하고 뒤죽박죽 순서 상관없이 막 실행할 수 있잖아.

그런게 스크립트 언어의 특징이야! 다른 언어들은 '컴파일'을 하고 실행해야 하는데 Pyhton은 별도의 컴파일 없이 바로 번역되어 실행한대.

근데 그러면 아니 자바스크립트는 뭐임? 자바도 스크립트아님?? 이럴수도 있는데 아래 사진으로 설명을 대신한다 ㅋㅋㅋㅋ 완전웃김

4. 각 언어의 사용처 (든든-한 빽)

사실 각 서버를 어떤 언어로 만드는지는 클라이언트를 뭐로 만들었는지를 따라가는 경우가 많은 것 같아. C#으로 클라이언트를 만드는 회사에서는 서버도 C#쓰고, JAVA로 클라이언트를 만드는 회사에서는 서버도 JAVA쓰고 C++도 좀 그런 경우가 많은것 같거든.

아니면 아예 서버 프로그래머와 클라이언트 프로그래머의 경계가 없는 경우도 있었고.

언어든든한 빽
C++Unreal
C#Unity, Microsoft
JAVAOracle, Android Studio
Python??? 얘 왜 인기많음 ...?

C# 은 최고의 빽이 있어. 바로 Microsoft에서 개발한 언어라는 것이지 ㅋㅋ 세계 최고의 기업에서 개발한 언어이니 망할 일이 없지~~!(휴 다행이다;;) Windows 개발에는 필수적으로 C#이 들어가.

그리고 나는 게임 서버 개발자이니 Unity에게도 아주 감사해야 하지ㅋ 게임개발에서 굉장히 큰 시장을 점유하고 있는 Unity는 개발 언어로 C#을 채택하고 있거든 만세~

JAVA도 이처럼 오라클이라는 세계적 이터베이스 시스템을 다루는데 필수적인 언어래!
Oracle과 연동하기 위해서 JDBC라는 기술이 사용된대.

그리고 JAVA하면 Android 개발도 빼 놓을 수 없지! Android Studio에서 Java그리고 코틀린... 사용하니까 안드로이드 앱 백엔드 서버에서 JAVA가 자주 사용돼!

5. 정리

언어든든한 빽특장점
C++Unreal메모리 관리 커스텀 가능
C#Unity, Microsoft걍 빽이 개쩜
JAVAOracle, Android Studio도대체왜쓰는거임
Python???프레임워크 유용한거많음
profile
game server programmer / indie game develop team leader

7개의 댓글

comment-user-thumbnail
2024년 1월 16일

'저번 주말에는 다른 회사 게임서버 개발자분들과 이야기할 기회가 생겼는데, 아니 글쎄 나만 C#을 쓰고 있는거야😱'
보통 다른 회사 게임서버 개발자분들은 어떤 언어나 프레임워크를 사용하던가요?

Unity를 사용하는 게임회사면, C#을 서버로 사용했다가 Unity 게임 개발 커리어로 확장할 수 있다는 장점이 있을 것 같다는 생각이 들었어요

1개의 답글
comment-user-thumbnail
2024년 1월 19일

저....두...C#.....Net Core ... 웹프로그래밍하고 있습니다....
다른 사람은 영어하는데, 난 왜 아랍어를 하고 있을까...
휴우...

2개의 답글