I. Bối cảnh lịch sử
Sự ra đời của máy tính và ngôn ngữ lập trình đầu tiên là một bước ngoặt lớn trong lịch sử phát triển khoa học – công nghệ của nhân loại. Dưới đây là bối cảnh lịch sử dẫn đến sự ra đời của những công cụ mang tính cách mạng này:
1. Bối cảnh lịch sử chung
Thời kỳ Cách mạng Công nghiệp (thế kỷ 18 - 19): Nhu cầu tính toán ngày càng cao trong các lĩnh vực như thiên văn học, hàng hải, thống kê, kỹ thuật, kinh tế… đòi hỏi các phép tính nhanh và chính xác. Các bảng logarit, bảng hàm lượng giác được tính thủ công thường xuyên gặp sai sót.
Ý tưởng về máy tính sơ khai: Charles Babbage (Anh, đầu thế kỷ 19) là người đầu tiên đề xuất ý tưởng về một cỗ máy có thể tự động tính toán theo chương trình định sẵn.
2. Máy tính đầu tiên trong lịch sử
Máy phân tích (Analytical Engine) – Charles Babbage (1837): Được xem là mô hình lý thuyết đầu tiên của máy tính cơ khí. Nó có các thành phần tương tự máy tính hiện đại: bộ điều khiển (control unit), bộ tính toán (ALU), bộ nhớ và cơ chế nhập/xuất dữ liệu. Mặc dù chưa được hoàn thiện do hạn chế về công nghệ, nó đã đặt nền móng lý thuyết cho máy tính sau này.
3. Ngôn ngữ lập trình đầu tiên
Ada Lovelace – Lập trình viên đầu tiên (1843): Ada Lovelace, một nhà toán học người Anh và là cộng sự của Charles Babbage, đã viết các ghi chú về cách lập trình cho Máy phân tích. Trong đó, bà mô tả một thuật toán để tính các số Bernoulli – được xem là chương trình máy tính đầu tiên trên thế giới. Vì điều này, Ada được vinh danh là lập trình viên đầu tiên trong lịch sử.
4. Các bước phát triển tiếp theo
Sau giai đoạn của Babbage và Ada Lovelace, phải đến thế kỷ 20, máy tính điện tử mới thực sự xuất hiện:
- Máy tính điện tử đầu tiên: ENIAC (1945, Mỹ) là máy tính điện tử đa năng đầu tiên, sử dụng bóng đèn chân không.
- Ngôn ngữ lập trình cấp cao đầu tiên: FORTRAN (1957) do IBM phát triển để phục vụ tính toán khoa học và kỹ thuật.
- Các ngôn ngữ khác như COBOL (1959), LISP (1958) sau đó lần lượt ra đời phục vụ các mục đích khác nhau.
II. Sự ra đời của máy tính điện tử đầu tiên
1. ENIAC (1946) – Electronic Numerical Integrator and Computer
Được phát triển bởi John Presper Eckert và John Mauchly tại Đại học Pennsylvania, ENIAC được tài trợ bởi quân đội Mỹ để tính bảng đạn đạo pháo binh. Nó đã khai sinh ra kỷ nguyên máy tính điện tử quy mô lớn.
- Kiến trúc & Công nghệ: Nặng 30 tấn, sử dụng ~18.000 đèn chân không, chiếm diện tích ~170 m². Tốc độ tính toán nhanh gấp hàng nghìn lần máy cơ.
- Cách lập trình: Không có bộ nhớ chứa lệnh (stored-program). Lập trình được thực hiện bằng cách cắm dây và bật công tắc, một công việc tốn nhiều thời gian và kém linh hoạt.
- Ý nghĩa: Chứng minh tính khả thi của máy tính điện tử và thúc đẩy nghiên cứu mô hình stored-program.
2. UNIVAC I (1951) – Universal Automatic Computer
Do Eckert và Mauchly phát triển sau ENIAC, UNIVAC I là máy tính thương mại đầu tiên được bán cho chính phủ và doanh nghiệp. Nó nổi tiếng với việc dự báo chính xác kết quả bầu cử Tổng thống Mỹ năm 1952.
- Kiến trúc & Công nghệ: Sử dụng ~5.200 đèn chân không, bộ nhớ đường trễ thủy ngân, và đặc biệt là băng từ (magnetic tape) để nhập/xuất dữ liệu nhanh chóng.
- Cách lập trình: Hỗ trợ mô hình stored-program, nơi chương trình và dữ liệu cùng được lưu trong bộ nhớ, một cải tiến vượt bậc so với ENIAC.
- Ý nghĩa: Đưa máy tính từ phòng thí nghiệm ra ứng dụng thực tiễn, tạo tiền đề cho ngành công nghiệp máy tính thương mại.
III. Ngôn ngữ lập trình đầu tiên
a. Bối cảnh hình thành
Việc lập trình bằng mã máy (dãy số 0 và 1) rất khó khăn, dễ sai sót và khó bảo trì. Điều này đã thúc đẩy sự ra đời của các ngôn ngữ cấp cao hơn để tăng năng suất và giảm lỗi.
b. Assembly
Assembly là ngôn ngữ lập trình cấp thấp, sử dụng các từ gợi nhớ (mnemonics) như ADD, LOAD, JMP thay cho mã máy. Nó cho phép kiểm soát tài nguyên tối đa và đạt hiệu năng cao nhưng lại phụ thuộc vào kiến trúc máy, khó đọc và không di động.
c. FORTRAN
Ra đời năm 1957 bởi nhóm của John Backus tại IBM, FORTRAN (Formula Translation) là ngôn ngữ cấp cao đầu tiên được phổ biến rộng rãi. Nó cho phép các nhà khoa học và kỹ sư viết chương trình bằng các công thức gần với ký hiệu toán học. FORTRAN đã tăng năng suất lập trình một cách vượt trội và đặt nền móng cho công nghệ trình biên dịch hiện đại.
d. Ảnh hưởng & Ngôn ngữ cùng thời
Sự ra đời của Assembly và FORTRAN đã hình thành nên chuỗi công cụ phát triển phần mềm (assembler, compiler, linker). Cùng thời kỳ này, các ngôn ngữ quan trọng khác cũng xuất hiện:
- FLOW-MATIC: Do Grace Hopper phát triển, là tiền thân của COBOL, phục vụ xử lý dữ liệu kinh doanh.
- LISP (1958): Dành cho lĩnh vực trí tuệ nhân tạo, khai sinh ra lập trình biểu tượng.
IV. Ảnh hưởng và kết luận
1. Ảnh hưởng đối với khoa học và công nghệ
Các máy tính đầu tiên đã cách mạng hóa khoa học, cho phép giải quyết các bài toán khổng lồ trong mô phỏng hạt nhân, mật mã học, thiên văn và khí tượng. Chúng cũng định hình hướng phát triển của phần cứng, dẫn đến sự thay thế bóng đèn chân không bằng transistor.
2. Ảnh hưởng đối với phần mềm và tư duy lập trình
FORTRAN đã đưa lập trình lên một mức độ trừu tượng cao hơn, khai sinh ra ngành kỹ nghệ phần mềm. Khái niệm "ngôn ngữ lập trình bậc cao" cho phép phát triển các chương trình phức tạp và tái sử dụng mã nguồn một cách dễ dàng.
3. Tác động xã hội và nghề nghiệp
Các nghề nghiệp mới như lập trình viên và kỹ sư phần mềm xuất hiện. Thị trường máy tính thương mại hình thành, thay đổi cách các tổ chức xử lý dữ liệu và đặt nền tảng cho giáo dục khoa học máy tính.
4. Kết luận
Giai đoạn sơ khai trước năm 1960 là bước ngoặt quyết định, biến máy tính từ công cụ thí nghiệm thành hệ thống ứng dụng rộng rãi. Các ngôn ngữ lập trình đầu tiên đã tạo tiền đề cho sự phát triển không ngừng của ngành công nghệ phần mềm, định hình thế giới kỹ thuật số mà chúng ta đang sống ngày nay.