Python có "biên dịch" không?
Em được biết Python là một ngôn ngữ thông dịch? Vậy nên em hiểu là nó không hề biên dịch. Nhưng lại vô tình được được bài này
Python is not compiled?
While not requiring a separate compiler toolchain like C++, Python is in fact compiled to bytecode, much like Java and many other compiled languages. Further compilation steps, if any, are at the discretion of the runtime, be it CPython, PyPy, Jython/JVM, IronPython/CLR, or some other process virtual machine.
Vậy thì một chương trình Python cũng được biên dịch giống Java phải không ạ? Thế thì sao lại nói nó là ngôn ngữ thông dịch được ạ?
Hi tutu.
Tất nhiên bạn phải chuyển file text mã nguồn thành một dạng dữ liệu khác tối ưu hơn cho việc thực thi. Thường thì các file này được giữ lại để chạy cho lần sau như .class của java.
Tại sao nói nó là thông dich vì đầu vào cho máy ảo thực thi là file text còn java là file .class.
Về Java thì em đã hiểu rồi. Java phải biên dịch thành bytecode rồi JVM mới thông dịch. Nhưng còn Python cơ ạ. Em nghe nói nó là ngôn ngữ thông dịch. Thế tại sao bài viết này lại còn nói nó được biên dịch thành bytecode nữa? Đó là cái em thắc mắc.
Hi tutu.
Tech Talk – 5 Apr 17
Khi load file text vào thì bạn cần phải tạo nơi lưu trữ biến stack gọi hàm class v.v.v…
Viết ngôn ngữ lập trình – Ai cũng làm được? | Tech Talk
Trong vòng 6 tháng vừa qua, tôi đang phát triển một ngôn ngữ lập trình gọi là Pinecone. Sẽ còn là quá sớm để kết luận rằng nó đã hoàn hảo, nhưng Pinecone đã có nhiều tính năng hoạt động hiệu quả cho việc lập trình, bao gồm: Variables Functions User...
Để khỏi mất công tạo các dữ liệu đó thì lưu file đấy lại dùng lại sau.
Python là một ngôn ngữ lập trình. Nó là các quy tắc để một người lập trình biểu diễn các thuật toán, giải pháp cho bài toán của mình.
Mã nguồn được biên dịch hay thông dịch sẽ dựa vào phần mềm mà bạn sử dụng để có thể chạy mã nguồn của bạn.
Với Python, các biến được khai báo mà không cần kiểu, như vậy, kiểu của biến được gán theo ngữ cảnh. Việc thông dịch sẽ dễ hơn biên dịch.
Em chỉ hỏi là Python có được biên dịch không? Và nếu như đúng bài viết kia nói thì sau khi được biên dịch thành bytecode. Cái gì sẽ thông dịch Python sang ngôn ngữ máy? Như ở Java là JVM ấy ạ? Ở Python là gì?
Những anh ở trên đã trả lời rồi. Mình chỉ nhắc lại thôi. (với CPython).
Bạn có thử vào thư mục chứa thư viện của Python không? Bạn có thấy các file dạng *.pyc (hay *.pyo) không? Nó là bytecode sau khi biên dịch của Python và dĩ nhiên càng không phải ngôn ngữ máy nên không có chuyện “thông dịch sang ngôn ngữ máy”.
Lúc nào Python nạp 1 file nào thì nó đều được compile trước việc các file được compile là để tăng tốc nạp thư viện vào thôi
Bạn cũng nên phân biệt interpreter và virtual machine tụi nó không giống nhau. Và câu hỏi này rất dễ để tìm đáp án Google (miễn là từ khóa tiếng anh).
Bạn đọc mấy link này xem , nói chung có mấy ý quan trọng là:
Is Python interpreted, or compiled, or both?
Is Python Interpreted or Compiled?
Python vs Cpython