Python có được giải thích hoặc biên dịch không?

Mỗi chương trình là một tập hợp các hướng dẫn, cho dù đó là cộng hai số hay gửi yêu cầu qua internet. Trình biên dịch và trình thông dịch lấy mã mà con người có thể đọc được và chuyển đổi nó thành mã máy mà máy tính có thể đọc được

Trong một ngôn ngữ được biên dịch, máy đích dịch trực tiếp chương trình. Trong một ngôn ngữ được giải thích, mã nguồn không được dịch trực tiếp bởi máy đích. Thay vào đó, một chương trình khác, hay còn gọi là trình thông dịch, đọc và thực thi mã

Được rồi… nhưng điều đó thực sự có nghĩa là gì?

Hãy tưởng tượng bạn có một công thức món khai vị mà bạn muốn làm, nhưng nó được viết bằng tiếng Hy Lạp cổ đại. Có hai cách để bạn, một người không nói tiếng Hy Lạp cổ đại, có thể làm theo chỉ dẫn của nó

Đầu tiên là nếu ai đó đã dịch nó sang tiếng Anh cho bạn. Bạn [và bất kỳ ai khác có thể nói tiếng Anh] có thể đọc phiên bản tiếng Anh của công thức và làm món khai vị. Hãy coi công thức đã dịch này là phiên bản đã biên dịch

Cách thứ hai là nếu bạn có một người bạn biết tiếng Hy Lạp cổ đại. Khi bạn đã sẵn sàng làm món khai vị, bạn của bạn sẽ ngồi cạnh bạn và dịch công thức sang tiếng Anh khi bạn làm, từng dòng một. Trong trường hợp này, bạn của bạn là người phiên dịch cho phiên bản đã dịch của công thức

Ngôn ngữ biên dịch

Các ngôn ngữ đã biên dịch được chuyển đổi trực tiếp thành mã máy mà bộ xử lý có thể thực thi. Kết quả là, chúng có xu hướng thực thi nhanh hơn và hiệu quả hơn so với các ngôn ngữ thông dịch. Chúng cũng cung cấp cho nhà phát triển nhiều quyền kiểm soát hơn đối với các khía cạnh phần cứng, như quản lý bộ nhớ và sử dụng CPU

Các ngôn ngữ được biên dịch cần một bước “xây dựng” – chúng cần được biên dịch thủ công trước. Bạn cần “xây dựng lại” chương trình mỗi khi cần thực hiện thay đổi. Trong ví dụ về hummus của chúng tôi, toàn bộ bản dịch được viết trước khi nó đến tay bạn. Nếu tác giả ban đầu quyết định rằng anh ta muốn sử dụng một loại dầu ô liu khác, thì toàn bộ công thức sẽ cần được dịch lại và gửi lại cho bạn

Ví dụ về các ngôn ngữ được biên dịch thuần túy là C, C++, Erlang, Haskell, Rust và Go

ngôn ngữ thông dịch

Trình thông dịch chạy qua từng dòng chương trình và thực hiện từng lệnh. Ở đây, nếu tác giả quyết định muốn sử dụng một loại dầu ô liu khác, anh ta có thể loại bỏ loại cũ và thêm loại mới. Người bạn phiên dịch của bạn sau đó có thể truyền đạt sự thay đổi đó cho bạn khi nó xảy ra

Các ngôn ngữ được giải thích đã từng chậm hơn đáng kể so với các ngôn ngữ được biên dịch. Tuy nhiên, với sự phát triển của phương pháp biên dịch tức thời, khoảng cách đó đang được thu hẹp lại.

Ví dụ về các ngôn ngữ thông dịch phổ biến là PHP, Ruby, Python và JavaScript

Một lưu ý nhỏ

Hầu hết các ngôn ngữ lập trình có thể có cả triển khai được biên dịch và thông dịch - bản thân ngôn ngữ không nhất thiết phải được biên dịch hoặc thông dịch. Tuy nhiên, để đơn giản, chúng thường được gọi là

Ví dụ, Python có thể được thực thi dưới dạng chương trình đã biên dịch hoặc dưới dạng ngôn ngữ được giải thích trong chế độ tương tác. Mặt khác, hầu hết các công cụ dòng lệnh, CLI và trình bao về mặt lý thuyết có thể được phân loại là ngôn ngữ thông dịch

Ưu điểm và nhược điểm

Ưu điểm của ngôn ngữ biên dịch

Các chương trình được biên dịch thành mã máy gốc có xu hướng nhanh hơn mã được giải thích. Điều này là do quá trình dịch mã trong thời gian chạy làm tăng thêm chi phí hoạt động và có thể khiến chương trình về tổng thể chậm hơn

Nhược điểm của ngôn ngữ biên dịch

Những nhược điểm đáng chú ý nhất là

  • Cần thêm thời gian để hoàn thành toàn bộ bước biên dịch trước khi thử nghiệm
  • Sự phụ thuộc vào nền tảng của mã nhị phân được tạo

Ưu điểm của ngôn ngữ thông dịch

Các ngôn ngữ được thông dịch có xu hướng linh hoạt hơn và thường cung cấp các tính năng như nhập động và kích thước chương trình nhỏ hơn. Ngoài ra, vì các trình thông dịch tự thực thi mã chương trình nguồn, nên bản thân mã này độc lập với nền tảng

Nhược điểm của ngôn ngữ thông dịch

Nhược điểm đáng chú ý nhất là tốc độ thực thi thông thường so với các ngôn ngữ được biên dịch

QUẢNG CÁO

QUẢNG CÁO

QUẢNG CÁO

Nếu bài viết này hữu ích, hãy tweet nó

Học cách viết mã miễn phí. Chương trình giảng dạy mã nguồn mở của freeCodeCamp đã giúp hơn 40.000 người có được việc làm với tư cách là nhà phát triển. Bắt đầu

Phần mềm thông dịch Python các bạn download từ python. org được gọi là CPython vì nó được viết bằng C

Python có thể được biên dịch thành tệp thực thi nhị phân bằng một công cụ như Py2Exe [trên Windows], py2app [trên macOS] hoặc BeeWare [tất cả các hệ điều hành bao gồm cả thiết bị di động]

Hài hước là còn có PyPy, một trình thông dịch Python được viết bằng Python

Khi bạn chạy một chương trình Python, trước tiên trình thông dịch sẽ biên dịch nó thành mã byte và sau đó chạy mã byte. Vì vậy, bạn có thể nói rằng Python được biên dịch

Bytecode là một tập hợp các hướng dẫn cơ bản mà phần mềm máy ảo [VM] chạy giống như mã máy là một tập hợp các hướng dẫn cơ bản mà CPU chạy

Lợi ích của mã byte là các máy ảo thông dịch trên các hệ điều hành khác nhau có thể chạy cùng một chương trình. [Mặc dù các hệ điều hành ban đầu được viết để chạy các chương trình giống nhau trên các phần cứng máy tính khác nhau. ]

Về mặt kỹ thuật, Python không được biên dịch hay thông dịch, vì Python là một ngôn ngữ và bạn có thể viết trình thông dịch hoặc trình biên dịch cho bất kỳ ngôn ngữ nào

Tuy nhiên, hầu hết các ngôn ngữ được coi là "biên dịch" hoặc "thông dịch" vì chúng được triển khai phổ biến nhất với trình biên dịch hoặc trình thông dịch. Theo nghĩa này, C++ được biên dịch và Python được diễn giải

Ngôn ngữ lập trình được diễn giải thường được gọi là ngôn ngữ kịch bản, nhưng Java diễn giải mã byte và không được coi là ngôn ngữ kịch bản

Ngôn ngữ cấp cao từng là bất kỳ ngôn ngữ nào có lớp trừu tượng trên mã máy hoặc hợp ngữ. C từng được coi là ngôn ngữ cấp cao, nhưng hiện được coi là ngôn ngữ cấp thấp hoặc ngôn ngữ cơ bản vì nó ít trừu tượng hơn các ngôn ngữ như Java, Python hoặc JavaScript

Bộ biên dịch biên dịch mã nguồn trong một ngôn ngữ lập trình thành mã nguồn trong ngôn ngữ lập trình khác. TypeScript là một trình biên dịch phổ biến biên dịch mã nguồn được viết bằng ngôn ngữ TypeScript [thêm các tính năng an toàn của loại] thành mã nguồn JavaScript để trình thông dịch JavaScript có thể chạy trong trình duyệt web

Ngoài ra còn có trình biên dịch Just-In-Time [JIT], trong đó trình thông dịch mã byte phân tích phần nào của chương trình chạy thường xuyên nhất và sau đó biên dịch các phần đó thành mã máy để thực thi nhanh hơn

Mã Java được biên dịch bởi trình biên dịch Java. Nhưng nó biên dịch thành mã byte, được Java VM giải thích. Tuy nhiên, Java được coi là ngôn ngữ biên dịch hơn là ngôn ngữ thông dịch hoặc ngôn ngữ kịch bản

Khi các nhà phát triển phần mềm thêm nhiều lớp trừu tượng hơn, các định nghĩa này trở nên lỏng lẻo và mơ hồ hơn. Có lẽ không đáng để dành thời gian tranh cãi về chúng

Nếu bạn muốn tìm hiểu cách trình biên dịch hoạt động, tôi khuyên bạn nên học đệ quy trước tiên bằng cách đọc cuốn sách miễn phí của tôi The Recursive Book of Recursion và sau đó tham gia một khóa học về trình biên dịch như Dr. Khóa học biên dịch trực tuyến của Aiken

Tại sao Python là một ngôn ngữ thông dịch?

Python là ngôn ngữ được thông dịch vì nó triển khai trình thông dịch để biến mã của bạn thành ngôn ngữ mà bộ xử lý máy tính của bạn có thể hiểu được . Một trong những tính năng hấp dẫn nhất của các ngôn ngữ thông dịch là chúng là nền tảng bất khả tri.

Tại sao Python không được biên dịch?

Python không cần trình biên dịch vì nó dựa vào một ứng dụng [được gọi là trình thông dịch] để biên dịch và chạy mã mà không cần lưu trữ mã máy được tạo ở dạng mà bạn có thể . .

Chủ Đề