Scheme

Tháng Mười Hai 18, 2009 Để lại bình luận Go to comments

Scheme là ngôn ngữ lập trình từng được MIT sử dụng để dạy cho sinh viên (hình như giờ đã thay bằng Python). Mình biết đến Scheme qua một bài viết trên blog Khoa học máy tính. Mặc dù mình chỉ lọ mọ tìm hiểu sơ sơ về nó (chính xác hơn là về Scheme và IDE của MIT), nhưng cũng kịp có vài ấn tượng.

Thứ nhất, Scheme có tương đối ít khái niệm hơn các ngôn ngữ phổ biến, như C#, C++, Java, v.v. Điều này giúp bạn tập trung vào những yếu tố quan trọng khác trong lập trình, thay vì tiêu tốn thời gian và công sức vào những chi tiết cú pháp vụn vặt.

Thứ hai, chương trình dùng Scheme viết ra nhìn rất ngắn gọn và đẹp (nói chung các ngôn ngữ lập trình hàm đều thế). Ví dụ:

(define (even-fibs n) 
(accumulate +  
            0  
            (filter even?   
                    (map fib    
                         (enumerate-interval 0 n)))))

Đoạn mã trên là một phần của chương trình tính tổng các số chẵn trong (n+1) số Fibonacci đầu tiên. Bạn có thể thấy từng bước tính toán nếu đọc ngược từ dưới lên:

  • Liệt kê (enumerate) các số từ 0 đến n,
  • Ánh xạ (map) dãy trên sang dãy Fibonacci. Nôm na là tạo danh sách các số Fibonacci từ thứ 0 đến thứ n,
  • Lọc (filter) các số chẵn trong danh sách,
  • Tính tổng (accumulate) các số vừa được lọc.

Thứ ba, ngay cả một chương trình Scheme cỡ trung bình cũng khá khó viết. Nếu chưa có một phác thảo tương đối rõ ràng về chương trình của mình, thì thậm chí cái bạn viết ra có thể không chạy được chứ chưa nói đến chạy đúng hay sai, nhất là khi dùng IDE của MIT. Có lẽ chính sự quá dễ dàng trong việc viết ra một chương trình “chạy được” bằng các ngôn ngữ như C, C++ (cái này BK chọn để dạy trong môn Kĩ thuật lập trình), Java, C# khiến cho chúng ta nhiễm thói quen “mì ăn liền”, đọc yêu cầu xong là nhảy vào lập trình liền, và kết quả là chương trình rất rối rắm và dễ mắc lỗi.

Nếu quan tâm tới Scheme, bạn có thể tham khảo thêm ở trang web của môn nàyMIT OCW. Quyển sách giáo khoa chính—Structure and Interpretation of Computer Programs—là một trong những quyển sách về máy tính hay nhất mà mình từng đọc. Bạn có thể tìm thấy ở đó không chỉ những hướng dẫn về lập trình Scheme mà còn rất nhiều lí thuyết thú vị, như thiết kế chương trình, tính trừu tượng, tính nondeterministic, v.v. Đọc nó, và bạn sẽ không bao giờ còn băn khoăn liệu mình có chọn sai ngành.

  1. Tháng Mười Một 8, 2011 lúc 7:57 sáng

    em chào anh Hải. em có bài tập này sử dụng ngôn ngữ Scheme anh có thể giải giúp em được không ạ.
    . Cho 8 số thực X1, Y1, X2, Y2, X3, Y3, X4, Y4 tương ứng lần lượt là toạ độ của bốn điểm A, B, C,
    D, trong mặt phẳng toạ độ Đêcac xOy. Viết hàm Scheme thực hiện các công việc sau :
    – Kiểm tra ba điểm nào đó bất kỳ có lập thành một tam giác không ?
    – Nếu đó là một tam giác, hãy xét xem :
    + Điểm còn lại có nằm bên trong tam giác này không ?
    + Tính khoảng cách từ điểm còn lại đến ba điểm đã lập thành một tam giác.
    Cảm ơn anh nhiều: tddiep80@gmail.com

  2. Tháng Mười Hai 23, 2011 lúc 12:43 chiều

    Chào bạn. Rất tiếc là đã lâu rồi minh không xài Scheme nên không thể giúp gì được. Tuy nhiên có vẻ bài này chỉ khó khăn ở phần thuật toán thôi, bạn có thể tham khảo các phương pháp trong đồ họa máy tính. Ví dụ D nằm trong tam giác ABC nếu giao điểm của AD và BC nằm trên cạnh BC, và giao điểm BD và AC nằm trên cạnh AC, v.v

  1. No trackbacks yet.

Gửi phản hồi

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Log Out / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Log Out / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Log Out / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Log Out / Thay đổi )

Connecting to %s

%d bloggers like this: