1. Trang chủ
  2. » Luận Văn - Báo Cáo

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

27 2,9K 23

Đ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

Thông tin cơ bản

Định dạng
Số trang 27
Dung lượng 1,19 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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

Trang 1

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

Trang 2

Mục lục

I Lời nói đầu 3

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

1 Imperative Programming 4

2 Functional Programming 5

2.1 Đặc điểm 5

Ví dụ 1 6

3 Object-oriented Paradigm 7

Ví dụ 1 8

Ví dụ 2 8

Ví dụ 3 9

4 Visual Programming 10

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

5 Parallel Programming 11

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

6 Distributed Programming 12

7 Extreme Programming 13

7.1 Ưu Điểm 13

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

8 Concurrent Programming 14

8.1 Đặc điểm 14

III Logic programming 15

1 Đặc điểm 15

2 Ngôn ngữ PROLOG 16

2.1 Giới thiệu 16

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

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

2.4 Các nguyên tắc của ngôn ngữ Prolog 19

2.5 Bộ ký tự, từ khoá 20

2.6 Các kiểu dữ 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ụ về chương trình prolog 25

IV Lời kết 27

V Tài liệu tham khảo 27

Trang 3

I Lời nói đầu

Bất kỳ một ngôn ngữ lập trình nào cũng đều mang tính logic cao và tuân theo những quy chuẩn cơ bản

về toán học Tuy vậy, mỗi ngôn ngữ lại có những phương thức riêng để thực hiện những quy chuẩn đó, đặc biệt

là trên các lĩnh vực như hàm (function), biến (variable), phương thức (method) và đối tượng (object) Bên cạnh

sự đa dạng của ngôn ngữ lập trình, cũng dần có rất nhiều mô hình lập trình được ra đời, trong đó phổ biến nhất

có thể kể đến như: Lập trình hướng đối tượng (object-oriented programming), lập trình thủ tục (procedural programming) và lập trình cấu trúc (structured programming) Mỗi một mô hình lập trình lại có những đặc trưng riêng về cách sử dụng cũng như tính trừu tượng hóa đối với các quá trình xác định

Các nhóm khác nhau trong công nghệ phần mềm đề xướng các phương pháp khác nhau, các ngôn ngữ lập trình khác nhau tức là các mô hình lập trình khác nhau Một số ngôn ngữ được thiết kế để hỗ trợ một mô hình đặc thù (Java hỗ trợ lập trình hướng đối tượng trong khi 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 và Common Lisp)

Một số mô hình lập trình cấm các thao tác mà chính 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ệ giữa các mô hình lập trình và các ngôn ngữ lập trình có thể phức

tạp vì một ngôn ngữ có thể hỗ trợ nhiều mô hình lập trình Thí dụ như C++ được thiết kế để hỗ trợ các phần tử của lập trình thủ tục, lập trình hướng đối tượng và lập trình tiêu bản

Mặc dù vậy, những người thiết kế và những người lập trình sẽ quyết định làm thế nào để xây dựng một chương trình dùng các phần tử của mô hình nào đó Người ta có thể viết một chương trình hoàn toàn theo kiểu lập trình thủ tục trong C++, cũng có thể viết chương trình hoàn toàn hướng đối tượng, hay viết chương trình có các phần tử của cả hai mô hình

Ở thời kỳ đầu, công nghệ phần mềm hoàn toàn dựa trên những thao tác lập trình bằng mã nhị phân hoặc mã máy, mà đại diện là các giá trị 0 và 1 Điều này khiến cho quá trình thiết kế, kiểm soát sự hoạt động cũng như sửa lỗi đối với một ứng dụng trở nên vô cùng rắc rối và không hiệu quả Chúng ta coi những phương thức lập trình ở thời điểm này thuộc mô hình lập trình bậc thấp (low-level programming paradigm) Về sau, cùng với sự phát triển của công nghệ, những hạn chế của giai đoạn đầu tiên dần được xóa bỏ với sự ra đời của các ngôn ngữ lập trình thế hệ thứ 3 là COBOL, Fortran và BASIC, đồng thời, một mô hình lập trình mới cũng xuất hiện và vẫn tiếp tục được sử dụng hiệu quả và phổ biến cho đến ngày nay, đó là mô hình lập trình thủ tục (procedural paradigm) Dần dần, chúng ta chứng kiến sự phát triển mạnh mẽ về số lượng của các mô hình lập trình, mà cơ bản có thể kể đến các 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 năng - 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 4

 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 của 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 dữ liệu - Dataflow programming

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

1 Imperative Programming

First do this and next do that

 Dựa theo công nghệ phần cứng số và ý tưởng của Von Neumann

 Thực thi các bước tính toán theo thứ tự được quy định bởi các cấu trúc điều khiển Các bước này còn được gọi là các lệnh

 Gia tăng sự thay đổi tráng thái chương trình như một hàm theo thời gian

 Tương tự như việc ta thực hiện các thao tác quen thuộc mỗi ngày, như 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 các hàm gọi thủ tục - có thể được coi như một câu lệnh Điều này còn được gọi là lập trình thủ tục (Procedural programming)

Trang 5

 Nguyên lý và ý tưởng: Toán học và lý thuyết về hàm

 Các giá trị đã được tạo là không thể biến đổi

 Trừu tượng hóa một biểu thức thành một hàm và ngược lại, một hàm có thể được tính toán như một

biểu thức

 Hàm là lớp giá trị đầu tiên

 Hàm là những giá trị hoàn chỉnh, tương tự như số, danh sách

 Thích hợp với những tính toán theo yêu cầu

 Mở ra những khả năng mới

Functional Programming là thể loại lâu đời nhất trong ba paradigm lập trình chính Ngôn ngữ FP đầu tiên là IFP, được phát minh vào năm 1955, một năm trước khi có Fortran Sau đó, LISP ra đời năm 1958, một năm trước khi có COBOL Cả Fortran và COBOL đều là những ngôn ngữ imperative (hay còn gọi là procedural) Chúng đặc biệt thành công khi được ứng dụng vào tính toán khoa học và nghiệp vụ, và trở thành paradigm thống trị trong suốt 30 đầu của kỉ nguyên thông tin Vào những năm 1970, Object-Oriented paradigm bắt đầu phát triển Cùng với sự trưởng thành của các ngôn ngữ lập trình hướng đối tượng, OO trở thành paradigm được sử dụng phổ biến nhất cho đến ngày hôm nay

Từ những năm 1950, mặc dù vẫn phát triển mạnh mẽ và liên tục với các đại diện như SML, OCaml, APL và Clean, thì FP vẫn chỉ được sử dụng cho mục đích học thuật và nghiên cứu là chủ yếu Imperative đạt được thành công bước đầu nhờ vào những chỉ thị đơn giản OO thành công nhờ vào khả năng mô hình hóa các bài toán phức tạp Còn FP có khả năng gì, tại sao dù ra đời sớm nhưng lại không mang lại thành công như mong đợi?

Trang 6

FP xem chương trình là một tập hợp các hàm nhận vào đối số và trả về giá trị Không giống như

Imperative, FP không tạo ra hiệu ứng phụ và sử dụng đệ qui thay cho vòng lặp Hàm trong FP rất giống với hàm trong toán học vì nó không làm thay đổi trạng thái của chương trình

 Một đại lượng khi được gán giá trị thì không bao giờ thay đổi giá trị đó

 Hàm không sửa đổi giá trị của đối số được truyền vào, và giá trị do hàm trả về hoàn toàn là một giá trị mới

Về mặt kĩ thuật cài đặt bên dưới, khi giá trị được gán vào một vùng nhớ thì được đánh dấu là đã sử dụng và không ghi đè lên nữa Để tạo ra kết quả trả về, các hàm sao chép giá trị rồi chỉnh sửa trên các bản sao

đó, không làm ảnh hưởng đến giá trị ban đầu, rồi trả về bản sao đã được chỉnh sửa Các đại lượng không còn được hàm nào tham chiếu đến sẽ tự động bị hủy để giải phóng bộ nhớ (đây là ý tưởng của bộ thu gom rác trong Java và.NET)

Cơ sở toán học cho FP rất tường minh, cung cấp giải pháp logic và ngắn gọn cho các vấn đề tính toán Tuy nhiên, do nó không linh hoạt thay đổi trạng thái và chuyên sử dụng đệ qui khiến người ta ưa chuộng các paradigm khác hơn để xử lý các thao tác tính toán thông dụng

Trang 7

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 được xây dựng trên nền tảng của khái niệm lập trình có cấu trúc và sự trừu tượng hóa dữ liệu Sự thay đổi căn bản ở chỗ, một chương trình hướng đối tượng được thiết kế xoay quanh dữ liệu mà chúng ta có thể làm việc trên đó, hơn là theo bản thân chức năng của chương trình Điều này hoàn toàn

tự nhiên một khi chúng ta hiểu rằng mục tiêu của chương trình là xử lý dữ liệu Suy cho cùng, công việc mà máy tính thực hiện vẫn thường được gọi là xử lý dữ liệu Dữ liệu và thao tác liên kết với nhau ở một mức cơ bản (còn có thể gọi là mức thấp), mỗi thứ đều đòi hỏi ở thứ kia có mục tiêu cụ thể, các chương trình hướng đối tượng làm tường minh mối quan hệ này

Lập trình hướng đối tượng (Object Oriented Programming - gọi tắt là OOP) hay chi tiết hơn là Lập trình định hướng đối tượng, chính là phương pháp lập trình lấy đối tượng làm nền tảng để xây dựng thuật giải, xây dựng chương trình Thực chất đây không phải là một phương pháp mới mà là một cách nhìn mới trong 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à chúng ta quen thuộc trước đây, hay còn gọi là 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 một nhiệm vụ lớn thành nhiều công việc nhỏ hơn, sau đó dần dần chi tiết, cụ thể hoá để được các vấn đề đơn giản,

để tìm ra cách giải quyết vấn đề dưới dạng những thuật giải cụ thể rõ ràng qua đó dễ dàng minh hoạ bằng ngôn ngữ giải thuật (hay còn gọi các thuật giải này là các chương trình con) Cách thức phân tích và thiết kế như vậy chúng ta gọi là nguyên lý lập trình từ trên xuống (top-down), để thể hiện quá trình suy diễn từ cái chung cho đến cái cụ thể

Các chương trình con là những chức năng độc lập, sự ghép nối chúng lại với nhau cho chúng ta một hệ thống chương trình để giải quyết vấn đề đặt ra Chính vì vậy, cách thức phân tích một hệ thống lấy chương trình con làm nền tảng, chương trình con đóng vai trò trung tâm của việc lập trình, được hiểu như phương pháp lập trình hướg về thủ tục Tuy nhiên, khi phân tích để thiết kế một hệ thống không nhất thiết phải luôn luôn suy nghĩ theo hướng “làm thế nào để giải quyết công việc”, chúng ta có thể định hướng tư duy theo

Trang 8

phong cách “với một số đối tượng đã có, phải làm gì để giải quyết được công việc đặt ra” hoặc phong phú hơn,

“làm cái gì với một số đối tượng đã có đó”, từ đó cũng có thể giải quyết được những công việc cụ thể Với phương pháp phân tích trong đó đối tượng đóng vai trò trùng tâm của việc lập trình như vậy, người ta gọi là nguyên lý lập trình từ dưới lên (Bottom-up)

Lập trình hướng đối tượng liên kết cấu trúc dữ liệu với các thao tác, theo cách mà tất cả thường nghĩ về thế giới quanh mình Chúng ta thường gắn một số các hoạt động cụ thể với một loại hoạt động nào đó và đặt các giả thiết của mình trên các quan hệ đó

Ví dụ 1

Để dễ hình dùng hơn, chúng ta thử nhìn qua các công trình xây dựng hiện đại, như sân vận động có mái che hình vòng cung, những kiến trúc thẩm mĩ với đường nét hình cong Tất cả những sản phẩm đó xuất hiện cùng với những vật liệu xây dựng

Ngày nay, không chỉ chồng lên nhau những viên gạch, những tảng đá để tạo nên những quần thể kiến trúc (như Tháp Chàm Nha Trang, Kim Tự Tháp, ), mà có thể với bê-tông, sắt thép và không nhiều lắm những viên gạch, người xây dựng cũng có thể thiết kế những công trình kiến trúc tuyệt mỹ, những toà nhà hiện đại Chính các 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 và nguyên lý kết dính các chất liệu đó lại với nhau cho chúng ta một đối tượng để khảo sát, Chất liệu xây dựng và nguyên lý kết dính các chất liệu lại với nhau được hiểu theo nghĩa dữ liệu và chương trình con tác động trên dữ liệu đó

xe thì lại chẳng lớn thêm được khi chúng ta tưới nước cho nó

Lập trình hướng đối tượng cho phép chúng ta sử dụng các quá trình suy nghĩ như vậy với các khái niệm trừu tượng được sử dụng trong các chương trình máy tính Một mẫu tin (record) nhân sự có thể được đọc ra, thay đổi và lưu trữ lại; còn số phức thì có thể được dùng trong các tính toán Tuy vậy không thể nào lại viết một

số phức vào tập tin làm mẫu tin nhân sự và ngược lại hai mẫu tin nhân sự lại không thể cộng với nhau được Một chương trình hướng đối tượng sẽ xác định đặc điểm và hành vi cụ thể của các kiểu dữ liệu, điều đó cho phép chúng ta biết một cách chính xác rằng chúng ta có thể có được những gì ở các kiểu dữ liệu khác nhau

Chúng ta còn có thể tạo ra các quan hệ giữa các kiểu dữ liệu tương tự nhưng khác nhau trong một chương trình hướng đối tượng Người ta thường tự nhiên phân loại ra mọi thứ, thường đặt mối liên hệ giữa các khái niệm mới với các khái niệm đã có, và thường có thể thực hiện suy diễn giữa chúng trên các quan hệ đó Hãy quan niệm thế giới theo kiểu cấu trúc cây, với các mức xây dựng chi tiết hơn kế tiếp nhau cho các thế hệ sau so với các thế hệ trước Đây là phương pháp hiệu quả để tổ chức thế giới quanh chúng ta Các chương trình hướng đối tượng cũng làm việc theo một phương thức tương tự, trong đó chúng cho phép xây dựng các các cơ

Trang 9

cấu dữ liệu và thao tác mới dựa trên các cơ cấu có sẵn, mang theo các tính năng của các cơ cấu nền mà chúng dựa trên đó, trong khi vẫn thêm vào các tính năng mới

Lập trình hướng đối tượng cho phép chúng ta tổ chức dữ liệu trong chương trình theo một cách tương

tự như các nhà sinh học tổ chức các loại thực vật khác nhau Theo cách nói lập trình đối tượng, xe hơi, cây cối, các số phức, các quyển sách đều được gọi là các lớp (Class)

Một lớp là một bản mẫu mô tả các thông tin cấu trúc dữ liệu, lẫn các thao tác hợp lệ của các phần tử

dữ liệu Khi một phần tử dữ liệu được khai báo là phần tử của một lớp thì nó được gọi là một đối tượng

(Object) Các hàm được định nghĩa hợp lệ trong một lớp được gọi là các phương thức (Method) và chúng là các hàm duy nhất có thể xử lý dữ liệu của các đối tượng của lớp đó Một thực thể (Instance) là một vật thể có thực bên trong bộ nhớ, thực chất đó là một đối tượng (nghĩa là một đối tượng được cấp phát vùng nhớ)

Mỗi một đối tượng có riêng cho mình một bản sao các phần tử dữ liệu của lớp còn gọi là các biến thực thể (Instance variable) Các phương thức định nghĩa trong một lớp có thể được gọi bởi các đối tượng của lớp

đó Điều này được gọi là gửi một thông điệp (Message) cho đối tượng Các thông điệp này phụ thuộc vào đối tượng, chỉ đối tượng nào nhận thông điệp mới phải làm việc theo thông điệp đó Các đối tượng đều độc lập với nhau vì vậy các thay đổi trên các biến thể hiện của đối tượng này không ảnh hưởng gì trên các biến thể hiện của các đối tượng khác và việc gửi thông điệp cho một đối tượng này không ảnh hưởng gì đến các đối tượng khác

Như vậy, đối tợng được hiểu theo nghĩa là một thực thể mà trong đó các dữ liệu và thủ tục tác động lên dữ liệu đã được đóng gói lại với nhau Hay “đối tượng được đặc trưng bởi một số thao tác (operation) và các thông tin (information) ghi nhơ sự tác động của các thao tác này.”

Ví dụ 3

Khi nghiên cứu về ngăn xếp (stack), ngoài các dữ liệu vùng chứa ngăn xếp, đỉnh của ngăn xếp, chúng ta phải cài đặt kèm theo các thao tác như khởi tạo (create) ngăn xếp, kiểm tra ngăn xếp rỗng (empty), đẩy (push) một phần tử vào ngăn xếp, lấy (pop) một phần tử ra khỏi ngăn xếp Trên quan điểm lấy đối tượng làm nền tảng, rõ ràng dữ liệu và các thao tác trên dữ liệu luôn gắn bó với nhau, sự kết dính chúng chính là đối tượng chúng ta cần khảo sát

Các thao tác trong đối tượng được gọi là các phương thức hay hành vi của đối tượng đó Phương thức

và dữ liệu của đối tượng luôn tác động lẫn nhau và có vai trò ngang nhau trong đối tượng, Phương thức của đối tượng được qui định bởi dữ liệu và ngược lại, dữ liệu của đối tượng được đặt trưng bởi các phương thức của đối tượng Chính nhờ sự gắn bó đó, chúng ta có thể gởi cùng một thông điệp đến những đối tượng khác nhau Điều này giúp người lập trình không phải xử lý trong chương trình của mình một dãy các cấu trúc điều khiển tuỳ theo thông điệp nhận vào, mà chương trình được xử lý vào thời điểm thực hiện

Tóm lại, so sánh lập trình cấu trúc với chương trình con làm nền tảng:

Chương trình = Cấu trúc dữ liệu + Thuật giải

Trang 10

Trong lập trình hướng đối tượng chúng ta có:

Đối tượng = Phương thức + Dữ liệu

Đó chính là 2 quan điểm lập trình đang tồn tại và phát triển trong thế giới ngày nay

Trong giai đoạn đầu, các ngôn ngữ lập trình tuy dễ sử dụng hơn ngôn ngữ máy nhưng rất khó với các lập trình viên vì chưa đủ mạnh để dễ dàng triển khai các thuật toán Chương trình chưa có tính cấu trúc chặt chẽ về mặt dữ liệu cũng như tổ chức chương trình Vì vậy, việc triển khai các ứng dụng trong thực tế bằng các ngôn ngữ lập trình này là rất khó khăn

Giai đoạn 2 là thời kỳ của các ngôn ngữ lập trình có cấu trúc Các ngôn ngữ lập trình này có đặc điểm là

có tính cấu trúc chặt chẽ về mặt dữ liệu và tổ chức chương trình Một loạt các ngôn ngữ lập trình có cấu trúc ra đời và dược sử dụng rộng rãi như : PASCAL, C, BASIC

Giai đoạn 3 là thời kỳ của lập trình hướng đối tượng và phương pháp lập trình có bước biến đổi mạnh Trong các ngôn ngữ lập trình có cấu trúc thì một ứng dụng bao gồm hai thành phần riêng là dữ liệu và chương trình Tuy chúng có quan hệ chặt chẽ nhưng là hai đối tượng riêng biệt Trong phương pháp lập trình hướng đối tượng thì mỗi một đối tượng lập trình sẽ bao hàm cả dữ liệu và phương thức hành động trên dữ liệu đó Vì vậy, việc lập trình sẽ đơn giản và mang tính kế thừa cao, tiết kiệm được thời gian lập trình

Tuy nhiên, với các phương pháp lập trình trên đều đòi hỏi lập trình viên phải nhớ rất nhiều câu lệnh với mỗi lệnh có một cú pháp và tác dụng riêng, khi viết chương trình phải tự lắp nối các lệnh để có một chương trình giải quyết từng bài toán riêng biệt

Trong xu hướng phát triển mạnh mẽ hiện nay của tin học, số người sử dụng máy tính tăng lên rất nhanh và máy tính được sử dụng trong hầu hết các lĩnh vực của đời sống nên đòi hỏi các ngôn ngữ lập trình cũng phải đơn giản, dễ sử dụng và mang tính đại chúng cao Chính vì vậy phương pháp lập trình trực quan ra đời

Đặc điểm của các ngôn ngữ lập trình trực quan là dễ sử dụng, triển khai các ứng dụng một cách nhanh chóng

Trang 11

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

 Cho phép xây dựng chương trình theo hướng sự kiện (Event-Driven Programming, nghĩa là một chương trình ứng dụng được viết theo kiểu này đáp ứng dựa theo tình huống xảy ra lúc thực hiện chương trình Tình huống này bao gồm người sử dụng ấn một phím tương ứng, chọn lựa một nút lệnh hoặc gọi một lệnh từ một ứng dụng khác chạy song song cùng lúc

 Người lập trình trực tiếp tạo ra các khung giao diện (interface), ứng dụng thông qua các thao tác trên màn hình dựa vào các đối tượng (ojbect) như hộp hội thoại hoặc nút điều khiển (control button), những đối tượng này mang các thuộc tính (properties) riêng biệt như : màu sắc, Font chữ mà ta chỉ cần chọn lựa trên một danh sách cho sẵn

 Khi dùng các ngôn ngữ lập trình trực quan ta rất ít khi phải tự viết các lệnh, tổ chức chương trình một cách rắc rối mà chỉ cần khai báo việc gì cần làm khi một tình huống xuất hiện

 Máy tính sẽ dựa vào phần thiết kế và khai báo của lập trình viên để tự động tạo lập chương trình

Như vậy với kỹ thuật lập trình trực quan, lập trình viên giống như một nhà thiết kế, tổ chức để tạo ra các biểu mẫu, đề nghị các công việc cần thực hiện và máy tính sẽ dựa vào đó để xây dựng chương trình Hiện nay các ngôn ngữ lập trình, hệ quản trị cơ sở dữ liệu theo hướng trực quan thường dùng như: Visual Basic, Visual Foxpro, Visual C, Delphi

5 Parallel Programming

Trang 12

Tính toán song song (Parallel Computing) là việc chia một công việc ra thành các công việc nhỏ và cho các công việc này thực hiện đồng thời với nhau bởi các hệ thống có nhiều bộ vi xử lý (multiprocessor) hay bộ vi

xử lý đa nhân (multicore) nhằm giảm thời gian thực hiện công việc đó xuống Việc lập trình để tách ra các công việc nhỏ và sắp xếp để xử lý song song thì được gọi là lập trình song song

“Số lượng transistor trong bộ vi xử lý sẽ tăng lên gấp đôi sau mỗi 24 tháng.” Gordon Moore - sáng lập viên của

Trong quá trình lập trình song song, lập trình viên khó tránh khỏi việc các tiến trình cùng sử dụng chung một dữ liệu điều này sẽ gây ra xung đột dữ liệu hoặc làm dữ liệu bị sai lệch do đó lập trình viên cần phải chú ý

và áp dụng các kỹ thuật lập trình để giải quyết vấn đề này

Bộ vi xử lý có nhiều nhân sẽ tăng tốc chương trình song song tuy nhiên không có nghĩa là nó sẽ tăng lên 100% trên một nhân (core) được thêm vào Thậm chí chương trình song song không hề tăng hiệu suất lên trong một số trường hợp Vì vậy lập trình viên phải biết quyết định khi nào sử dụng lập trình song song bằng cách sử dụng các công cụ đo lường để xác định được tốc độ thực thi của chương trình

Lập trình song song là một công việc rất phức tạp so với lập trình tuần tự thông thường, người phát triển phải thực hiện một quá trình “song song hóa”, biến đổi các chương trình tuần tự thành chương trình song song có khả năng tận dụng tối đa sức mạnh của hệ thống

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

 Phân chia chương trình thành các công việc con (Sub-task decomposition)

 Phân tích sự phụ thuộc (Dependence analysic)

 Định thời các công việc (Task scheduling)

6 Distributed Programming

Lập trình phân tán là một dạng của lập trình song song (tính toán song song) Lập trình song song tạo ra mối liên hệ giữa máy tính và các đơn vị tính toán, khiến chúng hoạt động đồng thời đối với một vấn đề cụ thể (dự báo thời tiết chẳng hạn) Các đơn vị tính toán có thể đặt rất gần nhau hoặc tách rời nhau Khi các đơn vị tính toán được đặt tách rời, ta gọi đó là lập trình phân tán Với mô hình lập trình này, các đơn vị tính toán thường rất khác nhau, cũng như sự khác nhau giữa các hệ điều hành và thiết lập mạng máy tính Những yếu tố

đó khiến cho việc lập trình các tính toán của máy tính trở nên tương đối phức tạp và khó khăn

Trang 13

Lập trình mạng phân tán, thường có 2 khái niệm chính: peer to peer và client - server peer to peer là lập trình ngang hàng giữa 2 máy tính còn lập trình client - server là lập trình cho phép n máy client kết nối tới

m máy server - đây cũng là mô hình chúng ta sẽ gặp nhiều trong thực tế …

Có thể chia lập trình mạng thành 3 cấp độ, căn cứ theo mức độ thân thiện với developer và khả năng triển khai:

 Mức thấp nhất là lập trình sử dụng socket - có thể truyền từng byte, từng stream lên trên mạng, ứng dụng này thường gặp trong các ứng dụng mạng cỡ nhỏ (vd: trong 2 máy tính, trong 1 mạng LAN )

 Mức cao hơn là 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 trên server và trả về, gọi hàm và truyền dữ liệu thông qua proxy của đối tượng trả về từ server (vd: RMI trên Java hay Remoting trên.NET ), mô hình này thường gặp trong các ứng dụng mạng cỡ trung bình và lớn, đòi hỏi tính performance cao (vd: các ứng dụng mạng đòi hỏi kết nối nhiều - liên tục và sử dụng diện rộng như các dịch vụ chat, game online ), ưu điểm chính của mô hình này là tính performance cao, bảo mật, nhưng nhược điểm là tính đa nền (multiplatform) và tính khả chuyển chưa cao (server và client phải cùng 1 công nghệ phát triển.)

 Mức cao nhất là triển khai ứng dụng theo mô hình triển khai trên web, điển hình nhất ta có thể thấy là các web application và web service, mới nhất giờ có công nghệ WCF của M$ (tổng hợp tất cả trong 1)

mô hình này cho phép triển khai trên diện rộng, phục vụ lượng khách hàng lớn nhưng cũng có nhược điểm là tính performance chưa cao, bù lai, nó có khả năng mềm dẻo (flexibility) cao (server và client không cần sử dụng chung một công nghệ) Chúng ta thường thấy những ứng dụng loại này trong các ứng dụng được cung cấp từ một nhà cung cấp nào đó (vd: các số liệu chứng khoán, thời tiết …)

7 Extreme Programming

Lập trình cực độ (eXtreme Programming viết tắt là XP) là một trong những nhóm các phương pháp phát triển phần mềm một cách linh hoạt XP sử dụng các nhóm làm việc kết hợp gồm những người lập trình, khách hàng và các nhà quản trị để phát triển phần mềm có chất lượng cao trong thời gian nhanh chóng Một chương trình chạy được là thước đo đầu tiên của tiến trình theo XP XP có thể phát triển và tồn tại được là do sự hiểu biết ngày một tiến bộ về các vấn đề đang giải quyết và cũng là vì các công cụ sẵn có cho phép ta thay đổi được cái giá của sự thay đổi (cost-of-change) ( đang là dạng hàm mũ trước đây ) XP giữ cho cái giá phải trả này ở mức thấp do vậy sẽ 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 các phương pháp đều xem xét việc phát triển phần mềm như là một quy trình gia công với tiến trình viết phần mềm đi theo một con đườ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 này có một sự thừa nhận quan trọng đó là ta đã biết được sản phẩm cuối cùng trước khi tiến trình bắt đầu Nhưng hầu hết các dự án phần mềm hiện đại không thể thoả mãn cái sự thừa nhận này Khách hàng sẽ đưa ra một cách đầy đủ những cái gì mới và người sản xuất cần những thông tin phản hồi một cách liên tục để đánh giá lại các lựa chọn của họ Người lập trình cần phải có một phương án để luôn sẵn sàng đón nhận những thay đổi trong Nhu cầu để họ có thể đối phó được với các thông tin phản hồi Nếu bạn làm

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

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w