G l i gi ng nh vi c đi u tra t i ph m. B n có trong tay các manh m i, ph i suy lu n ra các quá trình
ỡ ỗ
ố
ư ệ
ề
ộ
ạ
ạ
ố
ả
ậ
và s ki n d n đ n nh ng h u qu đang ch ng ki n.
ự ệ
ẫ
ế
ữ
ậ
ả
ứ
ế
Vi c g l i cũng gi ng nh khoa h c th c nghi m. M i khi có ý ki n v nguyên nhân d n đ n l i sai,
ệ ỡ ỗ
ố
ư
ọ
ự
ệ
ỗ
ế
ề
ẫ
ế ỗ
b n s a ch a ch
ng trình và th c hi n l i. N u gi thi t c a b n là đúng thì b n thu đ
c k t qu c a
ạ ử
ữ
ươ
ự
ệ ạ
ế
ả
ế ủ
ạ
ạ
ượ ế
ả ủ
công vi c s a ch a, đ ng th i ti n m t b
c g n h n t i ch
ng trình đúng. Còn n u gi thi t là sai thì
ệ ử
ữ
ồ
ờ ế
ộ ướ ầ
ơ ớ
ươ
ế
ả
ế
b n c n đ ra m t gi thi t m i. Sherlock Holmes đã ch ra, “Khi b n đã lo i tr t t c nh ng đi u
ạ ầ
ề
ộ
ả
ế
ớ
ỉ
ạ
ạ ừ ấ ả
ữ
ề
không th thì nh ng gì còn l i, dù có m p m đ n đâu, chính là s th t”. (A. Conan Doyle,
ể
ữ
ạ
ậ
ờ ế
ự ậ
D u c a b
ấ ủ
ộ
t
ứ)
Đ i v i m t s ng
i, vi c l p trình và g l i là gi ng nhau. Đó là vì l p trình chính là quá trình g l i
ố ớ
ộ ố
ườ
ệ ậ
ỡ ỗ
ố
ậ
ỡ ỗ
d n d n đ n khi b n có đ
c ch
ng trình mong mu n. Ý t
ng đây là b n nên b t đ u v i m t
ầ
ầ
ế
ạ
ượ
ươ
ố
ưở
ở
ạ
ắ ầ
ớ
ộ
ch
ng trình th c hi n đ
c
ươ
ự
ệ
ượ m t đi u gì đó
ộ
ề
, r i th c hi n các ch nh s a nh , g l i trong quá trình
ồ
ự
ệ
ỉ
ử
ỏ ỡ ỗ
phát tri n, đ n khi b n có đ
c m t ch
ng trình hoàn thi n.
ể
ế
ạ
ượ
ộ
ươ
ệ
Ch ng h n, Linux là m t h đi u hành bao g m hàng nghìn dòng l nh, nh ng nó ch b t đ u t m t
ẳ
ạ
ộ ệ ề
ồ
ệ
ư
ỉ ắ ầ ừ ộ
ch
ng trình đ n gi n do Linus Torvalds dùng đ khám phá chip Intel 80386. Theo Larry Greenfield
ươ
ơ
ả
ể
thì “M t trong nh ng d án tr
c đó c a Linus là m t ch
ng trình có nhi m v chuy n t vi c in
ộ
ữ
ự
ướ
ủ
ộ
ươ
ệ
ụ
ể ừ ệ
AAAA thành BBBB. Sau đó nó d n tr thành Linux”. (
ầ
ở
The Linux Users’ Guide Beta Version 1 / H
ng
ướ
d n s d ng Linux
ẫ ử ụ
, phiên b n Beta 1).
ả
Các ch
ng ti p sau đây s nói thêm v vi c g l i và các v n đ th c t trong l p trình.
ươ
ế
ẽ
ề ệ ỡ ỗ
ấ
ề ự ế
ậ
1.4 Ngôn ng hình th c và ngôn ng t nhiên
ữ
ứ
ữ ự
Ngôn ng t nhiên
ữ ự
đ
c m i ng
i dùng đ giao ti p, ví d Ti ng Anh, Ti ng Tây Ban Nha, Ti ng
ượ
ọ
ườ
ể
ế
ụ ế
ế
ế
Pháp. Chúng t do phát tri n mà không đ nh theo khuôn m u v i b t kì m c đích nào (m c dù có m t
ự
ể
ị
ẫ
ớ ấ
ụ
ặ
ộ
s tr t t ch ng h n nh ng pháp);
ố ậ ự ẳ
ạ
ư
ữ
Ngôn ng hình th c
ữ
ứ đ c con ng i thi t k đ ng d ng trong nh ng lĩnh v c riêng. Ch ng h n, kí
ượ
ườ
ế ế ể ứ
ụ
ữ
ự
ẳ
ạ
hi u toán h c chính là m t ngôn ng hình th c r t h u d ng đ bi u di n m i quan h gi a nh ng bi n
ệ
ọ
ộ
ữ
ứ ấ ữ
ụ
ể ể
ễ
ố
ệ ữ
ữ
ế
l
ng và con s . Trong hoá h c, m t lo i ngôn ng hình th c khác đ
c dùng đ bi u di n c u trúc hoá
ượ
ố
ọ
ộ
ạ
ữ
ứ
ượ
ể ể
ễ ấ
h c c a các phân t . Và quan tr ng nh t:
ọ ủ
ử
ọ
ấ
Ngôn ng l p trình là nh ng ngôn ng hình th c đ
c thi t k ph c v m c đích
ữ ậ
ữ
ữ
ứ
ượ
ế ế
ụ
ụ ụ
di n t quá trình tính toán.
ễ
ả
Các ngôn ng hình th c th
ng có quy đ nh r t ch t ch v cú pháp. Ch ng h n,
ữ
ứ
ườ
ị
ấ
ặ
ẽ ề
ẳ
ạ 3 + 3 = 6
là m t bi u
ộ
ể
th c toán h c đúng, nh ng
ứ
ọ
ư 3 $ = thì không.
H
2
O là m t công th c hoá h c đúng v cú pháp, còn
ộ
ứ
ọ
ề
2
Zz thì
không.
Các quy t c cú pháp có hai d ng, thu c v các
ắ
ạ
ộ ề
nguyên t
ố và c u trúc. Nguyên t là các thành ph n c s
ấ
ố
ầ ơ ở
c a ngôn ng , ch ng h n, các t , các con s , và các nguyên t hoá h c. Trong ví d nêu trên,
ủ
ữ
ẳ
ạ
ừ
ố
ố
ọ
ụ
3 $ = có l i
ỗ
sai vì
$
không ph i là m t nguyên t h p l trong toán h c (theo nh tôi đ
c bi t). T
ng t nh
ả
ộ
ố ợ ệ
ọ
ư
ượ
ế
ươ
ự
ư
v y,
ậ
2
Zz không h p l vì không có nguyên t hoá h c nào có kí hi u là
ợ ệ
ố
ọ
ệ
Zz.
Lo i l i cú pháp th hai thu c v d ng c u trúc c a m t m nh đ ; nghĩa là cách s p x p các nguyên t .
ạ ỗ
ứ
ộ ề ạ
ấ
ủ
ộ
ệ
ề
ắ
ế
ố
M nh đ
ệ
ề 3 $ = không h p l v c u trúc là vì b n không th đ d u b ng cu i ph ng trình đ c.
ợ ệ ề ấ
ạ
ể ể ấ
ằ
ở ố
ươ
ượ
T
ng t nh v y, trong m t công th c hoá h c thì ch s ph i đ
c đ t sau tên nguyên t ch không
ươ
ự
ư ậ
ộ
ứ
ọ
ỉ ố
ả ượ ặ
ố ứ
ph i đ t tr
c.
ả ặ
ướ
M i khi đ c m t câu trong ngôn ng t nhiên, ho c trong ngôn ng hình th c, b n c n hình dung đ
c
ỗ
ọ
ộ
ữ ự
ặ
ữ
ứ
ạ ầ
ượ
c u trúc c a câu đó là gì (m c dù v i ngôn ng t nhiên thì vi c làm này đ
c th c hi n m t cách vô
ấ
ủ
ặ
ớ
ữ ự
ệ
ượ
ự
ệ
ộ
th c). Quá trình này đ
c g i là
ứ
ượ ọ
phân tách.