Microsoft Bắt Đầu Lập Kế Hoạch Cho Ngôn Ngữ Lập Trình C#7

Ngoc Huynh

Nhóm thiết kế làm việc trên C# đang kiểm tra quản lý dữ liệu, tính hiệu quả, và tính tin cậy của bản cập nhật sắp tới.

Các nhà thiết kế đang bắt đầu thực hiện kế hoạch đối với thế hệ tiếp theo của ngôn ngữ lập trình C# của Microsoft, với các theme nổi bật tập trung vào quản lý dữ liệu, sự hiệu quả, và tính tin cậy.

Theo như các lưu ý dành cho nhóm C# được đăng trên GitHub vào đầu tháng này, thì nhóm đang nhìn xa hơn nữa phiên bản 6.0 về ngôn ngữ kiểu an toàn và định hướng đối tượng (OOL) đã lên kế hoạch. Theo như bài viết của Mads Torgerson, một thành viên của nhóm thiết kế , thì lưu ý rằng: “Đây là buổi họp thiết kế đầu tiên về phiên bản C# sắp tới sau C#6. Nói nôm na là C#7.” Có khả năng các theme để khảo sát cho C#7 bao gồm làm việc với dữ liệu; sự hiệu quả, tính tin cậy, và khả năng tương tác; thành phần hóa, sự phân loại, và lập trình meta (siêu lập trình).

Phù hợp với theme về làm việc với dữ liệu, thì các đặc tính của C# có thể bao gồm đối sánh mẫu, “biểu thị” các loại giấu tên, làm việc với cấu trúc dữ liệu thông thường, chia lớp, và tính bất biến. Các lưu ý cho rằng các chương trình ngày nay thì được kết nối và kinh doanh làm giàu, dữ liệu có cấu trúc – các ứng dụng và sản phẩm dịch vụ là gì, thao tác, và tiêu dùng. Các ngôn ngữ định hướng đối tượng theo truyền thống, trong khi tốt cho các nhiệm vụ, thì lại kém khi giải quyết với thiết lập này.

Các nhà xây dựng C# phải xem các ngôn ngữ lập trình hàm để giải quyết điều này. “Các ngôn ngữ lập trình hàm thường cài đặt tốt hơn cho điều này: dữ liệu thì không thay đổi (đại diện cho thông tin, chứ không phải trạng thái), và được điều khiển từ bên ngoài, sử dụng một growable tự do và tập hợp các hàm phụ thuộc ngữ cảnh, hơn là một tập hợp các phương thức ảo gắn liền được sửa chữa,”. Những người theo dõi C# cần tiếp tục được truyền cảm hứng bằng các ngôn ngữ như F#, Scala, và Swift.

Đối với tính hiệu quả, tính tin cậy, và khả năng tương tác, thì nhóm cho rằng C# đã có một lịch sử về tính hiệu quả và tin cậy “lập lờ”. Lưu ý của Torgerson: “Bên trong Microsoft đã có các dự án nghiên cứu nhằm khảo sát các lựa chọn. Bây giờ một số kết quả đã chín muồi để cung cấp cho thiết kế C#, trong khi những cái khác có thể làm ảnh hưởng đến NET Framework, mang lại các bộ phân tích Roslyn hữu ích,v.v…,” “Trong những tháng tới, chúng ta sẽ có một vài vấn đề và ý tưởng và hãy xem nếu chúng ta có thể tìm ra những cách tuyệt vời để gửi đến các lập trình C#.”

Tập trung vào thành phần hóa, các lưu ý cho biết rằng “ngay khi vấn đề cứng nhắc của lập trình .Net được xem như một nhân tố và được kết hợp thì bây giờ theo sự phát triển mau lẹ như thế nào.” Hầu hết công việc trong khoảng này thì nhiều công cụ định hướng, khả năng bao phủ hơn bao gồm thế hệ các Assembly tham khảo, liên kết tĩnh, quyết định luận, hỗ trợ NuGet và mang số hiệu phiên bản (versioning). “Đây là một theme mà không nên được bắt buộc chủ yếu từ các ngôn ngữ, nhưng chúng ta nên mở hỗ trợ ở mức độ ngôn ngữ.”

Để giúp bản chất máy tính hiện đại được phân bố, các nhà thiết kế C# đang cân nhắc về các dãy async (bất đồng bộ) và sự nối tiếp hóa. “Chúng ta đã giới thiệu sự bất đồng bộ giá trị riêng lẻ trong C#5 nhưng chưa có một phương pháp tiếp cận thỏa mãn đến các dãy hay dòng bất đồng bộ.” Đối với sự nối tiếp hóa, thì “chúng ta không còn vào cung cấp sự nối tiếp hóa gắn liền trực tiếp nữa nhưng chúng ta cần bảo đảm là chúng ta làm nó hợp lý để tùy chỉnh dữ liệu nối tiếp hóa – ngay cả khi nó không thay đổi, và không yêu cầu sự phản xạ quý giá.”

Trong khi đó, siêu lập trình đã “có khả năng xảy ra” trong một thời gian dài, với dự án trình biên dịch Roslyn được dành để tạo khả năng cho các chương trình lập trình. “Tuy nhiên, ở mức độ ngôn ngữ chúng ta tiếp tục không có một cách xử lý đặc thù đối với siêu lập trình.”

Nhóm cũng đang xem xét các khả năng vô hiệu như là một theme. “Với các toán tử có điều kiện vô hiệu như x?.y C# 6 bắt đầu ngừng hoạt động đường dẫn của nhiều toán tử khả dung vô hiệu,”. “Bạn có thể hình dung chắc chắn điều đó xa hơn nữa để cho phép. Ví dụ: đợi hay foreach in null, v.v… Còn trên cả việc đó nữa là có một yêu cầu có từ lâu đời cho các loại tham khảo không vô hiệu, nơi mà System type giúp bạn đảm bảo đó là một giá trị không thể bị vô hiệu, và vì thế nó an toàn để truy cập.”

Cũng với C#7, thì các nhà thiết kế đang cân nhắc về đối sánh mẫu, cung cấp một phương thức yêu cầu nếu một mảnh dữ liệu có hình dạng đặc biệt, sau đó trích các mảnh của nó. Trong khi đó, các array slice sẽ đưa lên hiệu suất bằng việc cung cấp một “cửa sổ”

“Các array slice đại diện cho một song đề thiết kế thú vị giữa hiệu quả và tính khả dụng. Không có điều gì về một array slice mà khác nhau về mặt chức năng theo một mảng: Bạn có thể nhận độ dài và truy cập các yếu tố của nó,”. “Đối với tất cả các ý định và mục đích, thì chúng không thể phân biệt được. Do đó kinh nghiệm người dùng giỏi nhất sẽ chắc chắn là các slice đó chỉ như các mảng – mà chúng chia sẻ cùng loại. Theo cách đó, thì tất cả code hiện tại hoạt động trên các mảng cũng có thể làm việc trên các slice mà không có sự biến đổi.”

Thiết kế lưu ý rằng trong lúc nhập và mở thì được tìm kiếm trong phát triển C#, thì cuối cùng nhóm thiết kế đưa ra quyết định. “Quan trọng là nhóm thiết kế chịu trách nhiệm về ngôn ngữ. Cái này không phải là một quá trình dân chủ. Chúng ta suy ra giá trị rộng lớn từ các bình luận và bình chọn UserVoice, nhưng cuối cùng mô hình cai quản cho C# là chế độ độc tài nhân từ.”

Chia sẻ bài viết ngay

Nguồn bài viết : http://www.itworld.com/