1. Trang chủ
  2. » Công Nghệ Thông Tin

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

37 447 1

Đ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 37
Dung lượng 1,09 MB

Nội dung

Tiểu luận: Nguyên lý các Ngôn ngữ lập trình Đại học Bách Khoa Hà nội 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 Tính toán song song (Paralell 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 đó. 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: 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

Trang 1

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

Trang 2

NỘI DUNG TÌM HIỂU

TƯƠNG TRANH

Trang 3

I CÁC KHÁI NIỆM

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.

o Tiết kiệm thời gian (Xử lý đồng thời cùng một lúc)

o Giải quyết những bài toán lớn

o Tận dụng tài nguyên

Trang 4

I CÁC KHÁI NIỆM

Trang 5

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

Song song là khi các nhiệm

vụ chạy cùng một lúc Ví

dụ nhiều nhiệm vụ chạy

cùng lúc trên một bộ xử lý

đa lõi.

Đồng thời là khi hai hoặc nhiều

nhiệm vụ chạy có thể bắt đầu ,

chạy và hoàn thành trong khoảng

thời gian chồng chéo Nó không

nhất thiết là tất cả đều được chạy

ngay lập tức Ví dụ đa nhiệm trên

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

Trang 6

 “Concurrency is not Parallelism” - Rob Pike

o Concurrentcy Progamming

o Paralell Programming

TRÌNH TƯƠNG TRANH

Trang 7

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

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.

Trang 8

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

Trang 9

 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)

ngôn ngữ xây dựng theo hướng lập trình tương

tranh (Concurrency – Oriented)

hành

ứng dụng đám mây phổ biến như Riak, CouchDB, RabbitMQ, và thậm chí là LING unikernel

Trang 10

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

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

Trang 11

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

Trang 12

2 HỆ THỐNG HỖ TRỢ LẬP TRÌNH

VỚI ERLANG

Viết code bằng module

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

Trang 13

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

Trang 14

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

ERLANG

Biến và các atom hợp lệ:

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ể

đạ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)

coi như một atom, nếu muốn có atom

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

X Name1 PhoneNumber Phone_number _

_Height

hello phone_number Monday'

Trang 15

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

Trang 16

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

ERLANG

dụng Erlang chỉ cho phép 1 biến số chỉ đuợc ràng buộc 1 lần

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

Trang 17

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

Trang 18

5 ĐIỀU KHIỂN LUỒNG TRONG

Body1;

;

GuardSeqN ->

BodyN end

Trang 19

5 ĐIỀU KHIỂN LUỒNG TRONG

;

PatternN [when GuardSeqN] -> BodyN

end

Trang 20

5 ĐIỀU KHIỂN LUỒNG TRONG

ERLANG

Biểu thức (Expression)

o So sánh số hạng

Trang 21

5 ĐIỀU KHIỂN LUỒNG TRONG

Trang 22

5 ĐIỀU KHIỂN LUỒNG TRONG

Trang 23

5 ĐIỀU KHIỂN LUỒNG TRONG

Trang 24

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.

Trang 25

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

ERLANG

ngôn ngữ Erlang là các process

o Receive là các đáp ứng của một process khi

các message được chuyển đến

Trang 26

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

ERLANG

o Việc tạo và hủy process rất nhanh.

o Việc gửi các message giữa các process cũng xảy ra rất

nhanh.

o Các process như nhau khi thực hiện trên các hệ điều

hành khác nhau.

o Lượng process được tạo ra có thể rất lớn.

o Các process không có vùng bộ nhớ dùng chung, và

hoàn toàn độc lập.

o Cách duy nhất để các process liên lạc với nhau đó là

thực hiện thông qua truyền và nhận các message.

Trang 27

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

ERLANG

Pid2 = spawn(Mod, Fun, Args).

%Pid2 is only known to Pid1

Returns the pid registered under Name,

or undefined if the name is not registered.

Trang 28

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

Trang 29

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

ERLANG

From and Msg become bound

when the message is received (From = A, Msg = foo)

Selective message passing Wildcard message passing

Trang 30

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

ERLANG

Exception Handling với các Process

những thông tin này đến các process có quan hệ với

nó để các process có được những lý do của process

đã bị kết thúc do gặp lỗi

là link set (tập link) của process B

Trang 31

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

ERLANG

Giao tiếp với các ngôn ngữ khác

Giao tiếp giữa chương trình viết bằng Erlang và ngôn ngữ khác

Kênh giao tiếp hướng byte – byte-oriented communication channel

Trang 32

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

ERLANG

Giao tiếp với các ngôn ngữ khác

 Cú pháp tạo ra một port như sau:

Port = open_port(PortNam, PortSettings)

 Thông điệp có thể được gửi tới một port như sau:

Port ! {PidC, {command, Data}}

 Gửi dữ liệu (danh sách vào ra) tới cổng này

Port ! {PidC, {connect, Pid1}

 Thay đổi PID của process kết nối từ PidC tới Pid1.

 Đóng port: Port ! {PidC, close}

 Process có thể nhận được thông điệp từ chương trình ngoài như sau:

receive

{Port, {data, Data}} ->

Data comes from the external process

Trang 33

7 RELOAD MODULE

Reload module ngay khi chương trình đang chạy

Nghĩa là khi chương trình đang chạy, có thể sửa mã nguồn của module nào đó, dịch lại, rồi reload module vào trong chương trình => có thể cập nhật chương trình ngay khi nó đang chạy mà không cần khởi động lại

Để reload:

 Gõ l(tên module)

Trang 34

IV CÀI ĐẶT, TRIỂN KHAI

http://www.erlang.org/download.html và cài đặt

Trang 35

IV CÀI ĐẶT, TRIỂN KHAI

o Để chạy, gõ lệnh erl (không có tham số->console)

erl -noshell -s simple main 20

o Để compile, gõ lệnh erlc (thêm +debug_info nếu

muốn debug), ví dụ: erlc +debug_info hello.erl

Trang 36

V DEMO

Trang 37

VI KẾT LUẬN

 Erlang là ngôn ngữ lập trình tương tranh cho phép

thích ứng trên nhiều nền tảng khác nhau

các hệ thống phân tán

đa lõi, và SMP (đa xử lý)

 Erlang được sử dụng nhiều trong telecom, để viết

các hệ thống lớn, soft real-time, có khả năng chịu lỗi cao

WhatsApp với hơn 50 triệu người dung

Ngày đăng: 16/07/2018, 14:54

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w