KĨ Thuật Lập Trình

26
KĨ Thuật Lập Trình Sinh viên :Nguyễn Thanh Dũng Lớp : Tin Pháp K53 MSSV : 20080505 Lịch sử phát triển của tin học luôn gắn liền với việc tìm kiếm các phương pháp lập trình để giúp cho người sử dụng triển khai cac ứng dụng một cách dễ dàng , nhanh chóng và hiệu quả . Như chúng ta đã biết , mỗi loại máy tính (sử dung loại CPU – Central Processing Unit xác định) chỉ có thể hiểu và thực hiện trực tiếp được các lệnh cũng như trương trình theo một loại noon ngữ dành riêng được gọi là noon ngữ máy . Tuy nhiên nếu thực hiện các ứng dụng trong thực tế mà phải viết chương trình trực tiếp bằng ngôn ngữ máy thì sẽ rất phức tạp , đòi hỏi thời gian và công thức rất lớn , nhiều khi không thể thực hiện được . Vì vây người ta tìm cách xây dựng một ngôn ngữ lập trình riêng , gần với các ngôn ngữ tự nhiên , thuận lợi cho việc triển khai các ứng dụng . Khi thực hiện các chương trình bằng ngôn ngữ này phải qua một bước dịch chương trình đó sang ngôn ngữ máy để nó có thể thực hiện . Từ trước đến nay có rất nhiều ngôn ngữ lập trình được ra đời va phục vụ đắc lực cho việc triển khai các ưng dụng trên máy tính . Sau đây , chúng ta sẽ đi tìm hiểu về 5 mô hinh lập trình sau : Visual paradigm Parallel paradigms Concurrent programming Distributed programming Extreme programming A.Visual Paradigm . 1.Giới thiệu về Visual Paradigm . Lĩnh vực lập trình trực quan sự kết hợp giữa đồ hoạ máy tính, ngôn ngữ lập trình và tương tác người máy. được tạo ra từ nhiều nghiên cứu độc lập nhiều công trình nghiên cứu được xem tiên phong trong lĩnh vực này.

Transcript of KĨ Thuật Lập Trình

Page 1: KĨ Thuật Lập Trình

KĨ Thuật Lập Trình Sinh viên :Nguyễn Thanh Dũng

Lớp : Tin Pháp K53

MSSV : 20080505

Lịch sử phát triển của tin học luôn gắn liền với việc tìm kiếm các phương pháp lập trình để giúp cho người sử dụng triển khai cac ứng dụng một cách dễ dàng , nhanh chóng và hiệu quả .

Như chúng ta đã biết , mỗi loại máy tính (sử dung loại CPU – Central Processing Unit xác định) chỉ có thể hiểu và thực hiện trực tiếp được các lệnh cũng như trương trình theo một loại noon ngữ dành riêng được gọi là noon ngữ máy . Tuy nhiên nếu thực hiện các ứng dụng trong thực tế mà phải viết chương trình trực tiếp bằng ngôn ngữ máy thì sẽ rất phức tạp , đòi hỏi thời gian và công thức rất lớn , nhiều khi không thể thực hiện được . Vì vây người ta tìm cách xây dựng một ngôn ngữ lập trình riêng , gần với các ngôn ngữ tự nhiên , thuận lợi cho việc triển khai các ứng dụng . Khi thực hiện các chương trình bằng ngôn ngữ này phải qua một bước dịch chương trình đó sang ngôn ngữ máy để nó có thể thực hiện . Từ trước đến nay có rất nhiều ngôn ngữ lập trình được ra đời va phục vụ đắc lực cho việc triển khai các ưng dụng trên máy tính .

Sau đây , chúng ta sẽ đi tìm hiểu về 5 mô hinh lập trình sau :

Visual paradigm Parallel paradigms Concurrent programming Distributed programming Extreme programming

A.Visual Paradigm .

1.Giới thiệu về Visual Paradigm .

Lĩnh vực lập trình trực quan là sự kết hợp giữa đồ hoạ máy tính, ngôn ngữ lập trình và tương tác người máy. Nó được tạo ra từ nhiều nghiên cứu độc lập và có nhiều công trình nghiên cứu được xem là tiên phong trong lĩnh vực này.

Một nghiên cứu đầu tiên trong lĩnh vực này là hệ thống Sketchpad của Ivan Sutherland vào năm 1963. Sketchpad đã được thiết kế và thực hiện trên máy tính TX-2 tại MIT và nó được xem là ứng dụng đồ hoạ đầu tiên trên máy tính. Hệ thống cho phép người sử dụng làm việc với một bút vẽ để tạo ra các hình ảnh trong không gian 2 chiều (2D) đơn giản như đường thẳng, đường tròn các xử lý như sao chép và các phép biến đổi hình học khác trên các hình vẽ này.

Từ năm 1965, Em trai của Ivan Sutherland là William đã sử dụng máy tính TX-2 để phát triển một ngôn ngữ đặc tả dòng dữ liệu trực quan đơn giản. Hệ thống cho phép người sử dụng khởi tạo, dò lỗi và thực thi các biểu đồ dòng dữ liệu trong môi trường trực quan.

Kế tiếp , năm 1975 , với việc công bố luận án tiến sĩ của David Canfield Smith với tiêu đề “Pygmalion: A Creative Programming Environment” . Công việc của Smith đánh dấu sự khởi đầu của một loạt các nghiên cứu trong lĩnh vực này cho đến ngày hôm nay.

2.Phân loại các ngôn ngữ lập trình trực quan

Page 2: KĨ Thuật Lập Trình

Khi lĩnh vực VPL đã chín muồi, ngày càng nhiều những nghiên cứu hướng đến việc sáng tạo mạnh mẽ hơn cũng như những tiêu chuẩn để phân loại những công việc trong lĩnh vực này. Một hệ thống phân loại không chỉ giúp các nhà nghiên cứu trong việc xác định các công việc liên quan mà còn cung cấp một ranh giới để so sánh và đánh giá các hệ thống khác nhau. Mộtsố tên tuổi có những đóng góp quan trọng trong lĩnh vực này như Chang, Shu, và Burnett. Họ đã phân loại và đưa ra những định nghĩa để xác định đặc trưng các nhóm chính của VPL.

Sau đây là sự phân loại các ngôn ngữ lập trình trực quan chính:

- Các ngôn ngữ trực quan thuần tuý

- Những hệ thống lai giữa trực quan và văn bản (text)

- Những hệ thống lập trình bằng ví dụ

- Những hệ thống ràng buộc đối tượng

- Những hệ thống được xây dựng dựa trên các biểu mẫu (form)

Lưu ý rằng việc phân loại trên là không loại trừ lẫn nhau. Do đó, có nhiều ngôn ngữ có thể thuộc nhóm này nhưng cũng có thể thuộc nhóm khác.

Chỉ riêng nhóm các ngôn ngữ trực quan thuần tuý (Purely Visual Languages) là quan trọng nhất. Các ngôn ngữ này được đặc trưng bởi việc dựa hoàn toàn trên các kỹ thuật trực quan thông qua tiến trình lập trình. Người lập trình vận dụng các biểu tượng hoặc các sự biểu diễnđồ hoạ khác để khởi tạo một chương trình rồi tiếp theo sẽ gỡ lỗi và thực thi trong cùng mộtmôi trường trực quan. Chương trình là được biên dịch trực tiếp từ sự trình bày trực quan củanó và không bao giờ dịch đến một ngôn ngữ trung gian dựa trên chế độ văn bản (interim text- based language). Những ví dụ của các hệ thống thuần tuý trực quan như VIPR, Prograph và PICT. Trong nhiều tài liệu thuộc lĩnh vực này, sự phân loại này là đi xa hơn đến việc phân loạicác nhóm con như nhóm ngôn ngữ biểu tượng (iconic languages) và phi biểu tượng (non-iconic languages), ngôn ngữ hướng đối tượng (object-oriented), ngôn ngữ lập trình hàm (functional programming), và ngôn ngữ mệnh lệnh (imperative languages).

3.Đặc điểm nổi bật của Visual Paradigm

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

- Cho phép xây dựng chương trình theo hướng sự kiện (Event-Driven Programming, nghĩalà 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 ralú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 tao 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 đối tượng (object) như hộp 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 dung các noon ngữ lập trình trực quan , ta rất it khi phải viết các lênh , tổ chức chương

trình… một cách rắc rối mà 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 .

Page 3: KĨ Thuật Lập Trình

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

4.Lý Thuyết của các ngôn ngữ lập trình trực quan

a.Một số định nghĩa icon (biểu tượng, hình tượng)

Một đối tượng với sự trình bày kép của một phần lô-gíc (ý nghĩa) và một phần vật lý(hình ảnh).

iconic system (hệ thống có tính chất biểu tượng)

Một tập hợp có cấu trúc của những biểu tượng có liên quan.

iconic sentence (câu biểu tượng/trực quan)

Một sự sắp xếp không gian của các biểu tượng từ hệ thống biểu tượng.

visual language (ngôn ngữ trực quan)

Một tập các câu trực quan được cấu trúc với cú pháp và ngữ nghĩa cho trước.

syntactic analysis (phân tích cú pháp)

Một sự phân tích của một câu trực quan để xác lập cấu trúc cơ sở.

semantic analysis (phân tích ngữ nghĩa)

b.Phân tích

Một sự sắp xếp không gian của các biểu tượng sẽ tạo thành một câu trực quan. Nó là bảnsao hai chiều của sự sắp xếp một chiều của các dấu hiệu trong các ngôn ngữ lập trình qui ước

(trong chế độ text). Trong những ngôn ngữ này, một chương trình là được diễn giải như một xâu ký tự trong đó ký hiệu kết thúc là móc nối đến mẫu một câu mà cấu trúc và ngữ nghĩa củanó là được khám phá bởi sự phân tích cú pháp và ngữ nghĩa theo thứ tự định sẵn. Theo cáchđó, qui tắc xây dựng là tiềm ẩn trong ngôn ngữ và không cần giải thích như một phần của ngôn ngữ đặc tả. Ngược lại, trong những ngôn ngữ lập trình trực quan chúng ta phân biệt 3 nguyên tắc để sắp xếp các biểu tượng: sự móc nối theo chiều ngang (biểu hiện bởi ký hiệu &), móc nối theo chiều đứng (biểu hiện bởi ký hiệu ^) và không gian bao phủ (biểu hiện bởi ký hiệu +).

Trong việc định dạng các ngôn ngữ lập trình trực quan, nó là lựa chọn để phân biệt các biểu tượng tiến trình từ các biểu tượng đối tượng. Sự tính toán các biểu thức trước, sau đó có thể phân nhỏ đến các biểu tượng đối tượng sơ cấp và các biểu tượng đối tượng phức hợp. Những biểu tượng đối tượng cơ sở cho biết các đối tượng sơ cấp trong ngôn ngữ, nhưng ngược lại cácđối tượng phức hợp cho biết các đối tượng được định dạng bởi một sự sắp xếp không gian củacác biểu tượng đối tượng sơ cấp.

Tóm lại, thuật ngữ biểu tượng sơ cấp (elementary icons) là để tham chiếu đến cả hai loại: biểu tượng tiến trình và biểu tượng đối tượng sơ cấp và biểu hiện bởi những biểu tượng của chúng đó là nguyên gốc trong ngôn ngữ. Từ một bức tranh (hoặc biểu tượng

Page 4: KĨ Thuật Lập Trình

trong trường hợp này) là có hàng ngàn cách biểu đạt, chúng ta cố gắng minh hoạ tất cả những ý niệm trên đây trong hình vẽ sau:

Hình 1. Hệ thống biểu tượng Heidelberg

Hình vẽ này giới thiệu một vài biểu tượng từ bộ biểu tượng Heidelberg. Những biểu tượngsơ cấp gồm (a) là một ký tự và (b) là một ký tự được chọn; các biểu tượng tiến trình: (c) là hoạt động chèn và (d) là hoạt động xoá; các biểu tượng phức hợp: (e) là một xâu (kết hợp cácký tự) và (f) là xâu được lựa chọn; (g) câu trực quan biểu thị sự thay thế của một xâu con trongmột xâu nào đó.

Một môn ngữ lập trình trực quan là được đặc tả bởi một bộ ba (ID,G0,B), ở đây ID là từ điển biểu tượng, G0 là một ngữ pháp và B là một cơ sở tri thức cho một lĩnh vực đặc biệt. Từ điển biểu tượng là một tập hợp các biểu tượng tổng quát và mỗi một phần tử là được trình bàybởi một cặp (Xm,Xi), với phần lô-gíc Xm (nghĩa) và phần vật lý Xi (hình ảnh). Ngữ pháp G0chỉ định cách thức làm thế nào để những biểu tượng đối tượng phức hợp có thể được xây dựngtừ các biểu tượng sơ cấp bằng việc sử dụng những toán tử sắp xếp không gian.

Cơ sở tri thức B chứa những thông tin của một lĩnh vực đặc biệt cần thiết cho việc xây dựng ngữ nghĩa của một câu trực quan cho trước. Nó chứa thông tin về các tên sự kiện, những quanhệ thuộc về khái niệm, tên của các đối tượng kết quả và những tham chiếu đến các đối tượng kết quả.

Page 5: KĨ Thuật Lập Trình

c.Danh sách một số không gian

Picture-processing grammars (ngữ pháp xử lý ảnh)

Nguồn gốc của việc thiết kế là phân tích những ảnh số trên một lưới vuông, ở đó những ngữ pháp là được xây dựng trên cơ sở thực tế là những bức ảnh số là sự kết hợp của các điểm ảnh. Ngữ pháp này khám phá ra cấu trúc của câu trực quan bởi trật tự của các điểm ảnh riêng lẻ đếncác phần tử trực quan có thể nhận diện được (đường thẳng, hộp, cung tròn...). Cách tiếp cận này có ích khi một hệ thống biểu tượng cần để nhận dạng các biểu tượng với một mức độ nàođó của lỗi có thể chấp nhận được (ví dụ các chữ số viết tay).

Precedence grammars (ngữ pháp thứ tự)

Ngữ pháp phân tích không gian này có thể được sử dụng dành cho việc phân tích các biểu thức toán học trong không gian 2 chiều và phân tích các trang in. Ngữ pháp thứ tự là phù hợp hơn để phân tích cú pháp của các câu trực quan được xây dựng từ các biểu tượng sơ cấp các toán tử biểu tượng. Cây phân tích là được xây dựng bởi việc so sánh thứ tự của các toán tử trong một mẫu và tập con được chia của mẫu đến một hoặc nhiều mẫu con.

Context-free and context-dependent grammars (ngữ pháp phụ thuộc ngữ cảnh và ngữpháp phi ngữ cảnh)

Những ngữ pháp này được dùng để xác định tổ hợp của các câu trực quan trong việc sử dụng những hình thức quen thuộc và nhiều phương pháp tiêu chuẩn của sự phân tích như những ngữ pháp phù hợp.

Graph grammars (ngữ pháp đồ thị)

Đây là phương thức mạnh nhất (mặc dù kém hiệu quả) để đặc tả các ngôn ngữ trực quan. Những hình thức này cung cấp nhiều ý nghĩa nhất để thiết lập những quan hệ ngữ cảnh và nhiều nghiên cứu hiện tại đã được đầu tư để tạo ra những phân tích có thể tính toán được với ngữ pháp đồ thị.

Một cây phân tích được sản sinh bởi một trong những phương pháp phân tích trên là những phân tích sử dụng cách tiếp cận truyền thống để phân tích ngữ nghĩa (nghĩa là ngữ pháp tượng trưng hoặc cây tính toán...).

5.Những vấn đề của ngôn ngữ trực quan

Chúng ta thảo luận một vài vấn đề chung về ngôn ngữ trực quan. Những vấn đề này là thích hợp nhất với các ngôn ngữ trực quan hướng mục đích (phù hợp để sản sinh chương trình thựcthi trong kích cỡ hợp lý), nhưng những vấn đề nào cũng sẽ có liên quan đến những ngôn ngữ thuộc một lĩnh vực đặc biệt (được thiết kế để phục vụ một lĩnh vực đặc biệt như là công nghệ phần mềm hoặc khoa học hiển thị).

a. Control Flow (luồng điều khiển)

Tương tự như những ngôn ngữ lập trình thông thường, những ngôn ngữ trực quan gắn liền với hai khái niệm về luồng điều khiển trong các chương trình là: mệnh lệnh và khai báo.

Với cách tiếp cận mệnh lệnh, một ngôn ngữ lập trình trực quan dựa trên một hoặc nhiều luồng điều khiển hoặc biểu đồ luồng dữ liệu mà ở đó nó cho biết làm thế nào xâu chuỗi các luồng điều khiển thông qua chương trình. Một ưu thế đặc biệt của cách tiếp cận này là nó cung cấp một sự trình bày trực quan hiệu quả theo kiểu song song. Một bất tiện của phương pháp này là một người lập trình phải lưu giữ dấu vết của chuỗi thứ tự nào đó của dãy các hoạt độngđã làm thay đổi tình trạng của chương trình, đây là điều không phải là một đặc điểm đượcmong đợi của một hệ thống (đặc biệt là nếu nó đã được thiết kế để cung cấp cho những người

Page 6: KĨ Thuật Lập Trình

mới học việc).

Một trong số các ngữ nghĩa mệnh lệnh của luồng điều khiển là để sử dụng một kiểu có thể khai báo của lập trình. Với cách tiếp cận này, người ta chỉ lo lắng mỗi việc là những tính toán nào là sẽ được thực hiện và không cần biết làm thế nào những hoạt động hiện tại được tiến hành. Việc thay đổi trạng thái nhất định là đã được đề phòng bởi việc sử dụng chỉ một sự phân công: người lập trình khởi tạo một đối tượng mới bởi việc sao chép một trạng thái của đối tượng đang tồn tại. Cũng vậy, thay vì đặc tả một dãy các thay đổi trạng thái, người lập trình định nghĩa những hoạt động bởi việc đặc tả những phụ thuộc đối tượng. Ví dụ, nếu người lập trình định nghĩa Y là bằng X+1, thì rõ ràng Y được tính toán bằng cách sử dụng đối tượng X, cho phép hệ thống suy ra rằng giá trị của X cần phải tính toán trước. Vì vậy, dãy các xử lý là vẫn hiện diện nhưng phải được suy ra bởi hệ thống thì đúng hơn là đã được định nghĩa bởi người lập trình. Dĩ nhiên, sự chăm sóc đặc biệt phải được nắm giữ bởi hệ thống mà thông báo độc lập là đã được nhận diện và được thông báo như là các sự cố (errors).

b. Sự trừu tượng hoá thủ tục (Procedural Abstraction)

Chúng ta phân biệt hai mức độ của việc trừu tượng hoá thủ tục. Những ngôn ngữ lập trình trực quan bậc cao, nghĩa là không thể viết và bảo quản toàn bộ chương trình trong một ngôn ngữ và chắc chắn có một số lớp chứa những mô-đun không trực quan mà chúng được kết hợplại bằng cách sử dụng một ngôn ngữ trực quan.

Cách tiếp cận này để lập trình trực quan là có thể được tìm thấy trong rất nhiều các hệ thống phục vụ cho một lĩnh vực đặc biệt, ví dụ như những công cụ bảo quản phần mềm và môi trường trực quan khoa học. Ở phía ngược lại là những ngôn ngữ trực quan mức độ thấp, chúng không cho phép người lập trình móc nối những đơn vị lô-gíc đến các mô-đun thủ tục.

Phương pháp này cũng có lợi trong nhiều ngôn ngữ thuộc một lĩnh vực đặc biệt ví dụ như là những bộ mô phỏng lô-gíc. Những ngôn ngữ lập trực quan đa năng thường bao phủ một phổ

rộng và cung cấp tất cả những chức năng nhằm giúp người lập trình dễ dàng khi phát triển ứng dụng như móc nối đến các ngôn ngữ bậc thấp, các điều kiện, đệ qui, lặp và móc nối dễ dàng đến các mô-đun trừu tượng (thủ tục, lớp, thư viện...).

c. Sự trừu tượng hoá dữ liệu (Data Abstraction)

Những phương tiện cho phép trừu tượng hoá dữ liệu là chỉ có thể tìm thấy trong các ngôn ngữ lập trình trực quan đa năng. Khái niệm trừu tượng hoá dữ liệu trong lập trình trực quan làrất giống với khái niệm trừu tượng hoá dữ liệu trong những ngôn ngữ lập trình thông thườngvới chỉ những yêu cầu trừu tượng các kiểu dữ liệu đã được định nghĩa trực quan (trái với textually), có một sự trình bày trực quan (iconic) và được cung cấp để dành cho cách đối xử tương tác.

6.Một số ngôn ngữ lập trình trực quan

a.ARK

Hơn 10 năm kể từ ngày bắt đầu, ngôn ngữ Alternate Reality Kit (ARK) được thiết kế bởiR. Smith tại Xerox PARC, đã ra đời một ngôn ngữ lập trình thuộc họ VPL để phục vụ cho một lĩnh vực đặc biệt. ARK được phát triển trên Smalltalk-80, cung cấp cho người dùng một môi trường động trong không gian 2 chiều dành để khởi tạo sự mô phỏng tương tác. Hệ thống là được dự định để phục vụ cho những người lập trình nghiệp dư tạo ra các mô phỏng và để một nhóm khán giả rộng lớn tương tác với những mô phỏng này. Để giúp người sử dụng hiểu những luật cơ bản của tự nhiên, ARK sử dụng phép ẩn dụ theo nghĩa của chữ mà

Page 7: KĨ Thuật Lập Trình

trong đó người sử dụng điều khiển bàn tay trên màn hình mà nó có thể tương tác với các đối tượng vậtlý, ví dụ các quả bóng hoặc các khối, ở đó chúng xử lý một khối lượng lớn và vận tốc nhanhvà với các đối tượng được gọi là các bộ tương tác, trình bày các qui luật vật lý như là trọng lực. Bằng việc cung cấp một kiểu nguyên bản vật lý đến các luật trừu tượng, hệ thống cố gắng huỷ bỏ một vài bí mật bao quanh theo những cách mà các luật tương tác với các đối tượng và những cái khác. Những người sử dụng có thể hiệu chỉnh bất kỳ đối tượng nào trong việc sử dụng môi trường, các hộp thông điệp và các nút, nhìn thấy kết quả của những thay đổi của chúng trong thời gian thực. Việc mô phỏng thực hiện trong một “alternate reality” chứa trong một cửa sổ và tất cả được bao quanh một thế giới “siêu thực”. Cấu trúc rất giống một hệ thốngcác màn hình và cửa sổ theo kiểu giao tiếp người dùng đồ hoạ hiện đại. Người lập trình có thểdi chuyển bàn tay giữa nguyên bản luân phiên và những đối tượng tác động ra ngoài sự mô phỏng và đến sự siêu thực bất kỳ lúc nào.

b.Prograph

Trong phần này, chúng tôi mô tả ngôn ngữ Prograph, nó được xem là ngôn ngữ thành công nhất trong số các ngôn ngữ trực quan đa năng (general-purpose visual languages).

Việc nghiên cứu Prograph được tiến hành từ năm 1982 tại Trường Đại học Kỹ thuật Nova Scotia. Từ đó đến nay, có vài phiên bản đã được đưa vào sử dụng và trong số đó được dùng phổ biến nhất là Prograph/CPX và đã được thương mại hoá bởi Pictorius, Inc.

Prograph là ngôn ngữ hướng đối tượng trực quan. Nó móc nối những khái niệm về các lớp,các đối tượng với một cơ chế đặc tả dòng dữ liệu trực quan rất mạnh. Prograph còn là một ngôn ngữ mệnh lệnh, nó cung cấp những điều khiển rõ ràng trên trật tự các tính toán. Điều đặc biệt là các trường hợp đơn lẻ và đa thành phần của Prograph, những cấu trúc điều khiển đặc biệt ở đó là được mong đợi để thay thế vòng lặp và cung cấp các điều khiển luồng tinh vi. Chúng ta sẽ thảo luận những điều này như một phần của ví dụ dưới đây.

Prograph cho phép người lập trình làm việc trên cả hai mức độ thấp và cao, cho phép họ thiết kế và bảo trì nhiều hoặc ít phần mềm phức tạp. Những sự tính toán nguyên thuỷ như các phép toán số học, các lời gọi các method... là đã được móc nối đến các phần thân của phương pháp biểu mẫu bởi các biểu đồ dòng dữ liệu. Các phương thức (methods) là được tổ chức thành các lớp. Ngoài ra, Prograph còn cung cấp cho người lập trình cơ chế gọi những đối tượng mà nó có thể là được lưu trữ trong một cơ sở dữ liệu Prograph giữa các lời đề nghị khác nhau của chương trình.

c.Form/3

Forms/3 là một ngôn ngữ lập trình khác thuộc dạng ngôn ngữ lập trực quan hướng đối tượng đa năng. Đặc điểm nổi bật của nó là trừu tượng hoá dữ liệu. Tuy nhiên, không giống như Prograph, nó không mang tính kế thừa và sự phân tích các thông điệp là có được hỗ trợ.

Forms/3 phỏng theo cách tổ chức bảng tính với các ô và công thức để trình bày dữ liệu vàthứ tự tính toán. Một đặc trưng của Forms/3 là các ô ở đây đã được tổ chức thành một nhóm

gọi được là form, một cơ chế trừu tượng hoá dữ liệu cơ bản. Một form có thể trình bày một ảnh cho trước (còn gọi là một biểu tượng) và nó có thể được minh hoạ cho một đối tượng. Theo nghĩa này, một form tương ứng đến một đối tượng nguyên mẫu trong các ngôn ngữ hướng đối tượng nguyên mẫu cơ bản (prototype-based object oriented languages.

Trong Forms/3, dữ liệu (values) và sự tính toán (formulas) là một cặp thống nhất. Mỗi mộtđối tượng được đặt trong một ô và đã được định nghĩa với khai báo để sử dụng một công thức.

Page 8: KĨ Thuật Lập Trình

Các đối tượng có thể chỉ được khởi tạo theo các công thức và mỗi một công thức sản sinh mộtđối tượng giống như một kết quả của việc đánh giá nó. Những công thức cung cấp một sự dễdàng để yêu cầu các kết quả từ các đối tượng khác và khởi tạo những đối tượng mới: điều này không cần sự phân tích các thông điệp.

B.Extreme Programming

1.Giới thiệu .

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 .

--- Ưu điểm của Extreme Programming :

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 phần mềm đi theo một con đường

Nhu cầu (thị trường) – Phân tích – Thiét kế – Mã hóa – 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 việc trong một môi trường mà ở đó các Nhu cầu được chờ để thay đổi và các khách hàng sẽ được lợi từ việc bàn giao phần mềm sớm và thường xuyên thì chắc chắn nên xem xét XP . Các nhóm làm theo XP sẽ thường xuyên nhận ra rằng họ đang bàn giao các sản phẩm phần mềm chất lượng cao với số lượng rất lớn và nhanh hơn trước đây rất nhiều .

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

XP là một phương pháp có khả năng thích nghi, thích ứng . Điều đó có nghĩa là sẽ không có hai dự án XP nào giống nhau cả . XP cung cấp một tập hợp các thực hành và được sử dụng như là điểm khởi đầu, và sau đó được làm cho thích ứng để phù hợp với các ràng buộc của từng dự án riêng . Sau đây là một tập hợp các nguyên tắc được mong đợi :

1. Liên lạc: một XP team lớn mạnh dựa trên các kiến thức, sự hiểu biết bài toán và hiểu biết phần mềm được chia sẻ . Các phương pháp giải quyết vấn đề được trao đổi trực tiếp . Những thứ cản trở đến công việc đều được loại bỏ .

2. Đơn giản hoá: công việc cần giảm tối thiểu độ phức tạp để đạt được hiệu quả cao nhất .

3. Thông tin phản hồi thường các đội làm dự án và khách hàng của họ không nhận ra những vấn đề rắc rối cho tới khi sắp bàn giao sản phẩm .Nhưng các XP teams thường xuyên lấy feedback – trong quá trình làm việc, test, bàn giao sản phẩm … Khi đó sẽ control được các vấn đề phát sinh .

Page 9: KĨ Thuật Lập Trình

4. Thế mạnh: các đội làm phần mềm thành công cần phải kiểm soát được ngay cả khi xuất hiện các lỗi . XP đưa ra 12 phương án thực hành, và điểm mạnh của XP chính là đã kết hợp được các phương án này lại . Mỗi một phương án tuy đơn giản nhưng rất cần thiết phải nắm vững, sẽ góp phần làm giảm bớt đáng kể cái giá của sự thay đổi .

3. Các phương án thực hành

Tiêu chuẩn hoá mã nguồn

Đây là một loạt các quy ước về mã hoá để các thành viên của dự án theo đó làm . Khi đó mọi người có thể xem xét lẫn nhau và có thể bàn giao được cho nhau .

Thiết kế đơn giản

Để giảm giá phải trả cho sự thay đổi đồng nghĩa với việc làm cho hệ thống càng đơn giản càng tốt . Điều đó có nghĩa là không nên bỏ quá nhiều thời gian và công sức vào những việc mà sau này có thể cần hoặc cũng có thể không. Các đề án XP thường được đơn giản một cách tối đa, đảm bảo rằng sau này nếu có cần thay đổi thì chi phí cũng rất nhỏ .

Dạng thức Thiết kế và Nguyên lý Thiết kế

Mọi thành viên trong nhóm đều phải học và sử dụng thành thạo các Nguyên lý và Dạng thức Thiết kế. Thứ nhất, nó giúp cho cả nhóm làm việc với nhau một cách ăn ý (liên lạc tốt). Sau đó là giúp cho việc viết mã của từng thành viên được tốt và nhanh do tái sử dụng được kinh nghiệm từ người đi trước, điều này rất quan trọng, vì trong XP không có thiết kế chi tiết, từng đoạn mã/từng module phải do từng thành viên của nhóm thể hiện, vì vậy nếu áp dụng được thì sẽ giảm thiểu được quá trình điều chỉnh/tái chế.

Thử nghiệm(test-first design)

Các lập trình viên sẽ viết các đơn vị thử nghiệm (unit test) (trường hợp thử nghiệm) trước khi viết mã (thiết kế thử nghiệm đầu tiên). Tất cả các đơn vị thử nghiệm (trường hợp thử nghiệm) đều được thực hiện thường xuyên trong quá trình phát triển sản phẩm trong từng module mã của từng lập trình viên. Các lập trình viên có thể thay đổi một cách linh hoạt vì quy trình thử nghiệm có thể mắc lỗi hay sai so với thiết kế ban đầu (điều chỉnh trường hợp thử nghiệm).

Lập trình cặp đôi

Tất cả quá trình phát triển sản phẩm đều được thực hiện bởi 2 người cùng chia sẻ công việc trên một máy . Điều này hiệu quả hơn là 2 người làm việc độc lập . Việc quay vòng các cặp thường xuyên như vậy sẽ phổ biến được kinh nghiệm và kiến thức cho toàn nhóm. Mã sẽ được xem lại liên tục .

Quyền sở hữu mã kết tập

Bất kỳ người nào trong đội dự án đều có quyền thay đổi mã trong quá trình làm việc với khách hàng chỉ cần tuân theo Tiêu chuẩn mã hoá và phải đảm bảo thực hiện thử nghiệm lại toàn bộ sau khi hoàn tất công việc sửa đổi . Điều này sẽ loại bỏ các vấn đề như là sai lệch về cấu trúc chương trình, … có thể xảy ra khi một cá nhân mã hoá độc lập .

Page 10: KĨ Thuật Lập Trình

Tái chế

Tái chế là kỹ thuật làm tăng hiệu quả của việc thết kế các mã có sẵn mà không làm thay đổi chức năng . Tái chế là rất khả thi vì một nhóm XP có các quy trình thử nghiệm tự động bắt lỗi, cho phép ta thay đổi mã ( phản ánh khả năng hiểu bài toán ngày càng cao của các thành viên ) . Qua đó cũng mở rộng các thiết kế lên .

Tương tác liên tục

Các nhóm XP chia công việc ra thành các bước nhỏ và tích hợp mã của họ một vài lần trong một ngày . Do vậy, các vấn đề sẽ được xem xét ngay sau khi thực hiện và có thể dễ dàng sửa chữa khi gặp sự cố . Quá trình này đảm bảo cho mọi người luôn làm việc với phiên bản mới nhất của hệ thống .

Phát hành nhỏ gọn

Do nhóm XP làm việc trong các bước nhỏ cho nên việc phát hành cũng chia ra thành các phát hành nhỏ ( khoảng vài tuần một lần ) . Và các thành viên sẽ phải tích hợp liên tục . Có những đề án XP thực hiện việc phát hành hàng ngày .

Khách hàng trực diện

Các lập trình viên phải luôn tiếp xúc với khách hàng để xác định rõ nhu cầu bất kể nỗ lực tốn bao nhiêu. Các nhà lập trình XP không nên suy đoán các vấn đề cụ thể của một chức năng mà phải hỏi trực tiếp khách hàng.

Trò chơi kế hoạch

Thao tác này thực hiện các tái lập ( vài tuần một lần ) để quyết định xem chức năng tiếp theo sẽ được phát hành là gì . Các lập trình viên sẽ đưa ra các dự đoán và khách hàng sẽ lựa chọn cái nào có lợi nhất, và mọi người sẽ thực hiện .

Tuần lễ 40 giờ

Việc phát triển phần mềm là một công việc sáng tạo, và họ sẽ không thể sáng tạo được nếu họ kiệt sức. Việc giới hạn số giờ làm việc trong tuần sẽ đảm bảo được sức khoẻ của các thành viên và tăng cường chất lượng sản phẩm.

Metaphor

Dùng một hệ thống các thuật ngữ về business object trong việc discuss các vấn đề và các solutions cho chúng ( the system Metaphor ) .

Dưới đây là một số nhận xét về XP và Rational Unified Process(RUP)

Giống nhau

RUP không đề cập tỉ mỉ đến những định lý, tuy nhiên những nguyên lý cơ bản của phương pháp luận được đề ra rõ ràng và ta có thể thấy rõ, ví dụ như phản hồi từ khách hàng, sự thay đổi tăng dần, đầu tư ban đầu ít, thử nghiệm cụ thể và tuỳ biến theo từng nơi.

Page 11: KĨ Thuật Lập Trình

Có một số điểm tương đồng trong chiến lược lập kế hoạch, cả hai phương pháp đều phát biểu là không lập kế hoạch quá cụ thể ngay từ ban đầu bởi vì bạn không thể biết công việc gì là quan trong ngay từ lúc đầu. Cả hai phương pháp sử dụng quan niệm vòng quay của dự án, và nhấn mạnh sự ưu tiên theo mức độ quan trọng của các chức năng. User story và use case đều được dùng để định hướng kiến trúc phần mềm và đóng vai trò quyết định cho việc lập kế hoạch cũng như quá trình phát triển.

Phương pháp luận hướng đối tượng đều là công cụ chính của cả hai phương pháp.

User story trong XP giống hệt với Use case trong RUP.

Trong các yếu tố quan trọng cấu thành dự án là phạm vi dự án, tính đúng hạn, chất lượng và tài nguyên dự án, XP khuyến cáo chúng ta cần giữ cố định mục tiêu tính đúng hạn, chất lượng và tài nguyên. Phạm vi dự án có thể được phép điều chỉnh. RUP không đặt quan điểm một cách chặt chẽ như vậy, tuy nhiên RUP cho phép chúng ta dùng phương pháp xây dựng ma trận quyết định, trong đó các yếu tố đó có thể được điều chỉnh để phù hợp theo đặc tính của từng dự án. Dẫu RUP không phát biểu cụ thể như vây về sự cho phép thay đổi phạm vi dự án, tuy nhiên quan điểm tương đồng cũng thể hiện ở phương pháp phát triển phần mềm “to dần” của RUP.

Thử nghiệm cụ thể là một nguyên lý của XP và ta cũng có thể thấy ở trong RUP. Trong giai đoạn Elaboration, RUP đòi hỏi bạn phải tiến hành nghiên cứu những vấn đề quan trọng và và thử nghiệm những công nghệ mới.

Việc kiểm tra chương trình một cách tự động đều được XP và RUP khuyến cáo. XP dựa trên việc này để đảm bảo chi phí thấp cho mỗi sự thay đổi, tuy nhiên RUP thì không đòi hỏi.

Khác nhau

Sự khác biệt đáng kể giữa RUP và XP là RUP hướng đến những dự án lớn hơn so với XP và vì thế, nó phức tạp hơn.

Chi phí cho thay đổi và rủi ro

RUP cho rằng chi phí thay đổi tăng theo hàm mũ và tập trung vào cho những bước đầu tiên để giảm thiểu những chi phí về sau trong quá trình phát triển phần mềm. RUP quan tâm nhiều đến việc giảm thiểu rủi ro, theo dõi để tìm kiếm rủi ro và tiếp cận mục tiêu này từng bước từ quá trình xây dựng kiến trúc đến các quá trình phát triển phần mềm sau này.

XP cho rằng chi phí thay đổi không lớn lắm. XP cũng được xây dựng với mục tiêu giảm thiểu rủi ro (rủi ro ở đây định nghĩa là “những vấn đề cơ bản”) và hướng tới một thiết kế và kiến trúc tốt cũng như với mục tiêu trước tiên là cho ra lò những chức năng quan trọng nhất. Tuy nhiên, với sự giả định là giá cho sự thay đổi thấp, kiến trúc của phần mềm được phép phát triển một cách hữu cơ, như một bộ xương chỉ cần phát triển vừa đủ để nâng đỡ cơ thể tại thời điểm nhất định. Điều then chốt trong XP là sự đơn giản.

Một đôi điều về tài liệu dự án

XP khuyến nghị bạn có một “hành lý” gọn nhẹ và không phải luôn luôn cập nhật tài liệu dự án, trừ khi bạn cần dùng chúng. RUP nhìn nhận vấn đề theo một cách khác và dựa trên sự cập nhật kịp thời bản thiết kế nhằm phục vụ cho việc phát triển phần mềm tiếp theo. XP cần có mã nguồn phải được viết tốt và dựa trên đó để trao đổi cũng như thiết kế cho các bước tiếp theo.

Page 12: KĨ Thuật Lập Trình

Chia sẻ mã nguồn

XP khuyến nghị cần có một sự chia sẻ mã nguồn trong nhóm, điều này có nghĩa là bất kỳ ai vào bất kỳ lúc nào cũng có thể thay đổi bất kỳ phần nào của mã nguồn. RUP gợi ý rằng người thiết kế phần mềm có trách nhiệm cho một phân hệ hoặc một gói nào đó, tương tự như vậy đối với lập trình viên.

Vị trí và trách nhiệm của các thành viên

Khi triển khai những công việc và vai trò trong dự án, RUP đồ sộ hơn nhiều so với XP. Những vai trò trong XP chỉ đơn thuần là Lập trình viên, Khách hàng, Coach và Manager. Đối với RUP thì ta cũng thấy LTV và KH, Coach tương tự như Architect và Manager tương tự như Project Leader. Tuy nhiên, những trách nhiệm của các vị trí này không giống nhau bởi vì có một số hành động hoặc những concept không có trong XP. Những vị trí trong XP thường có nhiều trách nhiệm hơn so với RUP, ví dụ Programmer là Designer, Customer có trách nhiệm xây dựng yêu cầu.

Các bước của dự án

RUP có 4 bước được định nghĩa rõ ràng : Inception, Elaboration, Construction, and Transition. XP thì nói về Exploration, Commitment và Steer với những đầu mục công việc khác nhau và phân chia thời gian theo những phương pháp khác nhau. RUP chia toàn bộ quá trình sản xuất phần mềm thành một số release. XP chia và thực hiện dự án theo từng bước kế tiếp. Những bước này được XP gợi ý trong khoảng thời gian ngắn hơn.

C. Parallel Paradigms

1.Giới thiệu

Parallel Paradigms là một phương thức lập trình mà trong đó :

Những chỉ dẫn được thực hiện một cách đồng thời . Những vấn đề , bài toán đươcj chia thành những phần nhỏ hơn nhưng có thể được giải

một cách đồng thời .

Những chỉ dẫn của mỗi phần được thực hiện đồng thời trên những CPU khác nhau

-So sánh giữa serial va parallel programming :

Trong những ngay đầu của máy tính , chương trình được thực hiện nồi tiếp , tức là mỗi chương trình bao gồm một chuỗi các lệnh , mỗi lệnh thực hiện sau khi đã thực hiện xong một lênh trước đó . Nó chay từ đầu đến cuối trên một bộ xử ly duy nhất .

Parallel programming xuất hiện như một phương tiện cải thiện hiệu xuất và hiệu quả .Trong một chương trình song song , xử lý được chia thành các phần , mỗi phần trong số đó có thể được thực hiện đồng thời . Các lệnh từ mỗi phần chạy đồng thời trên các CPU khác nhau , CPU này có thể tồn tại trên một máy duy nhất hoặc chúng có thể là CPU trong một hợp các máy tính được kết nối qua mạng .

Page 13: KĨ Thuật Lập Trình

Rõ rang là lập trình song song có ưu điểm hơn tuần tự :

Serial programming

Vậy , tại sao phải cần lập trình parallel programming . Đó là từ những lý do sau :

- Tiết kiệm thời gian .- Giải quyết được những vấn đề lớn hơn .- Cung cấp sự tương tranh : Có thể làm nhiều thứ cùng một lúc .

Ngoài những lý do chính như trên còn có một số lý do sau :

- Tận dụng được những tài nguyên non-local.- Chi phí tiết kiệm – sử dụng tài nguyên tính toán có hiệu quả .- Giải phóng bộ nhớ bị chiếm đóng.- Thoát khỏi sự giới hạn truyền của serial programming về tốc độ và kinh tế.

Page 14: KĨ Thuật Lập Trình

2.Xây dựng một chương trình song song .

Bước đầu tiên trong việc xây dựng một chương trình song song là xác định tập hợp các nhiệm vụ có thể chạy đồng thời và / hoặc các phần dữ liệu có thể được xử lý đồng thời . Bởi vì không phải nhiệm vụ hay dữ lieuj nào cũng có thể chạy , xử lý một cách đồng thời . Ta lấy ví dụ như hàm Fibonacci :

F(k+2) = F(k) + F(k+1)

Hàm này không thể thực hiện song song bởi vì giá trị tính phụ thuộc vào giá trị đã tính trước đó .

Một tình trạng phổ biến là có một lượng lớn dữ liệu nhất quán và cần phải được xử lý .Nếu dữ liệu có thể được phân tích thành các phần có kích thước bằng nhau , chúng ta có thể nghĩ ra mọt giải pháp song song . Xem xét một mảng lớn mà có thể chia thành các tiểu mảng :

.

Nếu cùng một xử lý mà cần thiết cho mỗi phần tử mảng , không phụ thuộc vào tính toán, và không có yêu cầu thông tin liên lạc giữa các tác vụ , chúng ta có một ý tưởng tính toán song song . Đây là một kĩ thuật phổ biến được gọi là Master/Worker . Master :

Khởi tạo các mảng và chia tách nó theo các Worker có sẵn . Gửi cho mỗi Worker các subarray của nó . Nhận được các kết quả từ mỗi Worker .

Worker : Nhận được subarray từ Master . Thực hiện xử lý trên subarray . Trả về kết quả cho Master .Mô hình này đươc sử dụng phổ biến khi tất cả các nhiệm vụ đang được thực hiện cùng số lượng công việc trên các máy tính giống hệt nhau . Nhìn chung , nó đề cập đến kỹ thuật mà cố gắng tản ra các nhiệm vụ giữa các bộ vi xử lý trong một hệ thống song song để tránh một số bộ vi xử lý được nhàn rỗi trong khi những cái khác có

Page 15: KĨ Thuật Lập Trình

những nhiệm vụ phải xếp hang để được thực hiện .

Mô hình tính toán song song được ứng dung rông rãi , những language/library có sử dụng nó như : MPICH ,OpenMP,FORTRAN 90/95 . Và những Software Package như : Gaussian, GAMESS, MM5… Nó giúp phát triển những siêu máy tính và những máy tinh đa nhân.

D.Distributed Programming

1.Giới thiệu Thông thường mã lệnh của một chương trình khi thực thi được tập trung trên cùng một máy, đây là cách lập trình truyền thống. Sự phát triển như vũ bão của mạng máy tính đặc biệt là mạng Internet toàn cầu, đã khiến các chương trình truyền thống này không còn đáp ứng được yêu cầu nữa. Các chương trình bây giờ yêu cầu phải có sự hợp tác xử lý, tức là mã lệnh của nó đã không tập trung trên một máy mà được phân tán trên nhiều máy. Khi một ứng dụng có mã lệnh thực thi được phân tán trên nhiều máy thì chương trình đó được gọi là chương trình phân tán và việc lập trình để tạo ra các chương trình này được gọi là lập trình phân tán. Có rất nhiều công nghệ lập trình phân tán như: DCOM, CORBA, RMI, EJB.. trong đó RMI là công nghệ thuần Java và dễ lập trình nhất. Có các mô hình lập trình phân tán như :

- Mô hình client/server .- Mô hình tác tử di động .- Mô hình dựa trên thành phần , mô hình đối tượng phân tán .

Tính toán phân tán là một lĩnh vực khoa học máy tính mà mghiên cứu về những hệ thống phân tán . Một hệ thống phân tán bao gồm nhiều máy tính tự trị mà có thể truyền thong liên lạc trong suốt một mạng máy tính . Những máy tính tương tác với nhau để đạt được một mục đích chung . Một chương trình máy tính mà chạy trong một hệ thống phân tán được gọi là một chương trình phân tán , và lập trình phân tán là quá trình của việc viết ra những chương trình như vậy .

Sự tính toán phân tán cũng dựa vào việc sử dụng hệ thống phân tán để giải để giải quyết những vấn đề . Trong sự tình toán phân tán , một vấn đề được chia thành nhiều công việc , mỗi công việc được giải quyết bởi một máy tính .

2.So sánh parallel và distributed computing . Nhìn chung có vẻ lập trình song song và lập trình phân tán giống hệt nhau vì cùng chia nhỏ vấn đề ra xử lý . Nhưng thực ra bản chất là khác nhau hoàn toàn :

Trong các lập trình song song thì tất cả các bộ xử lý cùng truy nhập đến một bộ nhớ dung chung .Bộ nhớ dùng chung có thể được dung để trao đổi thông tin giữa các bộ xử lý .

Trong lập trình phân tán thì mỗi bộ xử lý có một bộ nhớ riêng của mình (bộ nhớ phân tán) , thong tin được trao đổi bởi sự chuyển qua thong báo giữa những bộ xử lý .

Page 16: KĨ Thuật Lập Trình

(a)–(b) A distributed system.(c) A parallel system

2.Ứng dụng

Những hệ thống phân tán lan rộng đầu tiên đó là những mạng local – area networks như Ethernet được phát minh vào khoảng năm 1970 . Nghiên cứu về tính toán phân tán đã trở thành một bộ phận của nganh khoa học máy tính vào cuối những năm 1970 và đầu những năm 1980 . Có hai lý do để chúng ta sử dụng hệ thống phân tán và tính toán phân tán :

Tính tự nhiên của ưng dụng có thể yêu cầu sử dụng mọt mạng thong tin mà nối một số máy tính .

Có lợi vì lý do thực tế . Ví dụ có thể tăng hiệu quả , giảm chi phí với việc sử dụng nhiều máy tinh cấp thấp so với việc sử dụng một máy tính cấp cao duy nhất .

E.Concurrent Programming

1.Giới thiệu

Tính toán Concurrent là một hình thức trong đó những chương trình được thiết kế như những tập hợp của những việc tương tác tính toán xử lý mà có thể thực hiện song song . Những chương trình concurrent có thể được thực hiện tuần tự trên một bộ xử lý đơn bởi việc xem xét đặt mỗi bước thực hiên của mỗi quá trình tính toán , hoặc thực hiện trong đường song song bởi việc gắn mỗi quá trình tính toán cho một số tập hợp những bộ xử lý gần hoặc phân tán trong một mạng . Những thách thức chính trong việc thiết kế những chương trình concurrent là đảm bảo sự sắp xếp đúng trình tự của sự tương tác hoặc truyền thong giữa những quá trình tính toán xử lý khác nhau và phối hợp truy nhập tới những tài nguyên chia sẻ trong những quá trình . Một số phương pháp khác nhau có thể được sử dụng để thực hiện những chương

Page 17: KĨ Thuật Lập Trình

trình concurrent ,như việc thực hiện mỗi quá trình tính toán như một hệ điều hành xử lý , hay việc thực hiện những quá trình tình toán như một tập hợp hoạt động đơn lẻ quy trình hệ thống . Những người tiên phong trong lĩnh vực concurrent computing bao gồm : Edsger Dijkstra, Per Brinch Hansen và C.A.R. Hoare . 2.Những mô hình concurrent Có một số mô hình concurrent computing mà có thể dung để hiểu và phân tích những hệ thống concurrent system :

Actor modelo Object-capability model for security

Petri nets

Process calculi such as

o Ambient calculus

o Calculus of Communicating Systems (CCS)

o Communicating Sequential Processes (CSP)

o π -calculus

3.Concurrent programming languages

Những ngôn ngữ concurrent programming là những ngôn ngữ lập trình mà sử dụng các cấu trúc ngôn ngữ cho concurrent , những cấu trúc này có thể lien quan đến multi-threading (đa luồng) , những hỗ trợ tính toán phân tán , shared resources (bao gồm shared memory)…

Ngày nay , những ngôn ngữ lập trình thường sử dụng nhất có cấu trúc cụ thể cho concurrent là Java và C# ....

Page 18: KĨ Thuật Lập Trình
Page 19: KĨ Thuật Lập Trình