C# (hay C sharp) là một ngôn ngữ lập trình
đơn giản, được phát triển bởi
đội ngũ kỹ sư của Microsoft vào năm 2000,
trong đó người dẫn đầu là Anders Hejlsberg và
Scott Wiltamuth.
C# là ngôn ngữ lập trình hiện đại, hướng
đối tượng và nó được xây dựng trên
nền tảng của hai ngôn ngữ mạnh nhất là C++
và Java.
C# được thiết kế cho Common Language
Infrastructure (CLI), mà gồm Executable Code và Runtime Environment, cho
phép chúng ta sử dụng các ngôn ngữ high-level đa dạng
trên các nền tảng và cấu trúc máy tính khác nhau.
C# với sự hỗ trợ mạnh mẽ của
.NET Framework giúp cho việc tạo một ứng dụng
Windows Forms hay WPF (Windows Presentation Foundation), . . . trở nên rất
dễ dàng.
Các đặc điểm để làm cho C# là ngôn
ngữ lập trình chuyên nghiệp được sử dụng
rộng rãi:
Như ta đã biết thì ngôn ngữ C# dựng trên
nền tảng C++ và Java nên ngôn ngữ C# khá đơn giản.
Nếu chúng ta thân thiện với C và C++ hoậc thậm
chí là Java, chúng ta sẽ thấy C# khá giống về diện
mạo, cú pháp, biểu thức, toán tử và những chức
năng khác được lấy trực tiếp từ
ngôn ngữ C và C++, nhưng nó đã được cải
tiến để làm cho ngôn ngữ đơn giản
hơn. Một vài trong các sự cải tiến là loại bỏ
các dư thừa, hay là thêm vào những cú pháp thay đổi.
Một vài khái niệm khá mới mẻ khá mơ hồ
với các bạn vừa mới học lập trình, như
xử lý ngoại lệ, những kiểu dữ liệu mở
rộng, bảo mật mã nguồn v.v... Đây là những
đặc tính được cho là của một ngôn ngữ
hiện đại cần có. Và C# chứa tất cả các
đặt tính ta vừa nêu trên. Các bạn sẽ dần tìm
hiểu được các đặt tính trên qua các bài học
trong series này.
Lập trình hướng đối tượng(tiếng
Anh: Object-oriented programming, viết tắt: OOP) là một
phương pháp lập trình có 4 tính chất. Đó là tính trừu
tượng (abstraction), tính đóng gói (encapsulation), tính
đa hình (polymorphism) và tính kế thừa (inheritance). C# hỗ
trợ cho chúng ta tất cả những đặc tính trên.
Và để hiểu rõ hơn thì chúng ta sẽ có một
chương trình bày về phần này.
Như đã đề cập trước,
với ngôn ngữ C# chúng ta chỉ bị giới hạn
ở chính bởi bản thân hay là trí tưởng
tượng của chúng ta. Ngôn ngữ này không đặt
những ràng buộc lên những việc có thể làm. C#
được sử dụng cho nhiều các dự án khác
nhau như là tạo ra ứng dụng xử lý văn
bản, ứng dụng đồ họa, bản tính, hay
thậm chí những trình biên dịch cho các ngôn ngữ khác.
C# là ngôn ngữ sử dụng giới
hạn những từ khóa (khoảng 80 từ). Phần
lớn các từ khóa được sử dụng
để mô tả thông tin. Chúng ta có thể nghĩ rằng
một ngôn ngữ có nhiều từ khóa thì sẽ mạnh
hơn. Điều này không phải sự thật, ít
nhất là trong trường hợp ngôn ngữ C#, chúng ta có
thể tìm thấy rằng ngôn ngữ này có thể
được sử dụng để làm bất cứ
nhiệm vụ nào. Bảng sau liệt kê các từ khóa
của ngôn ngữ C#.
Nếu bạn nghĩ rằng ngôn ngữ có càng nhiều
từ khóa thì sẽ càng mạnh mẽ hơn. Điều
này không phải sự thật, lấy ví dụ ngôn ngữ
C# làm điển hình nhé. Nếu bạn học sâu về C#
bạn sẽ thấy rằng ngôn ngữ này có thể
được sử dụng để làm bất cứ
nhiệm vụ nào.
Mã nguồn C# có thể được
viết trong những phần được gọi là
những lớp, những lớp này chứa các
phương thức thành viên của nó. Những lớp và
những phương thức có thể được
sử dụng lại trong ứng dụng hay các
chương trình khác. Bằng cách truyền các mẫu thông
tin đến những lớp hay phương thức chúng
ta có thể tạo ra những mã nguồn dùng lại có
hiệu quả.
C# là một trong
những ngôn ngữ lập trình mới nhất. Vào thời
điểm cuốn sách này được viết, nó không
được biết như là một ngôn ngữ phổ
biến. Nhưng ngôn ngữ này có một số lý do
để trở thành một ngôn ngữ phổ biến.
Một trong những lý do chính là Microsoft và sự cam kết
của .NET
Microsoft muốn ngôn ngữ C# trở nên
phổ biến. Mặc dù một công ty không thể làm
một sản phẩm trở nên phổ biến, nhưng
nó có thể hỗ trợ. Cách đây không lâu, Microsoft đã
gặp sự thất bại về hệ điều hành
Microsoft Bob. Mặc dù Microsoft muốn Bob trở nên phổ
biến nhưng thất bại. C# thay thế tốt
hơn để đem đến thành công sơ với
Bob. Thật sự là không biết khi nào mọi người
trong công ty Microsoft sử dụng Bob trong công việc
hằng ngày của họ. Tuy nhên, với C# thì khác, nó
được sử dụng bởi Microsoft. Nhiều
sản phẩm của công ty này đã chuyển đổi
và viết lại bằng C#. Bằng cách sử dụng ngôn
ngữ này Microsoft đã xác nhận khả năng của C#
cần thiết cho những người lập trình.
Micorosoft .NET là một lý do khác để
đem đến sự thành công của C#. .NET là một
sự thay đổi trong cách tạo và thực thi những
ứng dụng.
Ngoài hai lý do trên ngôn ngữ C# cũng sẽ
trở nên phổ biến do những đặc tính của
ngôn ngữ này được đề cập trong mục
trước như: đơn giản, hướng
đối tượng, mạnh mẽ...
Chúng ta đã từng nghe đến những
ngôn ngữ khác như Visual Basic, C++ và Java. Có lẽ chúng ta
cũng tự hỏi sự khác nhau giữa ngôn ngữ C# và
nhưng ngôn ngữ đó. Và cũng tự hỏi tại
sao lại chọn ngôn ngữ này để học mà không
chọn một trong những ngôn ngữ kia. Có rất
nhiều lý do và chúng ta hãy xem một số sự so sánh
giữa ngôn ngữ C# với những ngôn ngữ khác giúp
chúng ta phần nào trả lời được những
thắc mắc.
Microsoft nói rằng C# mang đến sức
mạnh của ngôn ngữ C++ với sự dễ dàng
của ngôn ngữ Visual Basic. Có thể nó không dễ như
Visual Basic, nhưng với phiên bản Visual Basic.NET (Version 7)
thì ngang nhau. Bởi vì chúng được viết lại
từ một nền tảng. Chúng ta có thể viết
nhiều chương trình với ít mã nguồn hơn
nếu dùng C#.
Mặc dù C# loại bỏ một vài các
đặc tính của C++, nhưng bù lại nó tránh
được những lỗi mà thường gặp trong
ngôn ngữ C++. Điều này có thể tiết kiệm
được hàng giờ hay thậm chí hàng ngày trong
việc hoàn tất một chương trình. Chúng ta sẽ
hiểu nhiều về điều này trong các chương
của giáo trình.
Một điều quan trọng khác với
C++ là mã nguồn C# không đòi hỏi phải có tập tin
header. Tất cả mã nguồn được
viết trong khai báo một lớp.
Như đã nói ở bên trên. .NET runtime trong C#
thực hiện việc thu gom bộ nhớ tự
động. Do điều này nên việc sử dụng con
trỏ trong C# ít quan trọng hơn trong C++. Những con
trỏ cũng có thể được sử dụng trong
C#, khi đó những đoạn mã nguồn này sẽ
được đánh dấu là không an toàn (unsafe code).
C# cũng từ bỏ ý tưởng đa
kế thừa như trong C++. Và sự khác nhau khác là C#
đưa thêm thuộc tính vào trong một lớp giống
như trong Visual Basic. Và những thành viên của lớp
được gọi duy nhất bằng toán tử “.” khác
với C++ có nhiều cách gọi trong các tình huống khác
nhau.
Một ngôn ngữ khác rất mạnh và
phổ biến là Java, giống như C++ và C#
được phát triển dựa trên C. Nếu chúng ta
quyết định sẽ học Java sau này, chúng ta sẽ
tìm được nhiều cái mà học từ C# có thể
được áp dụng.
Điểm giống nhau C# và Java là cả hai
cùng biên dịch ra mã trung gian: C# biên dịch ra MSIL còn Java biên
dịch ra bytecode. Sau đó chúng được thực
hiện bằng cách thông dịch hoặc biên dịch
just-in-time trong từng máy ảo tương ứng. Tuy
nhiên, trong ngôn ngữ C# nhiều hỗ trợ
được đưa ra để biên dịch mã ngôn ngữ
trung gian sang mã máy. C# chứa nhiều kiểu dữ
liệu cơ bản hơn Java và cũng cho phép nhiều
sự mở rộng với kiểu dữ liệu giá
trị. Ví dụ, ngôn ngữ C# hỗ trợ kiểu
liệt kệ (enumerator), kiểu này được
giới hạn đến một tập hằng
được định nghĩa trước, và kiểu
dữ liệu cấu trúc đây là kiểu dữ liệu
giá trị do người dùng định nghĩa. Chúng ta
sẽ được tìm hiểu kỹ hơn về
kiểu dữ liệu tham chiếu và kiểu dữ
liệu giá trị sẽ được trình bày trong
phần sau.
Tương tự như Java, C# cũng
từ bỏ tính đa kế thừa trong một lớp,
tuy nhiên mô hình kế thừa đơn này được
mở rộng bởi tính đa kế thừa nhiều giao
diện.
- C# có cấu trúc khá gần gũi với các ngôn ngữ
lập trình truyền thống, nên cũng khá dể dàng tiếp
cận và học nhanh với C#.
- C# có thể biên dịch trên nhiều nền tảng
máy tính khác nhau.
- C# được xây dựng trên nền tảng của
C++ và Java nên nó được thừa hưởng những
ưu điểm của ngôn ngữ đó.
- C# là một phần của .NET Framework nên được
sự chống lưng khá lớn đến từ bộ
phận này.
- C# có IDE Visual Studio cùng nhiều plug-in vô cùng mạnh
mẽ.
.NET Framework của
Microsoft là một nền tảng lập trình tập
hợp các thư viện lập trình có thể được
cài thêm hoặc đã có sẵn trong các hệ điều
hành Windows. Nó cung cấp những giải pháp thiết yếu
cho những yêu cầu thông thường của các
chương trình điện toán như lập trình giao diện
người dùng, truy cập dữ liệu, kết nối
cơ sở dữ liệu, ứng dụng web, các giải
thuật số học và giao tiếp mạng. Ngoài ra, .NET
Framework quản lý việc thực thi các chương
trình được viết dựa trên .NET Framework do
đó người dùng cần phải cài .NET Framework để
có thể chạy các chương trình được viết
trên nền .NET.
Ví dụ như
để thiết kế một game đua xe, nếu không
có bộ Framework chuyên dụng cho game, người lập
trình game phải tự tạo ra: khung xe, bánh xe, người,
đường đi … rồi mới tính đến chuyện
lắp ghép chúng lại với nhau để tạo ra không
gian cho game; Nếu có sẵn bộ Framework thì lập trình
viên chỉ viết lệnh lấy chúng ra từ Framework và
ghép chúng lại. Có thể hình dung Framework bao gồm các vật
liệu như gạch, cát, xi măng, sắt … nhưng tùy
theo cách thiết kế của người kiến trúc
sư mà tạo ra những căn nhà với hình dạng khác
nhau.
Không phải
mọi ngôn ngữ lập trình đều khai thác được
Framework, muốn sử dụng các “vật liệu” trong bộ
Framework, đòi hỏi người lập trình viên phải
dùng các ngôn ngữ lập trình có hỗ trợ công nghệ
.NET như VB.NET, C#.NET, ASP.NET...
Dưới
đây là các thành phần của .Net Framework:
Hình 1.1.
Kiến trúc Net Framework