Sự ra đời của C và C++

Bài viết này giới thiệu về sự ra đời của ngôn ngữ lập trình C và C++.
Tài liệu tham khảo:
Chapter 1, Patrick Naughton and Herbertz Schidt, “Java –2 The Complete Reference” , Fifth edition, Tata McGraw-Hill Publishing Company Limited.
—————————————————————–

Trong lịch sử ra đời của các ngôn ngữ lập trình, người ta nói rằng ngôn ngữ lập trình B đã dẫn đến ngôn ngữ lập trình C, Ngôn ngữ lập trình C tiến hóa thành ngôn ngữ lập trình C++, và Ngôn ngữ lập trình C++ thiết lập nền tảng cho ngôn ngữ lập trình Java. Hiểu được Java nghĩa là hiểu những nguyên nhân dẫn đến sự hình thành của nó và những gì mà nó kế thừa. Java là sự pha trộn của những thành phần tốt nhất mà nó kế thừa kết hợp với những khái niệm mới được đòi hỏi bởi môi trường đặc trưng của nó.

Sự ra đời của lập trình hiện đại: Ngôn ngữ lập trình C
Ngôn ngữ lập trình C đã làm thay đổi thế giới máy tính. Sự tác động của nó nhiều khi không được đánh giá đúng mức. Nó thay đổi cách tiếp cận và nhìn nhận về lập trình một cách cơ bản. Sự ra đời của C là kết quả trực tiếp của sự cần thiết phải thay đổi về cấu trúc, hiệu quả, ngôn ngữ bậc cao thay thế cho mã máy khi viết các chương trình hệ thống. Như chúng ta biết, khi thiết kế một ngôn ngữ lập trình, sự cân nhắc luôn được xem xét giữa:
– Tính dễ dàng sử dụng và sức mạnh
– Sự an toàn và hiệu quả
– Sự chặt chẽ và khả năng mở rộng
Trước khi có C, lập trình viên thường xuyên phải chọn giữa các ngôn ngữ đã thu gọn một tập các đặc điểm. Ví dụ, mặc dù FORTRAN có thể được dùng để viết các chương trình hiệu quả cho các ứng dụng khoa học, nhưng nó không tốt lắm cho viết mã hệ thống. Trong khi BASIC dễ dàng cho người học thì nó lại không đủ mạnh và thiếu các cấu trúc cho các chương trình lớn. Ngôn ngữ Assembly có thể được dùng để viết các chương trình hiệu quả cao nhất nhưng không dễ dàng để sử dụng cũng như gỡ rối rất khó khăn.
Một vấn đề khác là các ngôn ngữ lập trình như BASIC, COBOL, và FORTRAN không được thiết kế dựa trên các yếu tố cấu trúc. Chúng dựa trên lệnh GOTO để điều khiển chương trình. Vì vậy mà các chương trình được viết bởi các ngôn ngữ này hướng tới việc sinh ra mã spagheti – một khối lộn xộn các lệnh nhảy và rẽ nhánh làm cho chương trình không thể hiểu được. Trong khi ngôn ngữ như Pascal là ngôn ngữ cấu trúc, nó không được thiết kế để đạt hiệu quả cao, và thiếu các đặc điểm cần thiết để ứng dụng cho những chương trình lớn. Vì thế, trước khi có ngôn ngữ C, không có ngôn ngữ nào có thể dung hòa được sự xung đột đã tồn tại trước đó.
C được phát minh và được cài đặt đầu tiên bởi Dennis Ritchie trên một máy DEC PDP-11 sử dụng hệ điều hành UNIX. C là kết quả của quá trình phát triển từ một ngôn ngữ trước đó được gọi là BCPL, phát triển bởi Martin Richards. BCPL chịu ảnh hưởng của một ngôn ngữ lập trình gọi là B, phát minh bởi Ken Thompson, đã dẫn đến sự ra đời của C và những năm 70. Trong nhiều năm, chuẩn không chính thức C được hỗ trợ bởi hệ điều hành UNIX và được mô tả trong cuốn “The C Programming Language” của Brian Kerninghan và Dennis Ritchie. C trở thành chuẩn phổ biến vào tháng Mười hai năm 1989, khi tổ chức ANSI công nhận.
Sự ra đời của C đã đánh dấu một thời kỳ mới của ngôn ngữ máy tính. Nó đã giải quyết được các xung đột tồn tại trong các ngôn ngữ trước đó. Kết quả là sự mạnh mẽ, hiệu quả và ngôn ngữ cấu trúc dễ học. Nó cũng là một ngôn ngữ của lập trình viên. Trước đó, các ngôn ngữ lập trình thường được thiết kế như là bài tập có tính chất học thuật nhưng C thì khác. Nó được thiết kế và cài đặt bởi thực tế, bởi các lập trình viên, phản ánh cách họ tiếp cận với công việc lập trình. Các đặc điểm của nó được trau chuốt, kiểm tra, và cân nhắc bởi chính những người sử dụng ngôn ngữ. Kết quả là một ngôn ngữ được các lập trình viên ưa thích.

Sự cần thiết của C++
Trong suốt thập niên 70 và 80, C trở thành ngôn ngữ lập trình nổi trội, và nó vẫn còn được sử dụng cho đến ngày nay. C là một ngôn ngữ thành công và hữu ích, vậy tại sao chúng ta phải cần đển một ngôn ngữ mới. Câu trả lời là tính phức tạp của chương trình.
Trong lịch sử của lập trình, sự gia tăng tính phức tạp của các chương trình đã dẫn đến yêu cầu cần có một cách tốt hơn để quản lý nó. C++ đáp ứng sự cần thiết đó. Để hiểu rõ hơn tại sao quản lý tính phức tạp của chương trình là cơ sở cho sự ra đời của C++, ta xem những vấn đề sau:
Khi máy tính mới được phát minh, lập trình được thực hiện bởi việc đưa vào các chỉ dẫn máy nhị phân bằng cách sử dụng các front panel. Cách tiếp cận này làm việc với các chương trình nhỏ vài trăm chỉ dẫn. Sau đó, ngôn ngữ Assembly được phát minh, các lập trình viên có thể làm việc với chương trình lớn hơn, phức tạp hơn bằng cách sử dụng các biểu diễn ký hiệu của các chỉ dẫn máy. Tiếp tục, ngôn ngữ cấp cao được giới thiệu nhằm cung cấp cho lập trình viên các công cụ có thể quản lý được tính phức tạp của chương trình.
Ngôn ngữ phổ biến đầu tiên là FORTRAN. Trong khi FORTRAN là sự đột phá đầu tiên, nó không phải là ngôn ngữ dễ hiểu và dễ sử dụng. Những năm 60 đánh dấu sự ra đời của ngôn ngữ lập trình có cấu trúc. Sử dụng ngôn ngữ lập trình có cấu trúc cho phép lập trình viên viết các chương trình có tính phức tạp vừa phải một cách dễ dàng. Tuy nhiên, khi kích thước của dự án (project) đến một mức nào đó, tính phức tạp của nó vượt ra khỏi tầm kiểm soát của lập trình viên. Đầu những năm 80, nhiều dự án được tiếp cận theo cấu trúc đã vượt qua giới hạn của nó. Để giải quyết vấn đề này, một cách thức lập trình mới ra đời, được gọi là lập trình hướng đối tượng (OOP – Object Oriented Programming). Lập trình hướng đối tượng là phương thức lập trình giúp cho việc tổ chức các chương trình phức tạp thông qua sự kế thừa, sự gói gọn và đa dạng.
Cuối cùng, mặc dù C là một trong những ngôn ngữ lập trình vĩ đại của thế giới, nó có giới hạn về khả năng quản lý độ phức tạp. Khi một chương trình nhiều hơn từ 25.000 đến 100.000 dòng lệnh, nó trở nên quá khó khăn để hiểu được tổng thể. C++ cho phép vượt qua giới hạn này, giúp cho lập trình viên hiểu và quản lý được các chương trình lớn hơn.
C++ được phát minh bởi Bjarne Stroustrup vào năm 1979 khi đang làm cho Bell Laboratories. Stroustrup mới đầu gọi ngôn ngữ mới là “C with Classes”. Tuy nhiên, vào năm 1983, tên của nó được đổi thành C++. Ngôn ngữ C++ mở rộng C bằng cách thêm vào các đặc điểm hướng đối tượng. Bởi vì C++ được xây dựng dựa trên cở sở của C nên nó bao gồm tất cả các đặc điểm của C, tính chất và lợi ích mang lại. Đây là nguyên nhân cốt yếu làm nên sự thành công của ngôn ngữ C++. Sự phát minh ra C++ không phải là tạo ra một ngôn ngữ lập trình hoàn toàn mới mà nó được nâng cấp từ một ngôn ngữ đã thành công trước đó.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s