Tải bản đầy đủ (.pptx) (37 trang)

Nguyên lý các ngôn ngữ lập trình LẬP TRÌNH SONG SONG VÀ LẬP TRÌNH TƯƠNG TRANH Ngôn ngữ lập trình Erlang

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (702.34 KB, 37 trang )

Tiểu luận: Nguyên lý các Ngôn ngữ lập trình

LẬP TRÌNH SONG SONG VÀ LẬP TRÌNH TƯƠNG TRANH
TÌM HIỂU NGÔN NGỮ LẬP TRÌNH ERLANG

Giảng viên hướng dẫn: TS. Phạm Đăng Hải
Học viên thực hiện:

1
2

Lớp:

3

Hà Nội, 04/2017


NỘI DUNG TÌM HIỂU








CÁC KHÁI NIỆM
LẬP TRÌNH SONG SONG và LẬP TRÌNH TƯƠNG TRANH
GIỚI THIỆU NGÔN NGỮ LẬP TRÌNH ERLANG
CÀI ĐẶT, TRIỂN KHAI


DEMO
KẾT LUẬN


I. CÁC KHÁI NIỆM



Tính toán song song (Paralell Computing)

o

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 đó. 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
được gọi là lập trình song song.

 Lợi ích:
o
o
o

Tiết kiệm thời gian (Xử lý đồng thời cùng một lúc)
Giải quyết những bài toán lớn
Tận dụng tài nguyên


I. CÁC KHÁI NIỆM




Phân biệt Parallel, Concurrent, Async


II. LẬP TRÌNH SONG SONG VÀ LẬP TRÌNH TƯƠNG TRANH



“Concurrency is not Parallelism” - Rob Pike

Đồng thời là khi hai hoặc nhiều nhiệm vụ chạy có thể bắt

Song song là khi các nhiệm vụ chạy cùng một

đầu , chạy và hoàn thành trong khoảng thời gian chồng

lúc. Ví dụ nhiều nhiệm vụ chạy cùng lúc trên

chéo. Nó không nhất thiết là tất cả đều được chạy ngay lập

một bộ xử lý đa lõi.

tức. Ví dụ đa nhiệm trên một bộ xử lý đơn lõi.


II. LẬP TRÌNH SONG SONG VÀ LẬP TRÌNH TƯƠNG TRANH




“Concurrency is not Parallelism” - Rob Pike

o

Concurrentcy Progamming

o

Paralell Programming


II. LẬP TRÌNH SONG SONG VÀ LẬP TRÌNH TƯƠNG TRANH



Parallel vs. Concurrent
Xem xét hai đơn vị thực hiện được bắt đầu cùng một lúc.

o

Nếu chúng chạy song song, sau đó qua bất kỳ khoảng thời gian nào trong quá trình thực thi, cả
hai đều có thể được thực hiện cùng một lúc.

o

Nếu chúng chạy tương tranh,

chúng có thể chạy song song,
hoặc chúng có thể được sắp xếp
theo thứ tự chỉ khi nào có tiến bộ

tại một thời điểm nào đó và việc
thực thi chúng được xen kẽ nhau.
Các hệ điều hành đa nhiệm đã khai thác điều này trong nhiều năm.


III. NGÔN NGỮ LẬP TRÌNH ERLANG








GIỚI THIỆU
HỆ THỐNG TỪ VỰNG CỦA ERLANG
NGỮ NGHĨA CƠ BẢN CỦA ERLANG
ĐIỀU KHIỂN LUỒNG TRONG ERLANG
LẬP TRÌNH TƯƠNG TRANH VỚI ERLANG
RELOAD MODULE


III. NGÔN NGỮ LẬP TRÌNH ERLANG



Erlang là một ngôn ngữ cấp cao, được ra đời nhằm mục đích xây dựng những ứng dụng
chạy tốt bằng cách song song hóa các yêu cầu tính toán, hỗ trợ lập trình hàm (1985).




Một đặc điểm quan trọng nhất của Erlang đó là: ngôn ngữ xây dựng theo hướng lập trình
tương tranh (Concurrency – Oriented)




Là ngôn ngữ độc lập không phụ thuộc vào hệ điều hành
Phù hợp cho điện toán đám mây: sử dụng trong các ứng dụng đám mây phổ biến như
Riak, CouchDB, RabbitMQ, và thậm chí là LING unikernel


2. NGÔN NGỮ LẬP TRÌNH ERLANG

Cấu trúc của ngôn ngữ Erlang


2. HỆ THỐNG HỖ TRỢ LẬP TRÌNH VỚI ERLANG
Ba chương trình thực thi phục vụ cho việc lập trình được gọi là shell trong thư mục bin đó là:
erl.exe đây là shell để chạy trên dòng lệnh command line của erlang
werl.exe đây là shell để chạy thông qua cửa sổ của window
erlc.exe đây là shell biên dịch code Erlang thành các file đã được biên dịch .beam


2. HỆ THỐNG HỖ TRỢ LẬP TRÌNH VỚI ERLANG

Viết code bằng module
 Modules: là đơn vị cơ bản trong Erlang, toàn bộ các functions mà chúng ta viết được
chứa trong modules, các modules được lưu trong các file có phần mở rộng .erl. Modules
cần được biên dịch trước khi chạy. Một file modules đã được biên dịch sẽ có phần mở

rộng là .beam.


3. HỆ THỐNG TỪ VỰNG CỦA ERLANG



Các từ khóa: after and andalso band begin bnot bor bsl bsr bxor case catch cond div
end fun if let not of or orelse query receive rem try when xor



Hệ thống ký tự:


3. HỆ THỐNG TỪ VỰNG CỦA ERLANG

 Biến và các atom hợp lệ:
 Các cụm ký tự được bắt đầu bởi chữ
cái in hoa được coi là một biến, mỗi biến
được bắt đầu bằng _ là một biến có thể

X
Name1
PhoneNumber
Phone_number
_
_Height

đại diện cho bất kỳ giá trị nào (ta không quan tâm và không tác động đến biến dạng này).


 Các cụm ký tự mà không bắt đầu được
coi như một atom, nếu muốn có atom

hello
phone_number

bắt đầu bằng chữ cái in hoa ta để trong dấu nháy đơn (‘’).

Monday'


3. HỆ THỐNG TỪ VỰNG CỦA ERLANG

 Một số ký tự đặc biệt:
Hằng ký tự nằm trong cặp nháy kép (“ ”)
Dấu « . » là thể hiện kết thúc lệnh
Dấu « , » thể hiện phân tách giữa các phần tử trong 1 list, 1 danh sách tham số, …
Dấu « ; » là dấu thể hiện các vế của một câu lệnh.
Dấu % là một câu chú thích và sẽ không được dịch bởi Erlang compiler.


4. NGỮ NGHĨA CƠ BẢN CỦA ERLANG

 Biến đối với ngôn ngữ:
 Các biến số được ràng buộc tới giá trị đang sử dụng. Erlang chỉ cho phép 1 biến số chỉ
đuợc ràng buộc 1 lần.

 Những biến số bất định được biểu diễn bởi dấu gạch dưới (_) và có thể được sử dụng khi
một biến được sử dụng, nhưng giá trị của nó bị bỏ qua



4. NGỮ NGHĨA CƠ BẢN CỦA ERLANG

Data Type của Erlang:








Số và biểu diễn số
Atom
Record. Ví dụ: -record(person, {name, age}).
Tuple. Ví dụ: P = {adam,24,{july,29}}.
List và hằng xâu trong Erlang. [Term1,...,TermN]
Binary
Fun: kiểu dữ liệu khá đặc biệt, sử dụng tương tự 1 hàm


5. ĐIỀU KHIỂN LUỒNG TRONG ERLANG
 Biểu thức (Expression)

o
o
o

Biểu diễn biểu thức Exp1+Exp2


So khớp: Exp1 = Exp2
ExprF(Expr1,...,ExprN)

Cách gọi hàm – function calls

ExprM:ExprF(Expr1,...,ExprN)
if

o

If – rẽ nhánh có điều kiện

GuardSeq1 ->
Body1;
...;
GuardSeqN ->
BodyN
end


5. ĐIỀU KHIỂN LUỒNG TRONG ERLANG
 Biểu thức (Expression)

o

Case

case Expr of
Pattern1 [when GuardSeq1] ->

Body1;
...;
PatternN [when GuardSeqN] ->
BodyN
end

o

Send – toán tử gửi message

Ví dụ: Pid ! Message.

receive
Pattern1 [when GuardSeq1] ->
Body1;

Pid1 ! Pid2 ! ... ! M

o

Receive – nhận message

...;
PatternN [when GuardSeqN] ->
BodyN
end


5. ĐIỀU KHIỂN LUỒNG TRONG ERLANG
 Biểu thức (Expression)


o

So sánh số hạng


5. ĐIỀU KHIỂN LUỒNG TRONG ERLANG
 Biểu thức (Expression)

o
o
o

Biểu thức số học
Biểu thức logic
Biểu thức Short-Circuit
Expr1 orelse Expr2
Expr1 andalso Expr2

o

Toán hạng List

o

Biểu thức cú pháp dạng

bit



5. ĐIỀU KHIỂN LUỒNG TRONG ERLANG
 Biểu thức (Expression)

o

Biểu thức FUN

1> Fun1 = fun (X) -> X+1 end.
#Fun<erl_eval.6.39074546>
2> Fun1(2).
3

o

Catch và Throw

Ví dụ:


5. ĐIỀU KHIỂN LUỒNG TRONG ERLANG
 Biểu thức (Expression)

o

Khối lệnh

o

List Comprehension


Expr là một biểu thức so sánh, mỗi Qualifier cũng là một bộ sinh – generator hoặc là một bộ lọc – filter.

o
o

Bit String Comprehensions
Guard Sequences


5. ĐIỀU KHIỂN LUỒNG TRONG ERLANG
 Biểu thức (Expression)

o

Operator Precedence – Ưu tiên toán tử

Khi thực hiện một biểu thức, toán tử với độ ưu tiên cao nhất sẽ được thực hiện trước. Các toán tử với cũng độ ưu tiên được thực hiện
theo quan hệ hệ của chúng. Phép tính toán tử liên kết trái được thực hiện từ trái qua phải.


6. LẬP TRÌNH TƯƠNG TRANH VỚI ERLANG




Thành phần chính của lập trình tương tranh trong ngôn ngữ Erlang là các process
Có ba thao tác cơ sở với process là spawn, send, receive :

o
o

o

Spawn là việc thực hiện tạo lập một process mới.
Send là việc gửi một message đến một process.
Receive là các đáp ứng của một process khi các message được chuyển đến.


×