Bài 01: Giới thiệu về ngôn ngữ C++

1. Tổng quan

Lập trình là gì?

Trong những thập kỷ gần đây, sự phổ biến của máy tính đã kéo theo sự phát triển mạnh mẽ của các ngành nghề, cũng như tạo ra những thay đổi đáng kể trong nhiều lĩnh vực. Trong đó, lập trình là đầu tàu, đưa công nghệ và những ngành áp dụng công nghệ tiến về phía trước. Vậy, theo bạn, lập trình là gì?

Có rất nhiều cách giải thích cho từ “lập trình”. Theo nhiều định nghĩa, lập trình là quá trình thiết kế và xây dựng một chương trình thực hiện các tính toán nhất định. Ngoài ra, nếu nhìn lập trình theo góc nhìn trực quan và có phần tếu táo hơn một chút thì đây cũng có thể được coi như quy trình hướng dẫn máy tính thực hiện các tác vụ nào đó.

Người lập trình ra các sản phẩm phần mềm (hay phần cứng) thường được gọi là lập trình viên. Lập trình viên là những người có vai trò viết nên những đoạn mã của các sản phẩm phần cứng/phần mềm mà chúng ta thấy ngày nay. Họ có thể đóng nhiều vai trò trong sản phẩm, từ suy nghĩ ý tưởng, thuật toán, vẽ lưu đồ (sơ đồ) mô tả quá trình vận hành hệ thống, cho đến lập trình và bảo trì sản phẩm.

Ngày nay, rất khó có thể phớt lờ các sản phẩm của lập trình, nhất là khi chúng ta có thể dễ dàng nhìn thấy chúng ở mọi nơi. Trong chiếc điện thoại, máy tính được bạn coi sử dụng hàng ngày như một công cụ không thể thiếu, từ hệ điều hành cho đến những ứng dụng, trò chơi trong đó đều được dựng lên từ những dòng code. Hay khi bạn ra ngoài đường, những cột đèn giao thông cũng được lập trình để hiển thị đèn và báo hiệu cho bạn khi nào nên dừng lại, khi nào nên đi tiếp thay vì phải chịu sự giám sát và điều khiển của con người như những năm giữa thế kỷ XIX, khi chúng mới được phát minh.

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

Giống như việc con người cần ngôn ngữ để giao tiếp, trao đổi với nhau, để có thể “hướng dẫn” máy tính thực hiện các công việc mình mong muốn, việc phát triển và sử dụng ngôn ngữ lập trình cũng là tất yếu. Ngôn ngữ lập trình là dạng ngôn ngữ có cấu trúc bao gồm một tập các câu lệnh đưa ra những output (đầu ra) khác nhau.

Vì máy tính chỉ có thể hiểu được các giá trị nhị phân (chuỗi bits), khi chúng ta sử dụng ngôn ngữ lập trình để viết nên những câu lệnh cho máy tính, chúng sẽ được biên dịch sang dạng “ngôn ngữ máy tính”. C++ cũng là một trong các ngôn ngữ lập trình phổ biến nhất trên thế giới, được sử dụng rất rộng rãi trong giáo dục hiện nay. Ngoài ra, các bạn có thể tham khảo nguồn tư liệu khổng lồ về các ngôn ngữ lập trình ở đây.

Nếu C++ là ngôn ngữ lập trình đầu tiên mà bạn được tiếp xúc, hãy cố gắng rèn luyện tư duy lập trình bởi về lâu dài chúng sẽ giúp cho các sản phẩm lập trình của bạn có kết cấu bền vững và tổ chức tốt hơn. Để phát triển tư duy lập trình, các bạn nên xác định mục tiêu và động lực trong việc học lập trình, học từ dễ đến khó, đơn giản đến phức tạp. Sau khi đã nắm được căn bản, các bạn có thể tham gia các trang lập trình thuật toán. Mình tin chắc quá trình này sẽ đầy thú vị và có thể bạn sẽ “nghiện” cảm giác khi làm những bài toán đấy!

Đây là bài viết mình khá tâm đắc về cách “nâng cấp” tư duy lập trình mà mình tin là các bạn nên đọc qua.

Chương trình (máy tính) là gì?

Chương trình máy tính là tập hợp các câu lệnh thực hiện một tác vụ cụ thể và được thực thi bởi máy tính. Thông thường, chương trình máy tính được viết nên bởi lập trình viên thông qua ngôn ngữ lập trình. Nói cách khác, chương trình máy tính là dãy các lệnh mà máy tính có thể hiểu được.

Sau khi được lập trình viên viết ra, chương trình máy tính có thể được biên dịch sang mã máy để máy tính có thể hiểu và thực thi được. Phần dưới đây mô tả chi tiết hơn quá trình này!

Máy tính “hiểu” ngôn ngữ lập trình như thế nào?

Đây là ngôn ngữ của máy tính (Ảnh: perl.com):

Mã máy (Machine Instructions)

Những con số 0 và 1 này là nhiều dòng lệnh với các thành phần đặc trưng cho mỗi câu lệnh (hay còn gọi là mã máy – machine instructions). Đây là loại ngôn ngữ mà hầu như chỉ có máy tính hiểu và tạo ra, cũng như sử dụng được, con người chúng ta hầu hết không đủ khả năng và độ kiên nhẫn để viết ra các câu lệnh với toàn những chữ số nhị phân như trên. Đó là lý do vì sao ngôn ngữ lập trình (Ảnh: Wikipedia) ra đời!

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

Như đã trình bày ở trên, ngôn ngữ lập trình chứa tập các lệnh tiếng Anh để lập trình viên thực hiện công việc lập trình của mình. Nhưng làm thế nào máy tính có thể hiểu được thứ ngôn ngữ phức tạp của con người này nhỉ!?

Xét ví dụ dưới đây (Ảnh: mathcs.emory.edu)

Quá trình biên dịch và thực thi chương trình

Đầu tiên, khi chúng ta thực hiện xong công việc lập trình ở một ngôn ngữ lập trình cấp cao và thực hiện biên dịch (compile), đoạn mã chúng ta lập trình sẽ được dịch sang ngôn ngữ lập trình cấp thấp (cụ thể là hợp ngữ – assembly). Assembly nôm na là một ngôn ngữ nửa người – nửa máy, nghĩa là nó vừa cụ thể ở mức độ chi tiết đến từng phép tính cộng trừ, vừa có thể được lập trình bởi con người (dù rất đau khổ). Assembler (chương trình dịch hợp ngữ) thời điểm này sẽ tiếp tục biên dịch hợp ngữ thành mã máy (machine code). Đây là loại mã có thể được thực thi và quan trọng hơn cả là máy tính hiểu được đoạn mã này.

2. Một số đặc trưng cơ bản của C++

Lập trình hướng đối tượng (Object-oriented Programming – OOP)

Một trong những điều làm mình cảm thấy ấn tượng với C++ là ngôn ngữ này vừa hỗ trợ khả năng lập trình hàm (Functional Programming) lẫn lập trình hướng đối tượng (Object-oriented Programming). Điều này giống như việc bạn có thể học một ngôn ngữ phục vụ cho hai hướng đi khác nhau vậy. Nếu lập trình hàm là phương pháp phổ biến và hầu như ai cũng học tiếp xúc với C++, lập trình hướng đối tượng lại là một kỹ thuật phức tạp hơn, được ưu tiên hơn công nghệ phát triển phần mềm hiện nay (và tất nhiên là cả trong các thông báo tuyển dụng lập trình viên)!

Lập trình hướng đối tượng là mẫu hình lập trình nơi bạn làm việc với các đối tượng (object) và lớp (class). Trong đối tượng lại được chia thành những thuộc tính và phương thức. Học lập trình hướng đối tượng sẽ giúp các bạn có một cái nhìn logic và có phần mới lạ hơn không chỉ trong lập trình, mà còn ở các vấn đề khác nảy sinh trong cuộc sống. Ở phạm vi series này, chúng mình sẽ không trình bày nhiều về OOP. Hi vọng các bạn sẽ theo dõi blog và chờ đợi những series học lập trình tiếp theo!

Không phụ thuộc vào nền tảng

Dù sử dụng bất cứ hệ điều hành máy tính nào (Windows, MacOS, Linux…), bạn đều có thể yên tâm về khả năng lập trình C++. Điều này cũng đồng nghĩa với việc nếu bạn gửi source code từ máy này sang máy khác, hay giữa các hệ điều hành khác nhau, C++ đều có thể chạy đúng. Điều này nghe có vẻ bình thường, nhưng thực tế trong quá trình thực hành, sẽ có nhiều thời điểm việc này tỏ ra rất hữu dụng.

Tốc độ xử lý cao

Khi đã trải qua nhiều công cụ hay ngôn ngữ lập trình, bạn sẽ nhận ra rằng C++ có tốc độ xử lý nhanh hơn khá nhiều. Lý do là bởi nó có liên hệ tương đối gần gũi với các ngôn ngữ bậc thấp, cộng thêm khả năng tối ưu tốt do lập trình viên đa phần phải tự code (phù hợp với từng nhu cầu hay trường hợp cụ thể) thay vì sử dụng các thư viện có sẵn.

3. Tại sao nên học C++

C++ là một ngôn ngữ tốt để bắt đầu

Nếu bạn so sánh C++ với các ngôn ngữ khác (Java, C#, Python…), mình tin chắc đây không phải là ngôn ngữ dễ nhất, ít nhất là về cú pháp và mức độ tường minh (chẳng hạn như Python – một ngôn ngữ dễ nhớ, dễ dùng và cú pháp đơn giản). C++ nổi bật ở khả năng tối ưu bộ nhớ cực tốt (tất nhiên là phải “dùng nhiều não” hơn để đạt được điều này). Bên cạnh đó, như đã nói ở trên, C++ cũng vừa hỗ trợ các bạn khả năng lập trình hàm (Functional Programming) và lập trình hướng đối tượng (Object-oriented Programming – OOP), rất hiệu quả để các bạn học từ cơ bản đến nâng cao.

Ngôn ngữ này tuy không hỗ trợ nhiều framework hay thư viện “xịn” như đàn em, nhưng điều đó sẽ rất có ích để giúp các bạn hiểu rõ về từng dòng lệnh và cách mỗi thuật toán vận hành, can thiệp sâu hơn và học được nhiều hơn từ đó. Các kỹ thuật, tư duy lập trình của các bạn cũng sẽ được luyện tập hiệu quả xuyên suốt quá trình học C++.

Ngoài ra, C++ còn là ngôn ngữ lập trình bậc trung, nghĩa là vừa mang trong mình những tính chất của ngôn ngữ lập trình bậc thấp hơn (Pascal, C…) lẫn ngôn ngữ lập trình bậc cao hơn (Java, C#, Python…). Đây cũng có thể được xem như một điểm thuận lợi khi bạn được tiếp cận nhiều hơn sự “thú tính” của các ngôn ngữ cũ, lẫn điểm mới lạ của những ngôn ngữ lập trình hiện đại hơn!

Cấu trúc của C++ cũng khá giống những ngôn ngữ cấp cao khác (do đa phần những ngôn ngữ đó đều được phát triển dựa trên nền C++), do đó nếu bắt đầu với C++, sẽ dễ dàng hơn cho bạn trong việc “nâng cấp” lên những ngôn ngữ khác phù hợp với mỗi mục đích làm việc sau này.

Ứng dụng của C++ trong thực tế

Có thể các bạn luôn được nghe nói về các ngôn ngữ lập trình hiện đại như JavaScript, Python… với những câu chữ đầy ấn tượng. Mặc dù vậy, theo như mình thấy, trong nhiều năm qua, C++ tuy không phải là ngôn ngữ được ứng dụng nhiều nhất, nhưng mặc cho thị trường đầy biến động, nó vẫn luôn nằm trong top các ngôn ngữ lập trình phổ biến nhất.

Như đã trình bày ở trên, C++ là ngôn ngữ có khả năng tối ưu hiệu năng rất tốt, do đó ngôn ngữ này được ứng dụng rộng rãi ở các công ty lớn ở phần lập trình back-end (tức là về phía server, quan trọng tốc độ tính toán, xử lý). Bên cạnh đó, lập trình game với C++ cũng được hỗ trợ tương đối tốt và là một công việc đầy hứa hẹn đang có tốc độ phát triển rất cao.

4. Tổng kết

Như vậy, qua phần này, chúng mình đã trình bày sơ qua các khái niệm cơ bản về lập trình, ngôn ngữ lập trình, chương trình và cách máy tính biên dịch chương trình. Đồng thời, ngôn ngữ C++ và đặc điểm, tính ứng dụng của nó cũng đã được chúng mình trình bày. Nếu có bất kỳ thắc mắc hay đóng góp nào, mời bạn comment ở phía bên dưới, chúng mình sẽ phản hồi trong thời gian sớm nhất!

Leave a Reply

Create your own website, free on WordPress.com.Create your own website.
Start free