윈도우 앱개발을 향하여

블로그 이미지
윈도우 10 스토어에 앱을 개발해 올리는 것을 목표로 하고 있습니다. 비전공자가 독학으로 시도하는 일이어서 얼마나 걸릴지 모르겠지만... 아무튼 목표는 그렇습니다!!
by 코딩하는 경제학도
  • Total hit
  • Today hit
  • Yesterday hit

    C#은 객체 지향 패러다임(object-orientation paradigm)을 풍부하게 구현하는 형식에 안전한 범용 객체 지향 프로그래밍 언어이다. 객체 지향 패러다임에는 캡슐화(encapsulation), 상속(inheritance), 다형성(polymorphism)이 포함된다. 캡슐화는 객체(object) 주변에 경계선을 만들어 객체의 외부(공개) 행동과 내부(비공개) 구현 세부사항을 분리하는 것을 뜻한다.


- 통합된 형식 체계

C# 프로그램의 근본적인 구축 요소는 소위 형식(type)이다. 형식은 자료와 함수들을 하나의 단위로 캡슐화한 것으로 C#은 하나의 통합된 형식 체계(unified type system)을 갖추고 있다. 이 체계에서 모든 형식은 궁극적으로 하나의 공통 기반 형식을 공유한다. (== 모든 형식은 동일한 기본 기능 집합을 가지고 있다.)


- 클래스와 인터페이스

C#은 클래스 말고도 여러 종류의 형식이 있다. 그 중 하나가 인터페이스이다. 인터페이스는 다중 상속이 필요한 경우 유용하다.


- 속성, 메서드. 이벤트

C#에서 메서드(method)는 속성(property)과 이벤트(event)를 비롯한 여러 함수 멤버(function member) 중 하나일 뿐이다. 속성은 객체의 상태 일부를 캡슐화하는 함수 멤버이고 이벤트는 객체의 상태가 변했을 때 수행할 동작을 단순화해주는 함수 멤버이다.



    C#은 객체 지향 뿐 아니라 함수형 프로그래밍에서도 영향을 받았다.

- 함수를 값으로 취급할 수 있다.

대리자(delegate)를 이용하면 함수를 값으로서 다른 함수에 전달하거나 돌려받을 수 있다.


- 순수형 패턴을 지원한다.

함수형 프로그래밍의 핵심은 값이 변하는 변수보다는 선억신(declarative) 패턴을 사용하는 것이다. C#에는 람다 표현식(lambda, 익명 함수를 즉석에서 작성)과 질의 표현식(query expression, 목록(list) 또는 반응식(reactive) 프로그래밍을 수행), 불변이 형식(immutable, 읽기 전용 형식) 등과 같은 기능을 지원한다.


    C#은 정적 형식 적용(static typing)을 지원함으로써 형식에 안전한(type-safe) 언어이다(강한 형식 적용 언어, 형식에 매우 엄격, 컴파일 타임과 런타임에서의 형식 안전성 강제). 강한 형식 적용은 C# 코드를 sandbox(보안의 모든 측면을 호스트가 제어하는 환경) 안에서 실행하는 능력에도 중요하다.

(dynamic 키워드로 일부 코드 형식을 동적으로 결정하는 것도 가능하다.)


    C#은 런타임에 의존해서 메모리를 자동으로 관리함다. CLR(Common Language Runtime, 공용 언어 런타임)에는 프로그래머가 작성한 프로그램의 일부로서 실행되는 쓰레기 수거기(garbage collector)가 있다. 이 수거기는 더 이상 참조되지 않는 객체들의 메모리를 재확보한다. (객체의 메모리 해제 의무 없어짐, 포인터 관련 문제 사라짐) (성능을 위해 포인터를 사용한다면 unsafe 블럭에서만 가능하다.)


- C#과 CLR의 관계

C#은 자동 메모리 관리와 예외 처리 같은 다양한 기능을 갖춘 런타임에 의존한다. C#의 설계는 해당 실행시점 기능들을 제공하는 마소 CLR설계와 밀접하게 대응한다(기술적으로는 C#과 CLR은 독립적이지만). 게다가 C#의 형식 시스템은 CLR의 형식 체계와 밀접하게 대응된다.


- CLR과 .NET Framework

.NET Framework는 CLR과 아주 다양한 라이브러리들의 집합으로 구성되어 있다. CLR은 관리되는 코드(managed code)를 실행하기 위한 런타임이다. C#은 여러 관리되는 언어 중 하나인데, 관리되는 언어로 작성한 소스 코드를 컴파일하면 관리되는 코드가 생성된다. 관리되는 코드를 실행 파일 또는 라이브러리 형태로 만들고 그것을 형식정보(메타자료)와 함께 하나의 패키지로 묶은 것을 어셈블리라고 부른다.


관리되는 코드는 중간 언어(intermediate language, IL)로 표현된다. 어셈블리를 적재할 때 CLR은 어셈블리에 담긴 IL코드를 해당 컴퓨터 고유의 기계어 코드로 변환한다. 이러한 변환을 담당하는 것이 CLR의 JIT(just-in-time)컴파일러이다.






AND

ARTICLE CATEGORY

분류 전체보기 (56)
Programming (45)
MSDN (4)
개발노트 (2)
reference (5)

RECENT ARTICLE

RECENT COMMENT

CALENDAR

«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

ARCHIVE