Trình biên dịch và thông dịch

Ngôn ngữ biên dịch là ngôn ngữ mà trước khi ra thành phẩm bạn phải biên dịch nó ra mã máy trước. Sẽ có rất nhiều ngôn ngữ vừa biên dịch vừa thông dịch, tùy vào cách chúng ta hiện thực nó. Như java là 1 ngôn ngữ vừa biên dịch vừa thông dịch.

ahihi đồ ngốc trương thanh hùng nè

hùng thông minh lắm

đọc dữ liệu hộ bố

đọc dữ liệu hộ bố

đọc dữ liệu hộ bố

Java là 1 ngôn ngữ vừa biên dịch vừa thông dịch, vì:

hùng thông minh lắm

ahihi đồ ngốc trương thanh hùng nè

hùng đẹp trai

đọc dữ liệu hộ bố

hùng ebudezain

bài viết được viết bởi trương thanh hùng https://ebudezain.com/

bài viết được viết bởi trương thanh hùng https://ebudezain.com/

bài viết được viết bởi trương thanh hùng https://ebudezain.com/

đọc dữ liệu hộ bố

Trình BIÊN DỊCH của Java (Java compiler), nó sẽ chuyển đổi các file code thành java byte-code. => cái này chưa phải mã máy. Rồi sau đó Java Virtual Machine (JVM) mới thông dịch chạy java byte code thành ngôn ngữ máy. 

tôi thích vậy đó

1 ví dụ khác, C++ là ngôn ngữ biên dịch, khi chúng ta học C++ chúng ta phải có 1 trình soạn thảo để compile code đó mới chạy được. nhưng chúng ta cũng có thể biến C++ thành trình thông dịch bằng UnderC, Cint, ...

đọc dữ liệu hộ bố

Ngôn ngữ thông dịch Interpreter

hùng đẹp trai

tôi thích vậy đó

tôi thích vậy đó

ahihi đồ ngốc trương thanh hùng nè

hùng ebudezain

Với 1 số ngôn ngữ thông dịch chúng ta lại có 1 trình thông dịch, khi chương trình chạy thì trình thông dịch sẽ thực thi từng dòng code dẫn đến việc 1 trình biên dịch sẽ chiếm ưu thế tốc độ hơn trình thông dịch. 

hùng ebudezain

bài viết được viết bởi trương thanh hùng https://ebudezain.com/

đọc dữ liệu hộ bố

hùng thông minh lắm

ahihi đồ ngốc trương thanh hùng nè

tôi thích vậy đó

bạn có thể tưởng tượng có 1 thằng nước ngoài ( đóng vai trò như hệ điều hành ) còn mình là người việt nam không biết nói tiếng anh ( đóng vai trò như 1 ngôn ngữ lập trình ). Trường hợp 1, bạn viết 1 bài văn xong bạn đem cho 1 đơn vị dịch thuật ra tiếng anh cho thằng kia đọc thì đơn vị dịch thuật là trình biên dịch từ tiếng việt ra tiếng anh. Trường hợp 2, bạn kêu đại 1 thằng nào đó đứng kế bên bạn, mỗi lần bạn nói kết thúc bằng dấu chấm phẩy thì nó dịch ra tiếng anh rồi nói lại cho thằng nước ngoài nghe. => mỗi lần nó nói cho thằng người nước ngoài nghe thì bạn im cho nó nói ( chậm hơn đó )

hùng đẹp trai

tôi thích vậy đó

ahihi đồ ngốc trương thanh hùng nè

hùng ebudezain

bài viết được viết bởi trương thanh hùng https://ebudezain.com/

đọc dữ liệu hộ bố

đọc dữ liệu hộ bố

ví dụ: PHP là ngôn ngữ thông dịch, Python là ngôn ngữ thông dịch với trình thông dịch Cython, nhưng pyThon sẽ là ngôn ngữ biên dịch nếu sử dụng implementation là PyPy

ahihi đồ ngốc trương thanh hùng nè

tôi thích vậy đó

hùng thông minh lắm

Cảnh báo hiểu nhầm về thông dịch và biên dịch

ahihi đồ ngốc trương thanh hùng nè

bài viết được viết bởi trương thanh hùng https://ebudezain.com/

Các định nghĩa về thông dịch và biên dịch của riêng 1 ngôn ngữ nào đó thì khá mơ hồ. giống như Python có thể sẽ là biên dịch cũng có thể là thông dịch đó thôi, chỉ là chúng ta thường sử dụng trình thông dịch Python hơn thôi. 

đọc dữ liệu hộ bố

Ngôn ngữ bậc thấp chạy nhanh hơn ngôn ngữ bậc cao.

hùng thông minh lắm

hùng thông minh lắm

Cái này mình thấy cũng đúng nhưng mà lý do thì không phải do biên dịch hay thông dịch mà ra đâu. Việc chạy chậm hơn là do kiểm tra nhiều hơn. Ví dụ ngôn ngữ PHP bạn được support về việc đóng mở kết nối db 1 cách tự động nhưng khi học java thầy cô lại khuyên phải mở kết nối db, sài xong nhớ đóng kết nối. điều này lại liên quan đến trình implementation 

bài viết được viết bởi trương thanh hùng https://ebudezain.com/

ahihi đồ ngốc trương thanh hùng nè

hùng thông minh lắm

ahihi đồ ngốc trương thanh hùng nè

bài viết được viết bởi trương thanh hùng https://ebudezain.com/

hùng đẹp trai

Trình biên dịch và thông dịch

hùng đẹp trai

bài viết được viết bởi trương thanh hùng https://ebudezain.com/

ahihi đồ ngốc trương thanh hùng nè

tôi thích vậy đó

bài viết được viết bởi trương thanh hùng https://ebudezain.com/

ahihi đồ ngốc trương thanh hùng nè

đọc dữ liệu hộ bố

bài viết được viết bởi trương thanh hùng https://ebudezain.com/

Hình ảnh trên mô tả quá trình thực thi mã code compiler. Vậy bạn thấy có 2 hình tròn màu cam và màu xanh, màu cam ý nói code sẽ được chuyển đổi thành bytecode và chỉ thế thôi.

đọc dữ liệu hộ bố

hùng thông minh lắm

đọc dữ liệu hộ bố

hùng đẹp trai

hùng thông minh lắm

đọc dữ liệu hộ bố

ahihi đồ ngốc trương thanh hùng nè

hùng ebudezain

hùng đẹp trai

hùng ebudezain

Vậy điều khác biệt của các ngôn ngữ biên dịch có cái nhanh hơn có cái chậm hơn nằm ở implementation của từng ngôn ngữ. implementation nào kiểm tra cho lắm vào thì đồng nghĩa với việc chấp nhận chậm hơn thôi. mà nó kiểm tra dùm mình thì sẽ thân thiện và dễ code hơn với lập trình viên.