Tuesday, April 26, 2011

Lịch sử ra đời của ngôn ngữ lập trình C.

Có thể nói C là một trong ngôn ngữ lập trình mạnh mẽ nhất hiện nay, C là cha đẻ của C++, là cảm hứng để viết ra C#, Java ... Minh chứng cụ thể nhất là cú pháp của các ngôn ngữ thuộc thế hệ "sinh sau đẻ muộn" luôn hao hao giống C.
Hình 1: Ken Thompson và  Dennis Ritchie
Sẽ hơi vòng vèo nhưng để nói đến sự ra đời của C phải nhắc đến UNIIX. UNIX[1] là tên gọi của một hệ điều hành được phát triển trong những năm giữa thập niên 1960 tại Bell Laboratories bởi Ken Thompson, Dennis Ritchie và cộng sự.

1) Nhu cầu ra đời của C

Giống như những hệ điều hành cùng thời, UNIX được viết bằng ngôn ngữ Assembly, một ngôn ngữ rất khó phát triển và debug. Để khắc phục, Thompson quyết định tạo ra một ngôn ngữ bậc cao thay thế Assembly để phát triển UNIX. Quyết định này đặt nền móng cho sự ra đời của C về sau.
Hình 2: Máy tính DEC-PD7

1) Lịch sử ra đời của C

Sản phầm đầu tiên của Thompson có tên là B[2] ra đời vào khoảng giữa năm 1969. Thompson đã sử dụng B để phát triển UNIX trên máy DEC-PD7[3], mọi chuyện vẫn xuôi chèo mát mái cho đến khi Bell Lab quyết định nâng cấp dàn máy tính của họ từ PD7 lên PD11. Lúc đó B không còn tiếp tục sử dụng được nữa vì nó quá phụ thuộc vào phần cứng của PD7.

Rơi vào tình thế "Tiến thoái lưỡng nan", năm 1971 Thompson buộc phải phát triển một phiên bản mở rộng của B có tên là NB "New B", NB càng ngày càng có nhiều tính năng vượt trộ hơn so với B, trong đó nổi bật nhất là khả năng làm việc độc lập với phần cứng, thành công ngoài mong đợi, Thompson đã quyết định đổi tên cho ngôn ngữ mới từ NB thành C.
C chính thức ra đời và được phát triển liên lục cho đến năm 1973 thì mới đủ ổn định để đưa vào ứng dụng.
Hình 3: Ken Thompson (ngồi) và  Dennis Ritchie làm việc với PD11

3) Ưu điểm của C so với ngôn ngữ cùng thời

Những năm 1960 ngôn ngữ lập trình được sử dụng chủ yếu là  ASMFortran và Pascal. 
  • ASM là ngôn ngữ cho hiệu suất sử dụng bộ nhớ cao nhất nhưng nó lại là gã "Độc cô cầu bại" về khả năng dính lỗi và độ khó lập trình.
  • Fortran tương đối dễ viết nhưng lại không hỗ trợ cấu trúc để xây dựng những chương trình lớn. 
  • Pascal là ngôn ngữ hướng cấu trúc đầu tiên hỗ trợ xây dựng các chương trình lớn, có cú pháp rõ ràng, dễ hiểu nhưng đáng tiếc nó chỉ là một quả ngon mãi không chín, vẫn còn nhiều thiếu sót khiến "đất sống" của Pascal chỉ dừng lại ở phòng thí nghiệm và giảng đường.
Là một ngôn ngữ hướng cấu trúc, cú pháp dễ viết, dễ đọc nhưng lại rất mạnh mẽ. Khi vừa ra đời C đã chiếm được tình cảm của cộng đồng lập trình viên. C gần như trao toàn bộ quyền kiểm soát máy tính cho lập trình viên, không còn gới hạn nào với C cả, nếu có thì chỉ là giới hạn về trí tưởng tượng của bạn mà thôi.
--------------------------------------------------------------------------------------------------------------------------
[1] Unix cũng là một cách viết khác của UNIX(official).
[2] Sở dĩ ngôn ngữ bậc cao đầu tiên có tên là B vì nó dựa trên BCPL(Basic Combined Programming Language), một ngôn ngữ lập trình hệ thống được phát triển cùng thời.
[3] DEC-PD7 là một máy tính mini thế hệ đầu có dung lượng chỉ 8K Words.

1 comment:

  1. Có nội dung đó, câu chữ gần gũi hơn tí nữa là được em !

    ReplyDelete