본문 바로가기
C#/C# 일반 & Basic (General & Basic)

C#이란 무엇이며 C#에 대한 모든 것

by ★√★ 2021. 2. 11.

안녕하세요, Davey 입니다. 오늘 포스팅 할 내용은, C#이 과연 무엇이며, 어떻게 만들어 졌고, 어떻게 이용되어 지고 있는 지에 대한 내용입니다. 그럼 일단 과연 C#이 무엇인지 한번 알아보겠습니다. 

C#이란 무엇이며 C#에 대한 모든 것

 

 

1. C# 이란 ? C#의 정의 (참조 문헌 : https://ko.wikipedia.org/wiki/C_%EC%83%A4%ED%94%84)

 

C 샤프 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 음이름에 대해서는 올림다 문서를 참조하십시오. 이 문서는 위키백과의 기술적인 한계로 인하여 다른 제목을 사용합니다. 이 문서의 정확한 제목은 C#입니다. C#패러다임프로그래밍 패러다임: 구조적 프로그래밍, 명령형 프로그래밍, 객체 지향 프로그래밍, 사건 기반 프로그래밍, 비동기 메서드 호출, 함수형 프로그래밍, 제네릭 프로그래밍, 반영, 병행 컴퓨팅설계자마이크로소프트개발자마이크로소프트발표일2000년최근 버전8.0[1]최근

ko.wikipedia.org

- C#(한국어: 시 샤프, 원래는 C♯)는 마이크로소프트에서 개발한 객체 지향 프로그래밍 언어로, 닷넷 프레임워크의 한 부분으로 만들었으며 나중에 ECMA (ECMA-334)와 ISO (ISO/IEC/23270)의 표준으로 자리잡았습니다. C++와 자바의 문법과 비슷한 문법을 가지고 있습니다.

 

2. C#의 역사 

- C#은 닷넷 프로그램이 동작하는 닷넷 플랫폼을 가장 직접적으로 반영하고, 또한 닷넷 플랫폼에 강하게 의존하는 프로그래밍 언어입니다. 여기에서 닷넷 프로그램은 아래에 다시 한번 설명 드리도록 하겠습니다. C#은 그 문법적인 특성이 자바와 상당히 유사하며 C#을 통하여 다룰 수 있는 닷넷 플랫폼의 기술들조차도 자바를 염두에 둔 것이 많아서 자바와 가장 많이 비교되고 있습니다. 하지만 C#은 자바와 달리 불안전 코드(unsafe code)와 같은 기술을 통하여 플랫폼 간 상호 운용성에 상당히 많은 노력을 기울이고 있습니다. C#의 기본 자료형은 닷넷의 객체 모델을 따르고 있고, 런타임 차원에서 쓰레기 수집(garbage collection)이 되며 또한 클래스, 인터페이스, 위임, 예외와 같이 객체 지향 언어로서 가져야 할 모든 요소들이 포함되어 있습니다.

3. C# 이름의 에피소드

- C#이라는 이름은 음표를 연주할 때 반음 올리는 것을 표시하는 올림표에서 따왔습니다. C++에서 "++"가 변수의 값을 1 증가시키는 것을 의미하는 것과 비슷합니다. 마찬가지로 올림표는 네 개의 "+" 기호와 비슷하므로 C++를 한번 더 증가시켰다는 뜻도 지닙니다. 기본 글꼴이나 브라우저의 기술적인 한계와 더불어 키보드에는 올림표 기호(U+266F ♯ )가 포함되지 않기에 문서에서는 대체 기호로 해시 기호(U+0023 # )를 사용하며, ECMA-334 C# 언어 사양[6] 에서도 확인할 수 있습니다. 그러나 광고나 패키지 포장 등 가능한 경우, 마이크로소프트에서는 의도한 대로 올림표를 사용합니다.

4. C# 컴파일러와 개발 도구들

 1) Microsoft Visual C# : Microsoft가 C#에 대하여 내리는 모든 표준 정의를 가장 정확하고 안정적으로 반영하는 컴파일러이다. 최근에는 C# 3.0에 포함될 LINQ 확장과 같은 부분에 대한 기술적인 레퍼런스를 미리 테스트해볼 수 있는 도구로도 자주 쓰입니다. 

 

 2) Borland(CodeGear) C# Builder : 코드기어 RAD 스튜디오(Codegear RAD Studio) 안에서 Delphi.net 과 C#.net 두 가지 언어로 .net 을 지원합니다. Microsoft Rotor 프로젝트: Microsoft .NET Framework가 발표된 후 수 개월 이후에 같이 발표되는 오픈 소스 프로젝트로 Microsoft 닷넷 플랫폼에 대한 대체 구현을 제공합니다. 

 

 3) Mono : 마이크로소프트 닷넷 플랫폼에 대한 구현이 시작될 무렵에 시작되었으며, 현재는 제3자 닷넷 플랫폼 중에서 가장 안정적이고 성숙되었다고 평가되는 프로젝트입니다. 마이크로소프트 닷넷 플랫폼이 윈도우와 소수의 유닉스 플랫폼을 대상으로 하고 있는 것과는 달리 모노 플랫폼의 경우 윈도우보다는 리눅스, 유닉스, 맥 OS X, 솔라리스와 같이 윈도우 외의 운영 체제와 플랫폼을 대상으로 합니다. 초기에는 지미안이 호스팅했으나 현재는 노벨에서 호스팅하고 있다. 모노 플랫폼을 기반으로 GTK#, 모질라 임베딩, IKVM(Java 바이트 코드를 모노 플랫폼 위에서 에뮬레이션하여 실행하는 VM), COCOA#, Nemerle 언어, MonoDevelop IDE 등의 기술을 지원합니다. 또한 마이크로소프트 닷넷 플랫폼과 서로 호환이 가능하다. 현재는 리눅스 배포판들 사이에서 공식적으로 채택되고 있을 정도로 리눅스 환경에서는 대중적인 닷넷 플랫폼 구현이 되었습니다.

 

 4) DotGNU Project : 모노와 비슷한 시기에 개발을 시작하였지만 아직 안정적인 버전이 출시되지 못하였다. 특유의 Portable .NET 엔진을 사용하고 있습니다.

5. 닷넷 프레임워크 (개인적으로 정말 처음에 헷갈리는 부분이였습니다.)

[참조 문헌 : https://ko.wikipedia.org/wiki/%EB%8B%B7%EB%84%B7_%ED%94%84%EB%A0%88%EC%9E%84%EC%9B%8C%ED%81%AC]

 

닷넷 프레임워크 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 닷넷 프레임워크(.NET Framework, 이전 이름: 닷넷)는 마이크로소프트에서 개발한 윈도우 프로그램 개발 및 실행 환경이다. 네트워크 작업, 인터페이스 등의 많은 작업을 캡슐화하였고, 공통 언어 런타임(Common Language Runtime)(CLR)이라는 이름의 가상 머신 위에서 작동한다. 오픈 소스 버전으로 닷넷 코어가 있다. 버전별 주요 기능[편집] 닷넷 프레임워크의 스택 버전 1.0 : 닷넷 프레임워크의

ko.wikipedia.org

- 닷넷 프레임워크(.NET Framework, 이전 이름: 닷넷)는 마이크로소프트에서 개발한 윈도우 프로그램 개발 및 실행 환경이다. 네트워크 작업, 인터페이스 등의 많은 작업을 캡슐화하였고, 공통 언어 런타임(Common Language Runtime)(CLR)이라는 이름의 가상 머신 위에서 작동합니다.

 

닷넷 프레임워크의 구조

 

.NET 프레임워크의 가장 중요한 콤포넌트는 공통 언어 기반(Common Language Infrastructure)입니다. 다른 말로 CLI라고도 합니다. CLI를 둔 목적은 애플리케이션의 개발과 실행 시 언어에 종속적이지 않은 플랫폼을 제공하기 위해서입니다. 예외 처리, 가비지 콜렉션, 보안, 호환 등을 위한 소프트웨어 콤포넌트를 포함합니다. 마이크로소프트가 구현한 CLI를 일컬어, 공통 언어 런타임(Common Language Runtime, CLR)이라고 합니다.

 

CLR은 다음과 같은 4개의 주요 부분으로 구성됩니다.

 

1) 공통 타입 시스템 (CTS)

2) 공통 언어 스펙 (CLS)

3) 저스트-인-타임 컴파일러 (JIT)

4) 가상 실행 시스템 (VES)

 

5) 어셈블리

 

- 중간 언어인 MSIL 코드는 닷넷 어셈블리에 저장됩니다. 닷넷 어셈블리는 윈도우 구현에서는 포터블 익스큐터블(PE) 파일이 됩니다. (EXE 혹은 DLL파일이다.) 닷넷 어셈블리는 소프트웨어 배포 및 판 높임, 보안 등에 있어서 .NET 유니트 역할을 합니다. 어셈블리는 파일 한 개 이상 여러 개의 파일로 구성되는데, 파일들 중 한 개 파일은 매니페스트를 꼭 포함해야 합니다. 어셈블리의 완전한 이름은 간단한 텍스트 이름 및 판(버전) 번호, 컬처, 공개 키 암호 방식(public key) 토큰 등을 가지고 있습니다.다; 이 중 이름은 꼭 가지고 있어야 하지만, 나머지는 없어도 된다. 공개 열쇠 암호 토큰은 어셈블리가 작성될 때 생성된다. 이 토큰은 어셈블리의 이름과 어셈블리 파일들의 내용을 대표하는 고유의 값이다. 비밀 열쇠 암호는 어셈블리의 작성자에게만 알려진다. 같은 공개 열쇠 암호 토큰을 갖고 있는 두 개의 어셈블리는 같은 어셈블리라는 사실이 보장된다. 어셈블리가 해커 등에 의해 함부로 변경되면, 공개 열쇠 암호를 이용하여 어셈블리가 변경되었는지를 감지해낼 수 있습니다.

 

6) 메타데이터

 

- 모든 공통 중간 언어(CIL)는 닷넷 메타데이터를 통해 "스스로 기술""된다. CLR은 적절한 메소드가 불리는지를 보장하기 위해 메타데이터를 검사를 합니다. 메타데이터는 보통 랭귀지 컴파일러에 의해 생성이 됩니다. 하지만 개발자 자신이 커스텀 애트리뷰트를 사용하여 자신만의 메타데이터를 작성할 수도 있습니다. 또한 메터데이터는 어셈블리에 대한 모든 정보를 담고 있습니다.

 

7) 베이스 클래스 라이브러리 (BCL)

 

- 베이스 클래스 라이브러리(BCL)는 .NET 프레임워크를 사용하는 모든 언어가 사용할 수 있는 클래스들의 라이브러리입니다. 흔히 프레임워크 클래스 라이브러리(Framework Class Library) (FCL)이라고 잘못 불립니다. (이것은 Microsoft.* 네임스페이스를 포함하는 BCL보다 큰 집합이다.) 파일 읽기나 쓰기, 그래픽 렌더링, 데이터베이스 조작, XML 조작 등과 같은 공통된 기능을 해주는 클래스들을 제공합니다.

 

이상입니다. 지금까지, C#에 대한 사항과 C#의 기본 바탕인, 닷넷 프레임워크에 대해서 알아보았습니다. 

조금이나마 도움이 되셨으면 합니다. 

 

[저작권이나, 권리를 침해한 사항이 있으면 언제든지 Comment 부탁 드립니다. 검토 후 수정 및 삭제 조치 하도록 하겠습니다. 그리고, 기재되는 내용은 개인적으로 습득한 내용이므로, 혹 오류가 발생할 수 있을 가능성이 있으므로, 기재된 내용은 참조용으로만 봐주시길 바랍니다. 게시물에, 오류가 있을때도, Comment 달아 주시면, 검증 결과를 통해, 수정하도록 하겠습니다.] 

728x90

댓글


// 내부링크를 현재창으로 열기 // Open internal links in same tab