Professional Documents
Culture Documents
i
ii LẬP TRÌNH HÀM
C uốn sách này trình bày cơ sở lý thuyết và những kỹ thuật lập trình cơ bản theo phong
cách «lập trình hàm» (Functional Programming). Đây là kết quả biên soạn từ các
giáo trình sau nhiều năm giảng dạy bậc đại học và sau đại học ngành công nghệ thông tin
của tác giả tại Đại học Đà Nẵng.
Cuốn sách gồm sáu chương có nội dung như sau :
− Chương 1 giới thiệu quá trình phát triển và phân loại các ngôn ngữ lập trình, những
đặc điểm cơ bản của phong cách lập trình mệnh lệnh. Phần chính của chương
trình bày nhữngnguyên lý lập trình hàm sử dụng ngôn ngữ minh hoạ Miranda.
− Chương 2 trình bày những kiến thức mở đầu về ngôn ngữ Scheme : các khái niệm và
các kiểu dữ liệu cơ sở, cách định nghĩa hàm, biểu thức, kỹ thuật sử dụng đệ quy và
phép lặp.
− Chương 3 trình bày các kiểu dữ liệu phức hợp của Scheme như chuỗi, vectơ, danh
sách và cách vận dụng các kiểu dữ liệu trừu tượng trong định nghĩa hàm.
− Chương 4 trình bày những kiến thức nâng cao về kỹ thuật lập trình hàm, định nghĩa
hàm nhờ phép tính lambda, ứng dụng thuật toán quay lui, truyền thông điệp...
− Chương 5 trình bày chi tiết hơn kỹ thuật lập trình nâng cao với Scheme sử dụng các
cấu trúc dữ liệu : tập hợp, ngăn xếp, hàng đợi, cây và tệp.
− Chương 6 trình bày khái niệm môi trường, cách tổ chức và cấp phát bộ nhớ, cách
vào/ra dữ liệu của Scheme với thế giới bên ngoài.
− Phần phụ lục giới thiệu vắn tắt ngôn ngữ lập trình WinScheme48, hướng dẫn cách
cài đặt và sử dụng phần mềm này.
Cuốn sách này làm tài liệu t khảo cho sinh viên các ngành công nghệ thông tin và
những bạn đọc muốn tìm hiểu thêm về kỹ thuật lập trình cho lĩnh vực trí tuệ nhân tạo,
giao tiếp hệ thống, xử lý ký hiệu, tính toán hình thức, các hệ thống đồ hoạ...
Trong suốt quá trình biên soạn, tác giả đã nhận được từ các bạn đồng nghiệp nhiều
đóng góp bổ ích về mặt chuyên môn, những động viên khích lệ về mặt tinh thần, sự giúp đỡ
tận tình về biên tập để cuốn sách được ra đời. Do mới xuất bản lần đầu tiên, tài liệu tham
khảo chủ yếu là tiếng nước ngoài, chắc chắn rằng nội dung của cuốn sách vẫn còn bộc lộ
nhiều thiếu sót, nhất là các thuật ngữ dịch ra tiếng Việt.
Tác giả xin được bày tỏ ở đây lòng biết ơn sâu sắc về mọi ý kiến phê bình đóng góp của
bạn đọc gần xa.
Đà Nẵng, ngày 06/09/2004
Tác giả.
7
PHAN HUY KHÁNH
L ẬP
T R ÌN H
HÀM
Functional Programming
L ập trình hàm là phong cách lập trình dựa trên định nghĩa hàm sử dụng phép tính lambda
(λ-calculus). Lập trình hàm không sử dụng các lệnh gán biến và không gây ra hiệu ứng
phụ như vẫn gặp trong lập trình mệnh lệnh. Trong các ngôn ngữ lập trình hàm, hàm (thủ tục,
chương trình con) đóng vai trò trung tâm, thay vì thực hiện lệnh, máy tính tính biểu thức. Đã có
rất nhiều ngôn ngữ hàm được phát triển và ứng dụng như Miranda, Haskell, ML, các ngôn ngữ
họ Lisp : Scheme, Common Lisp...
Phần đầu cuốn sách này trình bày cơ sở lý thuyết và những khái niệm cơ bản của
lập trình hàm sử dụng ngôn ngữ minh hoạ là Miranda, một ngôn ngữ thuần tuý hàm
do D. Turner đề xuất 1986. Phần chính trình bày kỹ thuật lập trình hàm trong Scheme,
một ngôn ngữ do Guy Lewis Steele Jr. và G. Jay Sussman đề xuất 1975.
Ngôn ngữ Scheme có tính sư phạm cao, giải quyết thích hợp các bài toán toán học và
xử lý ký hiệu. Scheme có cú pháp đơn giản, dễ học, dễ lập trình. Một chương trình Scheme là
một dãy các định nghĩa hàm góp lại để định nghĩa một hoặc nhiều hàm phức tạp hơn. Scheme
làm việc theo chế độ thông dịch, tương tác với người sử dụng.
Cuốn sách này rất thích hợp cho sinh viên các ngành công nghệ thông tin và
những bạn đọc muốn tìm hiểu về kỹ thuật lập trình ứng dụng trong lĩnh vực trí tuệ
nhân tạo, giao tiếp người-hệ thống, xử lý ký hiệu, tính toán hình thức, thiết kế các
hệ thống đồ hoạ...
VỀ TÁC GIẢ :
Tốt nghiệp ngành Toán Máy tính năm 1979 tại trường Đại học Bách khoa Hà Nội.
Từ 1979 đến nay giảng dạy tại khoa Công nghệ Thông tin, trường Đại học Bách khoa,
Đại học Đà Nẵng. Bảo vệ tiến sĩ năm 1991 tại Pháp. Giữ chức chủ nhiệm khoa
Công nghệ Thông tin 1995-2000.
Hướng nghiên cứu chính : xử lý ngôn ngữ, xử lý đa ngữ, lý thuyết tính toán.
E-mail: phanhuykhanh@dng.vnn.vn