6. Đề xuất lựa chọn công cụ để phát triển chương trình mô phỏng thuật toán
6.1. Một số hệ thống mô phỏng thuật toán chung
Có một số chương trình mô phỏng thuật toán theo ý người dùng. Hay nói cách khác là đưa thuật toán, đưa cấu trúc dữ liệu, đưa dữ liệu vào trên một file kịch bản theo quy định chung của chương trình mô phỏng. Nếu file kịch bản đưa vào phù hợp với ngữ cảnh của chương trình đó (nghĩa là có thể mô tả cấu trúc dữ liệu bằng đồ họa của chương trình) thì nó sẽ mô phỏng các bước của thuật toán theo đúng sự chuẩn bị của người dùng. Các hệ thống này thường được viết bằng ngôn ngữ Java có cùng kiến trúc như đã đề cập trong phần 5 – chương 2 của luận văn này. Ta sẽ phân tích từng hệ thống để thấy được những ưu và nhược điểm của từng hệ thống.
JSAMBA
JSAMBA (xem http://www.cc.gatech.edu/gvu/softviz/algoanim/samba. html) là một phiên bản viết bằng Java của hệ thống mô phỏng POLKA (như đã giới thiệu trong phần lịch sử phát triển thuật toán mô phỏng). JSAMBA cung cấp các đối tượng như: đoạn văn bản (text), đoạn thẳng (lines), hình chữ nhật (rectangle), tam giác (triangle), hình tròn (circles) và đa giác (polygon). Nó có thể vẽ các đối tượng được mô phỏng bằng một tốc độ khá nhanh. Hình ảnh ít bị “giật giật” hình khi chạy mô phỏng. Nó cho phép người dùng thay đổi kích thước của các đối tượng được mô phỏng.
Có thể sử dụng cho các chương trình được viết bằng bất kì một ngôn ngữ nào. Nó sử dụng các thư viện có sẵn của Java để mô phỏng và tận dụng được mọi ưu điểm của Java, dễ tiếp cận qua các trình duyệt web hiện nay.
Hạn chế
Phải chuẩn bị trước một file kịch bản theo đúng yêu cầu của chương trình. Điều này là một hạn chế lớn đối với học sinh trong việc tự học (vì nếu chúng biết chuẩn bị file kịch bản cho mô phỏng theo đúng quy cách của chương trình thì đã không cần phải học lập trình nữa!)
Đối với giáo viên, một hạn chế nổi bật của Jsamba là không hỗ trợ bất kì một cấu trúc dữ liệu có sẵn nào. Điều này làm cho chương trình trở nên gọn và đóng kín nhưng mặt khác nó cũng gây nên một hạn chế là việc chuẩn bị file kịch bản là rất phức tạp vì phải mô hình hóa các cấu trúc dữ liệu đi kèm.
JAWAA (Java and Web – based Algorithm Animation)
JAWAA (http://www.cs.duke.edu/~rodger/tools), hoạt động tương tự như Jsamba. Nó là một ngôn nhữ gồm các lệnh đơn giản để tạo ra những mô phỏng cấu trúc dữ liệu vào hiển thị chúng trên trình duyệt web. Các lệnh được sinh trong file kịch bản và chạy bởi Jawaa Applet. JAWAA cung cấp các lệnh cho phép tạo và di chuyển một số đối tượng cơ bản: hình tròn, đoạn thẳng, đoạn văn bản và khối hình chữ nhật và một số cấu trúc dữ liệu cơ bản: mảng, stack, queue, danh sách, cây và đồ thị. Tốc độ vẽ và mô phỏng nhanh. Các đối tượng mô phỏng được vẽ lại trên màn hình nhờ việc sử dụng kĩ thuật bộ nhớ đệm đôi trong đó bao gồm hai hình ảnh: một được vẽ lên màn hình, một được lưu trữ trong bộ nhớ. Một đặc điểm nữa của Jawwa là nó cung cấp một số điều khiển cho người dùng: các nút lệnh bắt đầu, dừng, chạy từng bước và lựa chọn tốc độ thể hiện mỗi bước của thuật toán trên màn hình.
Cũng giống như Jsamba, Jawaa cũng là một phần mềm mô phỏng được viết bằng Java nên nó có mọi ưu điểm của ngôn ngữ Java.
Ngoài ra, Jawaa còn cung cấp các cấu trúc dữ liệu cơ bản: stack, queue, list, tree….. nên người dùng có thể mô hình những cấu trúc dữ liệu này dễ dàng hơn JSAMBA. Các lệnh trong file kịch bản có thể được thực hiện riêng biệt hoặc trong một khối lệnh.
Một ưu điểm nữa là Jawaa cho phép dùng miễn phí.
Nhược điểm
JAWAA không cho phép người dùng xem lại các bước đã mô phỏng nên việc muốn xem lại một thao tác nào đó đồng nghĩa với việc quan sát lại toàn bộ mô phỏng của một thuật toán.
Hơn nữa, vì có cùng mô hình với JSAMBA nên JAWAA cũng yêu cầu một file kịch bản riêng. Đây là một hạn chế lớn đối với trình độ của học sinh trung học phổ thông.
JANIME
JANIME (http://www.cs.wm.edu/~noonan/jay/index.html) được viết bởi Noonan (trường đại học William và Mary). Đây cũng là một hệ thống mô phỏng trên nền web với mục đích phục vụ giảng dạy và được viết bằng java. JANIME rất giống với JAWWA, nó cũng cung cấp một số cấu trúc dữ liệu (mảng, stack và queue) và các hình vẽ cơ bản như: đoạn văn bản, hình chữ nhật, hình tròn, đoạn thẳng và đa giác. Mặc dù, JANIME chứa ít cấu trúc dữ liệu hơn JAWWA nhưng nó chứa sẵn nhiều lệnh kịch bản hơn và nhiều công cụ điều khiển hơn trong khi mô phỏng.
Tương tự như JAWWA nên nó có hầu hết các ưu điểm giống như JAWWA và một ưu điểm của JANIME là cho phép quan sát lại các bước đã thực hiện.
Nhược điểm
Mặc dù có nhiều ưu điểm hơn cả Jawwa nhưng nói chung các phần mềm mô phỏng có cùng một mô hình thường có nhược điểm giống nhau. Đều khó cho việc tự học của học sinh cũng như thời gian chuẩn bị các file kịch bản của giáo viên khi giảng dạy.