출처 :exclamation:

  • 본 내용은 C# 공부 내용이며 책과 강의를 정리한 내용입니다

| 프로그래밍

  • 컴퓨터에서 동작하는 프로그램을 만드는 일

| 프로그래밍 언어

  • 컴퓨터 프로그램 제작을 위한 인공언어
  • 명령어 집합과 문법 체계 보유

| 컴파일러

  • 사람이 읽고 쓸 수 있는 언어로 작성한 코드를 컴퓨터가 편하게 읽을 수 있는 이진 코드 기계어로 번역하는 것
  • 사람이 읽고 쓸 수 있는 언어 : 어셈블리어 -> 포트란 -> 베이직 으로 발전

| 유닉스와 C의 시대

  • C언어를 얘기하려면 유닉스를 얘기해야함
  • 유닉스는 운영체제

| c는 어려워요 c++ 더 어려워요 : 어려운 이유 그리고 C#의 등장

  • 메모리 관리

    운영체제가 프로그램을 실행하면 프로그램은 운영체제로 부터 일정 크기의 메모리 공간을 할당받는다
    프로그램은 자신이 다뤄야 되는 데이터를 메모리 하기 위해 어떠한 순서를 거치냐 하면

    1. 일정한 크기를 할당을 한다.
    2. 할당한 공간에 데이터를 저장하고 wrtie 하고 read 한다
    3. 다쓰고 나면 해제를 해줘야한다
    해제의 과정이 중요한 이유
    해제하지 않으면 프로그램에게 할당되어있는 메모리공간을 계속해서 잠식해 나가고 메모리가 부족한 문제가 발생하게 된다
    운영체제는 이러한 문제가 발생한 프로그램을 중단 시켜 버림 이러한 문제를 해결하기가 간단하지 않았음
  • 플랫폼 이식

    예를 들어, 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 프레임워크에 최적화된 언어

태그:

카테고리:

업데이트:

댓글남기기