Xem thêm

.NET Framework và ngôn ngữ lập trình Visual C

Huy Erick
C# là ngôn ngữ lập trình hoạt động trên nền tảng ".NET Framework" đặc biệt. Việc viết chương trình bằng C# (và các ngôn ngữ .NET khác) có quy trình dịch và thực thi khác...

C# là ngôn ngữ lập trình hoạt động trên nền tảng ".NET Framework" đặc biệt. Việc viết chương trình bằng C# (và các ngôn ngữ .NET khác) có quy trình dịch và thực thi khác biệt so với các ứng dụng Windows thông thường. Sự khác biệt này ảnh hưởng đáng kể đến cách nghĩ và viết code trong C#.

Do đó, để bắt đầu học về lập trình C#, chúng ta cần hiểu về .NET Framework trước khi đi vào ngôn ngữ lập trình chính. Bài viết này sẽ giúp bạn hiểu rõ .NET Framework là gì, sự khác biệt về quy trình biên dịch - thực thi ứng dụng trong .NET Framework so với các ứng dụng truyền thống và cũng như một số đặc điểm của ngôn ngữ lập trình C#.

.NET Framework là gì?

.NET Framework có hai cách hiểu: (1) .NET Framework là một bộ thư viện lớp và (2) .NET Framework là một môi trường thực thi của ứng dụng.

.NET Framework là một bộ thư viện lớp

.NET Framework chứa một bộ thư viện rất lớn, bao gồm các công cụ khác nhau giúp lập trình viên xử lý hầu hết các công việc thông thường trong quá trình phát triển ứng dụng. Điều này giúp việc lập trình ứng dụng trên .NET Framework có hiệu suất cao và tiết kiệm thời gian.

Người lập trình có thể sử dụng bất kỳ ngôn ngữ nào mà trình biên dịch của nó có thể dịch mã nguồn thành một dạng mã trung gian yêu cầu của .NET Framework. Visual C#, Visual Basic.NET, Visual C++.NET và F# là bốn ngôn ngữ chính thức được Microsoft phát triển để hoạt động trên .NET Framework.

Ngoài ra, còn có một số ngôn ngữ khác không được phát triển bởi Microsoft nhưng cũng hướng tới nền tảng .NET, ví dụ như Delphi.NET, Oxygence (hai ngôn ngữ có cú pháp giống với Pascal), IronPython (phiên bản Python được dịch sang .NET Framework), vv.

Các ngôn ngữ dùng cho .NET Framework không chỉ có thể truy cập vào thư viện mà còn có thể sử dụng thư viện do người dùng viết bằng các ngôn ngữ .NET khác. Ví dụ, người phát triển ứng dụng bằng C# có thể sử dụng thư viện do người khác viết bằng Visual Basic.

.NET Framework là một môi trường thực thi cho ứng dụng

Các chương trình viết cho .NET Framework không được thực thi trực tiếp trong môi trường hệ điều hành mà thực thi trong phạm vi của chương trình CLR (Common Language Runtime) và được quản lý bởi chương trình này.

Việc thực thi trong một môi trường riêng biệt, được quản lý chặt chẽ giúp cho các ứng dụng .NET tránh được nhiều lỗi thường gặp trong quá trình phát triển.

Vì môi trường thực thi của các ứng dụng .NET cung cấp nhiều tính năng cao cấp như quản lý bộ nhớ, xử lý ngoại lệ, vv., việc lập trình ứng dụng trên .NET Framework trở nên đơn giản hơn.

Việc học lập trình bằng một ngôn ngữ .NET có giá trị rất lớn vì ta có thể sử dụng nó để viết hầu hết các loại ứng dụng, không chỉ ứng dụng chạy trên Windows mà còn trên nhiều nền tảng khác.

Một số công nghệ trong .NET Framework

Dưới đây là một số công nghệ phổ biến trong .NET Framework:

  • Console: xây dựng ứng dụng với giao diện dòng lệnh;
  • Windows Forms: xây dựng ứng dụng desktop (giao diện đồ họa) cho Windows;
  • Windows Presentation Foundation: công nghệ mới xây dựng ứng dụng desktop (giao diện đồ họa) cho Windows;
  • ASP.NET: nền tảng để phát triển các ứng dụng web chạy trong chương trình máy chủ IIS, bao gồm ASP.NET Web Forms, ASP.NET MVC, ASP.NET Web API;
  • ADO.NET và Entity Framework: công nghệ cho phép chương trình kết nối và sử dụng cơ sở dữ liệu liên hệ (SQL Server, MySQL, vv.);
  • Windows Communications Foundation: công nghệ cho phép phát triển các ứng dụng mạng hướng dịch vụ.

Hiện nay, bạn có thể nghe thấy về .NET Core hoặc .NET 5 (sắp ra mắt). Lưu ý rằng, mặc dù cả hai đều có từ "NET", nhưng chúng là hai nền tảng khác nhau. Để phân biệt, người ta thường nói rõ ".NET Framework" hoặc ".NET Core". Trong đó, .NET Framework là nền tảng chủ yếu cho Windows, .NET Core hoạt động đa nền tảng (bao gồm cả Windows), và .NET 5.0 hứa hẹn là một nền tảng hợp nhất trong tương lai. Ngôn ngữ C# được sử dụng để lập trình trên tất cả các nền tảng này.

Cài đặt .NET Framework trên Windows

.NET Framework có thể cài đặt trên phiên bản Windows 98 và mới hơn, hoặc Windows NT 4.0 và cao hơn. Các phiên bản cũ hơn của Windows không cho phép cài đặt .NET Framework. Các hệ điều hành mới như Windows 10 thường được cài đặt .NET Framework mặc định và có thể tự động cập nhật phiên bản mới.

Các chương trình viết cho .NET Framework chỉ có thể hoạt động nếu trên hệ điều hành đã cài đặt phiên bản tương đương hoặc mới hơn của .NET Framework (so với phiên bản được sử dụng trong quá trình phát triển ứng dụng).

Phiên bản mới nhất của .NET Framework là 4.7. Nếu bạn đang sử dụng Windows 10 hoặc đã cài đặt Visual Studio, bạn đã có phiên bản mới nhất của .NET Framework.

Quy trình biên dịch mã nguồn và thực thi chương trình trong .NET Framework

.NET Framework và các ngôn ngữ hỗ trợ nền tảng này hoạt động khác biệt so với các chương trình Windows "bình thường".

Biên dịch và thực thi chương trình native

Trong các chương trình "bình thường" trong Windows, mã nguồn viết bằng một ngôn ngữ lập trình nào đó được chương trình dịch của ngôn ngữ đó dịch thành tệp chứa mã máy (mã nguồn/tự động của thiết bị). Quá trình này được gọi là "thời gian biên dịch" (compile time).

Khi người dùng chạy ứng dụng, hệ điều hành tải tệp chứa chương trình vào bộ nhớ và bắt đầu thực thi các lệnh chứa trong đó. Hệ điều hành chịu trách nhiệm quản lý việc thực thi chương trình. Quá trình tải và thực thi gọi là "thời gian chạy" (runtime).

Loại ứng dụng được tải, thực thi và quản lý trực tiếp như vậy thường được gọi là "ứng dụng native". Các ứng dụng native trong Windows được tạo ra bằng các ngôn ngữ như C/C++, Pascal, Delphi, Visual Basic, vv.

Biên dịch và thực thi chương trình trong .NET Framework

Trong .NET Framework, mã nguồn viết bằng các ngôn ngữ lập trình không được biên dịch trực tiếp thành mã máy để thực thi trong hệ điều hành, như các chương trình viết bằng C/C++ hoặc Pascal/Delphi.

Mã nguồn viết bằng một ngôn ngữ .NET (C#, Visual Basic .NET) được trình biên dịch của ngôn ngữ đó dịch thành tệp mã đặc biệt gọi là tệp mã CIL (Common Intermediate Language). CIL là một loại ngôn ngữ trung gian đặc biệt được Microsoft tạo ra cho nền tảng .NET.

CIL, trước đây được gọi là MSIL (Microsoft Intermediate Language), cũng là ngôn ngữ lập trình. Đây là ngôn ngữ cấp thấp nhất mà người lập trình có thể đọc được. Mã CIL cũng thường được gọi là bytecode.

Trong giai đoạn thời gian chạy, một chương trình dịch đặc biệt có tên gọi là JIT (Just-in-time compiler) đọc và dịch tiếp mã CIL thành mã máy để thực thi. Quá trình này được kiểm soát bởi một chương trình đặc biệt gọi là CLR (Common Language Runtime).

Như vậy, có thể hình dung rằng chương trình viết bằng một ngôn ngữ .NET sẽ chạy trong một chương trình khác (CLR) và được chương trình CLR này kiểm soát. Cả CIL và CLR đều là các thành phần của một hệ thống tổng thể gọi là Common Language Infrastructure (CLI).

Do tất cả ngôn ngữ .NET đều biên dịch thành CIL, chúng ta có thể truy cập đối tượng được tạo bằng Visual Basic .NET từ code viết trong C#.

Ngôn ngữ lập trình C

C# là một ngôn ngữ lập trình được phát triển đặc biệt cho .NET Framework, phiên bản đầu tiên của C# (1.0) ra mắt năm 2002 cùng với .NET Framework 1.0. Phiên bản hiện tại của C# (tại thời điểm viết bài) là 7.

Một số đặc điểm của ngôn ngữ C

Ngôn ngữ C# được ảnh hưởng bởi nhiều ngôn ngữ lập trình khác, bao gồm C++, Eiffel và Java. Nếu bạn đã làm việc với các ngôn ngữ này, bạn sẽ dễ dàng tiếp cận C#.

C# được thiết kế đơn giản, hiện đại, linh hoạt và hỗ trợ hầu hết các nguyên tắc lập trình hiện có, bao gồm kiểu dữ liệu mạnh, lập trình hướng mệnh lệnh, lập trình khai báo, lập trình hàm, lập trình hướng đối tượng, lập trình hướng thành phần và lập trình tổng quát.

Bạn không cần phải hiểu tường tận về tất cả những thuật ngữ "kỳ lạ" này. Chúng chỉ được liệt kê để cho thấy sức mạnh và đa dạng của ngôn ngữ C#. Tuy nhiên, một số nguyên tắc trong số đó có ảnh hưởng rất lớn và trực tiếp đến việc học lập trình C#.

Trình biên dịch C

Để biên dịch mã nguồn C# thành chương trình, bạn cần sử dụng một trình biên dịch (compiler) cho ngôn ngữ này.

Hiện nay có một số trình biên dịch C# khác nhau, bao gồm:

  • Microsoft Visual C#: là chương trình "chính thức" được phát triển bởi Microsoft;
  • Mono và trình biên dịch C# mã nguồn mở (tương đương với .NET 3.5, không hỗ trợ toàn bộ các class của .NET Framework);
  • DotGNU và trình biên dịch C# mã nguồn mở (tương đương với .NET 2.0);
  • Trình biên dịch C# của dự án Rotor của Microsoft (chỉ hỗ trợ đến C# 2.0 trên Windows XP).

Nếu bạn đã cài đặt Visual Studio, bạn không cần quan tâm đến trình biên dịch C# nữa. Tất cả đã được cấu hình và sẵn sàng!

Một số điểm cần lưu ý

C# có cú pháp, cấu trúc điều khiển, một số kiểu dữ liệu cơ bản, vv. rất giống với C/C++ và Java. Nếu bạn đã làm việc với các ngôn ngữ này, bạn có thể dễ dàng nắm bắt các thành phần cơ bản của C#. Tuy nhiên, đừng để sự tương đồng này gây nhầm lẫn.

C# là ngôn ngữ dựa trên đối tượng 100%. Điều này có nghĩa là mọi thứ trong C# đều là các lớp (class). Do đó, bạn sẽ không bao giờ nghe thấy về khái niệm hàm toàn cục hoặc biến toàn cục trong C#. Điều này giống với Java. Nếu bạn đến từ C/C++, hãy lưu ý điều này.

Thuộc tính phân biệt C# so với Java và C/C++ là việc học C# không chỉ bao gồm việc học ngôn ngữ mà còn phải học thư viện .NET, đặc biệt là các thành phần cơ bản của thư viện này. Sau đó, bạn cần đầu tư thời gian vào các kỹ thuật nâng cao của .NET và C#. Cuối cùng, bạn nên chọn và tiếp tục nghiên cứu các công nghệ xây dựng trên nền tảng .NET.

Do đó, không nên nảy mình và muốn nhanh chóng nhảy vào các công nghệ như WinForms, ASP.NET. Hãy hiểu rõ C# và .NET càng tốt, bạn sẽ dễ dàng tiếp cận các công nghệ này. Nếu bạn nhảy ngay vào công nghệ, bạn chỉ học được bề ngoài mà không thể tiến xa hơn được.

Kết luận

Bài viết đã giới thiệu về .NET Framework, các tính năng của nền tảng này và cũng như giới thiệu về ngôn ngữ lập trình C#.

Lưu ý rằng, bài viết này chỉ giới thiệu các khái niệm cơ bản, tóm tắt về .NET và C# để giúp bạn có cái nhìn tổng quan. Còn rất nhiều nội dung mà trong một bài viết ngắn không thể trình bày.

  • Nếu bạn thấy trang web hữu ích, hãy giúp đỡ trang web bằng cách thực hiện một hành động nhỏ để trang web có thể phát triển và phục vụ bạn một cách tốt hơn.
  • Nếu bạn thấy bài viết hữu ích, hãy giúp chia sẻ cho mọi người biết.
  • Nếu bạn có thắc mắc hoặc cần trao đổi thêm, hãy viết trong phần thảo luận ở cuối trang.

Cảm ơn bạn!

1