BÁO CÁO TÌM HIỂU VỀ CÁC MÔ HÌNH LẬP TRÌNH

27 2.9K 23
BÁO CÁO TÌM HIỂU VỀ CÁC MÔ HÌNH 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

BÁO CÁO TÌM HIỂU VỀ CÁC MÔ HÌNH LẬP TRÌNH

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI BÁO CÁO TÌM HIỂU VỀ CÁC MƠ HÌNH LẬP TRÌNH Mơn học: Kỹ Thuật Lập Trình Giảng viên: Vũ Đức Vượng Email: vuongvd@gmail.com Mã lớp học: xxxxxx Thực Sinh viên: Mã số sinh viên: Email: Trang Báo cáo: Tìm hiểu mơ hình lập trình TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI Mục lục I Lời nói đầu II Tổng quan mơ hình lập trình phổ biến Imperative Programming Functional Programming 2.1 Đặc điểm Ví dụ Object-oriented Paradigm Ví dụ Ví dụ Ví dụ Visual Programming 10 4.1 Đặc điểm bật phương pháp lập trình trực quan 11 Parallel Programming 11 5.1 Quá trình song song hóa gồm ba giai đoạn bước 12 Distributed Programming 12 Extreme Programming 13 7.1 Ưu Điểm 13 7.2 Phương thức tiến hành XP 14 Concurrent Programming 14 8.1 Đặc điểm 14 III Logic programming 15 Đặc điểm 15 Ngôn ngữ PROLOG 16 2.1 Giới thiệu 16 2.2 Các yếu tố Turbo Prolog 16 2.3 Cấu trúc chương trình Prolog 17 2.4 Các nguyên tắc ngôn ngữ Prolog 19 2.5 Bộ ký tự, từ khoá 20 2.6 Các kiểu liệu 20 2.7 Các hàm xuất nhập chuẩn 23 2.8 Kỹ thuật đệ quy 24 2.9 Một số ví dụ chương trình prolog 25 IV Lời kết 27 V Tài liệu tham khảo 27 Trang Báo cáo: Tìm hiểu mơ hình lập trình TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI I Lời nói đầu Bất kỳ ngơn ngữ lập trình mang tính logic cao tuân theo quy chuẩn toán học Tuy vậy, ngơn ngữ lại có phương thức riêng để thực quy chuẩn đó, đặc biệt lĩnh vực hàm (function), biến (variable), phương thức (method) đối tượng (object) Bên cạnh đa dạng ngơn ngữ lập trình, dần có nhiều mơ hình lập trình đời, phổ biến kể đến như: Lập trình hướng đối tượng (object-oriented programming), lập trình thủ tục (procedural programming) lập trình cấu trúc (structured programming) Mỗi mơ hình lập trình lại có đặc trưng riêng cách sử dụng tính trừu tượng hóa q trình xác định Các nhóm khác cơng nghệ phần mềm đề xướng phương pháp khác nhau, ngơn ngữ lập trình khác tức mơ hình lập trình khác Một số ngôn ngữ thiết kế để hỗ trợ mơ hình đặc thù (Java hỗ trợ lập trình hướng đối tượng Haskell hỗ trợ lập trình chức năng) Một số ngơn ngữ khác lại hỗ trợ nhiều mơ hình (như Python Common Lisp) Một số mơ hình lập trình cấm thao tác mà ngơn ngữ có Chẳng hạn, lập trình cấu trúc không cho phép sử dụng lệnh goto Quan hệ mơ hình lập trình ngơn ngữ lập trình phức tạp ngơn ngữ hỗ trợ nhiều mơ hình lập trình Thí dụ C++ thiết kế để hỗ trợ phần tử lập trình thủ tục, lập trình hướng đối tượng lập trình tiêu Mặc dù vậy, người thiết kế người lập trình định làm để xây dựng chương trình dùng phần tử mơ hình Người ta viết chương trình hồn tồn theo kiểu lập trình thủ tục C++, viết chương trình hồn tồn hướng đối tượng, hay viết chương trình có phần tử hai mơ hình Ở thời kỳ đầu, cơng nghệ phần mềm hồn tồn dựa thao tác lập trình mã nhị phân mã máy, mà đại diện giá trị Điều khiến cho q trình thiết kế, kiểm sốt hoạt động sửa lỗi ứng dụng trở nên vô rắc rối không hiệu Chúng ta coi phương thức lập trình thời điểm thuộc mơ hình lập trình bậc thấp (low-level programming paradigm) Về sau, với phát triển công nghệ, hạn chế giai đoạn dần xóa bỏ với đời ngơn ngữ lập trình hệ thứ COBOL, Fortran BASIC, đồng thời, mơ hình lập trình xuất tiếp tục sử dụng hiệu phổ biến ngày nay, mơ hình lập trình thủ tục (procedural paradigm) Dần dần, chứng kiến phát triển mạnh mẽ số lượng mơ hình lập trình, mà kể đến mơ hình sau:  Lập trình cấu trúc - Structured programming  Lập trình mệnh lệnh - Imperative programming  Lập trình truyền báo - Message passing programming  Lập trình thủ tục - Procedural programming  Lập trình chức - Functional programming  Lập trình trực quan - Visual programming  Lập trình song song - Parallel programming  Lập trình phân tán - Distributed programming  Lập trình tương tranh - Concurrent programming  Lập trình bậc giá trị - Value-level programming  Lập trình điều khiển theo luồng - Flow-driven programming Trang Báo cáo: Tìm hiểu mơ hình lập trình TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI              Lập trình vơ hướng - Scalar programming Lập trình cưỡng chế - Constraint programming Lập trình định hướng đối tượng - Component-oriented programming (như OLE) Lập trình hướng đối tượng - Object-oriented programming Lập trình cực độ - Extreme programming Lập trình định dạng - Aspect-oriented programming (như AspectJ) Lập trình kí hiệu - Symbolic programming (như Mathematica) Lập trình định hướng bảng - Table-oriented programming (như FoxPro Microsoft) Lập trình ống - Pipeline programming (như dịng lệnh UNIX) Lập trình hậu đối tượng - Post-object programming Lập trình định hướng chủ thể - Subject-oriented programming Lập trình phản xạ - Reflective programming Lập trình dịng liệu - Dataflow programming II Tổng quan mơ hình lập trình phổ biến Imperative Programming First this and next that        Dựa theo công nghệ phần cứng số ý tưởng Von Neumann Thực thi bước tính tốn theo thứ tự quy định cấu trúc điều khiển Các bước gọi lệnh Gia tăng thay đổi tráng thái chương trình hàm theo thời gian Tương tự việc ta thực thao tác quen thuộc ngày, nấu ăn, sửa xe Các lệnh đặc trưng: Assignment, IO, Procedure Calls Các ngôn ngữ đại diện: Fortran, Algol, Pascal, Basic, C Trừu tượng hóa việc sử dụng hàm gọi thủ tục - coi câu lệnh Điều cịn gọi lập trình thủ tục (Procedural programming) Ví dụ int giai_thua(int n) { int i, nResult; nResult = 1; while (n > 0) { nResult *= n; n -= 1; Trang Báo cáo: Tìm hiểu mơ hình lập trình TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI } return nResult; } Với n = 5, giá trị biến đoạn chương trình thay đổi sau: n nResult 20 60 120 Functional Programming Evaluate an expression and use the resulting value for something 2.1 Đặc điểm  Nguyên lý ý tưởng: Toán học lý thuyết hàm  Các giá trị tạo biến đổi  Trừu tượng hóa biểu thức thành hàm ngược lại, hàm tính tốn biểu thức  Hàm lớp giá trị  Hàm giá trị hoàn chỉnh, tương tự số, danh sách  Thích hợp với tính tốn theo u cầu  Mở khả Functional Programming thể loại lâu đời ba paradigm lập trình Ngơn ngữ FP IFP, phát minh vào năm 1955, năm trước có Fortran Sau đó, LISP đời năm 1958, năm trước có COBOL Cả Fortran COBOL ngôn ngữ imperative (hay cịn gọi procedural) Chúng đặc biệt thành cơng ứng dụng vào tính tốn khoa học nghiệp vụ, trở thành paradigm thống trị suốt 30 đầu kỉ nguyên thông tin Vào năm 1970, Object-Oriented paradigm bắt đầu phát triển Cùng với trưởng thành ngơn ngữ lập trình hướng đối tượng, OO trở thành paradigm sử dụng phổ biến ngày hôm Từ năm 1950, phát triển mạnh mẽ liên tục với đại diện SML, OCaml, APL Clean, FP sử dụng cho mục đích học thuật nghiên cứu chủ yếu Imperative đạt thành công bước đầu nhờ vào thị đơn giản OO thành cơng nhờ vào khả mơ hình hóa tốn phức tạp Cịn FP có khả gì, dù đời sớm lại không mang lại thành công mong đợi? Trang Báo cáo: Tìm hiểu mơ hình lập trình TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI FP xem chương trình tập hợp hàm nhận vào đối số trả giá trị Không giống Imperative, FP không tạo hiệu ứng phụ sử dụng đệ qui thay cho vòng lặp Hàm FP giống với hàm tốn học khơng làm thay đổi trạng thái chương trình  Một đại lượng gán giá trị khơng thay đổi giá trị  Hàm khơng sửa đổi giá trị đối số truyền vào, giá trị hàm trả hoàn toàn giá trị Về mặt kĩ thuật cài đặt bên dưới, giá trị gán vào vùng nhớ đánh dấu sử dụng không ghi đè lên Để tạo kết trả về, hàm chép giá trị chỉnh sửa đó, khơng làm ảnh hưởng đến giá trị ban đầu, trả chỉnh sửa Các đại lượng khơng cịn hàm tham chiếu đến tự động bị hủy để giải phóng nhớ (đây ý tưởng thu gom rác Java và.NET) Cơ sở toán học cho FP tường minh, cung cấp giải pháp logic ngắn gọn cho vấn đề tính tốn Tuy nhiên, khơng linh hoạt thay đổi trạng thái chuyên sử dụng đệ qui khiến người ta ưa chuộng paradigm khác để xử lý thao tác tính tốn thơng dụng Ví dụ int giai_thua(int n) { if (n == 1) { return n; } else { return n * giai_thua(n - 1); } } Với n = 5, ta có thứ tự tính tốn đoạn chương trình sau: Trang Báo cáo: Tìm hiểu mơ hình lập trình TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI giai_thua(5) = * giai_thua(4) = * * giai_thua(3) = * * * giai_thua(2) = * * * * giai_thua(1) =5 *4 *3 *2 *1 =5 *4 *3 *2 =5*4*6 = * 24 = 120 Object-oriented Paradigm Send messages between objects to simulate the temporal evolution of a set of real world phenomena Khái niệm hướng đối tượng xây dựng tảng khái niệm lập trình có cấu trúc trừu tượng hóa liệu Sự thay đổi chỗ, chương trình hướng đối tượng thiết kế xoay quanh liệu mà làm việc đó, theo thân chức chương trình Điều hồn tồn tự nhiên hiểu mục tiêu chương trình xử lý liệu Suy cho cùng, cơng việc mà máy tính thực thường gọi xử lý liệu Dữ liệu thao tác liên kết với mức (còn gọi mức thấp), thứ địi hỏi thứ có mục tiêu cụ thể, chương trình hướng đối tượng làm tường minh mối quan hệ Lập trình hướng đối tượng (Object Oriented Programming - gọi tắt OOP) hay chi tiết Lập trình định hướng đối tượng, phương pháp lập trình lấy đối tượng làm tảng để xây dựng thuật giải, xây dựng chương trình Thực chất phương pháp mà cách nhìn việc lập trình Để phân biệt, với phương pháp lập trình theo kiểu cấu trúc mà quen thuộc trước đây, hay gọi phương pháp lập trình hướng thủ tục (Procedure-Oriented Programming), người lập trình phân tích nhiệm vụ lớn thành nhiều cơng việc nhỏ hơn, sau chi tiết, cụ thể hoá để vấn đề đơn giản, để tìm cách giải vấn đề dạng thuật giải cụ thể rõ ràng qua dễ dàng minh hoạ ngơn ngữ giải thuật (hay cịn gọi thuật giải chương trình con) Cách thức phân tích thiết kế gọi nguyên lý lập trình từ xuống (top-down), để thể trình suy diễn từ chung cụ thể Các chương trình chức độc lập, ghép nối chúng lại với cho hệ thống chương trình để giải vấn đề đặt Chính vậy, cách thức phân tích hệ thống lấy chương trình làm tảng, chương trình đóng vai trị trung tâm việc lập trình, hiểu phương pháp lập trình hướg thủ tục Tuy nhiên, phân tích để thiết kế hệ thống khơng thiết phải luôn suy nghĩ theo hướng “làm để giải cơng việc”, định hướng tư theo Trang Báo cáo: Tìm hiểu mơ hình lập trình TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI phong cách “với số đối tượng có, phải làm để giải công việc đặt ra” phong phú hơn, “làm với số đối tượng có đó”, từ giải cơng việc cụ thể Với phương pháp phân tích đối tượng đóng vai trị trùng tâm việc lập trình vậy, người ta gọi nguyên lý lập trình từ lên (Bottom-up) Lập trình hướng đối tượng liên kết cấu trúc liệu với thao tác, theo cách mà tất thường nghĩ giới quanh Chúng ta thường gắn số hoạt động cụ thể với loại hoạt động đặt giả thiết quan hệ Ví dụ Để dễ hình dùng hơn, thử nhìn qua cơng trình xây dựng đại, sân vận động có mái che hình vòng cung, kiến trúc thẩm mĩ với đường nét hình cong Tất sản phẩm xuất với vật liệu xây dựng Ngày nay, không chồng lên viên gạch, tảng đá để tạo nên quần thể kiến trúc (như Tháp Chàm Nha Trang, Kim Tự Tháp, ), mà với bê-tông, sắt thép không nhiều viên gạch, người xây dựng thiết kế cơng trình kiến trúc tuyệt mỹ, tồ nhà đại Chính chất liệu xây dựng làm ảnh hưởng phương pháp xây dựng, chất liệu xây dựng ngun lý kết dính chất liệu lại với cho đối tượng để khảo sát, Chất liệu xây dựng nguyên lý kết dính chất liệu lại với hiểu theo nghĩa liệu chương trình tác động liệu Ví dụ Chúng ta biết xe có bánh xe, di chuyển đổi hướng cách quẹo tay lái Tương tự thế, một loại thực vật có thân gỗ Một xe cây, mà xe, giả thiết mà làm với xe khơng thể làm với Chẳng hạn, thật vô nghĩa muốn lái cây, cịn xe lại chẳng lớn thêm tưới nước cho Lập trình hướng đối tượng cho phép sử dụng trình suy nghĩ với khái niệm trừu tượng sử dụng chương trình máy tính Một mẫu tin (record) nhân đọc ra, thay đổi lưu trữ lại; cịn số phức dùng tính tốn Tuy khơng thể lại viết số phức vào tập tin làm mẫu tin nhân ngược lại hai mẫu tin nhân lại khơng thể cộng với Một chương trình hướng đối tượng xác định đặc điểm hành vi cụ thể kiểu liệu, điều cho phép biết cách xác có kiểu liệu khác Chúng ta cịn tạo quan hệ kiểu liệu tương tự khác chương trình hướng đối tượng Người ta thường tự nhiên phân loại thứ, thường đặt mối liên hệ khái niệm với khái niệm có, thường thực suy diễn chúng quan hệ Hãy quan niệm giới theo kiểu cấu trúc cây, với mức xây dựng chi tiết cho hệ sau so với hệ trước Đây phương pháp hiệu để tổ chức giới quanh Các chương trình hướng đối tượng làm việc theo phương thức tương tự, chúng cho phép xây dựng các Trang Báo cáo: Tìm hiểu mơ hình lập trình TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI cấu liệu thao tác dựa cấu có sẵn, mang theo tính cấu mà chúng dựa đó, thêm vào tính Lập trình hướng đối tượng cho phép tổ chức liệu chương trình theo cách tương tự nhà sinh học tổ chức loại thực vật khác Theo cách nói lập trình đối tượng, xe hơi, cối, số phức, sách gọi lớp (Class) Một lớp mẫu mô tả thông tin cấu trúc liệu, lẫn thao tác hợp lệ phần tử liệu Khi phần tử liệu khai báo phần tử lớp gọi đối tượng (Object) Các hàm định nghĩa hợp lệ lớp gọi phương thức (Method) chúng hàm xử lý liệu đối tượng lớp Một thực thể (Instance) vật thể có thực bên nhớ, thực chất đối tượng (nghĩa đối tượng cấp phát vùng nhớ) Mỗi đối tượng có riêng cho phần tử liệu lớp gọi biến thực thể (Instance variable) Các phương thức định nghĩa lớp gọi đối tượng lớp Điều gọi gửi thông điệp (Message) cho đối tượng Các thông điệp phụ thuộc vào đối tượng, đối tượng nhận thơng điệp phải làm việc theo thơng điệp Các đối tượng độc lập với thay đổi biến thể đối tượng khơng ảnh hưởng biến thể đối tượng khác việc gửi thông điệp cho đối tượng khơng ảnh hưởng đến đối tượng khác Như vậy, đối tợng hiểu theo nghĩa thực thể mà liệu thủ tục tác động lên liệu đóng gói lại với Hay “đối tượng đặc trưng số thao tác (operation) thông tin (information) ghi nhơ tác động thao tác này.” Ví dụ Khi nghiên cứu ngăn xếp (stack), liệu vùng chứa ngăn xếp, đỉnh ngăn xếp, phải cài đặt kèm theo thao tác khởi tạo (create) ngăn xếp, kiểm tra ngăn xếp rỗng (empty), đẩy (push) phần tử vào ngăn xếp, lấy (pop) phần tử khỏi ngăn xếp Trên quan điểm lấy đối tượng làm tảng, rõ ràng liệu thao tác liệu ln gắn bó với nhau, kết dính chúng đối tượng cần khảo sát Các thao tác đối tượng gọi phương thức hay hành vi đối tượng Phương thức liệu đối tượng ln tác động lẫn có vai trị ngang đối tượng, Phương thức đối tượng qui định liệu ngược lại, liệu đối tượng đặt trưng phương thức đối tượng Chính nhờ gắn bó đó, gởi thơng điệp đến đối tượng khác Điều giúp người lập trình khơng phải xử lý chương trình dãy cấu trúc điều khiển tuỳ theo thông điệp nhận vào, mà chương trình xử lý vào thời điểm thực Tóm lại, so sánh lập trình cấu trúc với chương trình làm tảng: Chương trình = Cấu trúc liệu + Thuật giải Trang Báo cáo: Tìm hiểu mơ hình lập trình TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI Trong lập trình hướng đối tượng có: Đối tượng = Phương thức + Dữ liệu Đó quan điểm lập trình tồn phát triển giới ngày Visual Programming Như biết, loại máy tính (sử dụng loại CPU – Central Processing Unit xác định) hiểu thực trực tiếp lệnh chương trình theo loại ngơn ngữ dành riêng gọi ngôn ngữ máy Tuy nhiên, triển khai ứng dụng thực tế mà phải viết chương trình trực tiếp ngơn ngữ máy phức tạp, địi hỏi thời gian cơng sức lớn, nhiều khơng thể thực Vì vậy, người ta tìm cách xây dựng ngơn ngữ lập trình riêng gần với ngơn ngữ tự nhiên, thuận lợi cho việc triển khai ứng dụng Khi thực chương trình ngơn ngữ phải qua bước dịch chương trình sang ngơn ngữ máy để thực Từ trước đến có nhiều ngơn ngữ lập trình đời phục vụ đắc lực cho việc triển khai ứng dụng máy tính Trong giai đoạn đầu, ngơn ngữ lập trình dễ sử dụng ngơn ngữ máy khó với lập trình viên chưa đủ mạnh để dễ dàng triển khai thuật tốn Chương trình chưa có tính cấu trúc chặt chẽ mặt liệu tổ chức chương trình Vì vậy, việc triển khai ứng dụng thực tế ngơn ngữ lập trình khó khăn Giai đoạn thời kỳ ngơn ngữ lập trình có cấu trúc Các ngơn ngữ lập trình có đặc điểm có tính cấu trúc chặt chẽ mặt liệu tổ chức chương trình Một loạt ngơn ngữ lập trình có cấu trúc đời dược sử dụng rộng rãi : PASCAL, C, BASIC Giai đoạn thời kỳ lập trình hướng đối tượng phương pháp lập trình có bước biến đổi mạnh Trong ngơn ngữ lập trình có cấu trúc ứng dụng bao gồm hai thành phần riêng liệu chương trình Tuy chúng có quan hệ chặt chẽ hai đối tượng riêng biệt Trong phương pháp lập trình hướng đối tượng đối tượng lập trình bao hàm liệu phương thức hành động liệu Vì vậy, việc lập trình đơn giản mang tính kế thừa cao, tiết kiệm thời gian lập trình Tuy nhiên, với phương pháp lập trình địi hỏi lập trình viên phải nhớ nhiều câu lệnh với lệnh có cú pháp tác dụng riêng, viết chương trình phải tự lắp nối lệnh để có chương trình giải toán riêng biệt Trong xu hướng phát triển mạnh mẽ tin học, số người sử dụng máy tính tăng lên nhanh máy tính sử dụng hầu hết lĩnh vực đời sống nên địi hỏi ngơn ngữ lập trình phải đơn giản, dễ sử dụng mang tính đại chúng cao Chính phương pháp lập trình trực quan đời Đặc điểm ngơn ngữ lập trình trực quan dễ sử dụng, triển khai ứng dụng cách nhanh chóng Trang 10 Báo cáo: Tìm hiểu mơ hình lập trình TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI Lập trình mạng phân tán, thường có khái niệm chính: peer to peer client - server peer to peer lập trình ngang hàng máy tính cịn lập trình client - server lập trình cho phép n máy client kết nối tới m máy server - mơ hình gặp nhiều thực tế … Có thể chia lập trình mạng thành cấp độ, theo mức độ thân thiện với developer khả triển khai:  Mức thấp lập trình sử dụng socket - truyền byte, stream lên mạng, ứng dụng thường gặp ứng dụng mạng cỡ nhỏ (vd: máy tính, mạng LAN )  Mức cao lập trình sử dụng, triển khai ứng dụng theo mơ hình dịch vụ (service) - quản lí mạng theo mơ hình: kết nối, tạo tham chiếu client server trả về, gọi hàm truyền liệu thông qua proxy đối tượng trả từ server (vd: RMI Java hay Remoting trên.NET ), mô hình thường gặp ứng dụng mạng cỡ trung bình lớn, địi hỏi tính performance cao (vd: ứng dụng mạng đòi hỏi kết nối nhiều - liên tục sử dụng diện rộng dịch vụ chat, game online ), ưu điểm mơ hình tính performance cao, bảo mật, nhược điểm tính đa (multiplatform) tính khả chuyển chưa cao (server client phải công nghệ phát triển.)  Mức cao triển khai ứng dụng theo mơ hình triển khai web, điển hình ta thấy web application web service, có cơng nghệ WCF M$ (tổng hợp tất 1) mơ hình cho phép triển khai diện rộng, phục vụ lượng khách hàng lớn có nhược điểm tính performance chưa cao, bù lai, có khả mềm dẻo (flexibility) cao (server client không cần sử dụng chung công nghệ) Chúng ta thường thấy ứng dụng loại ứng dụng cung cấp từ nhà cung cấp (vd: số liệu chứng khoán, thời tiết …) Extreme Programming Lập trình cực độ (eXtreme Programming viết tắt XP) nhóm phương pháp phát triển phần mềm cách linh hoạt XP sử dụng nhóm làm việc kết hợp gồm người lập trình, khách hàng nhà quản trị để phát triển phần mềm có chất lượng cao thời gian nhanh chóng Một chương trình chạy thước đo tiến trình theo XP XP phát triển tồn hiểu biết ngày tiến vấn đề giải cơng cụ sẵn có cho phép ta thay đổi giá thay đổi (cost-of-change) ( dạng hàm mũ trước ) XP giữ cho giá phải trả mức thấp thúc đẩy môi trường sản xuất phần mềm 7.1 Ưu Điểm Như ta biết hầu hết phương pháp xem xét việc phát triển phần mềm quy trình gia cơng với tiến trình viết phần mềm theo đường: Nhu cầu (thị trường) – Phân tích – Thiết kế – Viết code – Thử nghiệm – Bảo trì Cách tiếp cận có thừa nhận quan trọng ta biết sản phẩm cuối trước tiến trình bắt đầu Nhưng hầu hết dự án phần mềm đại thoả mãn thừa nhận Khách hàng đưa cách đầy đủ người sản xuất cần thông tin phản hồi cách liên tục để đánh giá lại lựa chọn họ Người lập trình cần phải có phương án để ln sẵn sàng đón nhận thay đổi Nhu cầu để họ đối phó với thơng tin phản hồi Nếu bạn làm Trang 13 Báo cáo: Tìm hiểu mơ hình lập trình TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI việc mơi trường mà Nhu cầu chờ để thay đổi khách hàng lợi từ việc bàn giao phần mềm sớm thường xuyên chắn nên xem xét XP Các nhóm làm theo XP thường xuyên nhận họ bàn giao sản phẩm phần mềm chất lượng cao với số lượng lớn nhanh trước nhiều 7.2 Phương thức tiến hành XP XP phương pháp có khả thích nghi, thích ứng Điều có nghĩa khơng có hai dự án XP giống XP cung cấp tập hợp thực hành sử dụng điểm khởi đầu, sau làm cho thích ứng để phù hợp với ràng buộc dự án riêng Sau tập hợp nguyên tắc mong đợi:  Liên lạc: XP team lớn mạnh dựa kiến thức, hiểu biết toán hiểu biết phần mềm chia sẻ Các phương pháp giải vấn đề trao đổi trực tiếp Những thứ cản trở đến công việc loại bỏ  Đơn giản hố: cơng việc cần giảm tối thiểu độ phức tạp để đạt hiệu cao  Thông tin phản hồi thường đội làm dự án khách hàng họ không nhận vấn đề rắc rối bàn giao sản phẩm Nhưng XP teams thường xuyên lấy feedback – trình làm việc, test, bàn giao sản phẩm… Khi control vấn đề phát sinh  Thế mạnh: đội làm phần mềm thành công cần phải kiểm soát xuất lỗi XP đưa 12 phương án thực hành, điểm mạnh XP kết hợp phương án lại Mỗi phương án đơn giản cần thiết phải nắm vững, góp phần làm giảm bớt đáng kể giá thay đổi Concurrent Programming Lập trình tương tranh kỹ thuật quan trọng thách thức Một mặt, đem lại khả sử dụng hiệu cho hệ thống song song phân tán Mặt khác, rủi ro việc tương tác tiến trình thực đồng thời gây lỗi phần mềm khơng dễ dàng để tìm Trong lập trình tương tranh, số dịng lệnh thực đồng thời Mỗi dịng lệnh chương trình tuần tự, ngoại trừ thực tế dịng lệnh giao tiếp gây trở ngại lẫn Mỗi dòng lênh luồng ( thread ), chương trình cịn gọi chương trình đơn luồng, cịn chương trình viết theo phương pháp tương tranh chương trình đa luồng 8.1 Đặc điểm  Người dùng tương tác với ứng dụng tiến trình thực thi  Những tiến trình chạy thời gian dài làm trì hỗn tiến trình ngắn  Các chương trình phức tạp thực tốt xử lý đa luồng  Những tiến trình địi hỏi điều kiện tiên tạm dừng đợi đến đáp ứng để tiếp tục xử lý Trang 14 Báo cáo: Tìm hiểu mơ hình lập trình TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI III Logic programming Answer a question via search for a solution Đặc điểm     Mơ hình lập trình logic hồn tồn khác với mơ hình cịn lại Mơ hình đặc biệt phù hợp với lĩnh vực liên quan đến việc rút kiến thức từ kiện quan hệ – lĩnh vực trí tuệ nhân tạo Có vẻ mơ hình khơng gắn với lĩnh vực tính tốn nói chung Trả lời câu hỏi thơng qua việc tìm giải pháp Các đặc trưng:  Về nguyên tắc ý tưởng : Tự động kiểm chứng trí tuệ nhân tạo  Dựa chân lý- tiên đề axioms,các quy luật suy diễn - inference rules, truy vấn queries  Chương trình thực từ việc tìm kiếm có hệ thống tập kiện, sử dụng tập luật để đưa kết luận  Trong lập trình logic, ta sử dụng vị từ để định nghĩa khái niệm tất mơn khoa học khác Ví dụ định nghĩa số nguyên tố: Số nguyên tố N số nguyên lớn 1, chia hết cho Để xét xem số N có phải số nguyên tố hay không, người ta thường sử dụng dấu hiệu nhận biết: Số nguyên tố số nguyên dương, không chia hết cho số nguyên tố nhỏ số nguyên tố nhỏ Dấu hiệu mơ tả vị từ sau:  số nguyên tố  N số nguyên tố N>0, M số nguyên tố đó, M0, M số nguyên tố đó, M0, so_nguyen_to(M), M 0, M = N – 1, facto(M, factM), factN = N*factM Ở ví dụ ta định nghĩa vị từ dùng để tính giá trị giai thừa số tự nhiên, đối số thứ số cần tính giai thừa đối số thứ hai dùng để nhận giá trị trả Trường hợp dừng xác đinh kiện giai thừa Để tính N! ta tính M! với M= N-1 Yếu tố dẫn đến trường hợp dừng biến M có giá trị N-1 Ví dụ 2: Xác định phần tử danh sách symbol domains symbol_list = symbol* predicates element1(integer,symbol_list,symbol) element (integer,symbol_list,symbol) clauses % element1 không suy diễn ngược element1(1,[X|_],X) element1(N,[_|L],Y):-M=N-1, element1(M,L,Y) % element suy diễn ngược element(1,[X|_],X) element(N,[_|L],Y):-element(M,L,Y), N=M+1 Sự suy diễn thuận chiều cho danh sách vị trí, tìm phần tử vị trí đó, chẳng hạn, ta đưa vào goal element(2,[a,b,c,d],X) ta X=b Trang 24 Báo cáo: Tìm hiểu mơ hình lập trình TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI Sự suy diễn ngược cho danh sách phần tử, tìm vị trí phần tử đó, chẳng hạn, ta đưa vào goal element(N,[a,b,c,d], b) ta N=2 Ví dụ 3: Sắp xếp danh sách số nguyên domains list=integer* predicates insert(integer,list,list) sort(list,list) clauses insert(E,[],[E]) insert(E,[A|B],[E,A|B]):-EA,insert(E,B,C) sort([],[]) sort([X|R1],L):-sort(R1,R), insert(X,R,L) 2.9 Một số ví dụ chương trình prolog 2.9.1 Xét xem số N có phải số nguyên tố hay không domains so_nguyen = integer predicates so_nguyen_to(so_nguyen) Clauses so_nguyen_to(2):-! so_nguyen_to(N):-N>0, so_nguyen_to(M), M

Ngày đăng: 17/07/2015, 12:32

Từ khóa liên quan

Mục lục

  • I. Lời nói đầu

  • II. Tổng quan về các mô hình lập trình phổ biến

    • 1. Imperative Programming

      • Ví dụ

      • 2. Functional Programming

        • 2.1. Đặc điểm

        • Ví dụ 1

        • 3. Object-oriented Paradigm

          • Ví dụ 1

          • Ví dụ 2

          • Ví dụ 3

          • 4. Visual Programming

            • 4.1. Đặc điểm nổi bật của phương pháp lập trình trực quan

            • 5. Parallel Programming

              • 5.1. Quá trình song song hóa gồm ba giai đoạn bước chính

              • 6. Distributed Programming

              • 7. Extreme Programming

                • 7.1. Ưu Điểm

                • 7.2. Phương thức tiến hành XP

                • 8. Concurrent Programming

                  • 8.1. Đặc điểm

                  • III. Logic programming

                    • 1. Đặc điểm

                    • 2. Ngôn ngữ PROLOG

                      • 2.1. Giới thiệu

                      • 2.2. Các yếu tố cơ bản của Turbo Prolog

                        • 2.2.1. Đối tượng

                          • Ví dụ

                          • 2.2.2. Sự kiện và luật

                            • Ví dụ

                            • 2.3. Cấu trúc của một chương trình Prolog

                              • 2.3.1. Phần Domains

                                • Ví dụ

                                • 2.3.2. Phần Predicates

                                  • 2.3.2.1. Cú pháp

                                  • Ví dụ

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

Tài liệu liên quan