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 255 0
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

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Header Page of 126 ĐẠ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 tin học 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 04 - 2012 Footer Page of 126 MHV: CH1101158 Header Page of 126 LỜI MỞ ĐẦU: I 40 Nguyên tắc sáng tạo ứng dụng tin học: Nguyên tắc phân nhỏ: Nguyên tắc “tách khỏi”: Nguyên tắc phẩm chất cục bộ: Nguyên tắc phản đối xứng: Nguyên tắc kết hợp: Nguyên tắc vạn năng: Nguyên tắc “chứa trong”: 8 Nguyên tắc phản trọng lượng: Nguyên tắc gây ứng suất sơ bộ: 10 Nguyên tắc thực sơ bộ: 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” “thừa”: 12 17 Nguyên tắc chuyển sang chiều khác: 12 18 Nguyên tắc sử dụng dao động 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 Footer Page of 126 Header Page of 126 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 chép (copy): 16 27 Nguyên tắc “rẻ” thay cho “đắt”: 17 28 Thay sơ đồ học: 17 29 Sử dụng kết cấu khí lỏng: 18 30 Sử dụng vỏ dẻo màng mỏng: 18 31 Sử dụng 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 tái sinh phần: 20 35 Thay đổi thông số hoá lý đối tượng: 20 36 Sử dụng chuyển pha: 20 37 Sử dụng nở nhiệt: 21 38 Sử dụng chất oxy hoá mạnh: 21 39 Thay đổi độ trơ: 22 40 Sử dụng 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 Zuse’s Plankalkül: 24 Các ngôn ngữ mã giả: 24 IBM Fortran 25 Lập trình hàm 28 Footer Page of 126 Header Page of 126 Bước tiến tới tinh xảo 30 Khởi đầu ngôn ngữ cho doanh nghiệp 32 Bắt đầu khái niệm chia sẻ thời gian 33 Ngôn ngữ cho khoa học doanh nghiệp : PL/I 33 Hai ngôn ngữ động : APL SNOBOL 34 10 Bắt đầu trừu tượng hóa liệu : SIMULA 67 35 11 Thiết kế trực giao : ALGOL 68 36 12 Lập trình dựa Logic : Prolog 36 13 Ngôn ngữ thiết kế công phu : Ada 37 14 Lập trình hướng đối tượng : Smalltalk 38 15 Kết hợp lập trình mệnh lệnh lập trình hướng đối tượng: C++ 38 16 Một ngôn ngữ hướng đối tượng dựa mệnh lệnh : Java 39 17 Các ngôn ngữ kịch cho Web 39 18 Xu hướng 40 III Kết luận: 41 TÀI LIỆU THAM KHẢO: 42 Footer Page of 126 Header Page of 126 Lời mở đầu: Nếu chưa biết, chưa đọc, chưa nghiên cứu Genrikh Saulovich Atchuller Lý thuyết giải toán sáng chế (TRIZ) ông thiệt thòi người Tại vậy? Bởi ông tài lớn, người có nhân cách sáng ngời, nhà khoa học đá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 phát triển cho giới Khi người sinh ham muốn tìm tòi học hỏi khám phá điều mẻ Nhờ có khả tư sáng tạo thiên tài mà nhà phát minh Leonardo Da Vinci, Archimedes hay Thomas Edison, … làm thay đổi sống nhân loại Vậy người bình thường sao, có cải tiến đóng góp cho xã hội? Thầy Atchuller hiểu điều năm 1946, ông nung nấu ý định xây dựng lý thuyết giúp người bình thường thực sáng chế mà sau ông đặt tên “Lý thuyết giải toán sáng chế” (TRIZ) Với 40 nguyên tắc sáng tạo nói tổng quát hàng triệu phát minh cải tiến sống người thời gian qua Và lĩnh vực công nghệ thông tin ngoại lệ Trong luận trình bày 40 nguyên tắc sáng tạo ví dụ công nghệ thông tin với nguyên tắc (mỗi nguyên tắc có hai ví dụ) cho bạn dễ hình dung Ngoài ra, nhờ có phát triển mạnh mẽ phần cứng từ máy dệt tự động Jacquard đến siêu máy tính ngày mà ngôn ngữ lập trình tiến hóa theo Chúng tiến hóa theo cách đem lại gì? Chúng ta xem tiến hóa chúng nguyên tắc sáng tạo Footer Page of 126 Header Page of 126 I 40 Nguyên tắc sáng tạo ứng dụng tin học: Nguyên tắc phân nhỏ: Nội dung: - Chia đối tượng thành phần độc lập - Làm đối tượng trở nên tháo lắp - Tăng mức độ phân nhỏ đối tượng Ví dụ: - Cách tiếp cận top-down thiết kế hệ thống, chia hệ thống thành nhiều phần nhỏ Bằng cách đó, chia hệ thống phức tạp thành nhiều mô-đun phức tạp Quá trình thực lại cho mô-đun mô-đun không phức tạp - Một ứng dụng xây dựng dựa dịch vụ độc lập có sẵn mạng cục hay qua Internet chẳng hạn Web-service (thông qua Web-service Yahoo, ta xây dựng ứng dụng chat tương tự Yahoo! Messenger cho riêng mình) Tương tự, ứng dụng xây dựng cách sử dụng thành phần thương mại (ta sử dụng mCore.NET để tích hợp gửi nhận tin nhắn SMS vào ứng dụng chạy tảng NET) hay miễn phí (từ kernel Linux mà có 100 phân phối Mint, Ubuntu, Fedora, …) 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 “cần thiết” (tính chất “cần thiết”) khỏi đối tượng Ví dụ: Footer Page of 126 Header Page of 126 - Trong chế nén âm MP3 loại bỏ phần tín hiệu âm mà đa số người nghe nhờ đặc điểm chức nghe người Tượng tự, kỹ thuật nén ảnh JPEG loại bỏ thông tin để đạt tỉ lệ nén ảnh cao ảnh mà không biến dạng ảnh nhiều - Khi liệu ít, ta lưu trữ chúng vài máy tính phòng, công ty Nhưng liệu lớn khó khăn việc bảo trì, mở rộng, … Do đó, ta phải nhờ tới data center 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 thành không đồng - Các phần khác đối tượng phải có chức khác - Mỗi phần đối tượng phải điều kiện thích hợp công việc Ví dụ: - Mô hình: Blackboard Được sử dụng cho vấn đề không xác định chiến lược giải pháp Ý tưởng tập hợp chương trình độc lập mà làm việc cộng tác cấu trúc liệu chung Mỗi chương trình giải phần tổng công việc, tất chương trình làm việc với giải pháp Các chương trình chuyên biệt độc lập lẫn Chúng không gọi lẫn nhau, định trước hoạt động chúng Thay vào đó, chúng điều khiển hệ thống chủ yếu dựa vào trạng thái tiến độ Một thành phần điều khiển trung tâm đánh giá trạng thái việc xử lý điều phối chương trình Cách thức điều khiển hướng liệu làm thử nghiệm với thuật toán khác có thể, Footer Page of 126 Header Page of 126 cho phép việc suy qua thử nghiệm “heuristic” để điều khiển việc xử lý - Sửa danh sách liên kết đối tượng xe máy thành danh sách liên kết đối tượng xe Việc trừu tượng hóa cao cho phép đối tượng không đồng (xe đạp, xe hơi, …) lưu trữ lớp chứa ngược lại 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 xếp nhanh thường lấy phần tử làm phần tử chốt Bằng cách sử dụng phần tử trung vị ba phần tử đứng đầu, đứng đứng cuối làm phần tử chốt thường đạt hiệu suất tốt - Trong công cụ tìm kiếm hát, thay nhập vào tên hát Ta nhập vào tên ca sĩ, tên nhạc sĩ, đoạn hát, … để giúp người dùng thuận lợi việc tìm kiếm hát Nguyên tắc kết hợp: Nội dung: - Kết hợp đối tượng đồng đối tượng dùng cho hoạt động kế cận - Kết hợp mặt thời gian hoạt động đồng kế cận Ví dụ: - Một trang web xây dựng từ nhiều khung (frame) Mỗi frame tải từ server khác Điều làm tăng tốc độ tải trang nhiều kết nối sử dụng đồng thời Footer Page of 126 Header Page of 126 - Một tập đĩa RAID-5 phân chia tập tin qua nhiều đĩa truy xuất để lấy hay lưu trữ tập tin nhanh lấy/lưu trữ đồng thời Nguyên tắc vạn năng: Nội dung: - Đối tượng thực số chức khác nhau, không cần tham gia đối tượng khác Ví dụ: - Các phần mềm tăng tốc hệ thống “tuneup utilities” có chức 1click dọn registry, loại bỏ shortcut bị phá hủy, xóa tập tin tạm, phân mảnh ổ đĩa, … - Các trình duyệt web IE, Firefox hay Google Chrome phần khung mà để ta nhập địa web vào ta nhập từ khóa tìm kiếm vào để tìm kiếm thay truy cập trang web tìm kiếm Nguyên tắc “chứa trong”: Nội dung: - Một đối tượng đặt bên đối tượng khác thân lại chứa đối tượng thứ ba - Một đối tượng chuyển động xuyên suốt bên đối tượng khác Ví dụ: - Kiến trúc bảy tầng OSI network - Cấu trúc liệu danh sách liên kết, Các thuật toán đệ quy như: xếp nhanh, backtracking, … Nguyên tắc phản trọng lượng: Nội dung: - Bù trừ trọng lượng đối tượng cách gắn với đối tượng khác có lực nâng Footer Page of 126 Header Page 10 of 126 - Bù trừ trọng lượng đối tượng tương tác với môi trường sử dụng lực thủy động, khí động Ví dụ: - Để tăng hiệu xuất web server, ta chia trang thành nhiều frame lưu trữ frame ổ đĩa khác hay server khác Người ta phân bổ ảnh lớn hay mảnh liệu qua ổ đĩa khác thay đặt chúng chung đĩa Hiệu xuất tăng lên - Trong hàm băm, ta phân bổ đối tượng vào tập chứa giữ số lượng đối tượng chứa xấp xỉ 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 không mong muốn đối tượng làm việc (hoặc gây ứng suất trước để làm việc dùng ứng suất ngược lại) Ví dụ: - Giả sử người sử dụng phải chờ đợi khoảng thời gian cho hành động thực thi (tìm kiếm, chép, cài đặt chương trình, ) Nếu ta thông báo cho người sử dụng khoảng phút, thời gian thực thi kéo dài người sử dụng không thích Nếu ta thông báo 10 phút thời gian thực thi người sử dụng vui - Khi ứng dụng bắt đầu đọc từ sở liệu, ta tải (load) bảng quan trọng hay mục trước 10 Nguyên tắc thực sơ bộ: Nội dung: Footer Page 10 of 126 Header Page 29 of 126 Fortran 90 (ANSI, 1992) khác đáng kể với Fortran 77 Các thay đổi lớn thêm vào mảng động, ghi, trỏ, nhiều câu lệnh chọn lựa, môđun Ngoài ra, chương trình Fortran 90 gọi cách đệ quy Nguyên lý kết hợp: mô-đun để nhóm thủ tục liệu có liên quan với để chương trình khác sử dụng dễ dàng Fortran 95 (INCITS/ISO/IEC, 1997) tiếp tục phát triển ngôn ngữ, có vài thay đổi vòng lặp Forall Fortran 2003 hỗ trợ lập trình hướng đối tượng, kiểu dẫn xuất tham số hóa, trỏ thủ tục, tương tác với ngôn ngữ lập trình C Fortran 2008(ISO/IEC 1539-1, 2010) có tính - Cấu trúc DO CONCURRENT, cho vòng lặp không phụ thuộc lẫn - Co-array Fortran (CAF), cung cấp mô hình thực thi song song Lập trình hàm AI (trí tuệ nhân tạo) bắt đầu quan tâm vào năm 1950, số nhà ngôn ngữ học, số từ tâm lý học số từ toán học Ngôn ngữ học quan tâm với việc xử lý ngôn ngữ tự nhiên Tâm lý học hứng thú với mô hình hóa việc lưu trữ truy xuất thông tin người, trình xử lý khác não Các nhà toán học quan tâm việc tự động hóa phương pháp thông minh đó, chẳng hạn chứng minh định lý Tất việc nghiên cứu dẫn tới kết luận: vài phương pháp phải phát triển phép máy tính xử lý liệu ký hiệu danh sách liên kết Tại lúc này, hầu hết tính toán liệu số mảng LISP Đi tiên phong ngôn ngữ lập trình hàm, thiết kế McCarthy MIT năm 1958 28 Footer Page 29 of 126 Header Page 30 of 126 Có hai kiểu liệu: nguyên tố danh sách Các nguyên tố ký hiệu chữ số Cú pháp LISP khác với ngôn ngữ mệnh lệnh, ngôn ngữ lập trình hàm Ví dụ, cú pháp Java kết hợp phức tạp tiếng Anh đại số, cú pháp LISP mô hình đơn giản dựa phép tính lambda Hình biểu diễn danh sách (A B C D) danh sách (A (B C) D (E (F G) ) ) Mã chương trình liệu có hình thức: danh sách đặt dấu ngoặc đơn Ví dụ: (A B C D) 29 Footer Page 30 of 126 Header Page 31 of 126 Khi thể liệu, danh sách gồm bốn phần tử Khi xem mã, khai triển hàm có tên A đến ba tham số B, C D Đến sử dụng phổ biến AI Nguyên lý linh động: Vào lúc để thực cấu trúc liệu ngăn xếp, hàng đợi hay biểu thức ký hiệu … sử dụng mảng lần thêm xóa phần tử phải cấp phát lại hay phải tổ chức lại toàn cấu trúc phần tử lưu trữ nhớ liên tiếp Với danh sách liên kết, nhớ phần tử nằm rời rạc nên ta thêm, loại bỏ hay hoán đổi phần tử điểm danh sách dễ dàng Bước tiến tới tinh xảo Vào năm 1950, ngôn ngữ lúc phát triển quanh kiến trúc nhất, số ngôn ngữ cho máy UNIVAC số cho máy IBM series 700, tất phụ thuộc vào máy ngôn ngữ phổ dụng để biểu diễn thuật toán ALGOL kết trình nỗ lực để thiết kế ngôn ngữ phổ dụng GAMM ACM gặp bốn ngày để thiết kế Zurich (ngày 27 tháng đến ngày tháng năm 1958, với mục tiêu sau cho ngôn ngữ mới: - Cú pháp ngôn ngữ phải gần gũi với ký hiệu toán học - Nó phải dễ dàng để mô tả thuật toán - Nó phải chuyển thành mã máy ALGOL 58 Nó kế thừa từ Fortran có số điểm ý sau - Tên biến có chiều dài - Mảng có nhiều chiều (mảng chiều, hai chiều, …) - Tham số tách biệt hình thức (in & out) - Câu lệnh phức hợp (begin … end) - Dấu chẩm phẩy kết thúc câu lệnh 30 Footer Page 31 of 126 Header Page 32 of 126 - Thao tác gán := - if có mệnh đề else-if - Không có I/O Mặc dù ban đầu IBM tâm huyết, từ bỏ vào năm 1959 không thực ALGOL 60 Chỉnh sửa ALGOL 58 họp ngày Paris Nó chuẩn để đưa thuật toán cho 20 năm Tất ngôn ngữ mệnh lệnh sau dựa Là ngôn ngữ độc lập máy ngôn ngữ có cú pháp thức định nghĩa (BNF) Tuy nhiên chưa sử dụng rộng rãi, đặc biệt Mỹ lý thiếu I/O tập ký tự làm cho chương trình không portable, mềm dẻo dẫn tới việc khó khăn để thực, BNF vào lúc xa lạ coi phức tạp thiếu hỗ trợ IBM Có tính - Cấu trúc khối (phạm vi cục bộ) - Tham số đặt chương trình tên biến hay giá trị - Đệ quy chương trình - Các hàm lồng Nguyên lý tách khỏi: tách các lệnh (đặt chúng vào khối) để chúng xem câu lệnh, thu hẹp phạm vi khai báo tên biến, thủ tục, hàm khai báo khối để chúng không bị xung đột với biến có tên sử dụng nơi chương trình cho mục đích khác Nguyên lý chứa trong: Một hàm lồng (hay thủ tục lồng trong) hàm mà bị bao bọc bên hàm khác Nó gọi hàm lồng hay hàm bị lồng trực tiếp hay không trực tiếp hàm lồng Nói cách khác, phạm vi hàm lồng bị giới bị giới hạn hàm lồng Hàm lồng hình thức che dấu thông tin hữu ích 31 Footer Page 32 of 126 Header Page 33 of 126 tác vụ thủ tục bị phân chia thành tác vụ mà có ý nghĩa cục Nó tránh làm lộn xộn đến phần khác chương trình (các hàm, biến khác, ) mà không liên quan đến phần Vì vậy, hàm lồng bổ sung khả cho cấu trúc khác ghi hay đối tượng Khởi đầu ngôn ngữ cho doanh nghiệp Trái với ALGOL 60, COBOL sử dụng rộng thời điểm lại ảnh hưởng lên việc thiết kế ngôn ngữ sau này, ngoại trừ PL/I Có lẽ lý quan trọng sử dụng rộng rãi thiết kế để trở thành ngôn ngữ cho ứng dụng doanh nghiệp COBOL thiết kế dựa ngôn ngữ FLOW-MATIC Cuộc họp việc thiết kế Pentagon tháng – 1959 Mục tiêu thiết kế - Phải giống tiếng Anh đơn giản - Phải dễ dàng sử dụng, chí điều làm giảm sức mạnh - Không bị hướng theo vấn đề trình biên dịch Những đóng góp - Có chức marco ngôn ngữ lập trình cấp cao - Cấu trúc liệu phân cấp (các ghi) - Các câu lệnh lựa chọn lồng - Tên lên tới 30 ký tự, với dấu gạch ngang - Phân loại liệu riêng biệt Nguyên lý tách khỏi: Một lý mã COBOL lại dễ dàng thay đổi chuyển sang máy hay thiết bị hay yêu việc bảo trì nhờ việc tách liệu riêng biệt khỏi câu lệnh thực thi 32 Footer Page 33 of 126 Header Page 34 of 126 Bắt đầu khái niệm chia sẻ thời gian Ngôn ngữ BASIC thiết kế Kemeny Kurtz Dartmouth Mục tiêu thiết kế: - Dễ sử dụng với người học - Ngôn ngữ lập trình cho mục đích - Cho phép khả lập trình nâng cao dành riêng cho chuyên gia mà giữ đơn giản cho người học - Có tương tác với người dùng - Các thông báo lỗi rõ ràng thân thiện - Chạy nhanh với chương trình nhỏ - Không cần phải hiểu biết phần cứng máy tính - Đứng người sử dụng hệ điều hành Ngôn ngữ phân nhánh sử dụng phổ biến VISUAL BASIC Là ngôn ngữ sử dụng rộng rãi thông qua thiết bị đầu cuối kết nối đến máy tính từ xa (trước có LISP không phổ biến) nhờ hệ thống chia sẻ thời gian Nguyên lý liên tục tác động có ích: với hệ thống chia sẻ thời gian, thời gian xử lý máy chủ chia nhỏ người sử dụng thời gian ngắn Sự luân chuyển đủ nhanh để người sử dụng có cảm giác họ sử dụng toàn máy Điều giảm thiểu chi phí, tận dụng tối đa công suất máy Ngôn ngữ cho khoa học doanh nghiệp: PL/I Vào năm 1963, người sử dụng máy tính cho khoa học bắt đầu nhận cần sử dụng I/O phức tạp hơn, giống COBOL có Những người sử dụng máy tính cho doanh nghiệp bắt đầu cần dấu chấm động mảng cho MIS Do cần xây dựng máy tính cho hai loại ứng dụng khoa học doanh nghiệp Theo thiết kế ngôn ngữ để hai loại ứng dụng 33 Footer Page 34 of 126 Header Page 35 of 126 PL/I thiết kế năm tháng ủy X (ba thành viên từ IBM, ba thành viên từ SHARE) Ý tưởng ban đầu mở rộng từ Fortran IV, gọi NPL (New Programming Language) Sau đổi tên thành PL/I vào 1965 Những đóng góp PL/I - Là ngôn ngữ xử lý ngoại lệ - Cho phép tạo chương trình thực thi đồng thời - Con trỏ xem kiểu liệu - Mặt cắt mảng nhiều chiều tham chiếu Ví dụ hàng thứ ba ma trận tham chiếu mảng chiều Nhưng có hạn chế - Nhiều chức thiết kế - Quá lớn phức tạp Nguyên lý dự phòng: với việc xử lý ngoại lệ, lập trình viên cho chương trình tiếp tục thực ngoại lệ phép chẳng hạn lỗi chia cho mà không làm chương trình thực sai hay phải dừng lại Nếu ngoại lệ tràn nhớ thông báo cho người sử dụng biết Hai ngôn ngữ động đầu tiên: APL SNOBOL - Có đặc điểm định kiểu động cấp phát nhớ động - Các biến định kiểu gán vào giá trị - Bộ nhớ cấp phát cho biến gán vào giá trị Cả hai không ảnh hưởng nhiều đến ngôn ngữ sau 9.1 APL: A Programming Language Ban đầu không thiết kế ngôn ngữ lập trình mà dự định phương tiện để mô tả kiến trúc máy tính, IBM Ken Iverson vào năm 1960 Có nhiều toán tử cung cấp lượng lớn thao tác mảng (ví dụ, chuyển vị ma trận cần toán tử nhất) Tuy nhiên, chương trình khó để đọc Ngày sử dụng có thay đổi đáng kể 34 Footer Page 35 of 126 Header Page 36 of 126 9.2 SNOBOL Được thiết kế ngôn ngữ thao tác chuỗi phòng thí nghiệm Bell Farber, Griswold Polensky vào năm 1964 Có toán tử đầy sức mạnh cho việc so khớp mẫu chuỗi Bởi chất động ngôn ngữ làm cho chậm so với ngôn ngữ tương tự (và không sử dụng cho soạn thảo văn bản) Ngày sử dụng tác vụ xử lý văn 10 Bắt đầu trừu tượng hóa liệu: SIMULA 67 Được thiết kế chủ yếu cho việc mô hệ thống Na Uy Nygaard Dahl Dựa ALGOL 60 SIMULA I Có điểm - Một loại chương trình gọi “coroutine” - Có cấu trúc lớp (bắt đầu hình thành khái niệm trừu tượng hóa liệu) Nguyên tắc chuyển sang chiều khác: Thông thường mối quan hệ chương trình gọi chương trình khác chương trình bị gọi mối quan hệ “chủ-tớ” Còn mối quan hệ coroutine gọi coroutine gọi ngang hàng Coroutine thể loại đặc biệt chương trình Thông thường conroutine tạo ứng dụng đơn vị chương trình gọi đơn vị chủ (không phải coroutine) Khi tạo ra, coroutine thực đoạn mã khởi tạo chúng sau trả quyền điều khiển cho đơn vị chủ Khi toàn coroutine khởi tạo, chương trình chủ “resume” coroutine đó, coroutine “resume” lẫn theo thứ tự công việc Đến công việc hoàn thành coroutine trả quyền điều khiển cho đơn vị chủ Lúc coroutine bị chấm dứt hay tiếp tục chạy tùy theo chương trình Một ví dụ vấn đề mô trò chơi đánh Giả sử trò chơi có bốn người chơi Một đơn vị chương trình chủ tạo bốn coroutine Chương trình chủ khởi động chương trình mô cách “resume” 35 Footer Page 36 of 126 Header Page 37 of 126 coroutine người chơi Khi người xong lượt “resume” đến coroutine người kế tiếp, tiếp tục kết thúc trò chơi Nguyên tắc đồng nhất: nhờ có đồng trình bày của, thao tác đối tượng thành kiểu liệu trừu tượng hóa mà làm cho thay đổi biểu diễn liệu hay mã thực thi không làm cho mã người dung thay đổi Ngoài trừu tượng hóa liệu giúp đóng gói liệu để bảo vệ liệu không bị truy xuất trực tiếp mã người dùng 11 Thiết kế trực giao: ALGOL 68 Tiếp tục phát triển từ ALGOL 60 tập cha ngôn ngữ Thiết kế dựa khái niệm “trực giao” (Có vài khái niệm bản, thêm vào vài kết hợp chế) Có tính đáng ý như: - Các cấu trúc liệu người sử dụng định nghĩa - Kiểu tham chiếu - Mảng động (khai báo mảng không cần kích thước) ALGOL 68 sử dụng ALGOL 60 Tuy nhiên ảnh hưởng mạnh mẽ lên ngôn ngữ sau này, đặc biệt Pascal, C Ada 12 Lập trình dựa Logic: Prolog Được phát triển Comerauer Roussel (đại học Aix-Marseille) với giúp đỡ Kowalski (đại học Edinburgh) Không có thủ tục Có thể tóm lại hệ thống sở liệu thông minh sử dụng trình suy diễn để suy thật (kết quả) câu truy vấn Nó sử dụng rộng rãi cách tiếp cận không mệnh lệnh, chương trình viết ngôn ngữ lôgic đến chứng minh hiệu cao so với chương trình mệnh lệnh Thứ hai, vùng ứng 36 Footer Page 37 of 126 Header Page 38 of 126 dụng nhỏ cho số loại hệ thống quản lý sở liệu số chương trình AI 13 Ngôn ngữ thiết kế công phu nhất: Ada Công sức bỏ cho việc thiết kế lớn, liên quan đến hàng trăm người, nhiều tiền của, khoảng tám năm Ngôn ngữ đặt tên theo Ada Augusta nữ bá tước xứ Lovelace, xem lập trình viên Có tính đáng ý: - Mô hình gói (hỗ trợ trừu tượng hóa liệu) - Xử lý ngoại lệ công phu - Hỗ trợ lập trình generic - Hỗ trợ lập trình tương tranh thông qua mô hình tác vụ Nguyên lý đồng nhất: lập trình generic định nghĩa thao tác liệu với kiểu liệu chung nhằm tối đa hóa việc sử dụng lại mã chương trình, tạo kiểu liệu an toàn tránh mã thừa để đem lại hiệu suất cao Ada 95 Bắt đầu vào năm 1988 Hỗ trợ OOP thông qua kiểu dẫn xuất Kiểm soát tốt chế chia liệu Có nhiều tính lập trình tương tranh Tuy nhiên không phổ biến quốc phòng Mỹ không sử dụng phổ biến C++ Ada 2005 bổ sung số tính giao diện (interface) giống Java, nhiều thuật toán điều khiển lập lịch hơn, đồng hóa giao diện Ada sử dụng nhiều quốc phòng, hàng không, giao thông vận tải đường sắt, số lĩnh vực khác 37 Footer Page 38 of 126 Header Page 39 of 126 14 Lập trình hướng đối tượng: Smalltalk Được phát triển Xerox PARC, khởi tạo Alan Kay, sau thực Adele Goldberg Ngôn ngữ thực đầy đủ hướng đối tượng (trừu tượng hóa liệu, thừa kế, ràng buộc động) Đi tiên phong lĩnh vực thiết kế giao diện người sử dụng đẩy mạnh OOP Nguyên lý tách khỏi nguyên lý kết hợp: chương trình không OOP thường danh sách dài câu lệnh Các chương trình phức tạp thường nhóm câu lệnh vào hàm, chúng thực công việc Với thiết kế liệu chương trình dễ trở nên toàn cục Khi chương trình lớn dần, có nhiều hàm có quyền thay đổi liệu, điều có nghĩa có lỗi ảnh hưởng rộng Với cách hướng đối tượng, lập trình viên đặt liệu vào nơi mà bị truy cập trực tiếp phần lại chương trình Thay vào đó, liệu truy cập phương thức Kết hợp liệu với tập phương thức để truy cập quản lý liệu gọi đối tượng 15 Kết hợp lập trình mệnh lệnh lập trình hướng đối tượng: C++ Được phát triển phòng thí nghiệm Bell Stroustrup vào năm 1980 Phát triển từ C SIMULA 67 Lấy phần từ SIMULA 67 cho lập trình hướng đối tượng Hỗ trợ xử lý ngoại lệ Một ngôn ngữ lớn phức tạp, phần hỗ trợ lập trình thủ tục hướng đối tượng Nhanh chóng phổ biến Có phiên Microsoft (phát hành với NET vào 2002): có chức ủy quyền, giao diện, đa kế thừa 38 Footer Page 39 of 126 Header Page 40 of 126 16 Một ngôn ngữ hướng đối tượng dựa mệnh lệnh: Java Được phát triển Sun vào năm đầu 1990 Vào lúc đó, C C++ không an toàn, tin cậy để nhúng vào thiết bị điện tử Vì ngôn ngữ Java đời, dựa C++ đơn giản hóa (không có struct, union, enum, pointer), hỗ trợ OOP có tham chiếu trỏ Ngoài - Loại bỏ nhiều tính không an toàn C++ - Hỗ trợ lập trình tương tranh - Có thư viện cho applet, interface, GUI, truy cập sở liệu - Portable dựa vào máy ảo Java, trình biên dịch JIT - Được sử dụng phổ biến lập trình web Nguyên lý trung gian: Java tiếng với câu “viết lần, chạy đâu” (chạy hệ máy nào) nhờ có máy ảo Java, với máy ảo chương trình Java sau biên dịch mã bytecode (các tập tin class) chúng biên dịch lại thành mã máy hệ máy để thực thi Nguyên lý sử dụng vỏ dẻo màng mỏng: Với interface, lớp định nghĩa với interface thay đổi nội dung interface bên lớp 17 Các ngôn ngữ kịch cho Web 17.1 Perl Được thiết kế Larry Wall, phiên phát hành vào 1987 Các biến kiểu tĩnh khai báo ngầm định Có ba không gian tên (namespace), biểu ký tự tên biến Mạnh mẽ nguy hiểm Được sử dụng phổ biến cho lập trình CGI Web Cũng sử dụng thay cho ngôn ngữ quản trị hệ thống UNIX 39 Footer Page 40 of 126 Header Page 41 of 126 17.2 JavaScript Bắt đầu Netscape sau liên kết Netscape Sun Microsystems Một ngôn ngữ kịch nhúng vào HTML phía client, thường sử dụng để tạo HTML động Hoàn toàn thông dịch Chỉ có cú pháp tương tự liên quan tới Java Nguyên lý phẩm chất cục bộ: Lúc đầu tất thao tác website xử lý server Sau tương tác người dùng hiệu ứng hình ảnh, rê chuột, kiểm tra giá trị thông tin mà người dùng nhập vào, … xử lý client ngôn script Javascript, VBScript, … để giảm gánh nặng cho server, tương tác nhanh chóng với người dùng 17.3 PHP PHP: Hypertext Preprocessor, thiết kế Rasmus Lerdorf Một ngôn ngữ kịch nhúng vào HTML phía server, thường sử dụng cho xử lý form truy cập liệu qua Web Hoàn toàn thông dịch 18 Xu hướng Ngôn ngữ tiếp tục phát triển công nghiệp lẫn nghiên cứu Vài xu hướng : - Hỗ trợ lập trình phân tán - Bổ sung chế bảo mật, tin cậy cho ngôn ngữ - Tích hợp với sở liệu - Phát triển phần mềm hướng thành phần - AOP (Aspect Oriented Programming) - Các ngôn ngữ lập trình song song đồng thời cho CPU GPU Ta dễ dàng thấy vài nguyên tắc sáng tạo sử dụng nguyên tắc phân nhỏ (trong phân tán), nguyên tắc linh hoạt (trong AOP), 40 Footer Page 41 of 126 Header Page 42 of 126 III Kết luận: Hệ thống giáo dục, thi thố tài thuộc lòng hiểu biết “uyên thâm” thách thức đối đáp thông thạo trước câu đối chứa đựng điển tích thuật chơi chữ hóc búa, chuẩn mực người tài người “thông kim bác cổ”, hiểu biết “thiên kinh vạn quyển” dần bị thay lực định sáng tạo tình không ngừng biến động hoàn cảnh Điều rõ ràng luận cho ta thấy “có mặt” rộng khắp 40 phương pháp sáng tạo công nghệ thông tin nói chung ngôn ngữ lập trình nói riêng Ta thấy phổ biến sống quanh ta nhiều Nó kết tinh hàng triệu sáng tạo, dễ hiểu ngày nhiều nước giới du nhập, quan tâm đến Khi phát triển khoa học kỹ thuật nhanh vũ bão, giới trở nên ngày hội nhập việc ta giải vấn đề trở nên có giá trị, mở hội thành công lớn cho cho xã hội Thế việc “thấy” “dụng” hai việc khác hoàn toàn Do để áp dụng đòi hỏi bạn cần phải nắm vững phải tập luyện thường xuyên, thử liên tưởng vận dụng nguyên tắc vào bạn gặp vấn đề Và nhớ “Sự sáng tạo làm nên khác biệt người dẫn đầu kẻ bám đuôi” Steve Jobs 41 Footer Page 42 of 126 Header Page 43 of 126 Tài liệu tham khảo: Website: - http://www.dlhoffman.com/ - http://www.stackoverflow.com - http://www.triz-journal.com - http://www.trizforsoftware.com/ - http://www.wikipedia.org - http://www.tailieu.vn/ Sách: - Concepts of Programming Languages, 10th Edition, Robert W.Sebesta - Phương pháp luận khoa học kỹ thuật, Phan Dũng - Slides giảng môn ‘‘PHƯƠNG PHÁP NGHIÊN CỨU KHOA HỌC TRONG TIN HỌC’’, GS.TSKH Hoàng Kiếm 42 Footer Page 43 of 126 ... mà ngôn ngữ lập trình tiến hóa theo Chúng tiến hóa theo cách đem lại gì? Chúng ta xem tiến hóa chúng nguyên tắc sáng tạo Footer Page of 126 Header Page of 126 I 40 Nguyên tắc sáng tạo ứng dụng. .. 40 Nguyên tắc sáng tạo ứng dụng tin học: Nguyên tắc phân nhỏ: Nguyên tắc “tách khỏi”: Nguyên tắc phẩm chất cục bộ: Nguyên tắc phản đối xứng: Nguyên tắc. .. tuệ nhân tạo) bắt đầu quan tâm vào năm 1950, số nhà ngôn ngữ học, số từ tâm lý học số từ toán học Ngôn ngữ học quan tâm với việc xử lý ngôn ngữ tự nhiên Tâm lý học hứng thú với mô hình hóa việc

Ngày đăng: 18/05/2017, 14:57

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan