Microsoft bắt đầu nói về ngôn ngữ lập trình thế hệ tiếp theo của họ, C # cho lập trình hệ thống

Biểu tượng thời gian đọc 3 phút đọc


Bạn đọc giúp đỡ ủng hộ MSpoweruser. Chúng tôi có thể nhận được hoa hồng nếu bạn mua thông qua các liên kết của chúng tôi. Biểu tượng chú giải công cụ

Đọc trang tiết lộ của chúng tôi để tìm hiểu cách bạn có thể giúp MSPoweruser duy trì nhóm biên tập Tìm hiểu thêm

Joe Duffy, một kiến ​​trúc sư và nhà phát triển hệ điều hành nghiên cứu tại Microsoft đã viết blog về ngôn ngữ lập trình thế hệ tiếp theo mà họ đã làm việc trong vài năm qua. Microsoft hiện đang mô tả ngôn ngữ sắp ra mắt này là phần mở rộng "lập trình hệ thống" cho C #. Microsoft đang cố gắng giới thiệu ngôn ngữ này như là sự giao thoa giữa C # trung tâm về An toàn & Năng suất, Java, v.v. và C ++ tập trung vào Hiệu suất.

Dưới đây là 6 tính năng quan trọng của ngôn ngữ,

) Sự hiểu biết suốt đời. C ++ có RAII, phá hủy xác định và phân bổ đối tượng hiệu quả. Cả C # và Java đều khuyến khích các nhà phát triển dựa quá nhiều vào GC heap và chỉ cung cấp hỗ trợ “lỏng lẻo” cho việc phá hủy xác định thông qua IDisposable. Một phần trong những gì nhóm của tôi làm là thường xuyên chuyển đổi các chương trình C # sang ngôn ngữ mới này và không có gì lạ khi chúng tôi gặp phải 30-50% thời gian dành cho GC. Đối với máy chủ, điều này giết chết thông lượng; đối với khách hàng, nó làm giảm trải nghiệm, bằng cách đưa độ trễ vào tương tác. Chúng tôi đã đánh cắp một trang từ C ++ - trong các lĩnh vực như tham chiếu rvalue, chuyển ngữ nghĩa, phá hủy, tham chiếu / mượn - nhưng vẫn giữ lại các yếu tố an toàn cần thiết và hợp nhất chúng với ý tưởng từ các ngôn ngữ chức năng. Điều này cho phép chúng tôi tích cực ngăn xếp các đối tượng cấp phát, hủy một cách xác định và hơn thế nữa.

2) Hiểu biết về tác dụng phụ. Đây là sự phát triển của những gì chúng tôi đã xuất bản trong OOPSLA 2012, cung cấp cho bạn các yếu tố của const C ++ (nhưng một lần nữa với độ an toàn), cùng với tính bất biến và cô lập của lớp đầu tiên.

3) Lập trình không đồng bộ ở quy mô lớn. Cộng đồng đã 'vòng vo' về vấn đề này, cụ thể là việc sử dụng các quy trình đăng ký chặn tiếp tục hay chặn nhẹ. Điều này bao gồm C # nhưng cũng có khá nhiều ngôn ngữ khác trên hành tinh. Sự đổi mới quan trọng ở đây là một hệ thống kiểu có thể kết hợp không phù hợp với mô hình thực thi và có thể ánh xạ hiệu quả đến một trong hai. Thật là kiêu ngạo khi tuyên bố rằng chúng tôi đã có một cách đúng đắn để phơi bày những thứ này, nhưng với kinh nghiệm với nhiều cách tiếp cận khác, tôi yêu nơi chúng tôi đã hạ cánh.

4) Lập trình hệ thống an toàn kiểu loại. Người ta thường khẳng định rằng với kiểu an toàn sẽ làm mất đi hiệu suất vốn có. Đúng là kiểm tra giới hạn là không thể thương lượng và chúng tôi thích kiểm tra tràn theo mặc định. Thật ngạc nhiên về những gì mà một trình biên dịch tối ưu hóa tốt có thể làm ở đây, so với biên dịch JIT. (Và người ta chỉ cần tình cờ kiểm tra một số bản tin bảo mật gần đây để xem tại sao các tính năng này lại có giá trị.) Các lĩnh vực khác bao gồm cho phép bạn làm nhiều hơn mà không cần phân bổ. Giống như có các API dựa trên lambda có thể được gọi với mức phân bổ bằng không (thay vì hai loại thông thường: một cho người ủy quyền, một cho màn hình). Và có thể dễ dàng khắc các mảng con và chuỗi con mà không cần phân bổ.

5) Mô hình lỗi hiện đại. Đây là một điều khác mà cộng đồng không đồng ý. Chúng tôi đã chọn những gì tôi tin là điểm hấp dẫn: hợp đồng ở mọi nơi (điều kiện trước, điều kiện sau, bất biến, xác nhận, v.v.), không nhanh như chính sách mặc định, ngoại lệ cho lỗi động hiếm gặp (phân tích cú pháp, I / O, v.v.), và nhập các ngoại lệ chỉ khi bạn thực sự cần các ngoại lệ phong phú. Tất cả được tích hợp vào hệ thống loại theo cách loại 1, để bạn có được tất cả các hành vi định loại phụ thích hợp cần thiết để làm cho nó an toàn và ổn định.

6) Các khuôn khổ hiện đại. Đây là một nhóm tổng hợp bao gồm những thứ như không đồng bộ LINQ, hỗ trợ trình điều tra được cải tiến để cạnh tranh với các trình vòng lặp C ++ về hiệu suất và không yêu cầu điều phối giao diện kép để trích xuất các phần tử, v.v. Thành thật mà nói, đây là lĩnh vực chúng tôi có danh sách lớn nhất gồm "các tính năng được thiết kế nhưng chưa được triển khai", bao gồm những thứ như kiểu void-as-a-1st-class-type, non-null, đặc điểm, kiểu gõ hiệu ứng lớp 1 và hơn thế nữa. Tôi hy vọng chúng tôi sẽ có một vài trong số này ở trạm kiểm soát giữa năm 2014, nhưng không phải tất cả chúng.

Đọc thêm từ liên kết tại đây.

Thông tin thêm về các chủ đề: c#, phát triển, microsoft