Hôm trước lên mạng tôi có đọc được 1 bài trên forum có hỏi “Ngôn ngữ lâp trình là gì? NNLT ra đời như thế nào?”
có vẻ hơi khó nhưng mình thử trả lời xem có đúng không nha
1. Ngôn ngữ là gì?
Theo khái niệm về ngôn ngữ hình thức hay văn phạm (giáo trình ngôn ngữ hình thức và otomat "môn này mình cũng không giỏi lắm đâu") là tập hợp của 4 bộ thành phần: Tập kí hiệu kết thúc (phần tử), tập kí hiệu không kết thúc (biến), tập hữu hạn các quy tắc dẫn xuất và kí hiệu bắt đầu.
vd:cho 1 câu sau "bạn Nam chạy nhanh hơn bạn hoa"
phân tích ra thành văn phạm bao gồm:
2, tập kí hiệu không kết thúc :,,<động từ>, là các biến
3, kí hiệu bắt đầu:
4, tập hữu hạn các quy tắc dẫn xuất:
{--><động từ>,
--><động từ>,
-->bạn, -->Nam,
-->Hoa, <động từ>-->chạy,
-->nhanh}
Trong ví dụ trên ta có thể hiểu tập kí tự kết thúc là tập hợp các phần tử được xác định, vd như bảng chữ cái và các từ ngữ được xác định trước (tiếng anh, tiếng việt hay tiếng trung đều có kiểu kí tự và từ ngữ khác nhau). Tập kí tự không kết thúc là các biến hay các kiểu ngữ pháp khác nhau trong ngôn ngữ (danh từ, tính từ, động từ ... như đã nói ở trên). Kí hiệu bắt đầu trong ngôn ngữ hình thức là kí hiệu đặc biệt khởi đầu để sinh ra một câu (hay một văn phạm). Và cuối cùng không thể không nhắc đến và cũng là cái quan trọng nhất là tập hữu các quy tắc dẫn xuất. Từ văn phạm ta có thể sinh ra ngôn ngữ và ngược lại (nói chung phải đọc sách mới hiểu chứ nói không thế này thì còn lâu mới hiểu được).
Từ khái niệm trên ta có thể biết được một ngôn ngữ hay văn phạm có cấu trúc và được sinh như thế nào. Lĩnh vực nghiên cứu về ngôn ngữ hình thức là một trong những ngành quan trọng và có rất nhiều trong Khoa học máy tinh.
2. Lập trình là gì?
lập trình là lập ra một quá trình để thực hiện một công việc trong một khoảng thời gian nhất định. vd như lập trình một công việc nấu cơm như sau:
1, vo gạo
2, đổ gạo vào nồi
3, đổ nước
4, cắm phích điện và bật công tắc
5, đợi khoảng 40 phút là có thể bỏ ra ăn
-- độ phức tạp tạp của công việc trên là tổng độ dài của cả quá trình trên như thời gian mất bao lâu, số công sức bỏ ra là như thế nào....
Nói chung khi nghiên cứu về lập trình thì tính toán độ phức tạp là vô cùng quan trọng
3. Ngôn ngữ lập trình là gì?
Từ 2 khái niệm trên ta có thể hiểu được ngôn ngữ lập trình là sử dụng ngôn ngữ vào việc lập trình hay thực hiện một công việc trong một khoảng thời gian nhất định.
ngôn ngữ lập trình ra đời từ rất lâu rùi, khi máy tính chưa xuất hiện kể cả máy tính cơ học (mình nhớ là vào khoảng thế kỉ 16 thì phải). Khi ấy các nhà toán học muốn sử dụng ngôn ngữ vào việc giải bài toán. thử lấy ví dụ sau:
vd: giải pt bậc 2 ax^2+bx+c=0
bắt đầu
đặt a = giá trị bất kì
đặt b = giá trị bất kì
đặt c = giá trị bất kì
tính DELTA=b*b-4*a*c
nếu DELTA=0 thì
pt có ngiệm kép x=-b/2*a
ngược lại
bắt đầu
nếu DELTA<0 thì pt vô ngiệm
ngược lại
bắt đầu
x1=(-b-căn bậc 2(DELTA))/2*a
x2=(-b+căn bậc 2(DELTA))/2*a
pt có 2 ngiệm phân biệt x1,x2
kết thúc
kết thúc
kết thúc
Nói chung ngôn ngữ lập trình cũng tựa như ngôn ngữ chúng ta hay sử dụng hằng ngày. Và trên thế giới cũng có nhiều ngôn ngữ lập trình khác nhau, tuy các ngôn ngữ có thể khác nhau về mặt từ ngữ nhưng vẫn chung về mặt ngữ pháp, đặc biệt là về mặt thuật toán và cấu trúc dự liệu. Nói chung NNLT ra đời cũng để ứng dụng vào khoa hoc kĩ thuật, đặc biệt là khoa học máy tính. Để tìm hiểu kĩ hơn về vấn đề này tốt nhất hãy tham khảo thầy cô, sách và đặc biệt là Google
4. Ứng dụng của NNLT vào khoa hoc máy tính
Máy tính hiện đại ngày nay sử dụng mã máy (hay hệ nhị phân) để trao đổi thông tin là chính. Hệ nhị phân là hệ cơ số 2 bao gồm 2 số 0 và 1. Quá trình tính toán cũng như sự biến đổi thông tin diễn ra rất nhanh và thực hiện trên những con số rất lớn. Nhược điểm lớn nhất khi con người sử dụng máy tính là con người không thể hiểu được hệ thống số hay hệ thông ngôn ngữ trong máy tính, giống như 2 người bất đồng ngôn ngữ đang nói chuyện với nhau. Để 2 người nói chuyện có thể hiểu nhau, người ta cho thêm 1 người thứ 3 có tác dụng dịch ngôn ngữ của người này sang cho người kia. Tác dụng của người thứ 3 là vừa hiểu được ngôn ngữ của người thứ 1 và vừa có thể hiểu được ngôn ngữ của người thứ 2, với sự logic chặt chẽ ngôn ngữ này có thể hiểu được ngôn ngữ kia va ngược lại. Chương trình dịch ra đời từ đó.
Sự ra đời của chương trình dịch vô cùng quan trọng. Nó giúp ta dịch một ngôn ngữ ta quy định sang dạng mã máy (máy tính chỉ thực hiện trên mã máy) để máy tính có thể hiểu được và thực hiên công việc. Các ngôn ngữ lập trình hiện nay đều được xây dựng dựa trên quy tắc này.
Trên đây là những kiến thức mà tôi có thể chia sẻ được, hi vọng cũng đủ đáp ứng sự tò mò và hiếu kì của các bạn. Mong các bạn hay chia sẻ kiến thức mà các bạn biết
create by duongbon
Không có nhận xét nào:
Đăng nhận xét