GT C Sharp cơ bản – Bài 1 : Lời mở đầu

0
0
(0)

Lời nói đầu

 

Tác giả: Sưu tầm

 

Khi bạn thiết kế một ngôn ngữ lập trình mới, thì câu hỏi đầu tiên mà lúc nào bạn cũng được hỏi là, tại sao? Trong việc thiết kế C#, chúng tôi đã ghi nhớ một số mục tiêu:

  • Cho ra ngôn ngữ hướng thành phần đầu tiên trong gia đình C/C++. Kỹ nghệ phần mềm ngày càng ít xây dựng các ứng dụng nguyên khối và ngày càng nhiều xây dựng các thành phần gắn vào nhiều môi trường thực thi; ví dụ, một điều khiển trong trình duyệt hay một đối tượng kinh doanh thực thi trong ASP+. Chìa khoá cho các thành phần như vậy là chúng có các thuộc tính, phương thức, và sự kiện, và rằng chúng có các đặc tính cung cấp thông tin khai báo về thành phần. Tất cả các khái niệm này là các cấu trúc ngôn ngữ lớp đầu tiên trong C#, mà nó cho ra một ngôn ngữ rất tự nhiên để xây dựng và sử dụng các thành phần.
  • Tạo ra một ngôn ngữ mà trong đó mọi thứ thật sự là đối tượng. Thông qua việc sử dụng các khái niệm đổi mới như đóng hộp và tháo hộp, C# đã lấp khoảng trống giữa các kiểu nguyên thuỷ và lớp, nó cho phép bất kỳ phần dữ liệu nào được xem xét như một đối tượng. Hơn nữa, C# giới thiệu khái niệm kiểu giá trị, cho phép người sử dụng cài đặt các đối tượng nhẹ ký (lightweight) mà không đòi hỏi định vị trong vùng phân tạm.
  • Cho phép cấu trúc phần mềm cường tráng và bền vững. C# được xây dựng từ nền tảng lên để bao gồm trình gom rác, xử lý ngoại lệ một cách có cấu trúc, và an toàn kiểu. Các khái niệm này hoàn toàn loại trừ toàn bộ các phạm trù của các bug mà nó thường quấy rầy các chương trình C++.
  • Đơn giản hoá C++, còn giữ lại các kỹ năng và đầu tư của các nhà lập trình đã có. C# duy trì ở mức độ cao sự giống nhau so với C++, và người lập trình sẽ ngay lập tức cảm thấy thoải mái với ngôn ngữ này. Và C# cung cấp tính vận hành tốt giữa COM và DLL, cho phép mã có sẵn được hoàn toàn cân bằng.

Chúng tôi đã làm việc rất vất vả để đạt được những mục tiêu này. Nhiều công việc khó khăn đã xuất hiện với nhóm thiết kế C#, đều đặn trong suốt hai năm. Với tư cách đứng đầu đội Bảo đảm chất lượng C# (C# Quality Assurance), Eric là một thành viên chủ chốt của nhóm, và thông qua sự tham gia của ông ông có đủ tiêu chuẩn để giải thích không chỉ cách C# làm việc, mà còn tại sao nó làm việc như vậy. Điều đó sẽ trở thành hiển nhiên khi bạn đọc quyển sách này.

 

Tôi hy vọng bạn có nhiều niềm vui qua việc sử dụng C# cũng như đội thiết kế C# chúng tôi đã có khi thiết kế nó.

Anders Hejlsberg

Kỹ sư phân tích

Tập đoàn Microsoft

 

 

Về quyển sách này

 

C# là một trong những dự án hấp dẫn nhất mà tôi đã từng có đặc quyền làm việc với nó. Có nhiều ngôn ngữ với sức mạnh và các nhược điểm khác nhau, nhưng đôi khi một ngôn ngữ mới cải thiện những điều đó mà nó ăn khớp tốt với phần cứng, phần mềm, và hướng tiếp cận lập trình của một thời điểm nhất định. Tôi tin C# là một ngôn ngữ như vậy. Tất nhiên, việc lựa chọn ngôn ngữ thường là một “vấn đề thuộc về tín ngưỡng”.

 

Tôi đã viết quyển sách này như một chuyến du lịch qua ngôn ngữ, vì tôi nghĩ đó là điều tốt nhất và là cách thú vị nhất để học một ngôn ngữ. Đáng tiếc là các chuyến du lịch thường có thể dài và buồn chán, đặc biệt nếu tài liệu là quen thuộc, và chúng đôi khi tập trung vào những việc bạn không quan tâm, trong khi chỉ lướt qua các thứ mà bạn quan tâm. Thật tốt là cho phép làm một vòng nhỏ qua các thứ buồn chán và đi vào các thứ thú vị. Để làm điều này, có hai hướng tiếp cận bạn có thể xem xét:

Để bắt đầu mọi thứ một cách nhanh chóng, Chương 3, “Làm quen với C#”, là một khái quát nhanh về ngôn ngữ, và cung cấp thông tin đầy đủ để bắt đầu viết mã.

Chương 34, “So sánh C# với các ngôn ngữ khác”, đưa ra các so sánh với các ngôn ngữ như C++, VB, và Java cho người lập trình đã hoà hợp với một ngôn ngữ nhất định, hoặc cho những ai thích nghiên cứu các so sánh.

 

Khi tôi viết quyển sách này, đó là đầu tháng 8 năm 2000, và phiên bản Visual Studio sẽ chứa C# có khi đã đến bản beta. Cú pháp ngôn ngữ là khá ổn định, nhưng rõ ràng sẽ có vài thứ thay đổi “xung quanh các khía cạnh”. Hãy xem Chương 35, “Tương lai C#”, để biết một số thông tin về những thứ được giữ lại cho phiên bản tương lai.

Nếu bạn có nhận xét về quyển sách, bạn có thể liên lạc với tôi [email protected]. Tất cả mã nguồn có thể được tải xuống từ website Apress http://www.apress.com.

 

 

Giới thiệu

 

Tại sao một ngôn ngữ khác?

Đến lúc này, có lẽ bạn đã tự hỏi, “Tại sao tôi nên học một ngôn ngữ khác? Tại sao không sử dụng C++?” (hay VB hay Java hay bất cứ ngôn ngữ yêu thích nào của bạn). Ít nhất thì bạn đã có thể tự hỏi như thế trước khi bạn mua quyển sách này.

Các ngôn ngữ là một phần nhỏ như các công cụ sức mạnh. Mỗi công cụ có thế mạnh và điểm yếu của riêng nó. Mặc dù tôi có thể sử dụng cái bào soi của tôi để cắt gọt một tấm ván cho đủ dài, nhưng là dễ dàng hơn nếu tôi sử dụng một cái cưa vuông góc. Tương tự, tôi có thể sử dụng một ngôn ngữ như LISP để viết một trò chơi đồ hoạ mạnh, nhưng có lẽ là dễ dàng hơn nếu viết bằng C++.

C# (đọc là “C sharp”) là ngôn ngữ gốc cho Thời gian chạy ngôn ngữ chung .NET (.NET Common Language Runtime). Nó được thiết kế để phù hợp hoàn toàn với thời gian chạy ngôn ngữ chung .NET. Bạn có thể (và, đôi khi nên) viết mã bằng hoặc là Visual C++ hoặc là Visual Basic, nhưng trong hầu hết các trường hợp, C# sẽ có vẻ phù hợp những gì bạn cần tốt hơn. Bởi vì thời gian chạy ngôn ngữ chung là trung tâm cho nhiều thứ trong C#, Chương 2, “Môi trường thời gian chạy .NET”, sẽ giới thiệu các phần quan trọng của nó – ít nhất, là những thứ quan trọng đối với ngôn ngữ C#.

 

Các mục tiêu thiết kế C#

Khi ngôn ngữ C++ lần đầu tiên xuất hiện, nó đã gây ra nhiều xao động. Đây là một ngôn ngữ để tạo ra các phần mềm hướng đối tượng mà nó không đòi hỏi các lập trình viên C phải vứt bỏ các kỹ năng hay sự đầu tư của họ trong phần mềm. Nó là không hoàn toàn hướng đối tượng theo cách mà một ngôn ngữ như Eiffel có, nhưng nó có đầy đủ các đặc tính hướng đối tượng để cung cấp các lợi ích lớn.

 

C# cung cấp một cơ hội tương tự. Thông qua sự cộng tác với thời gian chạy ngôn ngữ chung .NET, nó cung cấp một ngôn ngữ sử dụng cho thành phần mềm hướng thành phần, mà không bắt buộc lập trình viên phải bỏ đi sự đầu tư của họ trong C, C++, hay mã COM.

 

C# được thiết kế để xây dựng các thành phần cường tráng và bền vững để xử lý các tình huống thế giới thực.

 

Phần mềm thành phần

Thời gian chạy ngôn ngữ chung .NET là một môi trường dựa trên thành phần, và thật không ngạc nhiên khi C# được thiết kế để làm cho việc tạo thành dễ dàng hơn.

 

Là ngôn ngữ “trung tâm là thành phần”, mà trong đó tất cả các đối tượng được viết như các thành phần, và một thành phần là trung tâm của hoạt động.

 

Các khái niệm thành phần, như thuộc tính, phương thức, và sự kiện, là các cư dân lớp đầu tiên của ngôn ngữ và của môi trường thời gian chạy ở bên dưới. Thông tin khai báo (được biết đến như các đặc tính) có thể được áp dụng để các thành phần truyền đạt thông tin thời gian thiết kế và thời gian chạy về thành phần đó cho các thành phần khác của hệ thống. Tài liệu có thể được viết bên trong thành phần và xuất khẩu tới XML.

 

Các đối tượng C# không đòi hỏi các tập tin header, tập tin IDL, hay các thư viện kiểu để được tạo hoặc được sử dụng. Các thành phần được tạo bằng C# là hoàn toàn tự mô tả và có thể được sử dụng mà không cần một quy trình đăng ký.

 

C# được giúp đỡ trong việc tạo các thành phần bởi thời gian chạy và nền tảng .NET (.NET Runtime and Frameworks), nó cung cấp một hệ thống kiểu hợp nhất mà trong đó mọi thứ có thể được đối xử như một đối tượng, nhưng không có các bất lợi thực thi liên quan đến các hệ thống đối tượng thuần nhất, như Smalltalk.

 

Phần mềm cường tráng và bền vững

Trong thế giới dựa trên thành phần, việc có thể tạo phần mềm cường tráng và bền vững là rất quan trọng. Các máy phục vụ web có thể hoạt động vài tháng mà không cần khởi động lại theo lịch, và việc khởi động lại không theo lịch là không được ưa thích.

 

Trình gom rác giảm bớt gánh nặng quản lý bộ nhớ cho người lập trình, và các vấn đề của việc viết các thành phần có thể phiên bản hoá là được giảm bớt  bởi thuật ngữ phiên bản hoá có thể định nghĩa và khả năng để phân tách giao diện từ sự cài đặt. Các thao tác số học có thể được kiểm tra để bảo đảm chúng không bị tràn, và các mảng hỗ trợ kiểm tra biên.

 

C# cũng cung cấp một môi trường đơn giản, an toàn, và không phức tạp. Xử lý lỗ không còn là một ý nghĩ đến muộn nữa với việc xử lý ngoại lệ là có mặt khắp cả môi trường. Ngôn ngữ là an toàn kiểu, và nó bảo vệ chống lại việc sử dụng các biến mà không được khởi tạo, các chuyển đổi kiểu không an toàn, và các lỗi lập trình chung khác.

 

Phần mềm thế giới thực

Phát triển phần mềm là không thú vị. Phần mềm là hiếm khi được thiết kế trong tình trạng không một tí gì ràng buộc; nó phải có sự thực thi hợp lệ, cân bằng mã có sẵn, và thực tế được viết dưới các giới hạn về thời gian và ngân sách. Một môi trường được thiết kế tốt là ít được sử dụng, nếu nó không cung cấp đủ năng lực cho sử dụng thế giới thực.

 

C# cung cấp các lợi ích của một môi trường tạo nhã và thống nhất, trong khi vẫn cung cấp sự truy xuất đến các đặc tính “ít tin cậy” – như con trỏ – khi những đặc tính này cần cho công việc.

 

C# bảo vệ sự đầu tư cho mã có sẵn. Các đối tượng COM sẵn có có thể được sử dụng như thể chúng là các đối tượng .NET. Thời gian chạy ngôn ngữ chung .NET sẽ làm các đối tượng trong thời gian chạy biểu hiện là các đối tượng COM thành mã dựa trên COM có sẵn. Mã C gốc trong các tập tin DLL có thể được gọi từ mã C#.

C# cung cấp sự truy xuất cấp độ thấp khi thích hợp. Các đối tượng nhẹ ký có thể được viết để được định vị trong stack và vẫn tham gia vào môi trường thống nhất. Sự truy cập cấp độ thấp là được cung cấp thông qua cơ chế không an toàn, mà nó cho phép các con trỏ được sử dụng trong các trường hợp mà ở đó hiệu suất là rất quan trọng hay khi các con trỏ là cần thiết để sử dụng các DLL có sẵn.

 

C# được thiết kế trên di sản C++ và ngay lập tức là thoải mái đối với các lập trình viên C++. Ngôn ngữ cung cấp một đường cong kiến thức ngắn, năng suất được tăng lên, và không có sự hy sinh không cần thiết.

 

Cuối cùng, C# lợi dụng năng lực của thời gian chạy ngôn ngữ chung .NET, nó cung cấp một thư viện rộng lớn hỗ trợ cho các nhiệm vụ lập trình chung và các nhiệm vụ ứng dụng chuyên biệt. Thời gian chạy .NET, Frameworks, và các ngôn ngữ tất cả bị ràng buộc với nhau bởi môi trường Visual Studio, cung cấp loại sản phẩm mua một lần rồi thôi cho các lập trình viên .NET.

 

Trình biên dịch C# và các tài nguyên khác

Có hai cách để có trình biên dịch C#. Trước hết là như một phần của .NET SDK. SDK chứa các trình biên dịch cho C#, VB, C++, và tất cả nền tảng. Sau khi bạn cài đặt SDK, bạn có thể biên dịch các chương trình C# bằng cách sử dụng lệnh csc, mà nó sẽ phát sinh một tập tin .exe mà bạn có thể thực thi.

 

Cách khác để có trình biên dịch là như một phần của Visual Studio .NET. Bản beta của Visual Studio .NET sẽ sẵn có vào mùa thu năm 2000.

 

Để biết nhiều hơn về .NET SDK hay bản beta của Visual Studio .NET, xin tham khảo các trang của quyển sách này trên website Apress tại http://www.apress.com.

 

Các gợi ý biên dịch

Khi biên dịch mã, trình biên dịch C# có thể phải xác định thông tin về các thành phần mà nó sử dụng. Nó sẽ tự động tìm tập tin mscorlib.dll, nơi chứa các thực thể .NET mức độ thấp nhất, như các kiểu dữ liệu.

 

Để sử dụng các thành phần khác, .dll thích hợp cho thành phần đó phải được chỉ định trên dòng lệnh. Ví dụ, để sử dụng WinForms, tập tin System.Winforms.dll phải được chỉ định như sau:

csc /r:system.Winforms.dll myfile.cs

Quy ước đặt tên thông thường cho .dll là tương tự như tên của không gian tên.

 

Các tài nguyên khác

Microsoft giữ lại các nhóm thảo luận công cộng về lập trình .NET. Nhóm thảo luận C# là tại

microsoft.public.dotnet.csharp.gerneral, và nó tồn tại trên máy chủ tin tức msnews.microsoft.com.

 

Có một lượng lớn các website dành cho thông tin .NET. Các liên kết đến các tài nguyên này cũng có thể được tìm thấy tại website Apress.

How useful was this post?

Click on a star to rate it!

Average rating 0 / 5. Vote count: 0

No votes so far! Be the first to rate this post.

Leave A Reply

Your email address will not be published.