07.25 학습내용
오늘의 회고
느낀 점 및 배운점 나아가야할 점
- 어제 깜빡하고 못 올려서 오늘 올리기!!
- 오늘은 책의 첫장을 읽으면서, 단어 하나하나 검색하다 이걸 하루에 다 하는 건 힘들 거 같아 일단 간단한게 맞나..?
- 자세한 내용은 뒤에 나온다고 했지만, 왜 C#을 사용하고 이용하는지, 어디에 쓰이는지 제대로 알게되었으며, 어떻게 발전했는지 알 수 있었다.
- 리드미 작성... 표 만들기.. 어렵습니다.. (노션에 적고 옮기면 저절로 마크 다운형식으로 작성해주지만, 그래도 직접 만들어 보고 싶어서 만들었다..!)
- 어제 공부한 수의 범위에 대해 다시 한번 다시 보고 C#에 대해 정리하는 시간을 가졌다!
C#
- 마이크로소프트에서 만든 프로그래밍 언어
- 컴파일과 인터프리터의 장점을 모두 갖춘 하이브리드 언어
1.1 프로그래밍 언어 알아보기
컴퓨터는 하드웨어와 소프트웨어로 구성된다.
하드웨어는 pc, 스마트폰 같은 장치를 의미
소프트웨어는 이러한 하드웨어에 설치된 운영 체제, 앱 등을 의미
소프트웨어를 만드는 행위를 프로그래밍이라 함
소프트웨어를 만드는 사람을 프로그래머라 함
- 코드(code) : 텍스트로 된 소프트웨어를 만드는 명령 집합으로, 소스(source)라 함
- 코딩(coding) : 프로그래밍 언어의 코드로 프로그램을 만드는 과정. 코딩은 컴퓨터 프로그래밍과 개념이 비슷!
- 컴파일러(compiler) : 프로그램 소스 코드를 컴퓨터 등 하드웨어가 실행할 수 있는 기계 코드로 변환하는 프로그램
- 컴파일(compile) : 컴파일러를 변환하는 과정 프로그램 소스 코드를 기계코드로 실행한다. (컴파일 언어 C, C++ 등이 해당)
- 인터프리터(interpreter) : 따로 컴파일 과정을 거치지 않고, 소스 코드를 바로 해석해서 실행하는 것 소스 코드를 인터프리터에서 실행한다. (인터프리터 언어 자바스크립트, 파이썬, PHP 등)
1.2 C# 소개하기
마이크로소프트에서 만든 개체 지향 프로그래밍 언어
데스크톱, 웹, 모바일, 게임 프로그램 등 분야를 가리지 않고 프로그램을 작성 가능
전 세계 개발자가 오랫동안 사용하고 있는 프로그래밍 언어 중 하나
C#프로그래밍 언어
C#프로그래밍이란 ?
- 응용 프로그램을 만드는 프로그래밍 언어
- C# 만으로 데스크톱 프로그램 및 웹 프로그램, 모바일과 게임 프로그램 제작 가능
- 강력하고 재사용 가능한 응용 프로그램을 쉽게 만들 수 있다.
- MS사의 최고 엔지니어 개발자 앤더스 헤일스버그가 디자인 함
- 6.0버전부터 작지만 개발자에게 도움을 주는 기능을 다수 추가하는 방식으로 업데이트 하고 있다.
C#프로그래밍의 특징
- .NET(닷넷)을 위한 많은 언어 중 하나로, MS의 닷넷 플랫폼을 기반
- 절차적 언어와 개체 지향적 언어의 특징, 그리고 함수형 프로그래밍 스타일을 제공하는 다중 패러다임 프로그래밍 언어
- C, C++, 자바, 자바스크립트 기초 문법과 비슷
- 자동으로 메모리 관리
- 컴파일 기반 언어
- C나 자바스크립트와 달리 전역함수나 변수가 없고, 모두 클래스 안에서 생성
- 강력한 형식의 언어 (어떤식으로 강력한 형식인가?)
- 제네릭과 LINQ의 편리한 기능을 제공함
C#의 일반적인 프로그래밍 영역
- 데스크톱 응용 프로그램
- 웹 응용 프로그램
- 모바일 응용 프로그램
- 데이터베이스 응용 프로그램
- 게임 프로그램
- 클라우드 프로그램
- IoT 프로그램
C# 버전
버전 발표 특징
1.0 | 2002.02.13 | - C#의 첫 번째 버전 |
- 닷넷 프레임워크(.NET Framework) 1.0
- 간결하고 현대화된 언어
- 관리된 코드
- 자동화된 가비지 컬렉션 | | 1.1 | 2003 | 비주얼 스튜디오 도구 기능 향상 | | 2.0 | 2005 | - 제네릭
- 부분 클래스
- 무명 메서드
- 이터레이터(반복기)
- null 가능 형식
- Static 클래스 | | 3.0 | 2006 | - 암시적으로 형식화된 변수
- 개체 이니셜라이저
- 컬렉션 이니셜라이저
- 무명 형식
- 확장 메서드
- 람다 식
- 자동 구현 속성
- 쿼리 식
- 익스프레션 트리 | | 3.5 | 2007 | LINQ | | 4.0 | 2010 | - 다이나믹 바인딩
- 명명된 또는 선택적 인수 | | 4.5 | 2012 | | | 5.0 | 2013 | - 비동기
- 비동기 메서드 | | 6.0 | 2014 | - 문자열 보간법
- 정적 멤버를 위한 using static 구문
- 자동 속성 이니셜라이저
- null 조건부 연산자
- 식 본문 멤버
- nameof 연산자 | | 7.0 | 2016 | - 튜플과 튜플 해체
- 패턴 매칭
- 숫자 구분자와 이진 리터럴
- 로컬 함수
- out 키워드 기능 향상 | | 8.0 | 2019 | - nullable 참조 형식
- 비동기 스트림 |
100% 하위 호환성을 지킴!
낮은 버전에서 지원하던 기능이 높은 버전으로 올라가면서 없어진 것이 단 하나도 없다!
새로운 C# 그리고 닷넷
처음 C# 윈도 기반의 닷넷 프레임워크에서 실행 → 크로스 플랫폼을 지원하는 닷넷 코어 기반으로 제공
닷넷 프레임워크 + 닷넷 코어 ⇒ 닷넷
1.3 닷넷 생태계
- 소프트웨어 프레임워트로, 응용 프로그램의 개발 속도를 높이는 데 도움이 되는 API 및 서비스 모음 (C#과 동일하게 1.0 버전으로 출시)
- 닷넷 프레임워크, 닷넷 코어, 닷넷 스탠다드처럼 닷넷으로 시작하는 용어들은 모두 닷넷 생태계에 포함 됨
- 닷넷 생태계의 모든 영역에서 사용할 수 있는 프로그래밍 언어
- LINQ 기능으로 쉡게 프로그래밍 할 수 있기 때문에 많이 씀
닷넷(.NET)
- 무료, 오픈 소스, 크로스 플랫폼 개발 환경
- 런타임 엔진(여러 명령어 집합)
- 여러 언어 제공 : C#, 비주얼 베이직, F#
- 웹, 데스크톱, 모바일, 게임, lot, 클라우드 등 모든 영역의 개발 환경 제공
닷넷 프레임워크
- 응용 프로그램을 만드는 또 다른 종류의 소프트웨어이다.
- 윈도 기반 운영 체제에 설치되고, ASP.NET, Windows Forms, WPF 등 기술을 포함한다.
- C#은 닷넷 프레임워크의 일부로 닷넷 프레임워크는 실행 환경이라고 생각하자!
닷넷 코어
- 크로스 플랫폼을 지원하고 ASP.NET Core, Blazor, Windows Forms, WPF 등 기술을 포함한다.
- 서로 다른 버전을 머신 하나에서 함께 실행할 수 있으며 닷넷 프레임 워크 기반보다 성능 향상에 중점을 둔다.
자마린
- 모바일 응용프로그램을 제작할때 쓰이며, iOS, 안드로이드 기반 모바일 응용 프로그램을 C#과 XAML 기술로 만들 수 있다.
닷넷 스탠다드
- 닷넷 프레임워크, 닷넷 코어, 자마린 영역에서 공통으로 사용할 코드를 모아 프로젝트 하나로 관리 할 수 있다. 이를 닷넷 스탠다드라고 한다.
유니티
- 닷넷 생태계에 직접적으로 포함되지는 않지만, 유명한 게임 엔진인 유니티에서 많이 사용하는 언어 중 하나가 C# 이며,유니티 스크립트는 C# 프로그래밍 언어를 사용한다.
닷넷은 내부적으로 CLR(런타임 엔진으로 닷넷의 모든 소프트웨어를 돌리는 엔진 역할)과 FCL(닷넷 개발에 필요한 필수 라이브러리 클래스의 집합)로 구분할 수 있다!