Tiểu luận môn phương pháp nghiên cứu khoa học Nghiên cứu 40 nguyên tắc sáng tạo ứng dụng trong tin học và phân tích quá trình phát triển ngôn ngữ lập trình - Pdf 27

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
TIỂU LUẬN MÔN HỌC
PHƯƠNG PHÁP LUẬN SÁNG TẠO
TRONG KHOA HỌC
ĐỀ TÀI:
Nghiên cứu 40 nguyên tắc sáng tạo ứng
dụng trong tin học và phân tích quá
trình phát triển ngôn ngữ lập trình
Giảng viên hướng dẫn: GS.TSKH. Hoàng Văn Kiếm
Học viên thực hiện: Nguyễn Tấn Thành
Mã số học viên: CH1301055
Lớp: Cao học khóa 8
TP. HỒ CHÍ MINH, THÁNG 05/2014

3
Lời mở đầu
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 như chúng ta thì sao, làm thế nào để có thể có những phát minh,
sáng kiến cải tiến đóng góp cho xã hội?
Genrikh Saulovich 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. Công
nghệ thông tin là một trong những lĩnh vực điển hình áp dụng các nguyên
tắc sáng tạo trên.

Ví dụ:
- Trong kỹ thuật nén ảnh như JPEG, ta tách 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.
Tương tự trong cơ chế nén âm thanh MP3 ta tách 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.
- Kiến trúc mô hình 3 lớp (Presentation Layer, Business Layer, Data
Access Layer ) trong thiết kế ứng dụng phần mềm.
5
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ể, và cho phép việc suy ra qua các thử nghiệm
“heuristic” để điều khiển việc xử lý.

- Đố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
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.
- 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

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, …
9
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.
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ứ

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.
11
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.
- Đặ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:

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ụ:
13
- 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.
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.

- 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.
Ví dụ:
15
- 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ừ.

- 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.
17
- 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

- Chạy một chương trình với nhiều điều kiện tải khác nhau, chẳng hạn
chạy trong hệ điều hành Windows hay Linux, màn hình 10’ hay 15’,

36. Sử dụng chuyển pha:
Nội dung:
19
- Sử dụng các hiện tượng nảy sinh trong quá trình chuyển pha như:
thay đổi thể tích, toả hay hấp thu nhiệt lượng
Ví dụ:
- Một danh sách liên kết có thể giữ một con trỏ ở phần tử cuối cùng
được chèn vào. Khi ta cần tìm kiếm qua danh sách liên kết này, ta có
thể kiểm tra con trỏ này để suy xét nên bắt đầu từ nút này trong danh
sách hay bắt đầu từ đầu danh sách. Điều này tăng tốc tìm kiếm tuyến
tính trung bình gấp 2 lần.
- Khi chuyển đổi từ một loại thiết bị/OS/chương trình sang một cái
khác, giám sát chặt chẽ những gì xảy ra chẳng hạn như cách chuyển
đổi như thế nào có thể có ích trong tương lai.
37. Sử dụng sự nở nhiệt:
Nội dung:
- Sử dụng sự nở (hay co) nhiệt của các vật liệu.
- Nếu đã dùng sự nở nhiệt, sử dụng với vật liệu có các hệ số nở nhiệt
khác nhau.
Ví dụ:
- Khi dữ liệu được nén nó có thể được gửi nhanh hơn qua mạng, hoặc
tốn ít không gian lưu trữ hơn. Người ta phải giải nén để có thể sử
dụng nó.
- Khi tính toán với đô-la hay các tiền tệ khác thì thường là một tính
toán dấu chấm động. Bằng cách nhân các số với 100, ta có thể tính
toán trong miền số nguyên, nhanh hơn và ít lỗi làm tròn số hơn.
38. Sử dụng các chất oxy hoá mạnh:

vụ ảo hóa với chi phí rẻ hơn và linh hoạt hơn.
21
II. Lịch sử phát triển ngôn ngữ lập trình
Với sự phát triển vượt bậc của công nghệ phần cứng máy tính, ngôn ngữ
lập trình đã tiến hóa không ngừng để đáp ứng nhu cầu phát triển các ứng dụng.
Trong phần này, chúng ta sẽ đi sâu vào tìm hiểu về lịch sử, đồng thời phân tích
các nguyên lý sáng tạo được vận dụng suốt quá trình phát triển của các ngôn
ngữ lập trình trong những năm qua.
Bảng tiến hóa của các ngôn ngữ lập trình phổ biến
22
1. Zuse’s Plankalkül:
Được thiết kế bởi Konrad Zuse vào năm 1943 nhưng mãi tới năm 1972
mới được công bố hoàn toàn. Nó được xem như là ngôn ngữ thuật toán lập
trình đầu tiên.
Trong Plankalkül kiểu đơn giản nhất là bit, có các cấu trúc dữ liệu cấp
cao như dấu chậm động, mảng, bản ghi. Mỗi lệnh là hai hay ba dòng mã.
Năm 1948, ông có xuất bản một bài báo về ngôn ngữ lập trình
Plankalkül của mình. Tuy nhiên, nó đã không được hiện thực trong cuộc đời
của ông ta và những sự đóng góp ban đầu của ông ta đã bị cô lập từ những
sự phát triển khác.
2. Các ngôn ngữ mã giả:
Từ mã giả ở đây có nghĩa khác với nghĩa hiện tại của nó bây giờ. Ta gọi
các ngôn ngữ này là các mã giả bởi vì chúng được đặt tên như thế vào thời
điểm chúng được phát triển và sử dụng (cuối những năm 1940 và đầu
những năm 1950). Ngôn ngữ máy thì khó để mà đọc, cũng như sửa đổi và
dài dòng. Máy thì không hỗ trợ xử lý dấu chấm động vì vậy đã ra đời các
ngôn ngữ mã giả.
2.1. ShortCode
Là ngôn ngữ mã giả đầu tiên, được phát triển bởi John Mauchly vào
năm 1949 cho máy tính BINAC. Các biểu thức toán học hay phương trình

mềm, một quá 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.
Fortran 0 được thiết kế vào năm 1954 nhưng không được hiện thực.
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”
24
- 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 quá 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.
Nguyên lý tách nhỏ: Các chương trình con không được biên dịch riêng


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status