Lập trình tân binh | 1.1. C++ là gì ?

Bạn bị lôi cuốn bởi tin học và muốn học lập trình ? Khi mới mở màn, bạn hoàn toàn có thể thấy nó khá phức tạp, nhưng trên trong thực tiễn, việc học lập trình không quá khó khăn vất vả như bạn vẫn nghĩ .
Bạn do dự phải khởi đầu từ đâu, liệu C + + có tương thích với bạn, liệu bạn có nên khởi đầu bằng một ngôn từ khác. Bạn tự hỏi liêu C + + có được cho phép bạn làm những gì bạn muốn, đâu là những điểm mạnh và điểm yếu của C + + …
Trong chương này, chúng tôi sẽ cố gắng nỗ lực vấn đáp cho bạn tổng thể những câu hỏi đó. Đừng quên rằng đây là một giáo trình dành cho người mới mở màn học lập trình. Bạn không cần phải có một nền tảng kỹ năng và kiến thức lập trình hay tin học nào để theo học giáo trình này. Ngay cả khi bạn chưa từng lập trình, tổng thể những gì bạn cần là học theo giáo trình của chúng tôi một cách chuyên nghiệp và bài bản, không nhảy cóc và phải thực hành thực tế tiếp tục cùng chúng tôi .

Các chương trình

Các chương trình là nền tảng của tin học. Nó được cho phép bạn thao tác với máy tính .
Chúng ta hãy cùng đến với ví dụ dưới đây trải qua ảnh chụp màn hình hiển thị máy tính của tôi. Các bạn hoàn toàn có thể nhìn thấy 3 hành lang cửa số tương ứng với 3 chương trình khác nhau. Theo thứ tự từ gần đến xa bạn :

 Cửa sổ trong Windows

  • Trình duyệt web Google Chrome, cho phép bạn truy cập các trang web
  • Trình quản lí các tệp, cho phép bạn quản lí các tệp tin trong máy tính
  • Trình soạn thảo văn bản Microsoft Word, cho phép bạn soạn thư và văn bản

Như những bạn thấy, mỗi chương trình khác nhau được tạo ra với một mục tiêu riêng không liên quan gì đến nhau. Chúng ta cũng hoàn toàn có thể kể đến những games nổi tiếng như Starcraft II, World ò Warcraft, Worms, Team Fortress 2, … Tất cả đều là những chương trình .
Các chương trình không nhất thiết phải được hiển thị để bạn hoàn toàn có thể nhìn thấy, ví dụ như những chương trình update tự động hóa cho máy tính của bạn, hay những chương trình diệt virus. Nó vẫn ngầm chạy, mặc dầu không được hiển thị ra màn hình hiển thị máy tính để bạn thấy ; nhưng điều đó không có nghĩa là nó không tương tác hay không hoạt động giải trí .

Starcraft II

Tôi cũng muốn tạo một chương trình. Vậy tôi phải làm như thế nào ?

Trước hết, hãy xác lập rõ bạn muốn tạo một chương trình ở Lever nào ? Một game show như Starcraft II cần hàng chục lập trình viên toàn thời hạn, thao tác trong nhiều năm trời. Đừng đặt ra cho bạn những tiềm năng quá khó để đạt được ngay lúc mới mở màn học lập trình .
Nếu bạn theo học giáo trình này, bạn sẽ có những kỹ năng và kiến thức lập trình nền tảng. Ở một bài thực hành thực tế trong giáo trình, bạn sẽ được tự tạo cho mình một trình duyệt web ( đơn giản hóa ) giống như Mozilla Firefox và Google Chrome ! Bạn sẽ biết tạo những chương trình với hành lang cửa số tương tác. Bạn thậm chí còn hoàn toàn có thể tạo ra những games 2D và 3D nếu bạn muốn. Tóm lại, với thời hạn và sự kiên trì học tập, bạn hoàn toàn có thể tiến rất xa so với tưởng tượng khởi đầu .

Các ngôn ngữ lập trình

Máy tính của bạn là một cỗ máy phức tạp và tiềm ẩn nhiều điều đáng kinh ngạc. Nó chỉ hoàn toàn có thể hiểu một ngôn từ nền tảng chỉ dựa trên mã hóa 0 và 1. Một dãy kí tự giống như
1010010010100011010101001010111010100011010010
Có thể tương ứng với việc « Hiển thị một cửa sổ ra màn hình hiển thị » .
Phải, nhưng nó rất phức tạp. Chúng ta có thiết yếu phải học loại ngôn từ này ? May thay câu vấn đáp là không. Nếu phải viết bằng thứ ngôn từ này ( tất cả chúng ta gọi nó là ngôn từ nhị phân ), game show Starcraft sẽ cần được viết không phải trong nhiều năm mà là trong nhiều thế kỉ ( bạn đừng cười ! )
Để đơn giản hóa, những kĩ sư tin học đã tạo ra những ngôn từ trung gian, đơn thuần hơn ngôn từ nhị phân. Ngày nay sống sót hàng trăm ngôn từ lập trình khác nhau. Để dễ tưởng tượng, bạn hoàn toàn có thể tìm hiểu thêm list những ngôn từ lập trình tại wikipedia. Mỗi ngôn từ có một đặc thù riêng, tất cả chúng ta sẽ điều tra và nghiên cứu kĩ hơn ở phần sau .
Tất cả những ngôn từ lập trình được tạo ra với cùng một mục tiêu : giúp bạn tiếp xúc với máy tính một cách thuận tiện hơn là trải qua ngôn từ nhị phân. Nó hoạt động giải trí như sau :

  1. Bạn viết các câu lệnh cho máy tính bằng một ngôn ngữ lập trình (ví dụ như C++)
  2. Các câu lệnh được dịch sang ngôn ngữ nhị phân nhờ vào một « chương trình dịch »
  3. Máy tính lúc này có thể đọc các lệnh đã được dịch sang ngôn ngữ nhị phân và thực hiện các câu lệnh của bạn.

Sơ đồ dưới đây tóm tắt 3 bước trên :

Biên dịch

Trình biên dịch (compiler)

« Chương trình dịch » có tên gọi là trình biên dịch ( compiler ). Đây là một công cụ không hề thiếu, đổi khác đoạn code mà bạn viết bằng một ngôn từ lập trình thành một chương trình thực sự hoàn toàn có thể chạy được .
Chúng ta hãy cùng trình diễn lại sơ đồ bên trên bằng ngôn từ tin học :

Biên dịch

Vậy làm thế nào để lựa chọn giữa hàng trăm ngôn từ lập trình ? Ngôn ngữ nào là ngôn từ tốt nhất ? C + + có phải là một lựa chọn tốt ?
Các lập trình viên thường phải biết nhiều ngôn từ lập trình chứ không phải một. Họ thường không chỉ tập trung chuyên sâu vào một ngôn từ duy nhất .
Tất nhiên để khởi đầu, bạn chỉ cẩn học tốt một trong số những ngôn từ đó. May mắn thay, bạn hoàn toàn có thể mở màn bằng bất kỳ ngôn từ nào bạn muốn. Các nguyên tắc lập trình không đổi khác, sẽ không quá khó khăn vất vả để bạn chuyển từ ngôn từ này sang ngôn từ khác .
Tuy vậy, tất cả chúng ta sẽ cùng xem xét điều làm ra sự độc lạ giữa C + + và những ngôn từ khác. Đúng thế, bạn đừng quên bạn đang đọc giáo trình C + + .

C++ so với các ngôn ngữ lập trình khác

C++ là ngôn ngữ bậc cao hay ngôn ngữ bậc thấp ?

Trong số hàng trăm ngôn từ lập trình đang cùng sống sót, một số ít được dùng phổ cập hơn những ngôn từ còn lại. C + + là một ngôn từ thông dụng như vậy. Một số website giống như langpop.com vẫn update bảng xếp hạng những ngôn từ đang được dùng nhiều nhất, nếu bạn muốn khám phá. Như bạn hoàn toàn có thể thấy, C, Java và C + + là 3 ngôn từ luôn giữ vị trí rất cao trong bảng xếp hạng .
Câu hỏi đặt ra là : Có nhất thiết phải chọn một ngôn từ phổ cập ? Có những ngôn từ rất mê hoặc nhưng ít được sử dụng thoáng đãng. Nếu bạn học những ngôn từ này, bạn sẽ gặp khó khăn vất vả trong việc tìm người hoàn toàn có thể giúp bạn khi bạn gặp phải yếu tố gì đó. Đó là lí do vì sao C + + là một lựa chọn tốt cho những người mới khởi đầu : có rất nhiều người lập trình bằng C + + và bạn sẽ không cảm thấy lạc lõng khi học ngôn từ này .
Tất nhiên cũng có những tiêu chuẩn khác ngoài tính phổ cập. Tiêu chí quan trọng nhất theo quan điểm cá thể của tôi là bậc của ngôn từ. Có hai nhóm ngôn từ lập trình : ngôn từ bậc cao và ngôn từ bậc thấp .

Vậy ngôn ngữ bậc cao là gì ?

Đó là một ngôn từ khác hẳn so với ngôn từ nhị phân, nghĩa là khác hẳn so với cách máy tính quản lý và vận hành. Nó giúp bạn lập trình một cách nhanh gọn và thuận tiện .

Ngược lại, ngôn ngữ bậc thấp có vẻ gần gũi với sự vận hành của máy tính hơn : nó thường đòi hỏi nhiều hơn ở bạn nhưng cũng cho bạn nhiều khả năng kiểm soát hơn đối với những gì bạn làm.

C + + được xếp vào nhóm ngôn từ lập trình bậc thấp. Điều này không có gì khiến bạn phải sợ hãi cả. Mặc dù khá phức tạp, ngôn từ này có những ưu điểm điển hình nổi bật như hiệu năng và vận tốc cao. Trên thực tiễn, lí do chính khiến hầu hết những game show được tăng trưởng bằng C + + chính là sức mạnh và vận tốc của ngôn từ này. Đây là lí do khiến C + + trở thành một ngôn từ mà bạn không hề bỏ lỡ .
Sơ đồ sau đây ra mắt với bạn 1 số ít ngôn từ lập trình phân loại theo bâc :

Hệ thống ngôn ngữ

Bạn hoàn toàn có thể thấy tất cả chúng ta hoàn toàn có thể lập trình bằng hệ nhị phân dựa vào một ngôn từ cổ xưa có tên gọi Assembleur. Bởi vì riêng việc viết một chương trình để triển khai những phép tính cơ bản bằng ngôn từ nhị phân đỏi hỏi những nỗ lực kinh khủng mà người thường khó hoàn toàn có thể làm được, tất cả chúng ta thường ưu tiên sử dụng một ngôn từ lập trình ( trung gian ) .
Trong lập trình, khái niệm « bậc » là một khái niệm tương đối. Chúng ta hoàn toàn có thể coi C + + là ngôn từ bậc thấp so với Python, nhưng nó ở bậc cao hơn so với Assembleur. Tất cả nhờ vào vào góc nhìn của tất cả chúng ta .

Tóm tắt các điểm mạnh của C++

C + + rất phổ cập. Như bạn đã thấy, nó là một trong những ngôn từ được sử dụng nhiều nhất trên quốc tế. Vì thế tất cả chúng ta hoàn toàn có thể tìm thấy rất nhiều những tài liệu trên internet cũng như những sự trợ giúp trên những forum về C + +. Thậm chí có những người tốt bụng viết hẳn giáo trình C + + dành cho người mới khởi đầu .
C + + rất nhanh, thậm chí còn là cực nhanh. Ưu điểm này khiến nó là lựa chọn số 1 cho những ứng dụng cần vận tốc, điển hình như những game show, những ứng dụng kinh tế tài chính hay những chương trình quân sự chiến lược hoạt động giải trí theo thời hạn thực .
Nó có tính di động ( portable ) : Một đoạn code C + + trên kim chỉ nan hoàn toàn có thể được quy đổi một cách thuận tiện để chạy trong Windows, Mac OS hay Linux. Bạn không cần phải viết lại chương trình của mình để chạy trong một plateform khác .
Có rất nhiều những thư viện cho C + +. Các thư viện là những lan rộng ra cho một ngôn từ, gần giống như những plug-in. C + +, bản thân nó, không hề làm được nhiều điều, nhưng khi tích hợp với những thư viện, tất cả chúng ta hoàn toàn có thể tạo những chương trình 3D, mạng, âm thanh, hành lang cửa số, …
C + + đa quy mô ( multi-paradigms ). Nghĩa là tất cả chúng ta hoàn toàn có thể lập trình C + + bằng nhiều cách khác nhau. Vì bạn vẫn đang chập chững bước vào quốc tế lập trình nên chúng tôi sẽ chưa ra mắt ngay với bạn những cách lập trình khác nhau, tuy nhiên bạn hoàn toàn có thể biết một trong số đó là lập trình hướng đối tượng người tiêu dùng. Đây là cách lập trình giúp làm đơn giản hóa cơ cấu tổ chức code trong những chương trình của tất cả chúng ta và giúp 1 số ít đoạn code hoàn toàn có thể được tái sử dụng một cách thuận tiện. Toàn bộ phần II của giáo trình sẽ được dành để nói về lập trình hướng đối tượng người tiêu dùng .
Cần phải nhấn mạnh vấn đề với bạn C + + không phải là ngôn từ duy nhất đáng để học. Bản thân nó cũng có những điểm yếu kém so với nhiều ngôn từ khác, nổi bật là sự phức tạp của nó. Với C + + bạn có rất nhiều quyền trấn áp so với hoạt động giải trí của máy tính ( và việc quản lí bộ nhớ ) : đây là một điểm mạnh nhưng nếu bạn sử dụng nó không đúng, bạn sẽ rất thuận tiện làm « treo » chương trình. Chúng ta sẽ từ từ tìm hiểu và khám phá toàn bộ những yếu tố này xuyên suốt giáo trình .

Làm quen với C++

Dưới đây là một chương trình đơn thuần để bạn thuận tiện tưởng tượng về C + + : Chương trình hiển thị dòng « Hello world ! » ra màn hình hiển thị ( chương trình tầm cỡ để mở màn học lập trình ). Đây sẽ là một trong những mă nguồn ( code ) tiên phong mà tất cả chúng ta sẽ tìm hiểu và khám phá trong chương tiếp theo .

#include 
using namespace std;
int main(){
    cout << "Hello world!" << endl;
    return 0;
}

Một chút về lịch sử của C++

Lịch sử lập trình đã trải qua một quăng thời hạn rất dài trước khi C + + sinh ra. Ở thời kì đầu, bàn phím thậm chí còn còn chưa sống sót, người ta đă sử dụng những tấm card như hình bên dưới để đưa ra những lệnh cho máy tính. Công việc này yên cầu thời hạn và sự tỉ mỉ rất cao .

Algol

Với sự tăng trưởng của tin học, bàn phím và những ngôn từ lập trình tiên phong cũng sinh ra :
1958 : Rất lâu trước đây, thời mà máy tính nặng hàng tấn và có kích cỡ bằng cả tòa nhà của bạn, con người đã khởi đầu ý tưởng ra một ngôn từ có tên là Algol .
1960 - 1970 : công nghệ tiên tiến tăng trưởng, người ta tạo ra một ngôn từ mới có tên là CPL, sau đó tăng trưởng thành BCPL, rồi được đổi tên thành ngôn từ B ( bạn không cần phải ghi nhớ tổng thể những thứ này 🙂 ) .
1970 : Vào một ngày đẹp trời, người ta tạo ra một ngôn từ lập trình mang tên C. Ngôn ngữ này, sau khi có 1 số ít biến hóa, vẫn là một trong những ngôn từ được sử dụng nhiều nhất giờ đây ( theo langpop.com ) .
1983 : Một thời hạn sau, người ta nghĩ đến việc thêm vào C những yếu tố mới để làm nó tăng trưởng hơn. Một ngôn từ mới sinh ra dưới cái tên C + + và được hình thành trọn vẹn trên nền ngôn từ C. C + + thực ra là C với nhiều yếu tố mới. Các yếu tố mới này gồm có khái niệm lập trình tiên tiến và phát triển như lập trình hướng đối tượng người tiêu dùng, đa hình ( polymorphism ), flux, … Tóm lại, đó là những yếu tố có vẻ như khá phức tạp với bạn vào thời gian này nhưng tất cả chúng ta sẽ có thời cơ quay trở lại điều tra và nghiên cứu chúng vào phần sau của giáo trình .

Chờ một chút,… nếu như C++ là một bước cải tiến của C thì tại sao ngày nay vẫn còn rất nhiều người lập trình bằng C ?

Vì không phải ai cũng cần đến những bước nâng cấp cải tiến của C + +. Bản thân ngôn từ C cũng đủ mạnh để làm nền tảng cho những hệ điều hành quản lý như Linux, Mac OS X và Windows .
Những người không cần đến những nâng cấp cải tiến ( cũng như sự phức tạp ) của C + + liên tục lập trình bằng C mặc kệ tuổi đời của ngôn từ này. Nói một cách khác, một ngôn từ hoàn toàn có thể đă già nhưng vẫn tương thích với thời đại .

Cha đẻ của C++

Bjarne Stroustrup, một kĩ sư tin học người Đan Mạch, đă thiết kế xây dựng C + +. Không hài lòng với những gì C hoàn toàn có thể làm được, ông đã tạo ra, vào năm 1983, ngôn từ C + + bằng việc thêm vào C những tính năng mà theo ông C vẫn còn thiếu .
Bjarne Stroustrup hiện đang giảng dạy về tin học tại ĐH Texas A&M ở Mỹ. Ông là một hiện tượng kỳ lạ lớn của quốc tế tin học mà bạn cần phải nhớ ( tối thiểu là tên ông ) .
Rất nhiều ngôn từ khác được thiết kế xây dựng lấy sáng tạo độc đáo từ C + +, ví dụ như Java .
C + +, mặc dầu đã sống sót trong một thời hạn tương đối dài, vẫn đang liên tục được nâng cấp cải tiến và triển khai xong. Một phiên bản mới, có tên gọi C + + 1 x, đang trong gian đoạn thiết kế xây dựng và tăng trưởng. Nó không phải một ngôn từ mới mà là một phiên bản tăng cấp của C + +. Những thay đổi mà nó mang lại có vẻ như quá phức tạp với tất cả chúng ta nên tất cả chúng ta sẽ không nói đến nó trong giáo trình này .

Tóm tắt bài hoc :

  • Các chương trình cho phép thực hiện các hoạt động khác nhau trên máy tính của bạn : duyệt web, soạn thảo văn bản, thao tác với các tệp,…

  • Để triển khai chương trình, tất cả chúng ta viết những câu lệnh cho máy tính trải qua một ngôn từ lập trình. Nó được gọi là mă nguồn ( code source ) .
  • Code cần phải được dịch sang hệ nhị phân nhờ vào một công cụ gọi là trình biên dịch ( Compiler ) để máy tính hoàn toàn có thể chạy được chương trình. ( Máy tính chỉ hoàn toàn có thể hiểu được ngôn từ nhị phân. )
  • C + + là một ngôn từ lập trình rất phổ cập và rất nhanh. Nó là một sự nâng cấp cải tiến của C vì nó mang đến khái niệm lập trình hướng đối tượng người dùng, một phương pháp lập trình đầy sức mạnh ( sẽ được lý giải trong giáo trình ) .