II. Lịch sử phát triển ngôn ngữ lập trình:
3. IBM và Fortran
Trước năm 1954, phần cứng lúc ấy không hỗ trợ dấu chấm động. Do đó tất
cả các thao tác với dấu chấm động thì phải được mơ phỏng trong phần mềm, một q trình thơng dịch tốn rất nhiều thời gian. Sự ra đời của IBM 704, máy hỗ trợ tập lệnh đánh chỉ mục và dấu chấm động đã dẫn tới ý tưởng của các ngôn ngữ biên dịch, bởi vì khơng cịn phải tốn chi phí cho việc thông dịch dấu chấm động.
26
Fortran I được thiết kế vào năm 1955 và phát hành vào năm 1957 dành
cho các máy IBM 704
- Tên biến mở rộng lên sáu ký tự (trong Fortran 0 chỉ có hai ký tự) - Có câu lệnh lựa chọn If có 3 nhánh “If (expression) negative, zero,
positive”
- Có vịng lặp Do
- Có định dạng đầu vào/đầu ra
- Các chương trình con do người dùng định nghĩa nhưng không thể biên
dịch riêng được
- Khơng có lệnh định dạng kiểu dữ liệu (các biến có tên bắt đầu với I, J, K, L, M và N thì mặc nhiên là kiểu số nguyên, và còn lại mặc nhiên là kiểu dấu chấm động)
- Trình biên dịch đầu tiên được phát hành vào tháng 4-1957
- Chương trình mà lớn hơn 400 dịng thì khó được biên dịch đúng, bởi vì
sự yếu kém của máy IBM 704
- Tuyên bố táo bạo nhất bởi nhóm phát triển Fortran trong q trình thiết kế ngơn ngữ là mã máy được sinh bởi trình biên dịch sẽ có hiệu suất khoảng một nửa khi viết mã máy bằng tay. Điều này đã làm cho nó trở nên hấp dẫn trước khi nó được phát hành, do đó nó nhanh chóng được sử dụng rộng rãi.
Fortran II được phân phối vào mùa xuân 1958. Nó vá nhiều lỗi trong hệ
thống biên dịch của Fortran I và thêm vào vài chức năng cho ngôn ngữ, quan trọng nhất là các chương trình con được biên dịch riêng biệt.
Ngun lý tách nhỏ: Các chương trình con khơng được biên dịch riêng biệt
thì bất kỳ sự thay đổi trong một chương trình cũng u cầu tồn bộ chương trình được biên dịch lại. Việc biên dịch riêng biệt các chương trình con đã làm cho thời gian biên dịch được rút ngắn đáng kể và là điều kiện để phát triển các
27
Fortran III được phát triển, nhưng nó khơng được phân phối rộng rãi. Lúc
này IBM 1401 bộ nhớ lõi từ của nó chỉ có 8k. Vì vậy trình biên dịch đã sử dụng phương pháp “overlay” để cho phép chạy những chương trình lớn hơn bộ nhớ chính.
Nguyên lý linh động: Để chạy được chương trình lớn hơn bộ nhớ chính thì
chúng được chia thành các khối “mã đối tượng (là một chuỗi các chỉ thị 0, 1)” độc lập gọi là các “overlay” được đưa vào một cấu trúc cây. Một bộ quản lý sẽ
tải các các “overlay” được yêu cầu từ bộ nhớ ngoài vào “vùng” yêu cầu khi nó cần. Ý tưởng cho thấy sự “linh động” trong việc đổi môi trường bộ nhớ và
phân đối tượng thành từng phần có khả năng dịch chuyển với nhau.
Tuy nhiên, Fortran IV lại trở thành một trong những ngơn ngữ lập trình
được sử dụng phổ biến tại thời điểm đó. Được phát triển từ 1960 đến 1962 và được chuẩn hóa thành Fortran 66 (ANSI, 1966). Fortran IV là một sự cải tiến
của Fortran II như
- Khai báo kiểu tường minh cho các biến
- Câu lệnh lựa chọn If theo logic “If (expression) true, false”
- Có thể đặt các chương trình con như là các tham số vào các chương trình con khác.
Nguyên lý vượt nhanh: Trong trường hợp một chương trình muốn gọi
nhiều các chương trình khác như là các tham số (đầu vào) thì phải gán các
chương trình được gọi vào các biến rồi đặt các biến đó vào chương trình muốn
gọi, thì ta có thể đặt thẳng các chương trình được gọi như là tham số vào
chương trình muốn gọi.
Fortran 77
Fortran IV được thay thế bằng Fortran 77, nó trở thành chuẩn mới trong
1978 (ANSI, 1978a). Fortran 77 giữ lại hầu hết các tính năng của Fortran IV và thêm vào xử lý chuỗi ký tự, thay đổi vịng lặp Do cho phù hợp và If có một mệnh đề tùy chọn Else.
28
Fortran 90 (ANSI, 1992) thì khác đáng kể với Fortran 77. Các thay đổi lớn
được thêm vào là mảng động, bản ghi, con trỏ, nhiều câu lệnh chọn lựa, và mơ- đun. Ngồi ra, các chương trình con trong Fortran 90 có thể được gọi một cách đệ quy.
Nguyên lý kết hợp: mơ-đun để nhóm các thủ tục và dữ liệu có liên quan với
nhau để các chương trình khác có thể sử dụng dễ dàng.
Fortran 95 (INCITS/ISO/IEC, 1997) tiếp tục sự phát triển của ngơn ngữ,
nhưng có một vài sự thay đổi như một vòng lặp mới Forall.
Fortran 2003 hỗ trợ lập trình hướng đối tượng, các kiểu dẫn xuất được
tham số hóa, con trỏ thủ tục, và tương tác với ngơn ngữ lập trình C.
Fortran 2008(ISO/IEC 1539-1, 2010) có các tính năng mới như
- Cấu trúc DO CONCURRENT, cho các vịng lặp khơng phụ thuộc lẫn nhau
- Co-array Fortran (CAF), cung cấp một mơ hình thực thi song song