Phân biệt giữa Interpretion(thông dịch) và Compilation(biên dịch)
+2
vophatdat
tranhongnguyen_I82C
6 posters
Trang 1 trong tổng số 1 trang
Phân biệt giữa Interpretion(thông dịch) và Compilation(biên dịch)
Có bạn nào hiểu rõ về Interpretion và Compilation không ? Giúp mình giải thích với, hôm chủ nhật thầy có nói nhưng mình cũng chưa hiểu lắm.Mọi người chú ý nha mình có nghe thầy nói đây là một trong những câu có thể ra thi đó.
Please help me!!!!
Thanks
Please help me!!!!
Thanks
tranhongnguyen_I82C- Tổng số bài gửi : 13
Join date : 24/03/2009
Re: Phân biệt giữa Interpretion(thông dịch) và Compilation(biên dịch)
tranhongnguyen_I82C đã viết:Có bạn nào hiểu rõ về Interpretion và Compilation không ? Giúp mình giải thích với, hôm chủ nhật thầy có nói nhưng mình cũng chưa hiểu lắm.Mọi người chú ý nha mình có nghe thầy nói đây là một trong những câu có thể ra thi đó.
Please help me!!!!
Thanks
Thông dịch(Interpretion) là lần lượt thi hành từng lệnh 1 thông qua 1 chương trình gọi là Trình thông dịch(Interpretor). "Thường được viết ở ngôn ngữ cấp thấp được lưu thành file với đuôi mở rộng *.bat(batch)"
Biên dịch(Compilation) là dịch 1 lần toàn bộ chương trình thông qua 1 chương trình gọi là Trình biên dịch (Compiler)==> Tạo ra file thực thi *.exe (sẽ chạy 1 lần mà không cần phải thông dịch lại).
Biên dịch và thông dịch
Thông dịch(Interpretion) còn gọi là sự thông dịch, còn trình thông dịch (Interpretor) là một trình thông dịch ngôn ngữ. Trong thông dịch thì mã nguồn không được dịch trước thành ngôn ngữ máy mà mỗi lần cần chạy chương trình thì mã nguồn mới được dịch để thực thi từng dòng 1 (line by line). Tất cả các ngôn ngữ không biện dịch ra mã máy điều phải sử dụng trình thông dịch (PHP, WScripts, Perl, Linux Shell, Python....). Các ngôn ngữ theo trình thông dịch thường được gọi là script (kịch bản)
Ưu điểm
- Phát triển nhanh chóng
- Có thể chỉnh sửa mã nguồn bất kỳ khi nào
- Mạnh xử lý cú pháp
- Uyển chuyển mềm dẻo, ràng kiểu dữ liệu không chặc chẽ
- Có thể chạy trên mọi nền tảng (flatform, hệ điều hành) nếu có trình thông dịch tương ứng, tại vì không phải là ngôn ngữ máy(chỉ là file văn bản) nên không bị phụ thuộc vào HDH. tiêu biểu là Perl, PHP, Python
Nhược điểm
- Tại vì do là ngôn ngữ thông dịch chạy line by line nên nên ngôn ngữ thông dịch không hỗ trợ đa luồn (multi thread), giao dịch (transaction).... nên ngôn ngữ trình thông dịch chủ yếu là dùng ở mức độ font-end (muốn biết font-end là gì thì google đi)
- Cũng do chạy line by line nên tốc độ thực thi không nhanh bằng các chương trình viết bằng ngôn ngữ biên dịch (C, C++, VB...) đã chuyên trực tiếp ra ngôn ngữ máy.
Biên dịch(Compilation). Chương trình được viết được biên dịch ra thành ngôn ngữ máy trên một HDH xác định trước và chỉ chạy trên HDH đó (C++ -> .exe chỉ chạy trên Win, C++ -> .o chạy trên Unix/Linux .....)
Ưu điểm
- Ràng buộc chặc chẽ về kiểu trong ngôn ngữ.
- Hỗ trợ các tính năng đa tuyến, transtion ...
- Do đã biên dịch phụ thuộc vào hệ điều hành nên ct có thể tận dụng toàn bộ các tính năng đặc trưng của hdh
- Tốc độ thực thi tốt
- Bảo mật tốt (không thể xâm phạm mã nguồn làm thay đổi chức năng của chương trình)
- ....
Nhược điểm
- Sau khi biên dịch ra ngôn ngữ máy thì chỉ có thể chạy trên một HDH xác định.
P/S: Các bạn có thể thắc mắt tại sao Java cũng là ngôn ngữ biên dịch mà có thể chạy mọi HDH, chúng ta cần chú ý rằng: Java không biên dịch ra ngôn ngữ máy mà biên dịch ra bytecode, và bytecode đó phải chạy trên JVM (Java Virtual Machine) là một máy ảo trong đó có hệ điều hành ảo (java)
Có gì thắc mắc các bạn có thể comment mình sẽ giải thích
Ưu điểm
- Phát triển nhanh chóng
- Có thể chỉnh sửa mã nguồn bất kỳ khi nào
- Mạnh xử lý cú pháp
- Uyển chuyển mềm dẻo, ràng kiểu dữ liệu không chặc chẽ
- Có thể chạy trên mọi nền tảng (flatform, hệ điều hành) nếu có trình thông dịch tương ứng, tại vì không phải là ngôn ngữ máy(chỉ là file văn bản) nên không bị phụ thuộc vào HDH. tiêu biểu là Perl, PHP, Python
Nhược điểm
- Tại vì do là ngôn ngữ thông dịch chạy line by line nên nên ngôn ngữ thông dịch không hỗ trợ đa luồn (multi thread), giao dịch (transaction).... nên ngôn ngữ trình thông dịch chủ yếu là dùng ở mức độ font-end (muốn biết font-end là gì thì google đi)
- Cũng do chạy line by line nên tốc độ thực thi không nhanh bằng các chương trình viết bằng ngôn ngữ biên dịch (C, C++, VB...) đã chuyên trực tiếp ra ngôn ngữ máy.
Biên dịch(Compilation). Chương trình được viết được biên dịch ra thành ngôn ngữ máy trên một HDH xác định trước và chỉ chạy trên HDH đó (C++ -> .exe chỉ chạy trên Win, C++ -> .o chạy trên Unix/Linux .....)
Ưu điểm
- Ràng buộc chặc chẽ về kiểu trong ngôn ngữ.
- Hỗ trợ các tính năng đa tuyến, transtion ...
- Do đã biên dịch phụ thuộc vào hệ điều hành nên ct có thể tận dụng toàn bộ các tính năng đặc trưng của hdh
- Tốc độ thực thi tốt
- Bảo mật tốt (không thể xâm phạm mã nguồn làm thay đổi chức năng của chương trình)
- ....
Nhược điểm
- Sau khi biên dịch ra ngôn ngữ máy thì chỉ có thể chạy trên một HDH xác định.
P/S: Các bạn có thể thắc mắt tại sao Java cũng là ngôn ngữ biên dịch mà có thể chạy mọi HDH, chúng ta cần chú ý rằng: Java không biên dịch ra ngôn ngữ máy mà biên dịch ra bytecode, và bytecode đó phải chạy trên JVM (Java Virtual Machine) là một máy ảo trong đó có hệ điều hành ảo (java)
Có gì thắc mắc các bạn có thể comment mình sẽ giải thích
I91C_hoangnd- Tổng số bài gửi : 8
Join date : 29/03/2010
Re: Phân biệt giữa Interpretion(thông dịch) và Compilation(biên dịch)
nói rất hay...Mình còn 1 ví dụ chắc chắn bạn sẽ hiểu rõ hơn
ví dụ thông dịch giống như 1 người thông dịch viên đi dịch cuộc nói chuyện của 2 người. phải biết người này nói gì thì mới dịch được. điều hiển nhiên là người thông dịch viên này chỉ có thể biết 2 thứ tiếng ( là tiếng bản sứ và tiếng cần dịch).
biện dịch là người ngồi 1 nơi và dịch sách dịch 1 lúc toàn bộ nội dung của cuồn sách đó.
ví dụ thông thường giờ ví dụ bằng chương trình hen.
bạn đã từng chạy chương trình vb hay c++ c# chưa? nếu bạn không debug tức chỉ đơn thuần là bấm run ( f5 cho vb và c++, f6 cho c#..). thì cái đó máy sẽ đọc hết 1 lược các câu lệnh rồi mới buil thành từng chương trình.
nhưng khi bạn debug (tức break point tại điểm nào đó ( có hình vòng tròn đỏ ở ngoài)) thì tức là bạn đang thông dịch câu lệnh đó. máy sẽ đọc từng câu lệnh rồi mới thực thi câu lệnh đó.
thử xem bạn nhé.! mong bạn hiểu rõ 2 khái niệm này
ví dụ thông dịch giống như 1 người thông dịch viên đi dịch cuộc nói chuyện của 2 người. phải biết người này nói gì thì mới dịch được. điều hiển nhiên là người thông dịch viên này chỉ có thể biết 2 thứ tiếng ( là tiếng bản sứ và tiếng cần dịch).
biện dịch là người ngồi 1 nơi và dịch sách dịch 1 lúc toàn bộ nội dung của cuồn sách đó.
ví dụ thông thường giờ ví dụ bằng chương trình hen.
bạn đã từng chạy chương trình vb hay c++ c# chưa? nếu bạn không debug tức chỉ đơn thuần là bấm run ( f5 cho vb và c++, f6 cho c#..). thì cái đó máy sẽ đọc hết 1 lược các câu lệnh rồi mới buil thành từng chương trình.
nhưng khi bạn debug (tức break point tại điểm nào đó ( có hình vòng tròn đỏ ở ngoài)) thì tức là bạn đang thông dịch câu lệnh đó. máy sẽ đọc từng câu lệnh rồi mới thực thi câu lệnh đó.
thử xem bạn nhé.! mong bạn hiểu rõ 2 khái niệm này
DucDuyI91C- Tổng số bài gửi : 77
Join date : 18/03/2010
khanh.nd_08H1010044- Tổng số bài gửi : 38
Join date : 08/04/2009
Age : 41
Đến từ : TP. Hồ Chí Minh
Trình biên dịch (compiler) hay là trình thông dịch (interpreter)?
Điểm khác nhau chính là trình biên dịch sẽ dịch mã nguồn sang mã máy 1 lần duy nhất, và sau đó chương trình sẽ chạy 1 mình trên HDH.
Còn trình thông dịch thì sẽ dịch chương trình sang mã máy mỗi khi chạy. Do vậy chương trình của bạn không tự chạy 1 mình được mà phải cần có bộ thông dịch nạp lên trước.
Ưu điểm của trình biên dịch là chương trình của bạn có thể được tối ưu tốt cho HDH và kiến trúc phần cứng ngay lúc dịch sang mã máy. Tuy quá trình này tốn thời gian, nhưng chỉ thực hiện có 1 lần mà thôi.
Còn trình thông dịch thì có ưu điểm là có thể chạy trên nhiều HDH và kiến trúc máy tính khác nhau, miễn là có bộ thông dịch tương ứng trên HDH.
Về không gian:
- Đối với trình biên dịch thì file exe thường có dung lượng to hơn file source nhiều. Đơn giản bạn thử viết 1 chương trình hello world bằng C rồi dịch sang exe rồi so sánh file exe với file c xem dung lượng ra sao :
- Tuy nhiên, file exe lúc này đã là mã máy, nên trên đĩa nó bao nhiêu thì load lên memory nó sẽ xấp xỉ bấy nhiêu. Còn với các chương trình thông dịch thì trên memory còn có bộ thông dịch, và bộ thông dịch phải load chương trình nguồn lên rồi dịch thành mã máy...cho nên thường quá trình chạy 1 chương trình thông dịch sẽ tốn memory hơn.
Về thời gian:
- Trình biên dịch tốn thời gian dịch, nhưng chỉ 1 lần duy nhất.
- Trình thông dịch thì mỗi lần chạy sẽ chuyển chương trình của bạn sang mã máy, mỗi lần dịch thì thời gian tốt ít thôi, nhưng bù lại có thể lần nào chạy cũng phải dịch (trừ khi bộ thông dịch cache lại kết quả của lần dịch trước đó).
Còn trình thông dịch thì sẽ dịch chương trình sang mã máy mỗi khi chạy. Do vậy chương trình của bạn không tự chạy 1 mình được mà phải cần có bộ thông dịch nạp lên trước.
Ưu điểm của trình biên dịch là chương trình của bạn có thể được tối ưu tốt cho HDH và kiến trúc phần cứng ngay lúc dịch sang mã máy. Tuy quá trình này tốn thời gian, nhưng chỉ thực hiện có 1 lần mà thôi.
Còn trình thông dịch thì có ưu điểm là có thể chạy trên nhiều HDH và kiến trúc máy tính khác nhau, miễn là có bộ thông dịch tương ứng trên HDH.
Về không gian:
- Đối với trình biên dịch thì file exe thường có dung lượng to hơn file source nhiều. Đơn giản bạn thử viết 1 chương trình hello world bằng C rồi dịch sang exe rồi so sánh file exe với file c xem dung lượng ra sao :
- Tuy nhiên, file exe lúc này đã là mã máy, nên trên đĩa nó bao nhiêu thì load lên memory nó sẽ xấp xỉ bấy nhiêu. Còn với các chương trình thông dịch thì trên memory còn có bộ thông dịch, và bộ thông dịch phải load chương trình nguồn lên rồi dịch thành mã máy...cho nên thường quá trình chạy 1 chương trình thông dịch sẽ tốn memory hơn.
Về thời gian:
- Trình biên dịch tốn thời gian dịch, nhưng chỉ 1 lần duy nhất.
- Trình thông dịch thì mỗi lần chạy sẽ chuyển chương trình của bạn sang mã máy, mỗi lần dịch thì thời gian tốt ít thôi, nhưng bù lại có thể lần nào chạy cũng phải dịch (trừ khi bộ thông dịch cache lại kết quả của lần dịch trước đó).
khanh.nd_08H1010044- Tổng số bài gửi : 38
Join date : 08/04/2009
Age : 41
Đến từ : TP. Hồ Chí Minh
<h4>Biên dịch && Thông dịch</h4>
Thông dịch(Interpretion) là lần lượt thi hành từng lệnh 1 thông qua 1 chương trình gọi là Trình thông dịch(Interpretor). "Thường được viết ở ngôn ngữ cấp thấp được lưu thành file với đuôi mở rộng *.bat(batch)"
Biên dịch(Compilation) là dịch 1 lần toàn bộ chương trình thông qua 1 chương trình gọi là Trình biên dịch (Compiler)==> Tạo ra file thực thi *.exe (sẽ chạy 1 lần mà không cần phải thông dịch lại).
Trong thông dịch thì mã nguồn không được dịch trước thành ngôn ngữ máy mà mỗi lần cần chạy chương trình thì mã nguồn mới được dịch để thực thi từng dòng 1 (line by line). Tất cả các ngôn ngữ không biện dịch ra mã máy điều phải sử dụng trình thông dịch (PHP, WScripts, Perl, Linux Shell, Python....). Các ngôn ngữ theo trình thông dịch thường được gọi là script (kịch bản)
ví dụ:Thông dịch giống như 1 người thông dịch viên đi dịch cuộc nói chuyện của 2 người. phải biết người này nói gì thì mới dịch được. Người thông dịch viên này thường chi biết 2 thứ tiếng ( là tiếng bản sứ và tiếng cần dịch).
Biện dịch là người ngồi 1 nơi và dịch sách dịch 1 lúc toàn bộ nội dung của cuồn sách đó.
Bạn chạy chương trình vb hay c++ c# chưa? nếu bạn không debug tức chỉ đơn thuần là bấm run ( f5 cho vb và c++, f6 cho c#..). thì cái đó máy sẽ đọc hết 1 lược các câu lệnh rồi mới build thành từng chương trình=>biên dịch
Nhưng khi bạn debug (tức break point tại điểm nào đó ( có hình vòng tròn đỏ ở ngoài) thì tức là bạn đang thông dịch câu lệnh đó. máy sẽ đọc từng câu lệnh =>thong dịch
Biên dịch(Compilation) là dịch 1 lần toàn bộ chương trình thông qua 1 chương trình gọi là Trình biên dịch (Compiler)==> Tạo ra file thực thi *.exe (sẽ chạy 1 lần mà không cần phải thông dịch lại).
Trong thông dịch thì mã nguồn không được dịch trước thành ngôn ngữ máy mà mỗi lần cần chạy chương trình thì mã nguồn mới được dịch để thực thi từng dòng 1 (line by line). Tất cả các ngôn ngữ không biện dịch ra mã máy điều phải sử dụng trình thông dịch (PHP, WScripts, Perl, Linux Shell, Python....). Các ngôn ngữ theo trình thông dịch thường được gọi là script (kịch bản)
ví dụ:Thông dịch giống như 1 người thông dịch viên đi dịch cuộc nói chuyện của 2 người. phải biết người này nói gì thì mới dịch được. Người thông dịch viên này thường chi biết 2 thứ tiếng ( là tiếng bản sứ và tiếng cần dịch).
Biện dịch là người ngồi 1 nơi và dịch sách dịch 1 lúc toàn bộ nội dung của cuồn sách đó.
Bạn chạy chương trình vb hay c++ c# chưa? nếu bạn không debug tức chỉ đơn thuần là bấm run ( f5 cho vb và c++, f6 cho c#..). thì cái đó máy sẽ đọc hết 1 lược các câu lệnh rồi mới build thành từng chương trình=>biên dịch
Nhưng khi bạn debug (tức break point tại điểm nào đó ( có hình vòng tròn đỏ ở ngoài) thì tức là bạn đang thông dịch câu lệnh đó. máy sẽ đọc từng câu lệnh =>thong dịch
VoThiHongNhung(I12A)- Tổng số bài gửi : 20
Join date : 20/02/2012
Similar topics
» Thảo luận Bài 3
» Phân biệt giữa Interpretion(thông dịch) và Compilation(biên dịch)
» Phân biệt giữa Thông Dịch(Interpretion) và Biên Dịch(Compilation)!
» Thảo luận Bài 3
» Ôn tập để Kiểm tra giữa kỳ và Thi lý thuyết
» Phân biệt giữa Interpretion(thông dịch) và Compilation(biên dịch)
» Phân biệt giữa Thông Dịch(Interpretion) và Biên Dịch(Compilation)!
» Thảo luận Bài 3
» Ôn tập để Kiểm tra giữa kỳ và Thi lý thuyết
Trang 1 trong tổng số 1 trang
Permissions in this forum:
Bạn không có quyền trả lời bài viết