Microsoft는 시스템 프로그래밍을 위한 차세대 프로그래밍 언어인 C#에 대해 이야기하기 시작했습니다.

독서 시간 아이콘 3 분. 읽다


독자들은 MSpoweruser를 지원하는 데 도움을 줍니다. 당사의 링크를 통해 구매하시면 수수료를 받을 수 있습니다. 툴팁 아이콘

공개 페이지를 읽고 MSPoweruser가 편집팀을 유지하는 데 어떻게 도움을 줄 수 있는지 알아보세요. 자세히 보기

Microsoft의 연구 운영 체제 설계자이자 개발자인 Joe Duffy는 지난 몇 년 동안 작업해 온 차세대 프로그래밍 언어에 대해 블로그에 게시했습니다. Microsoft는 이제 이 다가오는 언어를 C#에 대한 "시스템 프로그래밍" 확장이라고 설명합니다. Microsoft는 이 언어를 안전 및 생산성 중심의 C#, Java 등과 성능 중심의 C++ 간의 교차로 홍보하려고 합니다.

다음은 언어의 6가지 중요한 기능입니다.

) 평생 이해. C++에는 RAII, 결정적 파괴 및 효율적인 개체 할당이 있습니다. C#과 Java는 모두 개발자가 GC 힙에 너무 많이 의존하도록 유도하고 IDisposable을 통해 결정적 파괴에 대한 "느슨한" 지원만 제공합니다. 우리 팀이 하는 일 중 일부는 정기적으로 C# 프로그램을 이 새로운 언어로 변환하는 것이며, GC에서 30-50%의 시간을 보내는 것은 드문 일이 아닙니다. 서버의 경우 처리량이 중단됩니다. 클라이언트의 경우 상호 작용에 대기 시간을 주입하여 경험을 저하시킵니다. 우리는 rvalue 참조, 이동 의미론, 파괴, 참조/차용과 같은 영역에서 C++에서 페이지를 훔쳤지만 여전히 필요한 안전 요소를 유지하고 기능적 언어의 아이디어와 병합했습니다. 이를 통해 우리는 개체를 적극적으로 스택 할당하고 결정적으로 파괴하는 등의 작업을 수행할 수 있습니다.

2) 부작용 이해. 이것은 우리가 OOPSLA 2012에서 발표한 것의 발전으로 C++ const의 요소(하지만 다시 안전함)와 함께 일급 불변성 및 격리를 제공합니다.

3) 대규모 비동기 프로그래밍. 커뮤니티는 이 문제, 즉 연속 전달 또는 경량 차단 코루틴을 사용할지 여부에 대해 '원칙'했습니다. 여기에는 C#뿐만 아니라 지구상의 거의 모든 다른 언어도 포함됩니다. 여기서 핵심 혁신은 실행 모델에 구애받지 않고 어느 하나에 효율적으로 매핑할 수 있는 구성 가능한 유형 시스템입니다. 우리가 이 정보를 폭로할 올바른 방법이 하나 있다고 주장하는 것은 오만하지만, 다른 많은 접근 방식에 대한 경험이 있기 때문에 우리가 도달한 지점이 마음에 듭니다.

4) 유형 안전 시스템 프로그래밍. 일반적으로 형식 안전성과 함께 고유한 성능 손실이 발생한다고 주장합니다. 경계 검사는 협상할 수 없으며 기본적으로 오버플로 검사를 선호하는 것이 사실입니다. JIT 컴파일에 비해 우수한 최적화 컴파일러가 여기서 무엇을 할 수 있는지는 놀랍습니다. (그리고 이러한 기능이 장점이 있는 이유를 알아보기 위해 최근 몇 가지 보안 게시판을 간단히 감사하면 됩니다.) 다른 영역에는 할당하지 않고도 더 많은 작업을 수행할 수 있는 기능이 포함됩니다. 할당 없이 호출할 수 있는 람다 기반 API를 사용하는 것과 같습니다(일반적인 두 개: 대리자용 하나, 디스플레이용 하나). 그리고 할당하지 않고 하위 배열과 하위 문자열을 쉽게 조각할 수 있습니다.

5) 최신 오류 모델. 이것은 커뮤니티에서 동의하지 않는 또 다른 문제입니다. 모든 곳에서 계약(사전 조건, 사후 조건, 불변, 어설션 등), 기본 정책으로 fail-fast, 드문 동적 실패에 대한 예외(파싱, I/O 등), 풍부한 예외가 절대적으로 필요한 경우에만 예외를 입력합니다. 모든 것이 1급 방식으로 유형 시스템에 통합되므로 안전하고 건전하게 만드는 데 필요한 모든 적절한 하위 입력 동작을 얻을 수 있습니다.

6) 최신 프레임워크. 이것은 비동기 LINQ, 성능 면에서 C++ 반복자와 경쟁하고 요소를 추출하기 위해 이중 인터페이스 디스패치를 ​​요구하지 않는 개선된 열거자 지원 등을 다루는 포괄적인 버킷입니다. 완전히 정직하게 말하자면 이것이 우리가 가진 영역입니다. "설계되었지만 아직 구현되지 않은 기능"의 가장 큰 목록은 void-as-a-1st-class-type, non-null 유형, 특성, 1st 클래스 효과 유형 등과 같은 것을 포괄합니다. 2014년 중반 체크포인트에 이 중 몇 가지가 있을 것으로 예상하지만 전부는 아닙니다.

링크에서 더 읽어보기 여기에서 지금 확인해 보세요..

주제에 대한 추가 정보: c#, 개발자, 마이크로 소프트