Assembly part 3
Số trang: 5
Loại file: pdf
Dung lượng: 168.02 KB
Lượt xem: 17
Lượt tải: 0
Xem trước 2 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Hỗ trợ ngôn ngữ xuyên xuốt (Cross-Language Support) Trước tiên chúng ta biết Common Type System (CTS) là gì ? .NET định nghĩa thế nào các kiểu giá trị và các kiểu tham chiếu. Bố trí bộ nhớ của các kiểu dữ liệu.
Nội dung trích xuất từ tài liệu:
Assembly part 3Hỗ trợ ngôn ngữ xuyên xuốt (Cross-Language Support) Trước tiên chúng ta biết Common Type System (CTS) là gì ? .NET định nghĩa thếnào các kiểu giá trị và các kiểu tham chiếu. Bố trí bộ nhớ của các kiểu dữ liệu. NhưngCTS không đảm bảo kiểu mà nó định nghĩa từ bất kì ngôn ngữ nào, được sử dụng từ bấtkì ngôn ngữ khác. Đây là vai trò của Common Language Specification (CLS). CLSxác định yêu cầu tối thiểu của các kiểu dữ liệu mà chúng được hỗ trợ bởi .NETlanguage.Chúng ta đề cập một cách ngắn gọn về CTS và CLS Trong chương này chúng ta sẽ đượchọc: • Common Type System (CTS) và Common Language Specification (CLS) • Ngôn ngữ độc lập trong hành động (Language independence in action) tạo bởi C++, Visual Basic .NET và C# . Chúng ta quan sát mã MSIL để biết chúng được sinh ra từ trình biên dịch của chúng. • Những yêu cầu của đặc tả ngôn ngữ chung (Common Language Specification.).CTS và CLS Tất cả các kiểu dữ liệu được khai báo dưới sự chỉ đạo của Common TypeSystem (CTS). CTS định nghĩa một bộ quy tắc mà trình biên địch phải tuân thủ, thamchiếu, sử dụng, và lưu trữ cả hai kiểu tham khảo và kiểu giá trị. Do đó CTS, các đốitượng được viết bằng các ngôn ngữ khác nhau có thể được tương tác lẫn nhau.Tuy nhiên, Không phải tất cả các kiểu đều sử dụng trong tất cả ngôn ngữ lập trình. Đểxây dựng các thành phần có thể truy cập từ tất cả ngôn ngữ .NET , Đặc tả ngôn ngữchung Common Language Specification (CLS) nên được sử dụng. Với CLS, Trình biêndịch có thể kiểm tra sự hợp lệ đoạn code trong đặc tả của CLS .Nhiều ngôn ngữ hỗ trợ .NET không chỉ hạn chế các tập con tính năng chung, nó đượcđịnh nghĩa với CLS; thậm chí với .NET nó vẫn có khả năng tạo các thành phần mà khôngthể sử dụng từ các ngôn ngữ khác. .NET Framework đã được thiết kế với mục tiêu hỗ trợ đa ngôn ngữ. Trong suốt giaiđoạn thiết kế .NET, Microsoft đã mời nhiều nhà sản xuất trình biên dịch để xâydựng .NET languages cho chính họ. Chính Microsoft phân phối Visual Basic .NET,Managed C++, C#, J#, và JScript.NET. Thêm vào đó hơn hai mươi ngôn ngữ từ các nhàsản xuất khác nhau như COBOL, Smalltalk, Perl, và Eiffel. Mỗi loại đều có những thuậnlợi riêng biệt và nhiều tính năng khác nhau. Các trình biên dịch của những ngôn ngữ nàyđều được mở rộng để hỗ trợ .NET.Quan CLS là đặc tả những yêu cầu tối thiểu mà một ngôn ngữ phải hỗ trợ. Cótrọng nghĩa là nếu chúng ta giới hạn các phương thức công cộng (public methods) của chúng ta cho CLS, thì tất cả các ngôn ngữ đang hỗ trợ .NET có thể sử dụng các lớp của chúng ta !Common Type System (CTS) Common Type System ( còn gọi là Common Type Specification, đặc tả kiểu dữ liệuthông dụng), có nghĩa là ngôn ngữ trung gian IL (Intermediate Language) xuất hiện vớimột lô kiểu dữ liệu bẩm sinh (predefined, hoặc built-in) được định nghĩa rõ ràng. Trongthực tế, những kiểu dữ liệu này được tổ chức theo một đẳng cấp kiểu (type hierachy),điển hình trong môi trường thiên đối tượng. Lý do CTS rất quan trọng là, nếu một lớp được dẫn xuất từ một lớp nào đó hoặc chứanhững thể hiện (instance) của những lớp khác, nó cần biết kiểu dữ liệu mà các lớp khácsử dụng đến. Trong quá khứ, chính việc thiếu một cơ chế khai báo loại thông tin này làmột cản trở cho việc kế thừa xuyên ngôn ngữ. Loại thông tin này đơn giản không cótrong tập tin .EXE chuẩn hoặc DLL. Một phần nào đó, vấn đề lấy thông tin về kiểu dữ liệu đã được giải quyết thông tin quametadate trong assembly. Thí dụ, giả sử bạn đang viết một lớp theo C#, và bạn muốn lớpnày được dẫn xuất từ một lớp được viết theo VB.NET. Muốn làm được điều này, bạn sẽyêu cầu trình biên dịch qui chiếu về assembly mà lớp VB.NET đã được khai báo. Lúcnày, trình biên dịch sẽ dùng metadata trên assembly này để lần ra tất cả các phương thức,thuộc tính và vùng mục tin (field), v.v... liên quan đến lớp VB.NET. Rõ ràng là trình biêndịch cần đến thông tin này để có thể biên dịch đoạn mã của bạn. Tuy nhiên, trình biện dịch lại cần đến nhiều thông tin hơn những gì metadata cung cấp.thí dụ, giả sử một trong những phương thức trên lớp VB.NET được định nghĩa trả về mộtInteger - là một trong những kiểu dữ liệu bẩm sinh trên VB.NET. Tuy nhiên, C# lạikhông có kiểu dữ liệu mang tên Integer này. Rõ là chúng ta chỉ có thể dẫn xuất từ lớp vàsử dụng phương thức này và sử dung kiểu dữ liệu trả về từ đoạn mã C# nếu trình biêndịch biết làm thế nào ánh xạ (map) kiểu dữ liệu Integer của VB.NET lên một kiểu dữ liệunào đó được định nghĩa trên C#. Điều này có thể thực hiện được vì CTS đã định nghĩa những kiểu dữ liệu bẩm sinh cósẵn trên Intermediate Language (IL), như vậy tất cả các ngôn ngữ tuân thủ .NETFramework sẽ kết sinh ra đoạn mã dựa cuối cùng vào những kiểu dữ liệu này. Thí dụ, tathử xét lại Integer của VB.NET, hiện là một số nguyên có dấu 32-bit, được ánh xạ lênkiểu dữ liệu Int32 của IL. Như vậy đây sẽ là kiểu dữ liệu được khai báo trong đo ...
Nội dung trích xuất từ tài liệu:
Assembly part 3Hỗ trợ ngôn ngữ xuyên xuốt (Cross-Language Support) Trước tiên chúng ta biết Common Type System (CTS) là gì ? .NET định nghĩa thếnào các kiểu giá trị và các kiểu tham chiếu. Bố trí bộ nhớ của các kiểu dữ liệu. NhưngCTS không đảm bảo kiểu mà nó định nghĩa từ bất kì ngôn ngữ nào, được sử dụng từ bấtkì ngôn ngữ khác. Đây là vai trò của Common Language Specification (CLS). CLSxác định yêu cầu tối thiểu của các kiểu dữ liệu mà chúng được hỗ trợ bởi .NETlanguage.Chúng ta đề cập một cách ngắn gọn về CTS và CLS Trong chương này chúng ta sẽ đượchọc: • Common Type System (CTS) và Common Language Specification (CLS) • Ngôn ngữ độc lập trong hành động (Language independence in action) tạo bởi C++, Visual Basic .NET và C# . Chúng ta quan sát mã MSIL để biết chúng được sinh ra từ trình biên dịch của chúng. • Những yêu cầu của đặc tả ngôn ngữ chung (Common Language Specification.).CTS và CLS Tất cả các kiểu dữ liệu được khai báo dưới sự chỉ đạo của Common TypeSystem (CTS). CTS định nghĩa một bộ quy tắc mà trình biên địch phải tuân thủ, thamchiếu, sử dụng, và lưu trữ cả hai kiểu tham khảo và kiểu giá trị. Do đó CTS, các đốitượng được viết bằng các ngôn ngữ khác nhau có thể được tương tác lẫn nhau.Tuy nhiên, Không phải tất cả các kiểu đều sử dụng trong tất cả ngôn ngữ lập trình. Đểxây dựng các thành phần có thể truy cập từ tất cả ngôn ngữ .NET , Đặc tả ngôn ngữchung Common Language Specification (CLS) nên được sử dụng. Với CLS, Trình biêndịch có thể kiểm tra sự hợp lệ đoạn code trong đặc tả của CLS .Nhiều ngôn ngữ hỗ trợ .NET không chỉ hạn chế các tập con tính năng chung, nó đượcđịnh nghĩa với CLS; thậm chí với .NET nó vẫn có khả năng tạo các thành phần mà khôngthể sử dụng từ các ngôn ngữ khác. .NET Framework đã được thiết kế với mục tiêu hỗ trợ đa ngôn ngữ. Trong suốt giaiđoạn thiết kế .NET, Microsoft đã mời nhiều nhà sản xuất trình biên dịch để xâydựng .NET languages cho chính họ. Chính Microsoft phân phối Visual Basic .NET,Managed C++, C#, J#, và JScript.NET. Thêm vào đó hơn hai mươi ngôn ngữ từ các nhàsản xuất khác nhau như COBOL, Smalltalk, Perl, và Eiffel. Mỗi loại đều có những thuậnlợi riêng biệt và nhiều tính năng khác nhau. Các trình biên dịch của những ngôn ngữ nàyđều được mở rộng để hỗ trợ .NET.Quan CLS là đặc tả những yêu cầu tối thiểu mà một ngôn ngữ phải hỗ trợ. Cótrọng nghĩa là nếu chúng ta giới hạn các phương thức công cộng (public methods) của chúng ta cho CLS, thì tất cả các ngôn ngữ đang hỗ trợ .NET có thể sử dụng các lớp của chúng ta !Common Type System (CTS) Common Type System ( còn gọi là Common Type Specification, đặc tả kiểu dữ liệuthông dụng), có nghĩa là ngôn ngữ trung gian IL (Intermediate Language) xuất hiện vớimột lô kiểu dữ liệu bẩm sinh (predefined, hoặc built-in) được định nghĩa rõ ràng. Trongthực tế, những kiểu dữ liệu này được tổ chức theo một đẳng cấp kiểu (type hierachy),điển hình trong môi trường thiên đối tượng. Lý do CTS rất quan trọng là, nếu một lớp được dẫn xuất từ một lớp nào đó hoặc chứanhững thể hiện (instance) của những lớp khác, nó cần biết kiểu dữ liệu mà các lớp khácsử dụng đến. Trong quá khứ, chính việc thiếu một cơ chế khai báo loại thông tin này làmột cản trở cho việc kế thừa xuyên ngôn ngữ. Loại thông tin này đơn giản không cótrong tập tin .EXE chuẩn hoặc DLL. Một phần nào đó, vấn đề lấy thông tin về kiểu dữ liệu đã được giải quyết thông tin quametadate trong assembly. Thí dụ, giả sử bạn đang viết một lớp theo C#, và bạn muốn lớpnày được dẫn xuất từ một lớp được viết theo VB.NET. Muốn làm được điều này, bạn sẽyêu cầu trình biên dịch qui chiếu về assembly mà lớp VB.NET đã được khai báo. Lúcnày, trình biên dịch sẽ dùng metadata trên assembly này để lần ra tất cả các phương thức,thuộc tính và vùng mục tin (field), v.v... liên quan đến lớp VB.NET. Rõ ràng là trình biêndịch cần đến thông tin này để có thể biên dịch đoạn mã của bạn. Tuy nhiên, trình biện dịch lại cần đến nhiều thông tin hơn những gì metadata cung cấp.thí dụ, giả sử một trong những phương thức trên lớp VB.NET được định nghĩa trả về mộtInteger - là một trong những kiểu dữ liệu bẩm sinh trên VB.NET. Tuy nhiên, C# lạikhông có kiểu dữ liệu mang tên Integer này. Rõ là chúng ta chỉ có thể dẫn xuất từ lớp vàsử dụng phương thức này và sử dung kiểu dữ liệu trả về từ đoạn mã C# nếu trình biêndịch biết làm thế nào ánh xạ (map) kiểu dữ liệu Integer của VB.NET lên một kiểu dữ liệunào đó được định nghĩa trên C#. Điều này có thể thực hiện được vì CTS đã định nghĩa những kiểu dữ liệu bẩm sinh cósẵn trên Intermediate Language (IL), như vậy tất cả các ngôn ngữ tuân thủ .NETFramework sẽ kết sinh ra đoạn mã dựa cuối cùng vào những kiểu dữ liệu này. Thí dụ, tathử xét lại Integer của VB.NET, hiện là một số nguyên có dấu 32-bit, được ánh xạ lênkiểu dữ liệu Int32 của IL. Như vậy đây sẽ là kiểu dữ liệu được khai báo trong đo ...
Tìm kiếm theo từ khóa liên quan:
máy tính mạng máy tính internet C# ngôn ngữ C# ngôn ngữ ngôn ngữ lập trình lập trình phần mềm file ứng dụngGợi ý tài liệu liên quan:
-
Giáo trình Lập trình hướng đối tượng: Phần 2
154 trang 264 0 0 -
Giáo án Tin học lớp 9 (Trọn bộ cả năm)
149 trang 255 0 0 -
Kỹ thuật lập trình trên Visual Basic 2005
148 trang 253 0 0 -
Bài thuyết trình Ngôn ngữ lập trình: Hệ điều hành Window Mobile
30 trang 252 0 0 -
Ngân hàng câu hỏi trắc nghiệm môn mạng máy tính
99 trang 243 1 0 -
Bài giảng: Lịch sử phát triển hệ thống mạng
118 trang 237 0 0 -
Giáo trình Hệ thống mạng máy tính CCNA (Tập 4): Phần 2
102 trang 236 0 0 -
47 trang 235 3 0
-
Đề cương chi tiết học phần Thiết kế và cài đặt mạng
3 trang 233 0 0 -
Giáo trình Lập trình cơ bản với C++: Phần 1
77 trang 229 0 0