유니티를 이용하여 3D VR 콘텐츠 개발을 시작하며 C# 공부를 시작했다.
Unity의 다양한 기능을 구현하기 위해서는 C# 스크립트 작성이 필수적이기에 이참에 C#을 제대로 공부해보자 !!😁 라는 생각으로 벨로그를 작성하며 학습을 시작해보려 한다.
그래도 공부를 하기 전에 C#이 무엇인지부터 알아야겠지?
C#이란?
C#은 마이크로소프트가 개발한 프로그래밍 언어로, C++과 Java의 강점을 모아 만들어졌다고 하는데, 실제로 이 두 언어의 장점을 잘 결합했다고 평가받고 있다.
재미있는 사실은 C#이라는 이름은 C++++에서 왔다는 것...! C++에서 한 단계 더 나아갔다는 의미로 네개의 +를 합쳐 '#'으로 표현했다고 한다 🤭
C#의 특징
- 객체 지향 언어 : 코드를 재사용하기 쉽고, 관리가 편하다.
- .NET 프레임워크 기반 언어 : 다양한 플랫폼에서 실행할 수 있도록 해준다.
- 간단한 문법 : C++보다 배우기 쉬운 문법이다.
- 뛰어난 안정성과 보안성 : .NET 프레임워크를 통한 장점이다.
- 메모리 관리 자동화 : 가비지 컬렉터가 관리해준다.
그렇다면, C#으로는 무엇을 만들 수 있을까?
C#으로 만들 수 있는 것
- 윈도우 데스크톱 앱
- 웹 애플리케이션
- 모바일 앱
- 게임 (Unity 엔진)
- 기업용 소프트웨어
- IoT 프로그램
특히나 Unity 게임 엔진과 함께 사용되는 경우가 많아 게임 개발에 주로 쓰이는 언어로 알려져 있다.
C#의 장단점
자, 이제 C#의 장단점에 대해 좀 더 자세히 알아보자.
<장점>
1) 배우기 쉽다.
- 일관된 문법 구조를 가지고 있어 초보자도 쉽게 이해할 수 있다.
- 마이크로소프트에서 제공하는 풍부한 문서와 튜토리얼이 있어 학습 자료를 찾기 쉽다.
- 큰 개발자 커뮤니티가 형성되어 있어 도움을 받기 쉽다.
2) 다재다능하다.
- 데스크톱 앱부터 웹, 모바일, 게임까지 다양한 종류의 애플리케이션을 개발할 수 있다.
- Unity와의 호환성이 좋아 게임 개발에 특히 강점을 가진다.
- .NET Core를 통해 크로스 플랫폼 개발도 가능하다.
3) 대규모 프로젝트에 적합하다.
- 강력한 타입 시스템으로 컴파일 시점에 많은 오류를 잡아낼 수 있어 안정성이 높다.
- 네임스페이스와 클래스를 이용해 코드를 잘 구조화할 수 있다.
- 제네릭, 인터페이스 등의 기능으로 확장성 있는 코드를 작성하기 좋다.
4) 지속적으로 발전하고 있다.
- 마이크로소프트가 계속해서 새로운 기능을 추가하고 있다.
- 개발자 커뮤니티의 피드백을 적극 반영하여 언어를 개선하고 있다.
- 최신 프로그래밍 트렌드를 빠르게 도입하고 있다.
<단점>
1) 주로 Windows 환경에 최적화되어 있다.
- 많은 C# 라이브러리와 프레임워크가 Windows에 최적화되어 있어 다른 OS에서는 제한적일 수 있다.
- Visual Studio라는 강력한 IDE가 Windows에서 가장 잘 작동한다.
2) Java에 비해 다른 OS에서 사용하기 어렵다.
- Java의 "Write Once, Run Anywhere" 철학에 비해 아직은 플랫폼 종속성이 있다.
- .NET Core와 .NET 5+ 덕분에 많이 개선되었지만, 여전히 일부 기능은 Windows에서만 사용 가능하다.
3) 시장 점유율이 다른 언어에 비해 적다.
- 웹 개발 분야에서는 JavaScript, Python 등에 비해 점유율이 낮다.
- 데이터 사이언스 분야에서는 Python, R 등이 더 많이 사용된다.
- 오픈 소스 프로젝트에서는 Java, Python 등에 비해 덜 사용되는 편이다.
이렇게 장단점을 살펴보니 C#이 어떤 언어인지 조금은 감이 오는 것 같다. 특히 Unity로 게임을 개발하려는 나에게는 장점이 더 크게 다가오는데, 다른 분야의 개발자라면 어떻게 느껴질지 궁금하다.
다른 언어와 비교해보기
1. C# vs Java
<유사점>
- 문법이 비슷함
- 강력한 타입 시스템ㅇ르 가지고 잇음
- 가비지 컬렉션으로 메모리를 자동으로 관리함
<차이점>
- C#은 주로 Windows 환경에서 사용되고, Java는 더 다양한 플랫폼에서 사용됨.
- C#은 .NET 프레임워크를, Java는 JVM을 사용함.
- C#은 LINQ, 프로퍼티같은 편리한 기능을 제공함.
즉, 윈도우 개발이 주요하다면 C#, 크로스 플랫폼 개발이 중요하다면 Java가 좋을 수 있음.
2. C# vs Python
<유사점>
- 객체 지향 프로그래밍을 지원함.
- 풍부한 라이브러리와 프레임워크를 가지고 있음.
<차이점>
- Python은 인터프리터 언어, C#은 컴파일언어임.
- Python은 동적 타입, C#은 정적 타입언어임.
- Python이 더 간격한 문법을 가지고 있음.
- 성능 면에서는 Python보다 C#이 우수함.
빠른 개발이 필요하거나 데이터 분석, AI 관련 작업을 한다면 파이썬, 대규모 애플리케이션이나 게임 개발을 한다면 C#이 좋을 수 있음.
3. C# vs. C++
<유사점>
- 문법이 비슷함.
- 객체 지향 프로그래밍을 지원함.
<차이점>
- C++은 수동 메모리 관리, C#은 자동 메모리 관리르 함.
- C++은 더 낮은 수준의 시스템 프로그래밍이 가능함.
- C#은 .NET 프레임워크의 풍부한 라이브러리를 사용할 수 있음.
시스템 프로그래밍이나 하드웨어 제어가 필요하다면 C++, 윈도우 애플리케이션이나 게임 개발을 한다면 C#.
4.C# vs JavaScript
<유사점>
<차이점>
- JS는 주로 웹 프론트엔드 개발에 사용되고, C#은 벡엔드나 데스크톱 앱 개발에 주로 사용됨.
- JavaScript는 동적 타입, C#은 정적 타입 언어임.
- C#은 더 강력한 타입 시스템과 컴파일 시점 체크를 제공함.
웹 프론트엔드 개발이 주라면 JS, 그 외의 대부분의 경우에는 C#이 더 적합할 수 있음.
모든 상황에서 완벽한 언어는 없지만, 이렇게 비교를 통해 C#에 대한 이해도는 높아졌을 것이라 기대하며 C# 첫 포스팅을 마무리해본다.🥰