본문 바로가기

프로그래밍 언어/C#_씨샾_처음부터

C#_000_씨샾이 뭐지?

유니티로 게임 만들어 볼려고 이렇게 저렇게 한 지 벌써 1년이 다 되어 간다.

유튜브, 책 등을 전전하며 꽤 많은 게임을 따라 만들어 보았다.

유니티는 정말 내 수준에서 게임 만들기에 최적의 환경을 제공하는 프로그램인 것 같다.

 

C# 언어로 코딩하는 문제도 이미 파이썬이나 코틀린 같은 프로그래밍 언어를 간단하게나마 훑어보아서 인지 지금까지는 특별히 막히는 부분 없이 올 수 있었다.

 

딱 여기까지다.

기존 게임 따라 만들기를 넘어 진전이 없다.

내가 구상하는 게임을 만들려고 하니 코드가 제대로 만들어지지 않는다.

설령 어떻게 해서 실행은 되었지만 한 눈에 봐도 전체 코드는 체계가 잡히지 않은 뒤죽박죽이라는 걸 알 수 있다.

 

어떻게 학습하는 것이 가장 효율적이고 체계적일까 고민을 많이 했다.

이 시점에 프로그래밍 언어 학습에 있어서 다른 방법을 찾아야겠다는 생각이 들었다.

현재 이 C# 카테고리에 학습 내용을 정리하겠다.

게임을 스스로 구상하고 C#으로 구현할 수 있을 정도까지를 목표로 한다.

 

C#(씨샾)이 뭐지?

  • C# 은 응용 프로그램을 만들 수 있는 수 많은 프로그래밍 언어 중 하나이다.
  • # 기호는 플러스가 4개 붙은 모양이고, 음악에서는 날카로운 음을 나타내기 때문에 sharp(샤프, 샾 ; 날카로운, 똑똑한)라고 부른다고 한다.
  • 최초의 C 언어와 C++(씨플러스 플러스 또는 씨뿔뿔?) 라는 언어가 진화한 더 똑똑한 버전이라고 할 수 있다.
  • 윈도우즈 운영체제를 만든 마이크로 소프트에서 만들었으며 자기 회사의 .Net platform(닽넽 플랱폼)에서 작동하도록 설계되었다. (.Net은 마침표로 사용하는 점을 영어로 'dot' (닽) 이라고 해서 이렇게 부름) 

결국 C#을 익히려면 .Net이 뭔지도 알아야겠다.

 

.Net이 뭐지?

.Net은 컴퓨터 프로그램 개발을 위해 만들어진 소프트웨어 framework(프레임워크; 작업틀)이다.

프레임워크는 프로그래머가 프로그램을 개발하려고 할 때 컴퓨터 본체와 프로그래머 사이에서 작업대 또는 작업 도구 역할을 한다.

 

이 역할을 하기 위해 .Net 안에는 컴퓨터 내부의 하드드라이브, 메모리 등에 접근할 수 있도록 작성된 BLC (Basic Class Library; 베이직 클래스 라이브러리; 기본 클래스 모음)을 가지고 있다. 여기에는 유니티에서도 사용했던 System 클래스도 들어있다. 그 외에도 수 많은 Class(클래스)들이 들어있는데 이것들을 Module(모듈)이라고 부르기도 한다.

 

.Net은 Open Source(오픈 소스; 완전 개방)이며 Cross platform(크로스 플랱폼)을 완벽하게 지원한다.

Cross platform을 지원한다는 말은 .Net으로 작성한 코드를 Linux(리눅스), MacOS(맥오에스) 같은 다른 운영체제에서도 실행할 수 있다는 뜻이다.

 

.Net의 진화

당연하겠지만 .Net 프레임워크는 처음에는 윈도우즈 운영체제에서 사용할 목적으로 만들어졌다.

 

시간이 지나면서 다른 기기들과 플랫폼을 지원하기 위해 BLC를 목적에 맞게 수정하여 여러 가지 버전들이 만들어졌다.

결국 인터넷 지원용, 모바일 지원용, 컴퓨터 지원용으로 만들어진 .Net들이 서로 효율성이 떨어져서 이를 통합하기 위한 버전이 필요했다.

 

이런 목적으로 만들어진 것이 .Net Standard(닽넽 스탠다드) 버전이다.

 

또한 크로스플랱폼을 지원하기 위해 만들어진 버전이 .Net Core (닽넽 코어) 버전이다.

 

프로그래머는 프로그램 개발의 목적에 따라 선택해서 사용할 수 있게 되었다.

 

.Net의 이용 수단

.Net이라는 작업틀을 가지고 있다면 프로그래머는 .Net의 Library(라이브러리; 도서관)에 이미 만들어져 있는 클래스들의 코드를 사용해서 프로그램을 개발하기만 하면 된다.

 

이때 C#으로 코드를 작성하기 위해 사용하는 것이 Visual Studio(비주얼 스튜디오)라는 프로그램이다.

비주얼스튜디오는 C#코드와 .Net의 기능을 통합해 주기 때문에 IDE( Integrated Development Environment; 통합 개발 환경)라고 부른다.

 

이전에 사용해 봤던 안드로이드 앱 개발에 사용하는 IDE는 Android Strudio(안드로이드 스튜디오) 였다.

 

.Net의 작동 과정

비주얼스튜디오에서 C# 코드를 작성했다고 하자.

이 코드를 실행하려면 일단 운영체제가 이해할 수 있는 native code(네이티브 코드)라는 것으로 변환해야 한다.

이 변환을 Compiling(컴파일링)이라고 하며 이 작업을 Compiler(컴파일러)라는 프로그램이 자동으로 해준다. 

 

컴파일 되는 과정은 다음과 같다.

 

1. 먼저 비주얼스튜디오가 CIL (Common Intermediate Language; 일반적인 중간 언어) 코드로 변환한다.

CIL코드는 Assembly(어쎔블리; 코드와 소스를 모아두는 곳)에 저장한다.

 

이때 윈도우에서 직접 실행 가능한 .exe 파일과 다른 운영체제를 위한 라이브러리인 .dll 파일도 포함된다. 

어쎔블리에는 사운드 파일, 그림파일과 같은 리소스 파일 뿐만 아니라 유니티에서도 보았던 meta(메타) 정보도 함께 저장된다.

 

2. 실행을 하면 .Net에 있는 실행을 담당하는 CLR (Common Language Runtime)은 목표로 하는 OS(운영체제)에 맞는 JIT(Just-in-Time) 컴파일러를 사용해서 CIL코드를  native code로 변환하여 실행한다.

 

C#으로 만들 수 있는 Application(애플리케이션; 프로그램)

 

C#은 .Net 프레임워크를 사용하므로 어떤 애플리케이션(프로그램)도 만들 수 있다.

대표적인 애플리케이션은 다음과 같다.

 

  • 데스크탑 : WPF (windows presentation foundation) 라는 모듈을 사용해서 윈도우용 앱을 만들 수 있다.
  • 클라우드/웹 : ASP.NET Core를 사용해서 클라우드에서 호스트할 수 있는 앱을 만들 수 있다.
  • 모바일 : Xamarin 프레임워크를 사용해서 모바일 용 앱을 만들 수 있다.
  • 웹 API : REST APIs라는 프레임워크를 이용하여 RESTful HTTP 서비스를 구축할 수 있다.
  • WCF 서비스 : WCF를 사용해서 네트워크를 통해 데이터를 교환할 수 있는 시스템을 만들 수 있다.

 

다음 글에서 계속

Wraven...