Tiểu luận 40 nguyên tắc sáng tạo ứng dụng trong tin học và quá trình tiến hóa ngôn ngữ lập trình
- 43 trang
- file .pdf
ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
Phương Pháp Luận Sáng Tạo
Trong Khoa Học
40 nguyên tắc sáng tạo ứng dụng trong
tin học và quá trình tiến hóa ngôn ngữ
lập trình
Giáo viên hướng dẫn
GS.TSKH. Hoàng Kiếm
Học viên: Huỳnh Lê Quốc Vương MHV: CH1101158
04 - 2012
LỜI MỞ ĐẦU: .............................................................................................................. 4
I. 40 Nguyên tắc sáng tạo và ứng dụng trong tin học: ............................... 5
1. Nguyên tắc phân nhỏ: .................................................................................... 5
2. Nguyên tắc “tách khỏi”: ................................................................................ 5
3. Nguyên tắc phẩm chất cục bộ: ....................................................................... 6
4. Nguyên tắc phản đối xứng: ............................................................................ 7
5. Nguyên tắc kết hợp: ...................................................................................... 7
6. Nguyên tắc vạn năng: .................................................................................... 8
7. Nguyên tắc “chứa trong”: .............................................................................. 8
8. Nguyên tắc phản trọng lượng: ....................................................................... 8
9. Nguyên tắc gây ứng suất sơ bộ: ..................................................................... 9
10. Nguyên tắc thực hiện sơ bộ: .......................................................................... 9
11. Nguyên tắc dự phòng: ................................................................................. 10
12. Nguyên tắc đẳng thế: ................................................................................... 10
13. Nguyên tắc đảo ngược:................................................................................ 11
14. Nguyên tắc cầu (tròn) hoá: .......................................................................... 11
15. Nguyên tắc linh động: ................................................................................. 11
16. Nguyên tắc giải “thiếu” hoặc “thừa”: .......................................................... 12
17. Nguyên tắc chuyển sang chiều khác: ........................................................... 12
18. Nguyên tắc sử dụng các dao động cơ học: ................................................... 13
19. Nguyên tắc tác động theo chu kỳ: ................................................................ 13
20. Nguyên tắc liên tục tác động có ích ............................................................. 14
21. Nguyên tắc “vượt nhanh”: ........................................................................... 14
1
22. Nguyên tắc biến hại thành lợi: ..................................................................... 15
23. Nguyên tắc quan hệ phản hồi: ..................................................................... 15
24. Nguyên tắc sử dụng trung gian: ................................................................... 15
25. Nguyên tắc tự phục vụ: ............................................................................... 16
26. Nguyên tắc sao chép (copy): ....................................................................... 16
27. Nguyên tắc “rẻ” thay cho “đắt”: .................................................................. 17
28. Thay thế sơ đồ cơ học: ................................................................................ 17
29. Sử dụng các kết cấu khí và lỏng: ................................................................. 18
30. Sử dụng vỏ dẻo và màng mỏng: .................................................................. 18
31. Sử dụng các vật liệu nhiều lỗ:...................................................................... 18
32. Nguyên tắc thay đổi màu sắc: ...................................................................... 19
33. Nguyên tắc đồng nhất:................................................................................. 19
34. Nguyên tắc phân hủy hoặc tái sinh các phần: .............................................. 20
35. Thay đổi các thông số hoá lý của đối tượng:................................................ 20
36. Sử dụng chuyển pha: ................................................................................... 20
37. Sử dụng sự nở nhiệt: ................................................................................... 21
38. Sử dụng các chất oxy hoá mạnh: ................................................................. 21
39. Thay đổi độ trơ:........................................................................................... 22
40. Sử dụng các vật liệu hợp thành (composite): ............................................... 22
II. Lịch sử phát triển ngôn ngữ lập trình: .................................................... 23
1. Zuse’s Plankalkül: ....................................................................................... 24
2. Các ngôn ngữ mã giả:.................................................................................. 24
3. IBM và Fortran ........................................................................................... 25
4. Lập trình hàm .............................................................................................. 28
2
5. Bước đầu tiên tiến tới sự tinh xảo ................................................................ 30
6. Khởi đầu của ngôn ngữ cho doanh nghiệp ................................................... 32
7. Bắt đầu khái niệm chia sẻ thời gian ............................................................. 33
8. Ngôn ngữ cho cả khoa học và doanh nghiệp : PL/I ...................................... 33
9. Hai ngôn ngữ động đầu tiên : APL và SNOBOL ......................................... 34
10. Bắt đầu trừu tượng hóa dữ liệu : SIMULA 67 ............................................. 35
11. Thiết kế trực giao : ALGOL 68 ................................................................... 36
12. Lập trình dựa trên Logic : Prolog ................................................................ 36
13. Ngôn ngữ được thiết kế công phu nhất : Ada ............................................... 37
14. Lập trình hướng đối tượng : Smalltalk ......................................................... 38
15. Kết hợp giữa lập trình mệnh lệnh và lập trình hướng đối tượng: C++ .......... 38
16. Một ngôn ngữ hướng đối tượng dựa trên mệnh lệnh : Java .......................... 39
17. Các ngôn ngữ kịch bản cho Web ................................................................. 39
18. Xu hướng hiện nay ...................................................................................... 40
III. Kết luận:............................................................................................................ 41
TÀI LIỆU THAM KHẢO:.......................................................................................... 42
3
Lời mở đầu:
Nếu ai đó chưa biết, chưa đọc, chưa nghiên cứu về Genrikh Saulovich
Atchuller và Lý thuyết giải các bài toán sáng chế (TRIZ) của ông thì quả là
một thiệt thòi đối với người đó. Tại sao vậy? Bởi ông là một tài năng lớn, một
người có nhân cách sáng ngời, là một nhà khoa học rất đáng kính trọng. Đặc
biệt với TRIZ 40 nguyên tắc sáng tạo, ông đã góp phần tạo nên sự phát triển
cho thế giới này.
Khi con người sinh ra bản năng đã ham muốn tìm tòi học hỏi khám phá
những điều mới mẻ. Nhờ có khả năng tư duy sáng tạo thiên tài mà những nhà
phát minh như Leonardo Da Vinci, Archimedes hay Thomas Edison, … đã làm
thay đổi cuộc sống của nhân loại này. Vậy đối với những người bình thường
chúng ta thì sao, làm sao có thể có những cải tiến đóng góp cho xã hội? Thầy
Atchuller đã hiểu được điều đó và năm 1946, ông đã nung nấu ý định đầu tiên
xây dựng một lý thuyết giúp bất kỳ một người bình thường nào cũng có thể
thực hiện được các sáng chế mà sau này ông đặt tên là “Lý thuyết giải các bài
toán sáng chế” (TRIZ). Với 40 nguyên tắc sáng tạo cơ bản này có thể nói nó đã
tổng quát được hầu như hàng triệu phát minh cải tiến trong cuộc sống con
người trong thời gian qua. Và lĩnh vực công nghệ thông tin cũng không phải là
ngoại lệ. Trong bài luận này sẽ trình bày 40 nguyên tắc sáng tạo và những ví
dụ trong công nghệ thông tin với từng nguyên tắc (mỗi nguyên tắc sẽ có hai ví
dụ) cho bạn dễ hình dung. Ngoài ra, nhờ có sự phát triển mạnh mẽ của phần
cứng từ máy dệt tự động Jacquard đến những siêu máy tính ngày nay mà các
ngôn ngữ lập trình cũng được tiến hóa theo. Chúng tiến hóa theo cách nào và
đem lại những gì? Chúng ta hãy cùng xem sự tiến hóa của chúng trong các
nguyên tắc sáng tạo như thế nào nhé.
4
I. 40 Nguyên tắc sáng tạo và ứng dụng trong tin học:
1. Nguyên tắc phân nhỏ:
Nội dung:
- Chia đối tượng thành các phần độc lập.
- Làm đối tượng trở nên tháo lắp được.
- Tăng mức độ phân nhỏ đối tượng.
Ví dụ:
- Cách tiếp cận top-down trong thiết kế hệ thống, chia hệ thống thành
nhiều phần nhỏ hơn. Bằng cách đó, chia hệ thống phức tạp thành nhiều
mô-đun ít phức tạp hơn. Quá trình này có thể được thực hiện lại cho
từng mô-đun cho đến khi các mô-đun không còn bất cứ sự phức tạp nào
nữa.
- Một ứng dụng có thể được xây dựng dựa trên các dịch vụ độc lập có sẵn
trong mạng cục bộ hay qua Internet chẳng hạn như Web-service (thông
qua các Web-service của Yahoo, ta có thể xây dựng một ứng dụng chat
tương tự như Yahoo! Messenger cho riêng mình). Tương tự, các ứng
dụng có thể được xây dựng bằng cách sử dụng các thành phần thương
mại (ta có thể sử dụng mCore.NET để tích hợp gửi và nhận tin nhắn
SMS vào các ứng dụng chạy trên nền tảng .NET) hay miễn phí (từ
kernel của Linux mà hiện này có hơn 100 bản phân phối như Mint,
Ubuntu, Fedora, …)
2. Nguyên tắc “tách khỏi”:
Nội dung:
- Tách phần gây “phiền phức” (tính chất “phiền phức”) hay ngược lại
tách phần duy nhất “cần thiết” (tính chất “cần thiết”) ra khỏi đối tượng.
Ví dụ:
5
- Trong cơ chế nén âm thanh MP3 loại bỏ đi các phần tín hiệu của âm
thanh mà đa số mọi người không thể nghe được nhờ các đặc điểm chức
năng nghe của con người. Tượng tự, trong kỹ thuật nén ảnh như JPEG
loại bỏ thông tin để đạt được tỉ lệ nén ảnh cao hơn của một ảnh mà
không biến dạng ảnh quá nhiều.
- Khi dữ liệu ít, ta lưu trữ chúng ở vài máy tính trong phòng, trong công
ty. Nhưng khi dữ liệu lớn sẽ khó khăn trong việc bảo trì, mở rộng, …
Do đó, ta phải nhờ tới data center.
3. Nguyên tắc phẩm chất cục bộ:
Nội dung:
- Chuyển đối tượng (hay môi trường bên ngoài, tác động bên ngoài) có
cấu trúc đồng nhất thành không đồng nhất.
- Các phần khác nhau của đối tượng phải có các chức năng khác nhau.
- Mỗi phần của đối tượng phải ở trong những điều kiện thích hợp nhất đối
với công việc.
Ví dụ:
- Mô hình: Blackboard. Được sử dụng cho các vấn đề không xác định
được chiến lược giải pháp. Ý tưởng là một tập hợp các chương trình độc
lập mà cùng làm việc cộng tác trên một cấu trúc dữ liệu chung. Mỗi
chương trình giải quyết một phần của tổng thế công việc, và tất cả
chương trình làm việc với nhau về giải pháp. Các chương trình chuyên
biệt này độc lập lẫn nhau. Chúng không gọi lẫn nhau, không có một sự
tuần tự nào định trước về hoạt động của chúng. Thay vào đó, chúng
được điều khiển bởi hệ thống chủ yếu dựa vào trạng thái hiện tại của
tiến độ. Một thành phần điều khiển trung tâm sẽ đánh giá trạng thái hiện
tại của việc xử lý và điều phối các chương trình. Cách thức điều khiển
hướng dữ liệu này làm thử nghiệm với các thuật toán khác nhau có thể,
6
và cho phép việc suy ra qua các thử nghiệm “heuristic” để điều khiển
việc xử lý.
- Sửa một danh sách liên kết của các đối tượng xe máy thành một danh
sách liên kết của các đối tượng xe. Việc trừu tượng hóa cao hơn này sẽ
cho phép các đối tượng không đồng bộ (xe đạp, xe hơi, …) được lưu trữ
trong cùng lớp bộ chứa và ngược lại.
4. Nguyên tắc phản đối xứng:
Nội dung:
- Chuyển đối tượng có hình dạng đối xứng thành không đối xứng (nói
chung giảm bật đối xứng).
Ví dụ:
- Chuẩn của sắp xếp nhanh thường lấy phần tử giữa làm phần tử chốt.
Bằng cách sử dụng phần tử trung vị trong ba phần tử đứng đầu, đứng
giữa và đứng cuối làm phần tử chốt thường sẽ đạt được hiệu suất tốt
hơn.
- Trong thanh công cụ tìm kiếm bài hát, thay vì chỉ nhập vào tên bài hát.
Ta có thể nhập vào tên ca sĩ, tên nhạc sĩ, một đoạn bài hát, … để giúp
người dùng thuận lợi hơn trong việc tìm kiếm bài hát.
5. Nguyên tắc kết hợp:
Nội dung:
- Kết hợp các đối tượng đồng nhất hoặc các đối tượng dùng cho các hoạt
động kế cận.
- Kết hợp về mặt thời gian các hoạt động đồng nhất hoặc kế cận.
Ví dụ:
- Một trang web có thể được xây dựng từ nhiều khung (frame). Mỗi
frame có thể được tải từ một server khác nhau. Điều này làm tăng tốc độ
tải trang do nhiều kết nối được sử dụng đồng thời.
7
- Một tập đĩa RAID-5 phân chia một tập tin qua nhiều đĩa có thể truy xuất
để lấy hay lưu trữ tập tin đó nhanh hơn vì nó được lấy/lưu trữ đồng thời.
6. Nguyên tắc vạn năng:
Nội dung:
- Đối tượng thực hiện một số chức năng khác nhau, do đó không cần sự
tham gia của các đối tượng khác.
Ví dụ:
- Các phần mềm tăng tốc hệ thống như “tuneup utilities” có chức năng 1-
click có thể dọn các registry, loại bỏ các shortcut bị phá hủy, xóa các tập
tin tạm, phân mảnh ổ đĩa, …
- Các trình duyệt web như IE, Firefox hay Google Chrome thì trong phần
khung mà để ta nhập địa chỉ web vào thì ta cũng có thể nhập các từ khóa
tìm kiếm vào đó để tìm kiếm thay vì truy cập các trang web tìm kiếm.
7. Nguyên tắc “chứa trong”:
Nội dung:
- Một đối tượng được đặt bên trong đối tượng khác và bản thân nó lại
chứa đối tượng thứ ba ...
- Một đối tượng chuyển động xuyên suốt bên trong đối tượng khác.
Ví dụ:
- Kiến trúc bảy tầng OSI trong network.
- Cấu trúc dữ liệu như danh sách liên kết, cây. Các thuật toán đệ quy như:
sắp xếp nhanh, backtracking, …
8. Nguyên tắc phản trọng lượng:
Nội dung:
- Bù trừ trọng lượng của đối tượng bằng cách gắn nó với các đối tượng
khác có lực nâng.
8
- Bù trừ trọng lượng của đối tượng bằng tương tác với môi trường như sử
dụng các lực thủy động, khí động...
Ví dụ:
- Để tăng hiệu xuất của các web server, ta có thể chia một trang thành
nhiều frame và lưu trữ các frame trong các ổ đĩa khác nhau hay trên các
server khác nhau. Người ta có thể phân bổ các ảnh lớn hay từng mảnh
dữ liệu qua các ổ đĩa khác nhau thay vì đặt chúng chung một đĩa. Hiệu
xuất sẽ tăng lên.
- Trong các hàm băm, ta phân bổ các đối tượng vào một tập các bộ chứa
trong khi giữ số lượng của các đối tượng trong một bộ chứa xấp xỉ bằng
nhau.
9. Nguyên tắc gây ứng suất sơ bộ:
Nội dung:
- Gây ứng suất trước với đối tượng để chống lại ứng suất không cho phép
hoặc không mong muốn khi đối tượng làm việc (hoặc gây ứng suất
trước để khi làm việc sẽ dùng ứng suất ngược lại).
Ví dụ:
- Giả sử rằng một người sử dụng phải chờ đợi trong một khoảng thời gian
cho một hành động thực thi nào đó (tìm kiếm, sao chép, cài đặt chương
trình, ...). Nếu ta thông báo cho người sử dụng rằng sẽ mất khoảng 5
phút, nhưng nếu thời gian thực thi kéo dài hơn thì người sử dụng sẽ
không thích. Nếu ta thông báo mất 10 phút và thời gian thực thi ít hơn
thì người sử dụng sẽ vui hơn.
- Khi một ứng dụng bắt đầu đọc từ một cơ sở dữ liệu, ta có thể tải (load)
các bảng quan trọng hay các chỉ mục trước.
10. Nguyên tắc thực hiện sơ bộ:
Nội dung:
9
- Thực hiện trước sự thay đổi cần có, hoàn toàn hoặc từng phần, đối với
đối tượng.
- Cần sắp xếp đối tượng trước, sao cho chúng có thể hoạt động từ vị trí
thuận lợi nhất, không mất thời gian dịch chuyển.
Ví dụ:
- Đọc cache ổ đĩa trước chuẩn bị cho việc đọc đĩa thực sự.
- Driver máy in kiểm thử tính sẵn sàng của máy in trước khi người sử
dụng hoàn tất các thiết lập của họ
11. Nguyên tắc dự phòng:
Nội dung:
- Bù đắp độ tin cậy không lớn của đối tượng bằng cách chuẩn bị trước các
phương tiện báo động, ứng cứu, an toàn.
Ví dụ:
- Hệ điều hành sao lưu dữ liệu các tập tin quan trọng của nó trước khi
được sử dụng. Nếu xảy ra lỗi có thể khôi phục lại mà không phải cài lại.
- Thiết lập thời gian timeout cho các thao tác như truy vấn cơ sở dữ liệu,
kết nối tới một dịch vụ mạng, …
12. Nguyên tắc đẳng thế:
Nội dung:
- Thay đổi điều kiện làm việc để không phải nâng lên hay hạ xuống các
đối tượng.
Ví dụ:
- Giữ các kết quả trung gian mà phải mất khá nhiều thời gian để tính toán.
- Sắp xếp lại một cơ sở dữ liệu hay tập tin chỉ khi nào thực sự cần thiết.
Thường thì dữ liệu bị xóa bằng một cái cờ đánh dấu nó bị xóa. Các bản
ghi trong cơ sở dữ liệu không phải di chuyển mặc dù chúng dường như
có vị trí mới trong cơ sở dữ liệu.
10
13. Nguyên tắc đảo ngược:
Nội dung:
- Thay vì hành động như yêu cầu bài toán, hành động ngược lại (ví dụ,
không làm nóng mà làm lạnh đối tượng)
- Làm phần chuyển động của đối tượng (hay môi trường bên ngoài) thành
đứng yên và ngược lại, phần đứng yên thành chuyển động.
Ví dụ:
- Vài phép tính toán có thể gây ra tràn bộ nhớ. Bằng cách thay đổi thứ tự
tính toán có thể ngăn chặn việc này. Công thức p = x * y / z; có thể được
viết bằng p = (x / z) * y hay p = y / z * x; Ta có thể chọn một trong các
công thức phụ thuộc vào mối quan hệ giá trị giữa x, y, z.
- Các hệ thống backtracking
14. Nguyên tắc cầu (tròn) hoá:
Nội dung:
- Chuyển những phần thẳng của đối tượng thành cong, mặt phẳng thành
mặt cầu, kết cấu hình hộp thành kết cấu hình cầu.
- Sử dụng các con lăn, viên bi, vòng xoắn.
- Chuyển sang chuyển độg quay, sử dung lực ly tâm.
Ví dụ:
- Thay tìm kiếm tuyến tính bằng tìm kiếm phức tạp hơn như tìm kiếm nhị
phân.
- Chuyển tọa độ từ chuẩn Cartesian sang Polar để dễ dàng hơn trong một
số tính toán.
15. Nguyên tắc linh động:
Nội dung:
- Cần thay đổi các đặt trưng của đối tượng hay môi trường bên ngoài sao
cho chúng tối ưu trong từng giai đoạn làm việc.
11
- Phân chia đối tượng thành từng phần, có khả năng dịch chuyển với
nhau.
Ví dụ:
- Thay đổi chế độ nhìn trong một ứng dụng như PowerPoint. Chỉnh sửa
văn bản trong chế độ outline thì sẽ dàng và nhìn tổng quan hơn trong
chế độ trình bày.
- Các gói dữ liệu thông minh định tuyến bản thân chúng trên network.
16. Nguyên tắc giải “thiếu” hoặc “thừa”:
Nội dung:
- Nếu như khó nhận được 100% hiệu quả cần thiết, nên nhận ít hơn hoặc
nhiều hơn “một chút”. Lúc đó bài toán có thể trở nên đơn giản hơn và
dễ giải hơn.
Ví dụ:
- Để sắp xếp một mảng lớn thì thì thuật toán sắp xếp nhanh thường được
sử dụng. Tuy nhiên khi các mảng con để sắp xếp trở nên nhỏ, ít hơn 10
phần tử, các thuật toán khác được sử dụng thực thi tốt hơn.
- Để nâng cao độ tin cậy của tàu vũ trụ, nhiều bộ xử lý khác nhau tính
toán cùng đầu vào với nhiều thuật toán khác nhau. Nếu kết quả nào
giống nhau nhiều nhất thì đó là kết quả đúng.
17. Nguyên tắc chuyển sang chiều khác:
Nội dung:
- Những khó khăn do chuyển động (hay sắp xếp) đối tượng theo đường
(một chiều) sẽ được khắc phục nếu cho đối tượng khả năng di chuyển
trên mặt phẳng (hai chiều). Tương tự, những bài toán liên quan đến
chuyển động (hay sắp xếp) các đối tượng trên mặt phẳng sẽ được đơn
giản hoá khi chuyển sang không gian (ba chiều).
- Chuyển các đối tượng có kết cấu một tầng thành nhiều tầng.
12
- Đặt đối tượng nằm nghiêng.
- Sử dụng mặt sau của diện tích cho trước.
- Sử dụng các luồng ánh sáng tới diện tích bên cạnh hoặc tới mặt sau của
diện tích cho trước.
Ví dụ:
- Một hàng đợi mà khi lớn dần và không còn chỗ để cho một phần tử mới
vào thì có thể đặt phần tử đó vào ổ đĩa cho đến khi còn chỗ trống trong
bộ nhớ chính.
- Sử dụng ký hiệu thập lục phân cho các giá trị có thể làm cho các thao
tác với bit trở nên dễ hiểu hơn.
18. Nguyên tắc sử dụng các dao động cơ học:
Nội dung:
- Làm đối tượng dao động. Nếu đã có dao động, tăng tầng số dao động (
đến tầng số siêu âm).
- Sử dụng tầng số cộng hưởng.
- Thay vì dùng các bộ rung cơ học, dùng các bộ rung áp điện.
- Sử dụng siêu âm kết hợp với trường điện từ.
Ví dụ:
- Sử dụng thuật toán MIN-MAX luân phiên nhau trong trò chơi và trong
trí tuệ nhân tạo.
- Thuật toán round robin đọc luân phiên từ các hàng đợi.
19. Nguyên tắc tác động theo chu kỳ:
Nội dung:
- Chuyển tác động liên tục thành tác động theo chu kỳ (xung).
- Nếu đã có tác động theo chu kỳ, hãy thay đổi chu kỳ.
- Sử dụng các khoảng thời gian giữa các xung để thực hiện tác động khác.
-
13
Ví dụ:
- Bộ thu gom rác chỉ thực hiện khi rác trên một ngưỡng nhất định.
- Trong vài trường hợp ta nên cập nhật một bảng nào đó của cơ sở dữ liệu
chỉ một lần trên một ngày và tính toán lại việc sắp xếp chỉ mục một lần
một ngày thay vì mỗi lần cập nhật đơn lẻ. Tương tự loại bỏ các mục
được đánh dấu xóa chỉ một lần một ngày.
20. Nguyên tắc liên tục tác động có ích
Nội dung:
- Thực hiện công việc một cách liên tục (tất cả các phần của đối tượng
cần luôn luôn làm việc ở chế độ đủ tải).
- Khắc phục vận hành không tải và trung gian.
- Chuyển chuyển động tịnh tiến qua lại thành chuyển động qua.
Ví dụ:
- Trong hệ điều hành đa nhiệm, các tác vụ có thể chạy nền như quét vi-
rút, in ấn, …
- Tự động hoàn thành các từ trong lúc gõ văn bản hay trong lập trình.
21. Nguyên tắc “vượt nhanh”:
Nội dung:
- Vượt qua các giai đoạn có hại hoặc nguy hiểm với vận tốc lớn.
- Vượt nhanh để có được hiệu ứng cần thiết.
Ví dụ:
- Tắt kết nối tới cơ sở dữ liệu trong khi sao lưu. Sao lưu có thể thực hiện
nhanh hơn và sau khi sao lưu mọi người có thể sử dụng cơ sở dữ liệu.
- Khi phát hiện cúp điện, ta nên thực hiện thao tác dump bộ nhớ để ổ đĩa
lưu các dữ liệu lại.
14
22. Nguyên tắc biến hại thành lợi:
Nội dung:
- Sử dụng những tác nhân có hại (thí dụ tác động có hại của môi trường)
để thu được hiệu ứng có lợi.
- Khắc phục tác nhân có hại bằng cách kết hợp nó với tác nhân có hại
khác.
- Tăng cường tác nhân có hại đến mức nó không còn có hại nữa.
Ví dụ:
- Nếu một chương trình mà có tác vụ tính toán hay truy vấn mất một thời
gian dài thì hiển thị một thông báo để người sử dụng có thể pha một
tách cafe hay làm các bài thể dục thư giãn khác. Điều này có thể tốn
thời gian hơn nhưng người sử dụng không phải ở trong tình trạng chờ
đợi thực sự.
- Đọc bất kỳ một cuốn sách nào về các anti-pattern.
23. Nguyên tắc quan hệ phản hồi:
Nội dung:
- Thiết lập quan hệ phản hồi.
- Nếu đã có quan hệ phản hồi, hãy thay đổi nó.
Ví dụ:
- Có một thành phần giám sát trong bất kỳ phần mềm nào để mà giám sát
sự thực hiện, hiệu suất bộ nhớ và có hành động khắc phục.
- Bộ xử lý ngoại lệ (exception handling)
24. Nguyên tắc sử dụng trung gian:
Nội dung:
- Sử dụng đối tượng trung gian, chuyển tiếp.
Ví dụ:
15
- Sử dụng một máy chủ cho các máy in để giữ các công việc tạm thời khi
các máy in đang offline.
- Các thiết kế pattern thay vì biết trạng thái của vài đối tượng và giữ
chúng cập nhật khi trạng thái của mình thay đổi, ta chỉ cần báo phần
trung gian hay yêu cầu phần trung gian. Điều này làm giảm giao tiếp
giữa các đối tượng và giảm độ phức tạp. Như tạo một đối tượng xử lý
tất cả các vấn đề cấu hình hay observer pattern.
25. Nguyên tắc tự phục vụ:
Nội dung:
- Đối tượng phải tự phục vụ bằng cách thực hiện các thao tác phụ trợ, sửa
chữa.
- Sử dụng phế liệu, chát thải, năng lượng dư.
Ví dụ:
- Một trình duyệt web có thể chuyển hướng request của bạn tới một
website khác nếu server không tồn tại. Chẳng hạn Google bị offline thì
có chuyển tới Bing, Yahoo, …
- Các packet tự quản lý bản thân mình, chúng tìm con đường tốt nhất của
chúng khi định tuyến.
26. Nguyên tắc sao chép (copy):
Nội dung:
- Thay vì sử dụng những cái không được phép, phức tạp, đắt tiền, không
tiện lợi hoặc dễ vỡ, sử dụng bản sao.
- Thay thế đối tượng hoặc hệ các đối tượng bằng bản sao quang học (ảnh,
hình vẽ) với các tỷ lệ cần thiết.
- Nếu không thể sử dụng bản sao quang học ở vùng biẻu kiến (vùng ánh
sáng nhìn thấy được bằng mắt thường), chuyển sang sử dụng các bản
sao hồng ngoại hoặc tử ngoại.
16
Ví dụ:
- Sử dụng các sản phẩm mã nguồn mở.
- Các sản phẩm mô phỏng như mô phỏng lỗ đen vũ trụ, điều kiện trên mặt
trăng, ...
27. Nguyên tắc “rẻ” thay cho “đắt”:
Nội dung:
- Thay thế đối tượng đắt tiền bằng bộ các đối tượng rẻ có chất lượng kém
hơn (thí dụ như về tuổi thọ).
Ví dụ:
- Tính toán với số nguyên thay vì dùng số kiểu dấu chấm động nếu vẫn
chính xác với ứng dụng của bạn, thời gian thực hiện sẽ nhanh hơn.
- Xây dựng một siêu máy tính từ những máy tính cũ.
28. Thay thế sơ đồ cơ học:
Nội dung:
- Thay thế sơ đồ cơ học bằng điện, quang, nhiệt, âm hoặc mùi vị.
- Sử dụng điện trường, từ trường và điện từ trường trong tương tác với
đối tượng.
- Chuyển các trường đứng yên sang chuyển động, các trường cố định
sang thay đổi theo thời gian, các trường đồng nhất sang có cấu trúc nhất
định.
- Sử dụng các trường kết hợp với các hạt sắt từ.
Ví dụ:
- Dụng cụ ống nghe khám bệnh của một bác sĩ có thể bằng thế bằng một
microphone và một headphone. Ưu điểm là một đoạn ghi âm được thực
hiện, xử lý các tín hiệu phức tạp như phân tích tần số, nhịp tim, …
- Chuyển đổi văn bản thành giọng nói (text-to-speech) hay giọng nói
thành văn bản (speech-to-text).
17
29. Sử dụng các kết cấu khí và lỏng:
Nội dung:
- Thay cho các phần của đối tượng ở thể rắn, sử dụng các chất khí và
lỏng: nạp khí, nạp chất lỏng, đệm không khí, thủy tĩnh, thủy phản lực.
Ví dụ:
- Sử dụng biến thay vì hằng số được code cứng. Khi hằng số thay đổi chỉ
cần thay đổi ở một nơi.
- Aero Glass GUI của Win7 hay Aqua GUI của Apple, …
30. Sử dụng vỏ dẻo và màng mỏng:
Nội dung:
- Sử dụng các vỏ dẻo và màng mỏng thay cho các kết cấu khối.
- Cách ly đối tượng với môi trường bên ngoài bằng các vỏ dẻo và màng
mỏng.
Ví dụ:
- Các lớp được định nghĩa với các interface có thể thay đổi nội dung các
interface bên trong lớp.
- Sử dụng các trường trong header của TCP/IP mà không được sử dụng
để truyển tải dữ liệu (được sử dụng bởi những người viết virus để làm
botnet).
31. Sử dụng các vật liệu nhiều lỗ:
Nội dung:
- Làm đối tượng có nhiều lỗ hoặc sử dụng thêm những chi tiết có nhiều lỗ
(miếng đệm, tấm phủ…)
- Nếu đối tượng đã có nhiều lỗ, sơ bộ tẩm nó bằng chất nào đó.
Ví dụ:
- Pattern Inversion of Control (IoC), các phụ thuộc sẽ được tiêm vào ứng
dụng tại nơi xác định trước bởi bộ chứa thay vì phải code cứng.
18
- Các phần mềm thông qua việc định nghĩa các interface trước có thể
được cắm vào bởi nhiều nhà phát triển bên thứ ba.
32. Nguyên tắc thay đổi màu sắc:
Nội dung:
- Thay đổi màu sắc của đối tượng hay môi trường bên ngoài.
- Thay đổi độ trong suốt của của đối tượng hay môi trường bên ngoài.
- Để có thể quan sát được những đối tượng hoặc những quá trình, sử dụng
các chất phụ gia màu, hùynh quang.
- Nếu các chất phụ gia đó đã được sử dụng, dùng các nguyên tử đánh dấu.
- Sử dụng các hình vẽ, ký hiệu thích hợp.
Ví dụ:
- Một đồng hồ gần như trong suốt trong desktop trở nên ít trong suốt hơn
khi gần đến thời gian một cuộc hẹn.
- Các ứng dụng cho nhà thiên văn học có thể thay đổi màu sắc của giao
diện người sử dụng đến màu đỏ hay đen thay vì đầy đủ màu sắc. Điều
này cần thiết khi sử dụng trong bóng tối, mắt người cần thời gian để làm
quen với bóng tối để xem các ngôi sao. Một giao diện màu đỏ hay đen
không ảnh hưởng tới sự nhạy cảm của mắt.
33. Nguyên tắc đồng nhất:
Nội dung:
- Những đối tượng, tương tác với đối tượng cho trước, phải được làm từ
cùng một vật liệu (hoặc từ vật liệu gần về các tính chất) với vật liệu chế
tạo đối tượng cho trước.
Ví dụ:
- Sử dụng trình biên dịch để biên dịch chính nó.
- Một hàm mà nhận các đối số là các lớp cơ sở để mà các lớp con cũng
được xử lý như vậy.
19
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
Phương Pháp Luận Sáng Tạo
Trong Khoa Học
40 nguyên tắc sáng tạo ứng dụng trong
tin học và quá trình tiến hóa ngôn ngữ
lập trình
Giáo viên hướng dẫn
GS.TSKH. Hoàng Kiếm
Học viên: Huỳnh Lê Quốc Vương MHV: CH1101158
04 - 2012
LỜI MỞ ĐẦU: .............................................................................................................. 4
I. 40 Nguyên tắc sáng tạo và ứng dụng trong tin học: ............................... 5
1. Nguyên tắc phân nhỏ: .................................................................................... 5
2. Nguyên tắc “tách khỏi”: ................................................................................ 5
3. Nguyên tắc phẩm chất cục bộ: ....................................................................... 6
4. Nguyên tắc phản đối xứng: ............................................................................ 7
5. Nguyên tắc kết hợp: ...................................................................................... 7
6. Nguyên tắc vạn năng: .................................................................................... 8
7. Nguyên tắc “chứa trong”: .............................................................................. 8
8. Nguyên tắc phản trọng lượng: ....................................................................... 8
9. Nguyên tắc gây ứng suất sơ bộ: ..................................................................... 9
10. Nguyên tắc thực hiện sơ bộ: .......................................................................... 9
11. Nguyên tắc dự phòng: ................................................................................. 10
12. Nguyên tắc đẳng thế: ................................................................................... 10
13. Nguyên tắc đảo ngược:................................................................................ 11
14. Nguyên tắc cầu (tròn) hoá: .......................................................................... 11
15. Nguyên tắc linh động: ................................................................................. 11
16. Nguyên tắc giải “thiếu” hoặc “thừa”: .......................................................... 12
17. Nguyên tắc chuyển sang chiều khác: ........................................................... 12
18. Nguyên tắc sử dụng các dao động cơ học: ................................................... 13
19. Nguyên tắc tác động theo chu kỳ: ................................................................ 13
20. Nguyên tắc liên tục tác động có ích ............................................................. 14
21. Nguyên tắc “vượt nhanh”: ........................................................................... 14
1
22. Nguyên tắc biến hại thành lợi: ..................................................................... 15
23. Nguyên tắc quan hệ phản hồi: ..................................................................... 15
24. Nguyên tắc sử dụng trung gian: ................................................................... 15
25. Nguyên tắc tự phục vụ: ............................................................................... 16
26. Nguyên tắc sao chép (copy): ....................................................................... 16
27. Nguyên tắc “rẻ” thay cho “đắt”: .................................................................. 17
28. Thay thế sơ đồ cơ học: ................................................................................ 17
29. Sử dụng các kết cấu khí và lỏng: ................................................................. 18
30. Sử dụng vỏ dẻo và màng mỏng: .................................................................. 18
31. Sử dụng các vật liệu nhiều lỗ:...................................................................... 18
32. Nguyên tắc thay đổi màu sắc: ...................................................................... 19
33. Nguyên tắc đồng nhất:................................................................................. 19
34. Nguyên tắc phân hủy hoặc tái sinh các phần: .............................................. 20
35. Thay đổi các thông số hoá lý của đối tượng:................................................ 20
36. Sử dụng chuyển pha: ................................................................................... 20
37. Sử dụng sự nở nhiệt: ................................................................................... 21
38. Sử dụng các chất oxy hoá mạnh: ................................................................. 21
39. Thay đổi độ trơ:........................................................................................... 22
40. Sử dụng các vật liệu hợp thành (composite): ............................................... 22
II. Lịch sử phát triển ngôn ngữ lập trình: .................................................... 23
1. Zuse’s Plankalkül: ....................................................................................... 24
2. Các ngôn ngữ mã giả:.................................................................................. 24
3. IBM và Fortran ........................................................................................... 25
4. Lập trình hàm .............................................................................................. 28
2
5. Bước đầu tiên tiến tới sự tinh xảo ................................................................ 30
6. Khởi đầu của ngôn ngữ cho doanh nghiệp ................................................... 32
7. Bắt đầu khái niệm chia sẻ thời gian ............................................................. 33
8. Ngôn ngữ cho cả khoa học và doanh nghiệp : PL/I ...................................... 33
9. Hai ngôn ngữ động đầu tiên : APL và SNOBOL ......................................... 34
10. Bắt đầu trừu tượng hóa dữ liệu : SIMULA 67 ............................................. 35
11. Thiết kế trực giao : ALGOL 68 ................................................................... 36
12. Lập trình dựa trên Logic : Prolog ................................................................ 36
13. Ngôn ngữ được thiết kế công phu nhất : Ada ............................................... 37
14. Lập trình hướng đối tượng : Smalltalk ......................................................... 38
15. Kết hợp giữa lập trình mệnh lệnh và lập trình hướng đối tượng: C++ .......... 38
16. Một ngôn ngữ hướng đối tượng dựa trên mệnh lệnh : Java .......................... 39
17. Các ngôn ngữ kịch bản cho Web ................................................................. 39
18. Xu hướng hiện nay ...................................................................................... 40
III. Kết luận:............................................................................................................ 41
TÀI LIỆU THAM KHẢO:.......................................................................................... 42
3
Lời mở đầu:
Nếu ai đó chưa biết, chưa đọc, chưa nghiên cứu về Genrikh Saulovich
Atchuller và Lý thuyết giải các bài toán sáng chế (TRIZ) của ông thì quả là
một thiệt thòi đối với người đó. Tại sao vậy? Bởi ông là một tài năng lớn, một
người có nhân cách sáng ngời, là một nhà khoa học rất đáng kính trọng. Đặc
biệt với TRIZ 40 nguyên tắc sáng tạo, ông đã góp phần tạo nên sự phát triển
cho thế giới này.
Khi con người sinh ra bản năng đã ham muốn tìm tòi học hỏi khám phá
những điều mới mẻ. Nhờ có khả năng tư duy sáng tạo thiên tài mà những nhà
phát minh như Leonardo Da Vinci, Archimedes hay Thomas Edison, … đã làm
thay đổi cuộc sống của nhân loại này. Vậy đối với những người bình thường
chúng ta thì sao, làm sao có thể có những cải tiến đóng góp cho xã hội? Thầy
Atchuller đã hiểu được điều đó và năm 1946, ông đã nung nấu ý định đầu tiên
xây dựng một lý thuyết giúp bất kỳ một người bình thường nào cũng có thể
thực hiện được các sáng chế mà sau này ông đặt tên là “Lý thuyết giải các bài
toán sáng chế” (TRIZ). Với 40 nguyên tắc sáng tạo cơ bản này có thể nói nó đã
tổng quát được hầu như hàng triệu phát minh cải tiến trong cuộc sống con
người trong thời gian qua. Và lĩnh vực công nghệ thông tin cũng không phải là
ngoại lệ. Trong bài luận này sẽ trình bày 40 nguyên tắc sáng tạo và những ví
dụ trong công nghệ thông tin với từng nguyên tắc (mỗi nguyên tắc sẽ có hai ví
dụ) cho bạn dễ hình dung. Ngoài ra, nhờ có sự phát triển mạnh mẽ của phần
cứng từ máy dệt tự động Jacquard đến những siêu máy tính ngày nay mà các
ngôn ngữ lập trình cũng được tiến hóa theo. Chúng tiến hóa theo cách nào và
đem lại những gì? Chúng ta hãy cùng xem sự tiến hóa của chúng trong các
nguyên tắc sáng tạo như thế nào nhé.
4
I. 40 Nguyên tắc sáng tạo và ứng dụng trong tin học:
1. Nguyên tắc phân nhỏ:
Nội dung:
- Chia đối tượng thành các phần độc lập.
- Làm đối tượng trở nên tháo lắp được.
- Tăng mức độ phân nhỏ đối tượng.
Ví dụ:
- Cách tiếp cận top-down trong thiết kế hệ thống, chia hệ thống thành
nhiều phần nhỏ hơn. Bằng cách đó, chia hệ thống phức tạp thành nhiều
mô-đun ít phức tạp hơn. Quá trình này có thể được thực hiện lại cho
từng mô-đun cho đến khi các mô-đun không còn bất cứ sự phức tạp nào
nữa.
- Một ứng dụng có thể được xây dựng dựa trên các dịch vụ độc lập có sẵn
trong mạng cục bộ hay qua Internet chẳng hạn như Web-service (thông
qua các Web-service của Yahoo, ta có thể xây dựng một ứng dụng chat
tương tự như Yahoo! Messenger cho riêng mình). Tương tự, các ứng
dụng có thể được xây dựng bằng cách sử dụng các thành phần thương
mại (ta có thể sử dụng mCore.NET để tích hợp gửi và nhận tin nhắn
SMS vào các ứng dụng chạy trên nền tảng .NET) hay miễn phí (từ
kernel của Linux mà hiện này có hơn 100 bản phân phối như Mint,
Ubuntu, Fedora, …)
2. Nguyên tắc “tách khỏi”:
Nội dung:
- Tách phần gây “phiền phức” (tính chất “phiền phức”) hay ngược lại
tách phần duy nhất “cần thiết” (tính chất “cần thiết”) ra khỏi đối tượng.
Ví dụ:
5
- Trong cơ chế nén âm thanh MP3 loại bỏ đi các phần tín hiệu của âm
thanh mà đa số mọi người không thể nghe được nhờ các đặc điểm chức
năng nghe của con người. Tượng tự, trong kỹ thuật nén ảnh như JPEG
loại bỏ thông tin để đạt được tỉ lệ nén ảnh cao hơn của một ảnh mà
không biến dạng ảnh quá nhiều.
- Khi dữ liệu ít, ta lưu trữ chúng ở vài máy tính trong phòng, trong công
ty. Nhưng khi dữ liệu lớn sẽ khó khăn trong việc bảo trì, mở rộng, …
Do đó, ta phải nhờ tới data center.
3. Nguyên tắc phẩm chất cục bộ:
Nội dung:
- Chuyển đối tượng (hay môi trường bên ngoài, tác động bên ngoài) có
cấu trúc đồng nhất thành không đồng nhất.
- Các phần khác nhau của đối tượng phải có các chức năng khác nhau.
- Mỗi phần của đối tượng phải ở trong những điều kiện thích hợp nhất đối
với công việc.
Ví dụ:
- Mô hình: Blackboard. Được sử dụng cho các vấn đề không xác định
được chiến lược giải pháp. Ý tưởng là một tập hợp các chương trình độc
lập mà cùng làm việc cộng tác trên một cấu trúc dữ liệu chung. Mỗi
chương trình giải quyết một phần của tổng thế công việc, và tất cả
chương trình làm việc với nhau về giải pháp. Các chương trình chuyên
biệt này độc lập lẫn nhau. Chúng không gọi lẫn nhau, không có một sự
tuần tự nào định trước về hoạt động của chúng. Thay vào đó, chúng
được điều khiển bởi hệ thống chủ yếu dựa vào trạng thái hiện tại của
tiến độ. Một thành phần điều khiển trung tâm sẽ đánh giá trạng thái hiện
tại của việc xử lý và điều phối các chương trình. Cách thức điều khiển
hướng dữ liệu này làm thử nghiệm với các thuật toán khác nhau có thể,
6
và cho phép việc suy ra qua các thử nghiệm “heuristic” để điều khiển
việc xử lý.
- Sửa một danh sách liên kết của các đối tượng xe máy thành một danh
sách liên kết của các đối tượng xe. Việc trừu tượng hóa cao hơn này sẽ
cho phép các đối tượng không đồng bộ (xe đạp, xe hơi, …) được lưu trữ
trong cùng lớp bộ chứa và ngược lại.
4. Nguyên tắc phản đối xứng:
Nội dung:
- Chuyển đối tượng có hình dạng đối xứng thành không đối xứng (nói
chung giảm bật đối xứng).
Ví dụ:
- Chuẩn của sắp xếp nhanh thường lấy phần tử giữa làm phần tử chốt.
Bằng cách sử dụng phần tử trung vị trong ba phần tử đứng đầu, đứng
giữa và đứng cuối làm phần tử chốt thường sẽ đạt được hiệu suất tốt
hơn.
- Trong thanh công cụ tìm kiếm bài hát, thay vì chỉ nhập vào tên bài hát.
Ta có thể nhập vào tên ca sĩ, tên nhạc sĩ, một đoạn bài hát, … để giúp
người dùng thuận lợi hơn trong việc tìm kiếm bài hát.
5. Nguyên tắc kết hợp:
Nội dung:
- Kết hợp các đối tượng đồng nhất hoặc các đối tượng dùng cho các hoạt
động kế cận.
- Kết hợp về mặt thời gian các hoạt động đồng nhất hoặc kế cận.
Ví dụ:
- Một trang web có thể được xây dựng từ nhiều khung (frame). Mỗi
frame có thể được tải từ một server khác nhau. Điều này làm tăng tốc độ
tải trang do nhiều kết nối được sử dụng đồng thời.
7
- Một tập đĩa RAID-5 phân chia một tập tin qua nhiều đĩa có thể truy xuất
để lấy hay lưu trữ tập tin đó nhanh hơn vì nó được lấy/lưu trữ đồng thời.
6. Nguyên tắc vạn năng:
Nội dung:
- Đối tượng thực hiện một số chức năng khác nhau, do đó không cần sự
tham gia của các đối tượng khác.
Ví dụ:
- Các phần mềm tăng tốc hệ thống như “tuneup utilities” có chức năng 1-
click có thể dọn các registry, loại bỏ các shortcut bị phá hủy, xóa các tập
tin tạm, phân mảnh ổ đĩa, …
- Các trình duyệt web như IE, Firefox hay Google Chrome thì trong phần
khung mà để ta nhập địa chỉ web vào thì ta cũng có thể nhập các từ khóa
tìm kiếm vào đó để tìm kiếm thay vì truy cập các trang web tìm kiếm.
7. Nguyên tắc “chứa trong”:
Nội dung:
- Một đối tượng được đặt bên trong đối tượng khác và bản thân nó lại
chứa đối tượng thứ ba ...
- Một đối tượng chuyển động xuyên suốt bên trong đối tượng khác.
Ví dụ:
- Kiến trúc bảy tầng OSI trong network.
- Cấu trúc dữ liệu như danh sách liên kết, cây. Các thuật toán đệ quy như:
sắp xếp nhanh, backtracking, …
8. Nguyên tắc phản trọng lượng:
Nội dung:
- Bù trừ trọng lượng của đối tượng bằng cách gắn nó với các đối tượng
khác có lực nâng.
8
- Bù trừ trọng lượng của đối tượng bằng tương tác với môi trường như sử
dụng các lực thủy động, khí động...
Ví dụ:
- Để tăng hiệu xuất của các web server, ta có thể chia một trang thành
nhiều frame và lưu trữ các frame trong các ổ đĩa khác nhau hay trên các
server khác nhau. Người ta có thể phân bổ các ảnh lớn hay từng mảnh
dữ liệu qua các ổ đĩa khác nhau thay vì đặt chúng chung một đĩa. Hiệu
xuất sẽ tăng lên.
- Trong các hàm băm, ta phân bổ các đối tượng vào một tập các bộ chứa
trong khi giữ số lượng của các đối tượng trong một bộ chứa xấp xỉ bằng
nhau.
9. Nguyên tắc gây ứng suất sơ bộ:
Nội dung:
- Gây ứng suất trước với đối tượng để chống lại ứng suất không cho phép
hoặc không mong muốn khi đối tượng làm việc (hoặc gây ứng suất
trước để khi làm việc sẽ dùng ứng suất ngược lại).
Ví dụ:
- Giả sử rằng một người sử dụng phải chờ đợi trong một khoảng thời gian
cho một hành động thực thi nào đó (tìm kiếm, sao chép, cài đặt chương
trình, ...). Nếu ta thông báo cho người sử dụng rằng sẽ mất khoảng 5
phút, nhưng nếu thời gian thực thi kéo dài hơn thì người sử dụng sẽ
không thích. Nếu ta thông báo mất 10 phút và thời gian thực thi ít hơn
thì người sử dụng sẽ vui hơn.
- Khi một ứng dụng bắt đầu đọc từ một cơ sở dữ liệu, ta có thể tải (load)
các bảng quan trọng hay các chỉ mục trước.
10. Nguyên tắc thực hiện sơ bộ:
Nội dung:
9
- Thực hiện trước sự thay đổi cần có, hoàn toàn hoặc từng phần, đối với
đối tượng.
- Cần sắp xếp đối tượng trước, sao cho chúng có thể hoạt động từ vị trí
thuận lợi nhất, không mất thời gian dịch chuyển.
Ví dụ:
- Đọc cache ổ đĩa trước chuẩn bị cho việc đọc đĩa thực sự.
- Driver máy in kiểm thử tính sẵn sàng của máy in trước khi người sử
dụng hoàn tất các thiết lập của họ
11. Nguyên tắc dự phòng:
Nội dung:
- Bù đắp độ tin cậy không lớn của đối tượng bằng cách chuẩn bị trước các
phương tiện báo động, ứng cứu, an toàn.
Ví dụ:
- Hệ điều hành sao lưu dữ liệu các tập tin quan trọng của nó trước khi
được sử dụng. Nếu xảy ra lỗi có thể khôi phục lại mà không phải cài lại.
- Thiết lập thời gian timeout cho các thao tác như truy vấn cơ sở dữ liệu,
kết nối tới một dịch vụ mạng, …
12. Nguyên tắc đẳng thế:
Nội dung:
- Thay đổi điều kiện làm việc để không phải nâng lên hay hạ xuống các
đối tượng.
Ví dụ:
- Giữ các kết quả trung gian mà phải mất khá nhiều thời gian để tính toán.
- Sắp xếp lại một cơ sở dữ liệu hay tập tin chỉ khi nào thực sự cần thiết.
Thường thì dữ liệu bị xóa bằng một cái cờ đánh dấu nó bị xóa. Các bản
ghi trong cơ sở dữ liệu không phải di chuyển mặc dù chúng dường như
có vị trí mới trong cơ sở dữ liệu.
10
13. Nguyên tắc đảo ngược:
Nội dung:
- Thay vì hành động như yêu cầu bài toán, hành động ngược lại (ví dụ,
không làm nóng mà làm lạnh đối tượng)
- Làm phần chuyển động của đối tượng (hay môi trường bên ngoài) thành
đứng yên và ngược lại, phần đứng yên thành chuyển động.
Ví dụ:
- Vài phép tính toán có thể gây ra tràn bộ nhớ. Bằng cách thay đổi thứ tự
tính toán có thể ngăn chặn việc này. Công thức p = x * y / z; có thể được
viết bằng p = (x / z) * y hay p = y / z * x; Ta có thể chọn một trong các
công thức phụ thuộc vào mối quan hệ giá trị giữa x, y, z.
- Các hệ thống backtracking
14. Nguyên tắc cầu (tròn) hoá:
Nội dung:
- Chuyển những phần thẳng của đối tượng thành cong, mặt phẳng thành
mặt cầu, kết cấu hình hộp thành kết cấu hình cầu.
- Sử dụng các con lăn, viên bi, vòng xoắn.
- Chuyển sang chuyển độg quay, sử dung lực ly tâm.
Ví dụ:
- Thay tìm kiếm tuyến tính bằng tìm kiếm phức tạp hơn như tìm kiếm nhị
phân.
- Chuyển tọa độ từ chuẩn Cartesian sang Polar để dễ dàng hơn trong một
số tính toán.
15. Nguyên tắc linh động:
Nội dung:
- Cần thay đổi các đặt trưng của đối tượng hay môi trường bên ngoài sao
cho chúng tối ưu trong từng giai đoạn làm việc.
11
- Phân chia đối tượng thành từng phần, có khả năng dịch chuyển với
nhau.
Ví dụ:
- Thay đổi chế độ nhìn trong một ứng dụng như PowerPoint. Chỉnh sửa
văn bản trong chế độ outline thì sẽ dàng và nhìn tổng quan hơn trong
chế độ trình bày.
- Các gói dữ liệu thông minh định tuyến bản thân chúng trên network.
16. Nguyên tắc giải “thiếu” hoặc “thừa”:
Nội dung:
- Nếu như khó nhận được 100% hiệu quả cần thiết, nên nhận ít hơn hoặc
nhiều hơn “một chút”. Lúc đó bài toán có thể trở nên đơn giản hơn và
dễ giải hơn.
Ví dụ:
- Để sắp xếp một mảng lớn thì thì thuật toán sắp xếp nhanh thường được
sử dụng. Tuy nhiên khi các mảng con để sắp xếp trở nên nhỏ, ít hơn 10
phần tử, các thuật toán khác được sử dụng thực thi tốt hơn.
- Để nâng cao độ tin cậy của tàu vũ trụ, nhiều bộ xử lý khác nhau tính
toán cùng đầu vào với nhiều thuật toán khác nhau. Nếu kết quả nào
giống nhau nhiều nhất thì đó là kết quả đúng.
17. Nguyên tắc chuyển sang chiều khác:
Nội dung:
- Những khó khăn do chuyển động (hay sắp xếp) đối tượng theo đường
(một chiều) sẽ được khắc phục nếu cho đối tượng khả năng di chuyển
trên mặt phẳng (hai chiều). Tương tự, những bài toán liên quan đến
chuyển động (hay sắp xếp) các đối tượng trên mặt phẳng sẽ được đơn
giản hoá khi chuyển sang không gian (ba chiều).
- Chuyển các đối tượng có kết cấu một tầng thành nhiều tầng.
12
- Đặt đối tượng nằm nghiêng.
- Sử dụng mặt sau của diện tích cho trước.
- Sử dụng các luồng ánh sáng tới diện tích bên cạnh hoặc tới mặt sau của
diện tích cho trước.
Ví dụ:
- Một hàng đợi mà khi lớn dần và không còn chỗ để cho một phần tử mới
vào thì có thể đặt phần tử đó vào ổ đĩa cho đến khi còn chỗ trống trong
bộ nhớ chính.
- Sử dụng ký hiệu thập lục phân cho các giá trị có thể làm cho các thao
tác với bit trở nên dễ hiểu hơn.
18. Nguyên tắc sử dụng các dao động cơ học:
Nội dung:
- Làm đối tượng dao động. Nếu đã có dao động, tăng tầng số dao động (
đến tầng số siêu âm).
- Sử dụng tầng số cộng hưởng.
- Thay vì dùng các bộ rung cơ học, dùng các bộ rung áp điện.
- Sử dụng siêu âm kết hợp với trường điện từ.
Ví dụ:
- Sử dụng thuật toán MIN-MAX luân phiên nhau trong trò chơi và trong
trí tuệ nhân tạo.
- Thuật toán round robin đọc luân phiên từ các hàng đợi.
19. Nguyên tắc tác động theo chu kỳ:
Nội dung:
- Chuyển tác động liên tục thành tác động theo chu kỳ (xung).
- Nếu đã có tác động theo chu kỳ, hãy thay đổi chu kỳ.
- Sử dụng các khoảng thời gian giữa các xung để thực hiện tác động khác.
-
13
Ví dụ:
- Bộ thu gom rác chỉ thực hiện khi rác trên một ngưỡng nhất định.
- Trong vài trường hợp ta nên cập nhật một bảng nào đó của cơ sở dữ liệu
chỉ một lần trên một ngày và tính toán lại việc sắp xếp chỉ mục một lần
một ngày thay vì mỗi lần cập nhật đơn lẻ. Tương tự loại bỏ các mục
được đánh dấu xóa chỉ một lần một ngày.
20. Nguyên tắc liên tục tác động có ích
Nội dung:
- Thực hiện công việc một cách liên tục (tất cả các phần của đối tượng
cần luôn luôn làm việc ở chế độ đủ tải).
- Khắc phục vận hành không tải và trung gian.
- Chuyển chuyển động tịnh tiến qua lại thành chuyển động qua.
Ví dụ:
- Trong hệ điều hành đa nhiệm, các tác vụ có thể chạy nền như quét vi-
rút, in ấn, …
- Tự động hoàn thành các từ trong lúc gõ văn bản hay trong lập trình.
21. Nguyên tắc “vượt nhanh”:
Nội dung:
- Vượt qua các giai đoạn có hại hoặc nguy hiểm với vận tốc lớn.
- Vượt nhanh để có được hiệu ứng cần thiết.
Ví dụ:
- Tắt kết nối tới cơ sở dữ liệu trong khi sao lưu. Sao lưu có thể thực hiện
nhanh hơn và sau khi sao lưu mọi người có thể sử dụng cơ sở dữ liệu.
- Khi phát hiện cúp điện, ta nên thực hiện thao tác dump bộ nhớ để ổ đĩa
lưu các dữ liệu lại.
14
22. Nguyên tắc biến hại thành lợi:
Nội dung:
- Sử dụng những tác nhân có hại (thí dụ tác động có hại của môi trường)
để thu được hiệu ứng có lợi.
- Khắc phục tác nhân có hại bằng cách kết hợp nó với tác nhân có hại
khác.
- Tăng cường tác nhân có hại đến mức nó không còn có hại nữa.
Ví dụ:
- Nếu một chương trình mà có tác vụ tính toán hay truy vấn mất một thời
gian dài thì hiển thị một thông báo để người sử dụng có thể pha một
tách cafe hay làm các bài thể dục thư giãn khác. Điều này có thể tốn
thời gian hơn nhưng người sử dụng không phải ở trong tình trạng chờ
đợi thực sự.
- Đọc bất kỳ một cuốn sách nào về các anti-pattern.
23. Nguyên tắc quan hệ phản hồi:
Nội dung:
- Thiết lập quan hệ phản hồi.
- Nếu đã có quan hệ phản hồi, hãy thay đổi nó.
Ví dụ:
- Có một thành phần giám sát trong bất kỳ phần mềm nào để mà giám sát
sự thực hiện, hiệu suất bộ nhớ và có hành động khắc phục.
- Bộ xử lý ngoại lệ (exception handling)
24. Nguyên tắc sử dụng trung gian:
Nội dung:
- Sử dụng đối tượng trung gian, chuyển tiếp.
Ví dụ:
15
- Sử dụng một máy chủ cho các máy in để giữ các công việc tạm thời khi
các máy in đang offline.
- Các thiết kế pattern thay vì biết trạng thái của vài đối tượng và giữ
chúng cập nhật khi trạng thái của mình thay đổi, ta chỉ cần báo phần
trung gian hay yêu cầu phần trung gian. Điều này làm giảm giao tiếp
giữa các đối tượng và giảm độ phức tạp. Như tạo một đối tượng xử lý
tất cả các vấn đề cấu hình hay observer pattern.
25. Nguyên tắc tự phục vụ:
Nội dung:
- Đối tượng phải tự phục vụ bằng cách thực hiện các thao tác phụ trợ, sửa
chữa.
- Sử dụng phế liệu, chát thải, năng lượng dư.
Ví dụ:
- Một trình duyệt web có thể chuyển hướng request của bạn tới một
website khác nếu server không tồn tại. Chẳng hạn Google bị offline thì
có chuyển tới Bing, Yahoo, …
- Các packet tự quản lý bản thân mình, chúng tìm con đường tốt nhất của
chúng khi định tuyến.
26. Nguyên tắc sao chép (copy):
Nội dung:
- Thay vì sử dụng những cái không được phép, phức tạp, đắt tiền, không
tiện lợi hoặc dễ vỡ, sử dụng bản sao.
- Thay thế đối tượng hoặc hệ các đối tượng bằng bản sao quang học (ảnh,
hình vẽ) với các tỷ lệ cần thiết.
- Nếu không thể sử dụng bản sao quang học ở vùng biẻu kiến (vùng ánh
sáng nhìn thấy được bằng mắt thường), chuyển sang sử dụng các bản
sao hồng ngoại hoặc tử ngoại.
16
Ví dụ:
- Sử dụng các sản phẩm mã nguồn mở.
- Các sản phẩm mô phỏng như mô phỏng lỗ đen vũ trụ, điều kiện trên mặt
trăng, ...
27. Nguyên tắc “rẻ” thay cho “đắt”:
Nội dung:
- Thay thế đối tượng đắt tiền bằng bộ các đối tượng rẻ có chất lượng kém
hơn (thí dụ như về tuổi thọ).
Ví dụ:
- Tính toán với số nguyên thay vì dùng số kiểu dấu chấm động nếu vẫn
chính xác với ứng dụng của bạn, thời gian thực hiện sẽ nhanh hơn.
- Xây dựng một siêu máy tính từ những máy tính cũ.
28. Thay thế sơ đồ cơ học:
Nội dung:
- Thay thế sơ đồ cơ học bằng điện, quang, nhiệt, âm hoặc mùi vị.
- Sử dụng điện trường, từ trường và điện từ trường trong tương tác với
đối tượng.
- Chuyển các trường đứng yên sang chuyển động, các trường cố định
sang thay đổi theo thời gian, các trường đồng nhất sang có cấu trúc nhất
định.
- Sử dụng các trường kết hợp với các hạt sắt từ.
Ví dụ:
- Dụng cụ ống nghe khám bệnh của một bác sĩ có thể bằng thế bằng một
microphone và một headphone. Ưu điểm là một đoạn ghi âm được thực
hiện, xử lý các tín hiệu phức tạp như phân tích tần số, nhịp tim, …
- Chuyển đổi văn bản thành giọng nói (text-to-speech) hay giọng nói
thành văn bản (speech-to-text).
17
29. Sử dụng các kết cấu khí và lỏng:
Nội dung:
- Thay cho các phần của đối tượng ở thể rắn, sử dụng các chất khí và
lỏng: nạp khí, nạp chất lỏng, đệm không khí, thủy tĩnh, thủy phản lực.
Ví dụ:
- Sử dụng biến thay vì hằng số được code cứng. Khi hằng số thay đổi chỉ
cần thay đổi ở một nơi.
- Aero Glass GUI của Win7 hay Aqua GUI của Apple, …
30. Sử dụng vỏ dẻo và màng mỏng:
Nội dung:
- Sử dụng các vỏ dẻo và màng mỏng thay cho các kết cấu khối.
- Cách ly đối tượng với môi trường bên ngoài bằng các vỏ dẻo và màng
mỏng.
Ví dụ:
- Các lớp được định nghĩa với các interface có thể thay đổi nội dung các
interface bên trong lớp.
- Sử dụng các trường trong header của TCP/IP mà không được sử dụng
để truyển tải dữ liệu (được sử dụng bởi những người viết virus để làm
botnet).
31. Sử dụng các vật liệu nhiều lỗ:
Nội dung:
- Làm đối tượng có nhiều lỗ hoặc sử dụng thêm những chi tiết có nhiều lỗ
(miếng đệm, tấm phủ…)
- Nếu đối tượng đã có nhiều lỗ, sơ bộ tẩm nó bằng chất nào đó.
Ví dụ:
- Pattern Inversion of Control (IoC), các phụ thuộc sẽ được tiêm vào ứng
dụng tại nơi xác định trước bởi bộ chứa thay vì phải code cứng.
18
- Các phần mềm thông qua việc định nghĩa các interface trước có thể
được cắm vào bởi nhiều nhà phát triển bên thứ ba.
32. Nguyên tắc thay đổi màu sắc:
Nội dung:
- Thay đổi màu sắc của đối tượng hay môi trường bên ngoài.
- Thay đổi độ trong suốt của của đối tượng hay môi trường bên ngoài.
- Để có thể quan sát được những đối tượng hoặc những quá trình, sử dụng
các chất phụ gia màu, hùynh quang.
- Nếu các chất phụ gia đó đã được sử dụng, dùng các nguyên tử đánh dấu.
- Sử dụng các hình vẽ, ký hiệu thích hợp.
Ví dụ:
- Một đồng hồ gần như trong suốt trong desktop trở nên ít trong suốt hơn
khi gần đến thời gian một cuộc hẹn.
- Các ứng dụng cho nhà thiên văn học có thể thay đổi màu sắc của giao
diện người sử dụng đến màu đỏ hay đen thay vì đầy đủ màu sắc. Điều
này cần thiết khi sử dụng trong bóng tối, mắt người cần thời gian để làm
quen với bóng tối để xem các ngôi sao. Một giao diện màu đỏ hay đen
không ảnh hưởng tới sự nhạy cảm của mắt.
33. Nguyên tắc đồng nhất:
Nội dung:
- Những đối tượng, tương tác với đối tượng cho trước, phải được làm từ
cùng một vật liệu (hoặc từ vật liệu gần về các tính chất) với vật liệu chế
tạo đối tượng cho trước.
Ví dụ:
- Sử dụng trình biên dịch để biên dịch chính nó.
- Một hàm mà nhận các đối số là các lớp cơ sở để mà các lớp con cũng
được xử lý như vậy.
19