[C#]0.프로그래밍을 시작해보세요
출처
- 본 내용은 C# 공부 내용이며 책과 강의를 정리한 내용입니다
| 프로그래밍
- 컴퓨터에서 동작하는 프로그램을 만드는 일
| 프로그래밍 언어
- 컴퓨터 프로그램 제작을 위한 인공언어
- 명령어 집합과 문법 체계 보유
| 컴파일러
- 사람이 읽고 쓸 수 있는 언어로 작성한 코드를 컴퓨터가 편하게 읽을 수 있는 이진 코드 기계어로 번역하는 것
- 사람이 읽고 쓸 수 있는 언어 : 어셈블리어 -> 포트란 -> 베이직 으로 발전
| 유닉스와 C의 시대
- C언어를 얘기하려면 유닉스를 얘기해야함
- 유닉스는 운영체제
| c는 어려워요 c++ 더 어려워요 : 어려운 이유 그리고 C#의 등장
- 메모리 관리
운영체제가 프로그램을 실행하면 프로그램은 운영체제로 부터 일정 크기의 메모리 공간을 할당받는다
프로그램은 자신이 다뤄야 되는 데이터를 메모리 하기 위해 어떠한 순서를 거치냐 하면- 일정한 크기를 할당을 한다.
- 할당한 공간에 데이터를 저장하고 wrtie 하고 read 한다
- 다쓰고 나면 해제를 해줘야한다
- 해제의 과정이 중요한 이유
- 해제하지 않으면 프로그램에게 할당되어있는 메모리공간을 계속해서 잠식해 나가고 메모리가 부족한 문제가 발생하게 된다
운영체제는 이러한 문제가 발생한 프로그램을 중단 시켜 버림 이러한 문제를 해결하기가 간단하지 않았음
- 플랫폼 이식
예를 들어, Unix 위에서 프로그램을 만들고(app) Mac에서도 동작하게 하고싶다면 ?
Unix에 특화된 코드가 있고,Mac에 특화된 코드가 있는데 c언어 수준에서는 책임져 주지 않았습니다.
c언어의 규격은 이것을 정의하지 않음 그래서 이식이 쉽지않음
또한 라이브러리가 일관성이 없음 예를 들어, 파일을 다루기위한 api를 사용했다면,
그 다음에 스레드를 다룰때도 같은 스타일로 라이브러리가 준비가 되어있으면 새로 익히는건 어렵지 않은데
일관성이 없다보니 파일을 다룰때 확보한 지식을 다른 도메인에서 사용하기가 쉽지않았던 것
또한 api 라이브러리에 일관성이없기 때문에 프로그래머가 새로운 api에 적응하는데 어려움이있었음 -
그래서 c# 등장!
메모리 관리문제 -> 가비지 콜렉터 책임
기존의 1. 데이터 할당 2. 데이터 읽고 쓰는 과정 3. 해제 하는 과정을
1번과 2번은 프로그래머가 하고 3번은 가비지 컬렉터가 담당하게 된다플랫폼 이식-> CLR 책임
CLR이 해당 OS를 지원하면 윈도우, 리눅스, macOS, 안드로이드, iOS… 이든 프로그래머는 어플리케이션 코드만 작성하면 됨
플랫폼 이식은 CLR이 책임져 준다!일관성 있는 클래스 라이브러리
과거에 일관성없는 라이브러리로 프로그래머들이 고생을 했다면
c#의 .NET 클래스 라이브러리는 상당히 정돈이 잘되어있다. 어느 한 영역의 프로그램 전문성이 쌓이면 다른 영역 프로그래밍을 할일이 생기더라도 쉽게 적응할 수있게 되었다.c# 사용되는 분야
c# 어플리케이션이 운영될수있는 하드웨어 환경과 운영체제 환경이 다양하다 보니까 사용되는 영역도 상당히 다양해짐
게임 클라이언트 Unity / 고성능 서버 어플리케이션 / 데스크탑 앱(c# 이외 선택지가 많이 없는 편. ex. 식당 카페 포스기)
ASP .NET을 기반으로 하는 웹서비스 / 클라우드 앱 / AI / IoT 앱 ..등c#앱 동작 구조
프로그래머는 c#앱을 코딩을 한다
c#은 CLR(Command Language Runtime) 위에서 동작을 한다
CLR은 다양한 운영체제(윈도우, 리눅스, 맥..) 위에서 동작할 수 있음
| c# 언어 (개정전 강의 내용)
- c++와는 많이 다름
- 환경도 다름
- ms 에서 만듦
- c#용 컴파일러는 따로있다
- 새로운 시대에 맞는 새로운 언어
- c#이 나오게 된계기는 1990년대 말 MS가 .NET 전략을 발표함
- .NET 전략 : 인터넷이되는 모든 종류의 기기에서 사용할 수 있는 프로그램을 작성할 수 있어야하고 모든 기기에서 한번 작성한 프로그램을 돌릴 수 있어야한다.
- 이런 비전을 가지고 등장함
- 이러한 기반을 가진 프로그램을 만들 때 사용하는 언어로써 c#이 등장
- .NET을 지원하는 언어로써 c#뿐만아니라 visual basic의 .NET 버전도 있다.
- c++ 의 .NET 버전도 있다.
- .NET 버전을 지원하는 언어들은 MS가 개발한 풍부한 라이브러리 .NET 프레임워크라는 환경을 이용하면서 .NET 프레임워크에서 제공해주는 풍부한 라이브러리를 사용할 수 있다.
- .NET 프레임워크는 .NET 언어인 c#이라던지 visual basic 이라던지 c++ .NET을 사용할 수 있게 만들어 주는 프레임워크임
- 이 프레임워크 안에는 운영체제의 기능을 쉽게 다룰 수 있도록 많은 라이브러리들을 제공해주고 있음
- 여러가지 .NET 언어중에서 c#이 .NET 프레임워크에 최적화된 언어
댓글남기기