Bài giảng Kỹ thuật lập trình - Chương 1: Tổng quan về kỹ thuật lập trình - Lương Mạnh Bá
Tổng quan về KTLT (3t)
Programming technique
SE Dept
<SE-SoICT-HUT>
Lương Mạnh Bá
1
Programming
Languages –
classifications and
Program
Development
2
Nội dung
Develop Web pages : HTML, scripting languages,
DHTML, XML, WML, và các phần mềm tạo
trang web
NNLT và
phân loại NNLT
Multimedia
authoring programs
NNLT thꢀ tꢁc
6 bưꢃc cꢀa chu trình phát triển phần mềm
Six steps in the program development cycle
NNLT trꢂc quan (Visual programming languages)
Sꢂ khác biệt giữa LT cꢆu trꢇc và
LT hưꢃng đꢄi tưꢅng
NNLT hưꢃng đꢄi tưꢅng (Object-oriented
programming languages)
NNLT phi thꢀ tꢁc và công cꢁ (Nonprocedural
languages and tools)
Những cꢆu trꢇc cơ sở dùng thiết kế chương trình
Last update 8-2010
SE-SoICT
KTLT-1.3
Next
Chương trình máy tính và ngôn ngữ lập trình
Computer Programs and Programming Languages
Computer program?
➢ Tập hợp các lệnh chỉ dẫn cho máy tính thực
hiện nhiệm vụ
▪ Programming language—Dùng để viết các lệnh, chỉ thị
Last update 8-2010
SE-SoICT
KTLT-1.4
Next
programming language - NNLT
Một NNLT là 1 hệ thống các ký hiệu dùng để liên lạc, trao đổi 1 nhiệm
vụ/ thuật toán với máy tính, làm cho nhiệm vụ được thực thi.
Nhiệm vụ được thực thi gọi là một computation, tuân thủ một
độ chính xác và những quy tắc nhất quán.
Với mỗi ngôn ngữ lập trình, ta cần nắm bắt, thấu hiểu những gì ?: Có
3 thành phần căn bản của bất cứ 1 NNLT nào.
Mô thức ngôn ngữ-Language paradigm là những nguyên tắc chung
cơ bản, dùng bởi LTV để xây dựng chương trình.
Cú pháp - Syntax là cách để xác định những gì là hợp lệ trong cấu
trúc các câu của ngôn ngữ; Nắm được cú pháp là cách để đọc
và tạo ra các câu trong các ngôn ngữ tự nhiên, như tiếng Việt,
tiếng Anh và LT. Tuy nhiên điều đó không có nghĩa là nó giúp
chúng ta hiểu hết ý nghĩa của câu văn.
Ngữ nghĩa – semantics của 1 CT trong ngôn ngữ ấy. Rõ ràng, nếu
không có ngữ nghĩa, 1 NNLT sẽ chỉ là 1 mớ các câu văn vô
nghĩa; như vậy ngữ nghĩa là 1 thành phần không thể thiếu của 1
ngôn ngữ.
Có rất nhiều NNLT, khoảng 1000 ngôn ngữ ( 60’s đã có hơn 700) –
phần lớn là các ngôn ngữ hàn lâm, có mục đích riêng hay phát
triển bởi 1 tổ chức để phục vụ cho bản thân họ.
Last update 8-2010
SE-SoICT
KTLT-1.5
Cont…
Về cơ bản, chỉ có 4 mô thức chính:
Imperative (Procedural) Paradigm (Fortran, Pascal, C, Ada, ....)
Object-Oriented Paradigm (SmallTalk, Java, C++)
Logic Paradigm (Prolog)
Functional Paradigm (Lisp, ML, Haskell)
Những tính chất cần có với các chương trình phần mềm là :
• Tính mềm dẻo scalability / Khả năng chỉnh sửa modifiability
• Khả năng tích hợp integrability / Khả năng tái sử dụng reusability
• Tính chuyển đổi, linh hoạt, độc lập phần cứng -portability
• Hiệu năng cao -performance
• Độ tin cậy - reliability
• Dễ xây dựng
• Rõ ràng, dễ hiểu
• Ngắn gọn, xúc tích
Last update 8-2010
SE-SoICT
KTLT-1.6
HOẠT ĐỘNG CỦA 1 CHƯƠNG TRÌNH
Computer program được nạp vào BN chꢀnh
như là 1 tập các lệnh bằng ngôn ngữ máy, tức
là một dãy tuần tự các số nhị phân - binary
digits.
Tại bất cứ một thời điểm nào, computer sẽ ở
một trạng thái -state nào đó.
Đặc điểm cơ bản của trạng thái là con trỏ lệnh
instruction pointer trỏ tới lệnh tiếp theo để thực
hiện.
Thứ tự thực hiện các nhóm lệnh mã máy
được gọi là luồng điều khiển flow of control.
Last update 8-2010
SE-SoICT
KTLT-1.7
MACHINE CODE
Máy tính chỉ nhận các tín hiệu điện tử - có, không có -tương
ứng vꢃi các dòng bits.
1 CT ở dạng đó gọi là machine code.
Ban đầu chꢇng ta phải dùng machine code để viết CT:
Quá phức tạp, giải quyết các bài toán lꢃn là không tưởng
23fc 0000 0001 0000 0040
0cb9 0000 000a 0000 0040
6e0c
06b9 0000 0001 0000 0040
60e8
Last update 8-2010
SE-SoICT
KTLT-1.8
ASSEMBLY LANGUAGE
NN Assembly là bưꢃc đầu
tiên cꢀa việc xây dꢂng cơ
chế viết chương trình tiện
lꢅi hơn – thông qua các
ký hiệu, từ khóa và cả mã
máy.
movl #0x1,n
compare:
cmpl #oxa,n
cgt end_of_loop
acddl #0x1,n
Tất nhiên, để chạy được
các chương trình này thì
phải dịch (assembled) thành
machine code.
bra compare
end_of_loop:
Vẫn còn phức tạp, cải thiện
không đáng kể
Last update 8-2010
SE-SoICT
KTLT-1.9
HIGH LEVEL LANGUAGE
Thay vì dựa trên phần cứng (machine-
oriented) cần tì m cơ chế dựa trên vấn đề
(problem-oriented) để tạo chương trì nh.
Chí nh vì thế high(er) level languages – là cá c
ngô n ngữ lập trì nh gần với ngô n ngữ tự nhiên
hơn – dùng cá c từ khó a giống tiếng anh – đã
được xâ y dựng như : Algol, Fortran, Pascal,
Basic, Ada, C, …
Last update 8-2010
SE-SoICT
KTLT-1.10
PHÂN LOẠI THEO THỜI GIAN
1940s : Machine code
1950s Khai thác sức mạnh của MT: Assembler code,
Autocodes, first version of Fortran
1960s Tăng khả năng tính toán: Cobol, Lisp, Algol 60,
Basic, PL/1 --- nhưng vẫn dùng phong cách lập trình
cơ bản của assembly language.
1970s Bắt đầu cuộc khủng hoảng phần mềm
“software crisis”:
1. Giảm sự phụ thuộc vào máy – Tính chuyển đổi.
2. Tăng sự đúng đắn của CT -Structured Programming,
modular programming và information hiding.
Ví dụ : Pascal, Algol 68 and C.
Last update 8-2010
SE-SoICT
KTLT-1.11
Continue …
1980s Giảm sự phức tạp – object orientation,
functional programming.
1990s Khai thác phần cứng song song và phân tán
(parallel và distributed) làm cho chương trình chạy
nhanh hơn, kết quả là hàng loạt ngôn ngữ mở rộng
khả năng lập trình parallel cũng như các NNLT
chuyên parallel như occam được xây dựng.
2000s Genetic programming languages, DNA
computing, bio-computing?
Trong tương lai : Ngôn ngữ LT lượng tử : Quantium ?
Last update 8-2010
SE-SoICT
KTLT-1.12
SOFTWARE CRISIS
Khái niệm software crisis bao gồm hàng loạt vꢆn đề nảy sinh
trong việc phát triển phần mềm trong những năm 1960s khi
muꢄn xây dꢂng những hệ thꢄng phần mềm lꢃn trên cơ sở
các kỹ thuật phát triễn thời đó.
Kết quả:
➢ 1. Thời gian và giá thành tăng vọt tꢃi mức không thể chꢆp nhận
nổi.
➢ 2. Năng suꢆt cꢀa các LTV không đáp ứng yêu cầu.
➢ 3. Thiếu các LTV
➢ 4. Chꢆt lưꢅng phần mềm bị giảm, thꢆp.
Để giải quyết các vꢆn đề kể trên, chuyên ngành software
engineering (SE) ra đời.
Last update 8-2010
SE-SoICT
KTLT-1.13
CÁC THẾ HỆ NNLT
LANGUAGE GENERATIONS
Generation
Classification
1st
Machine languages
2nd Assembly languages
3rd
4th
5th
6th
Procedural languages
Application languages (4GLs)
AI techniques, inference languages
Neural networks (?), others….
Computer Programs and Programming Languages
Low-level languages và high-level languages?
Low-level
language
High-level
language
Machine-independent
Thường không phꢁ thuộc phần
cứng, có thể chạy trên nhiều loại
máy tính khác nhau
Machine-dependent
Phꢁ thuộc phần cứng, chỉ chạy trên
một loại máy tính
Machine và assembly languages là
ngôn ngữ bậc thꢆp low-level
Last update 8-2010
SE-SoICT
KTLT-1.15
p. 664
Next
PHÂN LOẠI THEO MỨC ĐỘ TRỪU TƯỢNG
Level
Instructions Memory handling
Low level
languages
High level
languages
Dạng bits – giống Truy cập và cấp phát
các lệnh
machine
trực tiếp bộ nhớ
Dùng các biểu Truy cập và cấp phát
thức và các
bộ nhớ qua các
dòng điều khiển lệnh, toán tử -
xác định
operators
Very high
level
Che dấu hoàn toàn
Hoàn toàn trừu
việc truy cập và tự
động cấp phát bộ
nhớ
tượng, độc lập
languages
phần cứng
Last update 8-2010
SE-SoICT
KTLT-1.16
Next
DECLARATIVE và NON-DECLARATIVE
PROGRAMMING
Các ngôn ngữ có thể chia thành 2 nhóm :
Nhóm 1 gọi là Declarative (tường thuật - chính là
functional và logic languages).
Nhóm 2 gọi là Non-declarative hay procedural
(tức là các ngôn ngữ thủ tục, mệnh lệnh).
Last update 8-2010
SE-SoICT
KTLT-1.17
p. 666 Fig. 13-3
Next
Procedural Languages – Ngôn ngữ thủ tục
Procedural language?
Lập trình viên viết các chỉ
Sử dụng hàng loạt các từ
thị hướng dẫn cho máy
giống tiếng Anh để viết
tính cái gì cần làm và làm
các chỉ thị - instructions
như thế nào?
Còn gọi là thir-
generation language
GL)
Các ngôn ngữ thông
dụng: BASIC, COBOL,
PASCAL, C,C++ và JAVA
Click to view animation
Last update 8-2010
SE-SoICT
KTLT-1.18
p. 666
Next
Procedural Languages
Trình dịch - Compiler?
➢ Là chương
trình thực
hiện biên dịch
toàn bộ các
lệnh của
chương trình
nguồn thành
mã máy trước
khi thực hiện
Last update 8-2010
Procedural Languages
Thông dịch - Interpreter?
➢ Là chương trình
dịch và thực hiện
từng dòng lệnh
của chương trình.
➢ Không tạo ra object
program
Last update 8-2010
KTLT-1.20
p. 667 Fig. 13-5
Next
Tải về để xem bản đầy đủ
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Kỹ thuật lập trình - Chương 1: Tổng quan về kỹ thuật lập trình - Lương Mạnh Bá", để tải tài liệu gốc về máy hãy click vào nút Download ở trên
File đính kèm:
bai_giang_ky_thuat_lap_trinh_chuong_1_tong_quan_ve_ky_thuat.ppt

