Chương 1
NGÔN NGỮ LẬP TRÌNH VÀ TỰ ĐỘNG HOÁ THIẾT KẾ
1.1. KHÁI NIỆM VỀ NGÔN NGỮ LẬP TRÌNH
Ngôn ngữ lập trình là những phần mềm để phát triển các ứng dụng. Ngôn ngữ lập
trình đã trải qua quá trình phát triển và không ngừng hoàn thiện, nó là công cụ quan trọng
đối với sự phát triển của công nghệ thông tin. Tự động hoá tính toán, thiết kế và hiển thị kết
quả tính đều thông qua ngôn ngữ lập trình. Những ngôn ngữ lập trình có ứng dụng rộng rãi
và hiệu quả có thể nêu lên sau đây.
1.2. GIỚI THIỆU MỘT SỐ NGÔN NGỮ LẬP TRÌNH ĐIỂN HÌNH
• FORTRAN (viết tắt từ FORmula TRANslation) ra đời từ những năm năm
mươi, chính xác hơn năm 1957, ứng dụng chủ yếu trong các ngành khoa học, kỹ thuật.
Phiên bản đầu của FORTRAN thường được nhắc đến với tên gọi FORTRAN II , song
phiên bản được dùng phổ biến nhất là FORTRAN IV. Các dàn máy IBM thời bấy giờ nhận
dạng phiên bản phổ thông này dưới tên viết ghép FORTRAN. Ngôn ngữ thích hợp cho việc
xử lý những bài toán cỡ lớn của thời đại, được dùng trong các chương trình tính toán thiết
kế ô tô, tàu thuỷ, máy bay, tính toán độ bền các công trình xây dựng, thiết kế tối ưu. Có thể
coi hơn 90% những chương trình lớn trong các lĩnh vực khoa học, kỹ thuật được viết bằng
ngôn ngữ này.
Thực tế sử dụng đã nảy sinh vài vấn đề phiền toái. Các nhà sản xuất các chương trình
đa năng tự cho phép mình viết các bộ dịch cho FORTRAN theo sở trường của riêng mình.
Tuy phần lớn các nhà sản xuất vẫn dựa vào tiêu chuẩn của ANSI - American National
Standards Institute để biên soạn compiler cho FORTRAN IV song chẳng có bộ dịch nào
giống bộ dịch nào, vì người nào cũng cố xé rào khỏi chuẩn ANSI. Tình hình ấy bắt buộc
ANSI phải ra tay thống nhất, năm 1978 phiên bản cuối cùng mang tên ANSI X3.9 - 1978 đã
đặt dấu chấm cho sự bùng phát tự do. Phiên bản này có tên gọi FORTRAN 77, ngày nay
được dùng tương đối rộng rãi.
• Algol , viết tắt từ Algorithm, ra đời vào đầu những năm sáu mươi với sự tham
gia rất đông các nhà toán học, những người viết chương trình của châu Âu. Ngôn ngữ được
thiết kế rất trong sáng, dễ học, dễ thực hiện. Đây là phiên bản của bộ môn toán tính dùng
trong máy tính. Ngôn ngữ thích hợp cho việc giải quyết những vấn đề khoa học của thời
đại. Tất cả các thuật toán chuẩn ra đời trong thời kỳ này được chuyển thành chương trình
của ngôn ngữ Pascal để ghi nhớ công lao của nhà toán học lớn thế kỷ 17 Blaise Pascal.
Ngôn ngữ Pascal thuộc nhóm có cấu trúc chặt, là ngôn ngữ lập trình tiêu chuẩn bất cứ
người lập trình nào cũng nên biết. Theo nhận định của các nhà chuyên môn, đây là thứ
ngôn ngữ "lingua franca", làm cả chức năng "common tongue", là tiếng nói chung cho lập
trình. Ngày nay trong các trường học, trong các lớp học về lập trình, tại các kỳ thi năng
khiếu ngôn ngữ này còn là ngôn ngữ chính thức để truyền thụ và thi tài.
• C là ngôn ngữ lập trình đa năng, ứng dụng vào việc giải quyết những công việc
thực tế nảy sinh từ cuộc sống. C được coi là ngôn ngữ gần "ngôn ngữ máy", có khả năng
giải quyết mọi công việc mà những ngôn ngữ lập trình "bậc cao" sinh trước nó như
FORTRAN, PL1, Pascal đã làm, đồng thời còn giải quyết cả những việc mà đàn anh không
muốn chạm tới, những việc chỉ giành cho ngôn ngữ gần gũi máy như Assembler giải quyết.
Lịch sử phát triển của C có nhiều điều đáng nhắc. Yêu cầu thực tế của AT & T là phải
có ngôn ngữ dùng cho hệ điều hành UNIX, sử dụng trên máy DEC PDP - 11. Việc này
được giao cho Nennis Ritchie. Hệ điều hành, compiler và chương trình ứng dụng đều được
D.Ritchie viết bằng C năm 1972. Thực ra, trước đó Martin Richards đã được giao công việc
tương tự và kết quả của nó là ra đời ngôn ngữ có tên viết tắt BCPL. Trên cơ sở BCPL năm
1970 Ken Thompson soạn ngôn ngữ B (có thể bắt nguồn từ cái tên BCPL) và đã soạn đủ
phần mềm để điều hành DEC PDP - 7. Vào năm 1972 với sự cộng tác của K.Thompson ,
D.Ritchie đã đi từ B đến C. Nguồn gốc của tên gọi "C" chỉ đơn giản vậy. Năm 1978 nhà
xuất bản Prentice - Hall tung ra thị trường "The C Pragramming Language" do Brian W .
Kernighan và Dennis M.Ritchie, viết tắt là K & R cùng viết. Sách ra đời là món quà vô giá
đối với giới lập trình. C vượt ra khỏi ranh giới ban đầu là ngôn ngữ của hệ điều hành UNIX
để thâm nhập vào DOS và hệ điều hành của IBM. Năm 1983 American National Standarts
Institute (ANSI) thành lập uỷ ban này là khẳng định tính đúng đắn của C và uỷ ban chấp
nhận (có thêm bớt) ngôn ngữ C với tên "ANSI C". ANSI C chính thức có hiệu lực từ năm
1988. Cuối những năm tám mươi và đầu những năm chín mươi thế giới lập trình chứng
kiến sự bùng nổ ứng dụng C. Ngôn ngữ C đang lấn sân những ngôn ngữ lập trình đàn anh
đã một thời vang bóng.
Ngoài hệ điều hành UNIX của AT & T, nhiều hãng sản xuất phần mềm xây dựng các
bộ dịch C để đưa vào hoạt động. Các bộ dịch có độ tin cậy cao gồm :
dữ liệu nữa. Và lập trình hướng đối tượng không chỉ hạn chế làm một việc cụ thể mà giải
quyết bất kỳ việc gì cần cho đối tượng.
Trước khi mang tên C
++
ngôn ngữ này có tên ban đầu là "C with Classes" tức là "C với
các lớp". Lớp đi liền với chúng ta khi còn dùng C
++
.
C ra đời trên thực tế từ 1972 từ Bell Labs do Dennis Ritchie và Ken Thompson viết.
Ban đầu C chưa nổi tiếng ngay, nó phát triển âm thầm cho đến năm 1978 khi Brian
Keringhan và Dennis Ritchie tung ra "The C Programming Language". Từ đó ngôn ngữ C
phát triển nhanh và được tiêu chuẩn hoá bằng hội đồng của ANSI ( Mỹ ), từ 1983 đến năm
1988. Ngôn ngữ ANSI C được chính thức khai tên từ 1988.
C
++
tự nó đã là ngôn ngữ lập trình như tên gọi của cuốn sách, song nó thừa kế một
cách hoàn mỹ những gì tốt đẹp nhất của C và phát triển sự tốt đẹp ở mức cao hơn. Thực tế
đã chứng minh C là ngôn ngữ uyển chuyển, có khả năng thâm nhập vào các lĩnh vực tính
toán, quản lý song C
++
còn linh hoạt và uyển chuyển hơn. C là ngôn ngữ vô cùng mạnh
song C
++
được coi là mạnh hơn.
Giống như các ngôn ngữ lập trình khác, C theo nghĩa cũ vẫn bị rào cản trong một vài
hạn chế, còn C
++
đang phá bỏ rào cản đó. Trong thực tế có thể coi C
++
là công cụ làm việc
Để máy hiểu được ý trên nhất thiết phải dịch dòng lệnh này ra ngôn ngữ máy. Những
bộ dịch cho HLL mang một trong hai tên gọi "compiler" hoặc "interpreter". Thứ tự truyền
đạt lệnh đến máy có thể hình dung như sau: người lập trình → compiler hoặc interpreter →
Assembler → máy tính.
Bạn đọc cần phân biệt hai tên gọi vừa nêu "compiler" và "interpreter" cùng làm một
việc, trong tiếng Anh người ta dùng khái niệm "translation" (nghĩa của nó là dịch) để diễn
đạt việc ấy. Compiler dịch toàn bộ chương trình giống như cách dịch toàn bộ bài nói của
một ai đó từ tiếng nước này sang ngôn ngữ của nước chủ nhà. Trong khi đó interpreter dịch
từng câu lệnh một, giống kiểu người phiên dịch (tiếng Anh gọi là interpreter) chuyển từng
câu nói của một vị khách sang tiếng chủ nhà. Trường hợp bắt buộc phải có mặt cả hai thành
phần cho công việc dịch là người phát biểu bằng tiếng nước ngoài và người phiên dịch.
Compiler thực hiện công việc nhanh hơn, gọn hơn. Công việc kiểu sau chậm hơn vì phải
chờ thông tin qua lại giữa người phát biểu và phiên dịch viên. Tuy nhiên interpreter có ưu
điểm nổi trội là làm cho chương trình hoạt động thuận lợi và dễ dàng hơn. Vì không cần
thiết phải dịch xong toàn bộ chương trình mới chạy chương trình, interpreter chuyển từng
phần chương trình vào hoạt động nếu phần việc ấy đã được viết đúng bằng ngôn ngữ lập
trình. Trường hợp có lỗi trong câu lệnh, interpreter phát hiện lỗi ngay tức thì và yêu cầu
chỉnh lại ngay lúc đó. Sau mỗi lần chỉnh, nếu đúng, câu lệnh sẽ được thực thi ngay. Trong
thực tế người ta đang kết hợp cả hai cách làm việc nhằm đẩy mạnh tốc độ thực hiện và tạo
thuận lợi tối đa cho người dùng.
Tại đây bạn đọc cần làm quen thêm với khái niệm mã nguồn và mã đối tượng. Mã
chương trình được gọi là mã nguồn. Sản phẩm có xuất xứ từ mã nguồn, sau khi dịch gọi là
mã đối tượng. Tất cả phần mềm khi bán ra đều được ghi lại dưới dạng mã đối tượng. Với
các bản dịch người dùng không còn một khả năng nào để đọc, để nhận biết và không có
cách nào để cải biên, thay đổi.
Thế hệ thứ tư giành cho ngôn ngữ bậc rất cao (Very high level languages). Trong trào
lưu này, nhờ những Generator, người ta chỉ cần đưa những đặc trưng chính của công việc,
generator chuyển thông tin vào hệ thống làm việc của máy như đã miêu tả cho thế hệ trước,
máy tính "tự động" tạo ra những chương trình ứng dụng. Ý này, phục vụ công việc quản lý
cơ sở dữ liệu (tiếng Anh: Database Management) mang dáng dấp của ngôn ngữ thế hệ thứ