1. Phần nhận xét của giảng viên chấm phản biện
2.1.8. Ngôn ngữ C# và những ngôn ngữ khác
26
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ỏisựkhác nhau giữangônngữ C# vànhững ngôn ngữ đó. Và cũng nhữngngôn ngữ đó. Và cũngtựhỏitại sao lạilựa chọn ngôn ngữnàyđểhọc màkhôngchọnmột trong những ngônngữ kia.
Córất nhiềulý do vàchúng ta hãy xem mộtsố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óirằng C# mang đến sứcmạnhcủangônngữ C++ với sựdễ dàng củangôn ngữ Visual Basic. Có thể nó khôngdễnhư Visual Basic, nhưng với phiên bản Visual Basic.NET (Version 7) thì ngang nhau. Bởivì chúngđược viếtlạitừmột nền tảng.Chúng ta cóthể viết nhiều chươngtrình với ít mã nguồn hơnnếu dùng C#.
Mặc dù C#loạibỏ một vàicácđặctínhcủa C++, nhưngbù lạinó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ềuvềđiềunày trong các chương của giáotrình.
Một điều quan trong 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# kho đó những đoạn mã nguồn này sẽ được đánh dấu là không an toàn (unsafe code).
C# cũngtừbỏýtưởng đakếthừanhư trong C++. Và sự khác biệt khác là C# đưa thêm thuộctínhvào trong một lớp giốngnhư trong Visual Basic.
Vànhững thànhviêncủa lớp đượcgọi duy nhất bằngtoántử "." khác với C++ có nhiều cách gọi trong các tình huống khác nhau.
Mộtngônngữ khácrấtmạnhvàphổbiến là Java, giốngnhư C++ và C# được phát triển dựa trên C. Nếuchúng ta quyếtđịnhsẽhọc Java sau này, chúng ta sẽ tìm được nhiều cái mà họctừ C# có thểđược áp dụng.
Điểmgiống nhau C# và Jav làcả hai cùngbiên dịch ra mã trung gian: C#
bien dịch ra MSIL còn Java biêndị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ừngmáyảo tươngứng.
27
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. biên dịchmã ngônngữ C# chứa nhiều kiểu dữ liệu cơ bản hơn Java cũng cho phép nhiều sự mở rộng với kiểu dữ liệu giá trị.
Tương tự như Java, C# cũng từ bỏ tính đa kế thừa trong một lớp, tuy nh iênmô 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.