Language/C#

[ c#] c#언어의 특징

힘히힘 2021. 8. 14. 15:26
반응형

c# 언어의 특징이 무엇일까...?....?.....?

 C#의 특징

  1. 완벽한 객체지향언어
  2. 편리한 개발자가 사용 편리한 인터페이스 환경
  3. 메모리에 대한 사용자 부담이 없다.(자동 가비지 콜렉션기능)
  4. 타입이 엄격 및 문법이 엄격하다.
  5. 많은 문법의 확장
  6. 닷넷플랫폼의 대표적인 언어로써의 닷넷의 모든 장점을 갖고 있음. 등등등....

 

이라고 구글에 치면 바로 나온다. 

하지만 난 Babo👶🏼라 여전히 모르겠다.

 

그래서 관련 내용 좀 더 찾아보았다, 

 

1. 객체지향 언어

객체 지향 언어란 무엇일까?

객체를 만들고 객체를 사용하는 프로그래밍 방법

즉, 실제 세상에서 처럼 다양항 정보들을 가진 객체들로 표현하고, 그 객체들간 통신으로 해결하는 기법

 

그럼

객체(Object)란?

객체는 어떠한 속성값과 행동을 가지고 있는 데이터입니다.

주변에 있는 사물이나 생명체 같은 모든 것을 뜻하며, 

 

예로 

자동차 = 정보 + 행위

이러한 정보와 행위를 묶은 데이터를 하나의 자동차 객체로 볼 수 있다.

 

 

 

 

 

 

 

정보 :
자동차를 원동기를 장치하여 그 동력으로 바퀴를 굴려서 철길이나 가설된 선에 의하지 아니하고 땅 위를 움직이도록 만든 차. 라는 사전적 의미 + 차 앞뒤에 있는 차량번호 정보와 디자인과 제조사, 모델명 정보

행위 :
내가 탈 수 있고, 앞으로 뒤로 움직이는 행동

즉 , 객제지향 언어는 이러한 객체들을 표현하고 그 객체들간의 통신으로 해결 하는 기법을 뜻함.

 

 

 

2. 인터페이스 환경

 

인터페이스(interface)는 서로 다른 두 개의 시스템, 장치 사이에서 정보나 신호를 주고받는 경우의 접점이나 경계면이다

즉, 사용자가 기기를 쉽게 동작시키는데 도움을 주는 시스템을 의미한다

 

 

3.  가비지 콜렉션 기능

 

쓰레기 수집(garbage collection 가비지 컬렉션)은 메모리 관리 기법 중의 하나로, 프로그램이 동적으로 할당했던 메모리 영역 중에서 필요없게 된 영역을 해제하는 기능이다.

 

//자바, C#, 그리고 일부 스크립트 언어들은 처음부터 쓰레기 수집 기법을 염두에 두고 설계되어, 언어 정의에 쓰레기 수집이 포함되어 있다. C, C++ 등의 프로그래밍 언어는 수동 메모리 관리를 가정하고 설계되었으나, 쓰레기 수집을 지원하는 구현도 존재한다.//

 

즉, 가비지 콜렉션 기능을 지원하므로 메모리가 필요없게 되었을 때 굳이 지우지 않아도 자동으로 관리해주는 것을 의미한 것 같다.

 

 

4. 닷넷 프레임 워크

 

닷넷 프레임워크는 2002년 2월 13일, MS가 내놓은 소프트웨어 플랫폼으로 C#이라는 객체지향 언어도 함께 출시하여 자바에 대항하고자 하였다. 

 

당시 자바가 굉장히 인기가 많았다고... 자바스크립트는 자바와 관련 1도 없지만 일종의 마케팅(?) 전략으로 자바스크립트로 이름을 선정하였는데 대박났다고....

 

C# 언어는 빌드 후 IL(Intermediate Language, 중간 언어)로 변환되어 CLR(Common Language Runtime, 공통 언어 런타임)에서 실행되는 구조.

 

통상적으로 윈도우용 애플리케이션닷넷 프레임워크 기반으로 개발하는 것이 생산성이 높고 성능도 좋다. 또한 사용 가능한 서드파티(3rd Party) 라이브러리도 풍부하다. 다만 대부분이 상용이고 윈도우 전용이다. 이같은 닷넷 프레임워크의 한계는 애플리케이션 생태계가 웹과 모바일 중심으로 변화하면서 더욱 두드러졌다.

 

 

+) 추가로, 또 좋은 내용을 찾아서 내용 정리를 하였다. 
실제로 강사님이 수업해주실 때 c#1.0~ c#10.0까지의 변화를 보여주신다. 그리고 나는 못따라간다. 슬프다.

 

 

 

 

 

C# 1.0의 탄생 :

C#은 마이크로소프트에서 .NET Framework를 위해 만든 언어로, C와 C++에서 자료형부터 구문, 로직 등을 가져왔으며, Java에서 객체지향 프로그래밍의 개념

 

C# 3.0 :  

JavaScript에서 코드와 데이터를 처리하는 방식  =>Stream Task C#

 

C# 6.0

Node.js의 성격을 받아들였고 => Service based C#

 

C# 8.0

Tuple 이라는 개념으로 발전

 

C# 9.0 

Functional language로서의 사용을 위해  Record 라는 개념을 도입

 

이러한 C#의 발전은 기존의 (Heavy Weight, Tightly coupled, static base)의 성향에서 (Light weight, loosely coupled, dynamic based)의 개념으로 나아가겠다는 철학을 기반한다고.

 

 

출처:

https://radait.tistory.com/4

 

https://wikidocs.net/20457

 

https://ko.wikipedia.org/wiki/%EC%9D%B8%ED%84%B0%ED%8E%98%EC%9D%B4%EC%8A%A4_(%EC%BB%B4%ED%93%A8%ED%8C%85) 

 

https://ko.wikipedia.org/wiki/%EC%93%B0%EB%A0%88%EA%B8%B0_%EC%88%98%EC%A7%91_(%EC%BB%B4%ED%93%A8%ED%84%B0_%EA%B3%BC%ED%95%99) 

 

https://www.s-core.co.kr/insight/view/%EC%95%8C%EC%95%84%EB%91%90%EB%A9%B4-%EC%93%B8%EB%AA%A8-%EC%9E%88%EB%8A%94-%EB%8B%B7%EB%84%B7-net-%EC%9D%B4%EC%95%BC%EA%B8%B0/

 

https://epdev.tistory.com/38