✨Cơ sở ngôn ngữ dùng chung

Cơ sở ngôn ngữ dùng chung

Cơ sở ngôn ngữ dùng chung hoặc Cơ sở hạ tầng ngôn ngữ dùng chung (Common Language Infrastructure - CLI) là một tiêu chuẩn kỹ thuật được phát triển bởi Microsoft và được tiêu chuẩn hoá bởi ISO và ECMA, mô tả mã thực thi và môi trường runtime cho phép nhiều ngôn ngữ lập trình cấp cao được sử dụng trên các nền tảng máy tính khác nhau mà không cần viết lại mã cho một nền tảng cụ thể. .NET Framework, .NET Core, Mono, DotGNU và Portable.NET là những ứng dụng của CLI. 

Tổng quan

nhỏ|323x323px|Hình ảnh tổng quan của Cơ sở ngôn ngữ dùng chung (CLI) Đặc tả này mô tả bốn khía cạnh lớn sau đây:

  • Hệ thống kiểu dữ liệu dùng chung (CTS): Một tập hợp các kiểu dữ liệu và các toán tử được dùng chung bởi tất cả các ngôn ngữ tuân thủ nguyên tắc này.
  • Metadata: Các thông tin về cấu trúc chương trình là độc lập với ngôn ngữ, để có thể được tham chiếu giữa các ngôn ngữ và các công cụ khác nhau, giúp cho lập trình viên dễ dàng làm việc với ngôn ngữ mà họ không sử dụng.
  • Đặc điểm kỹ thuật ngôn ngữ dùng chung (CLS): Một tập hợp các quy tắc cơ bản mà bất kỳ ngôn ngữ nào sử dụng CLI phải tuân theo để tương tác với các ngôn ngữ CLS khác. Các quy tắc của CLS định nghĩa một tập con của CTS.
  • Hệ thống thực thi ảo (VES): VES tải và thực thi các chương trình tương thích với CLI, sử dụng metadata để kết hợp các đoạn mã được tạo riêng biệt trong thời gian chạy. Tất cả các ngôn ngữ tương thích được biên dịch sang Ngôn ngữ trung gian dùng chung trước khi thực thi. Khi mã được thực thi, VES cụ thể cho từng nền tảng sẽ biên dịch CIL sang ngôn ngữ máy theo phần cứng và hệ điều hành cụ thể.

Tiêu chuẩn hóa và cấp phép

Vào tháng 8 năm 2000, Microsoft, Hewlett-Packard, Intel và những tổ chức khác đã cùng nhau chuẩn hóa CLI, và đến tháng 12 năm 2001 thì CLI đã được ECMA phê chuẩn. Sau đó, ISO cũng cấp phép cho CLI vào tháng 4 năm 2003.

Microsoft và các đối tác của họ giữ bằng sáng chế cho CLI. ECMA và ISO yêu cầu tất cả các bằng sáng chế cần thiết để thực hiện được cung cấp theo "các điều khoản hợp lý và không phân biệt đối xử (RAND)". Thường thì việc cấp phép của RAND đòi hỏi một khoản thanh toán tiền bản quyền, điều này có thể là nguyên nhân gây quan ngại cho Mono. Do đó, đến tháng 1 năm 2013, cả Microsoft và các đối tác vẫn chưa có kế hoạch nào cho việc triển khai CLI tuân theo RAND.

Tính đến tháng 7 năm 2009, Microsoft đã bổ sung thêm C# và CLI vào danh sách các chi tiết kỹ thuật của Microsoft Community Promise, vì vậy bất cứ ai cũng có thể hiện thực hóa các phiên bản tiêu chuẩn một cách an toàn mà không sợ bản quyền bằng sáng chế của Microsoft. Tuy nhiên, mệnh đề tuân thủ của CLI cho phép mở rộng các profile được hỗ trợ bằng cách thêm các phương thức mới và các kiểu dữ liệu mới vào các lớp, cũng như bắt nguồn từ các namespace mới. Nhưng nó không cho phép thêm các thành viên mới vào các interface. Điều này có nghĩa là các tính năng của CLI có thể được sử dụng và mở rộng, miễn là việc triển khai hồ sơ phù hợp không làm thay đổi hành vi của các chương trình chạy trên profile đó, đồng thời vẫn cho phép các hành vi không xác định từ các chương trình được viết cụ thể cho việc triển khai đó.

Năm 2012, ECMA và ISO đã xuất bản ấn bản mới của tiêu chuẩn CLI, và ấn bản này không được đề cập trong Community Promise.

Triển khai

*.NET Framework là bản triển khai thương mại đầu tiên của Microsoft của CLI. Hệ thống thực thi ảo của nó là Common Language Runtime và việc triển khai các thư viện tiêu chuẩn là Framework Class Library.

  • .NET Compact Framework là bản triển khai thương mại của Microsoft về CLI cho các thiết bị di động và Xbox 360.
  • .NET Micro Framework là một ứng dụng mã nguồn mở của CLI cho các thiết bị có tài nguyên phần cứng hạn chế.
  • .NET Core là một nhánh của.Net Framework, triển khai bởi.Net Foundation sử dụng giấy phép MIT
  • Nền tảng phát triển Mono là một bản hiện thực hóa của CLI và các công nghệ đi kèm, được hỗ trợ bởi Xamarin.
👁️ 1 | 🔗 | 💖 | ✨ | 🌍 | ⌚
**Cơ sở ngôn ngữ dùng chung** hoặc **Cơ sở hạ tầng ngôn ngữ dùng chung** (**Common Language Infrastructure - CLI**) là một tiêu chuẩn kỹ thuật được phát triển bởi Microsoft và được tiêu chuẩn
**Ngôn ngữ trung gian chung **hoặc **Ngôn ngữ trung gian dùng chung** (**Common Intermediate Language - CLI**), là ngôn ngữ lập trình có thể đọc được của con người ở mức thấp nhất được xác
**Nhóm ngôn ngữ Rhaetia-Rôman** hay **Rhaetia** là một nhóm ngôn ngữ thuộc nhóm ngôn ngữ Rôman được nói ở bắc và đông bắc Ý và ở Thụy Sĩ. Cái tên "Rhaetia-Rôman" dùng để chỉ tỉnh
**Ngôn ngữ chính thức** là ngôn ngữ đã được xác nhận tình trạng pháp lý riêng tại mỗi quốc gia, mỗi tiểu bang, lãnh thổ hay tổ chức. Thông thường là ngôn ngữ được dùng
phải|nhỏ|402x402px|[[Mã nguồn của một chương trình máy tính đơn giản được viết bằng ngôn ngữ lập trình C. Khi được biên dịch và chạy, nó sẽ cho kết quả "Hello, world!".]] **Ngôn ngữ lập trình**
**Ngôn ngữ** là một hệ thống giao tiếp có cấu trúc được sử dụng bởi con người. Cấu trúc của ngôn ngữ được gọi là ngữ pháp, còn các thành phần tự do của nó
**C** là một ngôn ngữ mệnh lệnh được phát triển từ đầu thập niên 1970 bởi Dennis Ritchie để dùng trong hệ điều hành UNIX. Từ đó, ngôn ngữ này đã lan rộng ra nhiều
phải|Bản đồ ngôn ngữ của châu Âu (đơn giản hóa). **Ngôn ngữ học châu Âu** là ngành ngôn ngữ học khá mới mẻ, nghiên cứu về các ngôn ngữ tại châu Âu. Tuy nhiên, ở
nhỏ|Giao tiếp phi ngôn ngữ giữa hai người tại [[Tây An, Trung Quốc.]] **Giao tiếp phi ngôn ngữ** giữa con người là sự giao tiếp bằng cách gửi và nhận những tín hiệu phi ngôn
**Ngôn ngữ học** hay **ngữ lý học** là bộ môn nghiên cứu về ngôn ngữ. Người nghiên cứu bộ môn này được gọi là nhà ngôn ngữ học. Nói theo nghĩa rộng, nó bao gồm
thumb|Một ví dụ về lấy dữ liệu đầu ra từ truy vấn cơ sở dữ liệu SQL. **Cơ sở dữ liệu** () là một tập hợp các dữ liệu có tổ chức liên quan đến
nhỏ|Tấm biển tại [[Ung Hòa cung tại Bắc Kinh, Trung Quốc, từ phải sang trái viết bằng tiếng Mãn, tiếng Hán, tiếng Tạng, tiếng Mông Cổ.]] nhỏ|phải|Biểu trưng của chính quyền Liên bang [[Thụy Sĩ,
**Nguồn gốc ngôn ngữ** và quan hệ của ngôn ngữ đối với tiến hóa của loài người là chủ đề học thuật đã được bàn luận trong nhiều thế kỷ. Mặc dù vậy, ta vẫn
**Python** () là ngôn ngữ lập trình bậc cao đa năng. Triết lý thiết kế của nó nhấn mạnh khả năng đọc mã bằng cách sử dụng thụt lề đáng kể. Python có kiểu động
[[Tập tin:Africa ethnic groups 1996.jpg|thumb|upright=1.5|Bản đồ cho thấy phân bố của các ngữ hệ truyền thống tại châu Phi: Niger-Congo: Nin-Sahara: ]] Có 1.250 tới 2.100 và theo một nguồn là có tới 3.000 ngôn
thumb|Các ngôn ngữ ở Hồng Kông Luật Cơ bản của Hồng Kông quy định tiếng Anh và tiếng Trung là hai ngôn ngữ chính thức của Hồng Kông. Trong thời kỳ thuộc địa của Anh,
**Java** (phiên âm Tiếng Việt: "_Gia-va_") là một ngôn ngữ lập trình hướng đối tượng, dựa trên lớp được thiết kế để có càng ít phụ thuộc thực thi càng tốt. Nó là ngôn ngữ
[[Tập_tin:Language families of modern Asia.png|nhỏ|450x450px|ngữ hệ ở Châu Á ]] Có rất nhiều ngôn ngữ được sử dụng trên toàn Châu Á, bao gồm các ngữ hệ khác nhau. Các nhóm ngữ hệ chính được
**Ngôn ngữ tách biệt** hay **ngôn ngữ cô lập**/**ngôn ngữ biệt lập** (_language isolate_), theo nghĩa tuyệt đối, là một ngôn ngữ tự nhiên không có mối quan hệ phả hệ (hoặc "di truyền") với
Một **ngôn ngữ phụ trợ quốc tế** (trong tiếng Anh đôi khi được viết tắt là **IAL** hoặc **auxlang**) hoặc **interl Language** là một ngôn ngữ có nghĩa là để giao tiếp giữa những người
**Một ngôn ngữ có nguy cơ tuyệt chủng**, hoặc **ngôn ngữ moribund**, là một ngôn ngữ có nguy cơ bị mất sử dụng khi người nói của nó chết hoặc chuyển sang nói một ngôn
**C#** (**C Sharp**, đọc là _"xi-sáp"_) là một ngôn ngữ lập trình hướng đối tượng đa năng, mạnh mẽ được phát triển bởi Microsoft, C# là phần khởi đầu cho kế hoạch .NET của họ.
**Ruby** là một ngôn ngữ lập trình hướng đối tượng, có khả năng phản ứng. Theo tác giả, Ruby chịu ảnh hưởng bởi Perl, Smalltalk, Eiffel, Ada và Lisp. Ruby cung cấp nhiều mẫu hình
thumb|thumbtime=5|_Preservation of the Sign Language_ (1913) nhỏ|Juan Pablo Bonet, _Reducción de las letras y arte para enseñar a hablar a los mudos_ (Madrid, 1620). **Ngôn ngữ ký hiệu** hay **ngôn ngữ dấu hiệu**, **thủ ngữ**
[[Tập tin:SQL data types.png|nhỏ|Các kiểu dữ liệu trong ngôn ngữ SQL, một trong những ngôn ngữ truy vấn phổ biến nhất với các lập trình viên. ]] **_Ngôn ngữ truy vấn_** () là tên gọi
**N****gôn ngữ toán học** là hệ thống ngôn ngữ được sử dụng bởi các nhà toán học để truyền đạt ý tưởng toán học với nhau. Ngôn ngữ này bao gồm một nền tảng từ
nhỏ|270x270px|Nhóm ngôn ngữ Rôman (đơn giản hóa)|liên_kết=Special:FilePath/Romance_languages_improved.PNG **Nhóm ngôn ngữ Tây Rôman** là một trong hai phân nhánh của nhóm ngôn ngữ Rôman được đề xuất dựa trên tuyến La Spezia-Rimini. Chúng bao gồm các
**Nhóm ngôn ngữ Mã Lai (Malay)** là một nhánh của ngữ tộc Mã Lai-Đa Đảo thuộc ngữ hệ Nam Đảo. Thành viên nổi bật nhất là tiếng Mã Lay chuẩn, ngôn ngữ quốc gia của
**Loại hình ngôn ngữ** là một khái niệm của ngôn ngữ học dùng để chỉ tập hợp các ngôn ngữ có chung một hay nhiều đặc điểm hình thái nhất định. Loại hình học là
**Nhóm ngôn ngữ Songhay** hoặc **Songhai** là một nhóm các ngôn ngữ/phương ngữ có liên quan chặt chẽ tập trung ở mạn trung lưu sông Niger ở các quốc gia Tây Phi gồm Mali, Niger,
**Viện Ngôn ngữ học** (tên tiếng Anh: _Institute of Linguistics_) là một viện nghiên cứu khoa học chuyên ngành thuộc Viện Hàn lâm Khoa học xã hội Việt Nam. Viện có chức năng nghiên cứu
**Thuyết tương đối ngôn ngữ** (), hay **giả thuyết Sapir-Whorf**, cho rằng cấu trúc ngôn ngữ ảnh hưởng đến tư duy và khả năng nhận biết thế giới xung quanh. Đó là, ngôn ngữ quyết
thumb|right|Hai người phụ nữ nói chuyện với nhau. Chú ý người phụ nữ mặc áo xanh khép một cánh tay co sát cơ thể, trong khi người kia sử dụng tay mình để biểu thị,
_Tiền đề trong việc xây dựng lý thuyết Automata là ngôn ngữ hình thức_ Trong toán học và khoa học máy tính, một **ngôn ngữ hình thức** (_formal language_) được định nghĩa là một tập
Trung Quốc có tới hàng trăm ngôn ngữ khác nhau. Ngôn ngữ chủ yếu là tiếng Hán tiêu chuẩn, dựa trên tiếng Quan Thoại là trung tâm, nhưng tiếng Trung Quốc có hàng trăm ngôn
thumb|[[Tranh khảm La Mã|Tranh khảm (220–250) được tìm thấy tại El Djem, Tunisia (Phi Lợi Gia thuộc La Mã). Trên đây viết dòng chữ Latinh "Im đi! Để lũ trâu ngủ" _(Silentiu[m] dormiant tauri)_ và
**Ngôn ngữ thứ hai** của một người (thường viết tắt là **L2** theo tiếng Anh: _Second language_) là ngôn ngữ không phải là tiếng mẹ đẻ (ngôn ngữ thứ nhất hoặc L1) của người nói,
**Ngôn ngữ tại Phần Lan** bao gồm hai ngôn ngữ chính thức (tiếng Phần Lan và tiếng Thụy Điển) cùng với một vài ngôn ngữ thiểu số như tiếng Sami, tiếng Di-gan, tiếng Karelia và
**Nhóm ngôn ngữ Athabaska** (cũng viết là _Athabasca_, _Athapaska_ hoặc _Athapasca_, và còn được gọi là **nhóm ngôn ngữ Dené**) là một nhóm ngôn ngữ bản địa lớn ở Bắc Mỹ, hiện diện ở mạn
**Nhóm ngôn ngữ Dard** (còn gọi là **Dardu** hoặc **Pisaca**) là một nhóm ngôn ngữ nhỏ thuộc ngữ chi Ấn-Arya nói ở mạn Bắc Gilgit-Baltistan và Khyber Pakhtunkhwa (Pakistan), Jammu và Kashmir (miền Bắc Ấn
**Nhóm ngôn ngữ Kipchak** (còn được gọi là **Kypchak**, **Qypchaq** hay **Turk Tây Bắc**) là một nhánh của ngữ hệ Turk được sử dụng bởi khoảng 31,3 triệu người ở phần lớn Trung Á và
nhỏ|phải Hoa Kỳ không có một ngôn ngữ chính thức, nhưng tiếng Anh được khoảng 82% dân số nói như tiếng mẹ đẻ. Biến thể tiếng Anh được nói tại Hoa Kỳ được biết như
**Các ngôn ngữ Andaman** là những ngôn ngữ bản địa của quần đảo Andaman, được nói bởi các tộc người Negrito tại đây. Có hai ngữ hệ tại quần đảo Andaman, Andaman Lớn và Önge,
Trong ngôn ngữ học, **cái chết của ngôn ngữ** xảy ra khi một ngôn ngữ mất đi người bản ngữ cuối cùng. Bằng cách mở rộng, sự tuyệt chủng ngôn ngữ là khi ngôn ngữ
**Ngôn ngữ đầu tiên** (thường viết tắt là **L1** theo tiếng Anh: _First Language_, cũng gọi là **tiếng mẹ đẻ** hay **tiếng bản địa**) là một ngôn ngữ mà người ta thừa hưởng từ khi
**Bihar** là nhóm ngôn ngữ miền tây của các ngôn ngữ Đông Ấn-Arya, chủ yếu được nói ở các bang Bihar, Jharkhand, Tây Bengal và Uttar Pradesh của Ấn Độ và cả ở Nepal. Mặc
**Các ngôn ngữ Melanesia** là một _thuật ngữ lỗi thời_ trong ngôn ngữ học, đề cập đến các ngôn ngữ thuộc ngữ hệ Nam Đảo ở vùng Melanesia: đó là châu Đại dương (Oceanic), đông
phải|nhỏ|250x250px|Cây phương ngữ Circassia. nhỏ|Một người đang nói tiếng Adyghe và tiếng Kabardia, được ghi lại cho [[Wikitongues.]] **Nhóm ngôn ngữ Circassia** còn được gọi là **Cherkess** là một nhóm ngôn ngữ thuộc ngữ hệ
**Nhóm ngôn ngữ Hy Lạp** hay **nhóm ngôn ngữ Hellen** (thuật ngữ tiếng Anh: **Hellenic**) là một nhánh con của ngữ hệ Ấn-Âu, với phân nhánh chính là tiếng Hy Lạp. Trong hầu hết các
**Nhóm ngôn ngữ Sorb** được phân loại thuộc nhánh Slav của hệ ngôn ngữ Ấn-Âu. Các ngôn ngữ này là những ngôn ngữ bản địa của người Sorb, một nhóm thiểu số dân Slav ở