II. Lịch sử phát triển ngôn ngữ lập trình:
5. Bước đầu tiên tiến tới sự tinh xảo
Vào những năm 1950, các ngôn ngữ lúc bấy giờ được phát triển quanh một kiến trúc duy nhất, một số ngơn ngữ thì cho máy UNIVAC và một số thì cho máy IBM series 700, tất cả đều phụ thuộc vào máy và khơng có một ngơn ngữ nào phổ dụng để biểu diễn các thuật toán. ALGOL là kết quả của quá trình nỗ lực để thiết kế một ngôn ngữ phổ dụng.
GAMM và ACM gặp nhau trong bốn ngày để thiết kế tại Zurich (ngày 27
tháng 5 đến ngày 1 tháng 6 năm 1958, với các mục tiêu sau cho ngôn ngữ mới:
- Cú pháp của ngôn ngữ phải được gần gũi với các ký hiệu tốn học - Nó phải dễ dàng để mơ tả các thuật tốn
- Nó phải được chuyển thành mã máy
ALGOL 58
Nó kế thừa từ Fortran và có một số điểm chú ý như sau - Tên biến có chiều dài bất kỳ
- Mảng có thể có nhiều chiều (mảng một chiều, hai chiều, …) - Tham số được tách biệt bởi hình thức (in & out)
- Câu lệnh phức hợp (begin … end) - Dấu chẩm phẩy kết thúc một câu lệnh
31 - Thao tác gán là :=
- if có một mệnh đề else-if - Khơng có I/O
Mặc dù ban đầu IBM rất tâm huyết, nhưng đã từ bỏ vào giữa năm 1959 và
nó khơng được hiện thực.
ALGOL 60
Chỉnh sửa của ALGOL 58 tại cuộc họp 6 ngày tại Paris. Nó là chuẩn để đưa ra các thuật toán cho hơn 20 năm. Tất cả các ngơn ngữ mệnh lệnh sau này
được dựa trên nó. Là ngôn ngữ độc lập máy đầu tiên và cũng là ngơn ngữ đầu
tiên có cú pháp chính thức được định nghĩa (BNF). Tuy nhiên chưa bao giờ
được sử dụng rộng rãi, đặc biệt là ở Mỹ vì các lý do như thiếu I/O và tập ký tự làm cho các chương trình khơng portable, q mềm dẻo dẫn tới việc khó khăn để hiện thực, BNF vào lúc đó thì q xa lạ và được coi là phức tạp và thiếu sự
hỗ trợ của IBM.
Có các tính năng mới như
- Cấu trúc khối (phạm vi cục bộ)
- Tham số được đặt chương trình con có thể là tên biến hay giá trị - Đệ quy các chương trình con
- Các hàm lồng nhau
Nguyên lý tách khỏi: tách các các lệnh (đặt chúng vào khối) để chúng được
xem như là một câu lệnh, và thu hẹp phạm vi khai báo tên biến, thủ tục, hàm được khai báo trong một khối để chúng không bị xung đột với các biến có cùng tên được sử dụng ở một nơi nào đó trong chương trình cho các mục đích khác
nhau.
Nguyên lý chứa trong: Một hàm lồng trong (hay thủ tục lồng trong) là một
hàm mà bị bao bọc bên trong một hàm khác. Nó chỉ có thể được gọi bởi hàm lồng nó hay bởi các hàm bị lồng trực tiếp hay không trực tiếp trong cùng hàm lồng nó. Nói cách khác, phạm vi của hàm lồng trong bị giới bị giới hạn bởi hàm lồng nó. Hàm lồng nhau là một hình thức che dấu thơng tin và hữu ích
32 trong các tác vụ thủ tục bị phân chia thành các tác vụ con mà chỉ có ý nghĩa trong cục bộ. Nó tránh làm lộn xộn đến các phần khác của chương trình (các hàm, biến khác, ...) mà khơng liên quan đến những phần này. Vì vậy, các hàm lồng nhau bổ sung những khả năng cho các cấu trúc khác như bản ghi hay các
đối tượng.