Tải bản đầy đủ (.doc) (13 trang)

Giới thiệu về các mô thức lập trình phổ biến

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 (198.56 KB, 13 trang )

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
──────── * ───────

BÁO CÁO
HỌC PHẦN: KỸ THUẬT LẬP TRÌNH
(Mã học phần: IT3040)

TÌM HIỂU CÁC MÔ THỨC LẬP TRÌNH

Sinh viên thực hiện:
MSSV:
Lớp:

Trương Văn Hiển
20194276
128698

Giảng viên hướng dẫn: ThS.Vũ Đức Vượng


IT3040 – Kỹ thuật lập trình

20211

Hà Nội, tháng 10 năm 2021

2


IT3040 – Kỹ thuật lập trình



20211

MỤC LỤC
MỤC LỤC.....................................................................................................2
GIỚI THIỆU VỀ CÁC MÔ THỨC LẬP TRÌNH PHỔ BIẾN...........................3
1. Functional paradigm (Lập trình hướng chức năng).............................3
2. Logical paradigm (Lập trình hướng logic)............................................3
3. Visual paradigm (Lập trình trực quan).................................................4
4. Parallel paradigm (Lập trình song song)..............................................5
5. Concurrent paradigm (Lập trình tương tranh)......................................6
6. Distributed paradigm (Lập trình phân tán)...........................................6
7. Service – oriented paradigm (Lập trình hướng dịch vụ)......................7
TÌM HIỂU CHI TIẾT VỀ FUNCTIONAL PARADIGM....................................9
1. Giới thiệu tổng quan............................................................................9
2. Ví dụ về Functional paradigm............................................................10
3. Đặc điểm............................................................................................10
4. Ưu điểm.............................................................................................11
5. Tại sao nên sử dụng Functional Paradigm?......................................11
6. Nhược điểm.......................................................................................11
TÀI LIỆU THAM KHẢO..............................................................................12

3


IT3040 – Kỹ thuật lập trình

20211

GIỚI THIỆU VỀ CÁC MÔ THỨC LẬP TRÌNH PHỔ BIẾN

1. Functional paradigm (Lập trình hướng chức năng)
- Funtional programming là một dạng mô hình lập trình (FP – còn gọi là lập
trình hàm), cũng giống như lập trình tuần tự hay lập trình hướng đối tượng
(OOP). Functional programming là một phương pháp lập trình dựa trên các
hàm toán học (function), tránh việc thay đổi giá trị của dữ liệu. Nó có nhiều
lợi ích như : các khối xử lý độc lập dễ tái sử dụng, thuận lợi cho việc thay đổi
logic hoặc tìm lỗi chương trình.
- Đặc điểm: Module hóa chương trình
 Các giá trị đã được tạo là không thể biến đổi.
 Chức năng là biểu diễn của một biểu thức.
 Giải thuật thực hiện theo từng bước.
 Giá trị trả về là không thể biến đổi.
 Không thể thay đổi cấu trúc dữ liệu của giá trị nhưng có thể sao chép
các thành phần tạo nên giá trị đó.
 Nguyên lý và ý tưởng: Toán học và lý thuyết về hàm.
 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 tố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 tốn theo u cầu. Tính tốn bằng cách gọi
các chức năng.
 Mở ra những khả năng mới.

2. Logical paradigm (Lập trình hướng logic)
- Logical paradigm là mợt mẫu hình lập trình dựa trên logic tốn trong các mối
quan hệ và các suy luận. Các chương trình được viết trong các Ngôn ngữ lập
trình logic là các tập hợp câu logic, thể hiện sự thật và các ḷt về mợt vài
vùng vấn đề nào đó. Cùng với các thuật toán suy luận, chúng hình thành nên
chương trình. Các lập trình logic chính bao gồm Prolog và Datalog.
- Trong lập trình logic, ta có thể sử dụng các vị từ để định nghĩa các khái niệm

của tất cả các môn khoa học khác. Lập trình hướng logic dựa trên các tiên đề,
các quy luật suy diễn và các truy vấn.
- Ví dụ định nghĩa 1 sớ ngun tớ:
Sớ nguyên tố N là một số nguyên lớn hơn 1, chỉ chia hết cho 1 và chính nó.
4


IT3040 – Kỹ thuật lập trình

20211

Để xét xem số N có phải là sớ ngun tớ hay khơng, người ta thường sử dụng dấu
hiệu nhận biết: Số nguyên tố là một số nguyên dương, không chia hết cho mọi số
nguyên tớ nhỏ hơn nó và 2 là sớ ngun tớ nhỏ nhất.
Dấu hiệu này có thể mơ tả bằng các vị từ như sau:
+ 2 là một số nguyên tố.
+ N là một số nguyên tố nếu N > 0, M là sớ ngun tớ nào đó, M < N và N không
chia hết cho M.
- Khi mô tả bài tốn dưới dạng logic vị từ, ta có thể u cầu hệ thống tìm kiếm
các lời giải liên quan đến các khai báo đó. Bài tốn cần giải được xem là “mục
tiêu” mà hệ thống phải chứng minh trên cơ sở các tri thức đã được khai báo.
- Như thế, toàn bộ các ký hiệu của ngôn ngữ lập trình suy về một công thức đặc
biệt:
 Phát sinh từ một yêu cầu.
 Nhằm chứng minh một mục tiêu. Để trả lời cho câu hỏi đó hệ thớng
xem nó như là mợt “đích” và cớ chứng minh “đích” đó bằng cách tạo
những suy diễn trên cơ sở các tri thức đã khai báo.
- Mợt ngơn ngữ logic có thể được dùng trong giai đoạn đặc tả yêu cầu của quy
trình xây dựng một sản phẩm phần mềm. Hơn thế nữa, logic vị từ cho phép
biểu diễn hầu hết các khái niệm và các định lý trong các bộ môn khoa học.


3. Visual paradigm (Lập trình trực quan)
- Visual paradigm language (VPL) là bất kì ngôn ngữ lập trình nào cho phép
người dùng tạo chương trình bằng cách thao tác các yếu tố chương trình bằng
đồ họa thay vì chỉ định chúng bằng văn bản. Một VPL cho phép lập trình với
các biểu thức trực quan, sắp xếp không gian của các kí hiệu văn bản và đồ họa,
được sử dụng làm thành phần của cú pháp hoặc kí hiệu phụ.
- Ví dụ: Nhiều VPL (như lập trình dataflow, sơ đồ) được dựa trên ý tưởng về
“Hợp và mũi tên”. Trong đó các hộp hoặc các đối tượng mà hình khác được
coi là thực thể, được kết nối bằng mũi tên, đường hoặc vòng cung biểu thị
quan hệ.
- Đặc điểm:
 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.
 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.
5


IT3040 – Kỹ thuật lập trình

20211

 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 tḥ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 h́ng x́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.

4. Parallel paradigm (Lập trình song song)
- Tính tốn song song 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 đó x́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.
- Định luật Moore: “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 tập đoàn Intel. Cùng với định luật Moore,
các máy tính hiện nay đã được trang bị các bộ vi xử lý đa nhân mạnh mẽ.
- Tuy nhiên, để tận dụng được sức mạnh đó đòi hỏi các lập trình viên phải tận
dụng được hết các nhân trong bộ vi xử lý. Vì vậy, thay vì lập trình tuần tự như
trước đây chỉ sử dụng một nhân của bộ vi xử lý thì người lập trình viên ngày
nay phải dùng kỹ thuật lập trình song song để tận dụng hiệu suất của bộ vi xử
lý đa nhân.
- 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.
- Quá trình song song hóa gồm 3 giai đoạn bước chính:
 Phân chia chương trình thành các cơng việc con.
 Phân tích sự phụ thuộc.

 Định thời các công việc.
- Để dễ hiểu thì lập trình song song là lập trình để chạy được đa luồng với các
dòng CPU đa nhân hiện nay ( core i3, core i5, core i7,…).

6


IT3040 – Kỹ thuật lập trình

20211

5. Concurrent paradigm (Lập trình tương tranh)
- Lập trình tương tranh là một hình thức điện tốn trong đó mợt sớ tính tốn
được thực hiện trong các khoảng thời gian chồng chéo, đồng thời là một phần
tử liên tục (một hoàn thành trước khi bắt đầu tiếp theo). Đây là mợt tḥc tính
của mợt hệ thớng, đây có thể là mợt chương trình riêng lẻ, mợt máy tính hoặc
mợt mạng và có mợt điểm thực thi riêng hoặc luồng điều khiển cho mỗi tính
tốn (quy trình). Một hệ thống đồng thời là một hệ thống trong đó mợt tính
tốn có thể tiến lên mà khơng cần chờ tất cả các tính tốn khác hoàn thành.
- Lập trình tương tranh là một trong những kỹ thuật quan trọng và cũng là mợt
thách thức. Mợt mặt, nó đem lại khả năng sử dụng hiệu quả cho những hệ
thống song song và phân tán. Mặt khác, những rủi ro trong việc tương tác giữa
các tiến trình thực hiện đồng thời có thể gây ra những lỗi phần mềm khơng dễ
dàng để tìm ra.
- Đặc điểm:
 Người dùng có thể tương tác với các ứng dụng khi tiến trình đang thực
thi.
 Những tiến trình chạy thời gian dài làm trì hoãn các tiến trình ngắn.
 Các chương trình phức tạp được thực hiện tốt hơn trên các bộ xử lý đa
luồng.

 Những tiến trình đòi hỏi điều kiện tiên quyết có thể tạm dừng và đợi đến
khi đáp ứng được để tiếp tục xử lý.

6. Distributed paradigm (Lập trình phân tán)
- Lập trình phân tán là một dạng của lập trình song song (tính tố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 tố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 tốn có thể đặt rất gần nhau hoặc tách rời nhau.
Khi các đơn vị tính tố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 tố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 ́u tớ đó
khiến cho việc lập trình các tính tốn của máy tính trở nên tương đới phức tạp
và khó khăn.
- 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:

7


IT3040 – Kỹ thuật lập trình

20211

 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ỏ (Ví dụ: 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 đó (Ví dụ:
các sớ liệu chứng khốn, thời tiết …).

7. Service – oriented paradigm (Lập trình hướng dịch vụ)
- Lập trình hướng dịch vụ (SOP) là mô thức lập trình được xây dựng dựa trên
lập trình hướng đới tượng (OOP), thêm vào đó những tiền đề giúp cho chúng
ta có thể mơ hình hóa các bài tốn bằng những khái niệm của dịch vụ
(Service), cái mà được cung cấp và sử dụng bởi các đối tượng.
- Dịch vụ (Service) là mợt hành vi (behavior) mang tính hợp đồng đã được định
nghĩa trước. Các hành vi này có thể được hiện thực bởi bất kì thành phần
(component) nào, nó cũng có thể được cung cấp bởi thành phần nào, dựa trên
một hợp đồng duy nhất. Dịch vụ này có thể sử dụng bởi mợt dịch vụ khác.
- Mơ hình thành phần (component model) quy định rằng những bài tốn về lập

trình có thể được xem như những hợp đen, chúng được triền khai một cách
độc lập và giao tiếp nhau thông qua những hợp đồng.
- Mô hình client – server truyền thống không được định nghĩa trước những hợp
đồng công cộng (public contract) giữa client và server. Việc hiện thực của
client và server cũng không thể độc lập nhau. Mợt client chỉ có thể kết nới hay
giao tiếp với một client duy nhất. Trong mô hình SOP thì có sự khác biệt, mợt

8


IT3040 – Kỹ tḥt lập trình

20211

client khơng bị bó ḅc với bất kì server nào. Thay vào đó, vai trò người cung
cấp dịch vụ có thể thay đổi qua lại giữa client và server.
- Các đặc trưng của SOP:
 Tính liên kết (conjunctive): Khả năng sử dụng hoặc kết hợp các dịch vụ
theo những các khác với các cách thức đã tạo ra chúng. Nó hàm ý rằng
những dịch vụ đó đã tạo ra những interface cái mà chúng ta có thể dễ
dàng nhận ra.
 Khả năng triển khai (deployable): Khả năng triền khai hoặc sử dụng lại
các thành phần trong bất kì môi trường nào. Điều này đòi hỏi sự độc lập
về môi trường bao gồm sự độc lập về vận tải (transport), sự độc lập về
nền tảng (platform) và sự đợc lập về ngữ cảnh.
 Tính lưu đợng (mobile): Khả năng di chuyển mã xung quanh mạng. Nó
được sử dụng để di chuyển các proxy, giao diện người dùng và các dịch
vụ di đợng.
 Tính sẵn sàng (available): Là một trong những tiền đề quan trọng của
lập trình hướng dịch vụ, nghĩa là những mạng lưới nguồn tài nguyên dư

thừa sẽ đảm bảo sự sẵn sàng cao cho SOP. Đây cũng là mục tiêu của
SOP để xử lý các lỗi xảy ra trong tính tốn phân bớ.
 Sự bảo mật (security): Những khái niệm của mã di động và những mạng
lưới dịch vụ có khả năng khám phá đã đưa đến những thách thức về mặt
bảo mật. Trong khi SOP cho phép giới hạn sử dụng các dịch vụ rợng
hơn, nó khơng thể thành cơng nếu thiếu việc bảo vệ các dịch vụ trước
việc sử dụng không đúng đắn.

9


IT3040 – Kỹ thuật lập trình

20211

TÌM HIỂU CHI TIẾT VỀ FUNCTIONAL PARADIGM
1. Giới thiệu tổng quan
- Trong ngành khoa học máy tính, lập trình hàm hay lập trình hướng chức
năng là mợt mơ hình lập trình xem việc tính tốn là sự đánh giá các hàm toán
học và tránh sử dụng trạng thái và các dữ liệu biến đổi. Lập trình hàm nhấn
mạnh việc ứng dụng hàm số, trái với phong cách lập trình mệnh lệnh, nhấn
mạnh vào sự thay đổi trạng thá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
tố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, OOP trở thành paradigm được sử dụng phổ biến nhất cho đến ngày
hôm nay.
- 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 tố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 tố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 tốn thơng dụng.

10


IT3040 – Kỹ thuật lập trình

20211

2. Ví dụ về Functional paradigm
Tính ướng chung lớn nhất của 2 sớ ngun a và b
#include<stdio.h>

int GCD(int a, int b){
if (b == 0) return a;
else return GCD(b, a % b);
}
int main(){
int a = 32, b = 12;
scanf(“%d”, GCD(a, b));
return 0;
}
Trong chương trình trên, thứ tự thực hiện tính tốn của chương trình:
+ Bước 1: GCD(32, 12)
+ Bước 2: GCD(12, 8)
+ Bước 3: GCD(8, 4)
+ Bước 4: GCD(4, 0)
+ Bước 5: Ước chung lớn nhất của 32 và 12 là 4

3. Đặc điểm
- Module hóa chương trình
- Các giá trị đã được tạo là không thể biến đổi.
- Chức năng là biểu diễn của một biểu thức.
- Giải thuật thực hiện theo từng bước.
- Giá trị trả về là không thể biến đổi.
- Không thể thay đổi cấu trúc dữ liệu của giá trị nhưng có thể sao chép các
thành phần tạo nên giá trị đó.
- Ngun lý và ý tưởng: Tốn học và lý thút về hàm.
- 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 tố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...
11



IT3040 – Kỹ thuật lập trình

20211

- Thích hợp với những tính tốn theo u cầu. Tính tốn bằng cách gọi các chức
năng.
- Mở ra những khả năng mới.

4. Ưu điểm
- Hướng đến tính kết hợp các hàm để tới đa hóa khả năng tái sử dụng trong
chương trình.
- Thay vì thực hiện tuần tự theo từng bước với các biến để lưu trạng thái như
lập trình thủ tục thì FP chú trọng đến thực thi luồng chương trình thông qua
việc kết hợp các hàm bậc cao (high order function).
- Các tḥt tốn trong FP có thể được diễn tả mợt cách ngắn gọn và trong
sáng.

5. Tại sao nên sử dụng Functional Paradigm?
- Nguyên tắc thứ nhất trong Functional Programming là: cái nào đã khai báo
một lần thì mãi mãi như vậy, không bao giờ thay đổi nữa. Các biến hoặc đới
tượng trong kịch bản Functional Programming nếu có thì phải immutable.
- Với Pure Function, cung cấp sự tự tin không thay đổi mọi thứ bên ngoài
phạm vi của nó. Đây là nguyên tắc thứ hai trong Functional Programming:
tất cả các hàm đều phải là pure function, sẽ không bị side effect ( kết quả trả
về bị ảnh hưởng bởi tác nhân bên ngoài hàm). Nó sẽ khơng đọc, nhận bất kỳ
cái gì nào ở bên ngoài hàm hoặc ghi bất kỳ cái gì ở bên ngoài hàm.
- Dễ kiểm tra, bởi vì nó khơng phụ tḥc vào trạng thái của ứng dụng và xác
minh kết quả cũng sẽ dễ dàng.

- Nó làm cho code dễ đọc dễ hiểu hơn.

6. Nhược điểm
- Để viết một Pure Function đứng một mình thì đơn giản, nhưng khi kết hợp
chúng vào một chương trình lớn thì rất khó: Tất cả các hàm phải tuân
theo pattern giống nhau, nếu không lỗi rất dễ xảy ra.
- Bắt đầu với functional paradigm, ta phải làm quen và nắm vững recursive
(đệ quy), thay vì for, while sử dụng phổ biếng trong OOP. Chính vì thế việc
tới ưu bợ nhớ khi sử dụng đệ quy là điểm cần lưu ý. Nhưng điều này có thể
giảm đáng kể bằng cách sử dụng tail recursion.

12


IT3040 – Kỹ thuật lập trình

20211

TÀI LIỆU THAM KHẢO
1. Bài giảng học phần Kỹ thuật lập trình của bộ môn và viện Công
nghệ thông tin & Truyền thông.
2. http:// wikipedia.com
3. />4. Các video, tài liệu về kỹ thuật lập trình và mô thức lập trình trên
Youtube.

13




×