Python là thông dịch hay biên dịch

01 trên 06

pixabay.com

Ngôn ngữ lập trình Python có sẵn miễn phí và giúp giải quyết vấn đề máy tính gần như dễ dàng như việc viết ra những suy nghĩ của bạn về giải pháp. Mã này có thể được viết một lần và chạy trên hầu như bất kỳ máy tính nào mà không cần phải thay đổi chương trình.

02/06

Cách Python được sử dụng

Google / cc

Python là một ngôn ngữ lập trình có mục đích chung có thể được sử dụng trên bất kỳ hệ điều hành máy tính hiện đại nào. Nó có thể được sử dụng để xử lý văn bản, số, hình ảnh, dữ liệu khoa học và bất kỳ thứ gì khác bạn có thể lưu trên máy tính. Nó được sử dụng hàng ngày trong các hoạt động của công cụ tìm kiếm của Google, trang web chia sẻ video YouTube, NASA và Sở giao dịch chứng khoán New York. Đây chỉ là một vài trong số những nơi mà Python đóng vai trò quan trọng trong sự thành công của các tổ chức kinh doanh, chính phủ và phi lợi nhuận; có nhiều người khác.

Python là một ngôn ngữ thông dịch. Điều này có nghĩa là nó không được chuyển đổi thành mã có thể đọc được máy tính trước khi chương trình được chạy nhưng vào thời gian chạy. Trong quá khứ, loại ngôn ngữ này được gọi là ngôn ngữ kịch bản, việc sử dụng ngôn ngữ của nó là dành cho các nhiệm vụ tầm thường. Tuy nhiên, các ngôn ngữ lập trình như Python đã buộc phải thay đổi trong danh pháp đó. Càng ngày, các ứng dụng lớn được viết gần như hoàn toàn bằng Python. Một số cách mà bạn có thể áp dụng Python bao gồm:

03/06

Python so sánh với Perl như thế nào?

Lòng từ bi mắt / Anh hùng hình ảnh / Getty Images

Python là một ngôn ngữ tuyệt vời cho các dự án lập trình lớn hoặc phức tạp. Tích hợp với lập trình bằng bất kỳ ngôn ngữ nào làm cho mã dễ dàng cho lập trình viên tiếp theo đọc và duy trì. Phải mất rất nhiều công sức để giữ cho các chương trình Perl và PHP có thể đọc được. Trường hợp Perl bị bất hợp lý sau 20 hoặc 30 dòng, Python vẫn gọn gàng và dễ đọc, thậm chí làm cho các dự án lớn nhất dễ quản lý.

Với khả năng đọc, dễ dàng mua lại và mở rộng, Python cung cấp phát triển ứng dụng nhanh hơn nhiều. Ngoài cú pháp dễ dàng và khả năng xử lý đáng kể, Python đôi khi được cho là đi kèm với "pin đi kèm" vì thư viện mở rộng của nó, một kho chứa mã viết sẵn hoạt động ra khỏi hộp.

04/06

Python so sánh với PHP như thế nào?

Hình ảnh anh hùng / Hình ảnh Getty

Các lệnh và cú pháp của Python khác với các ngôn ngữ thông dịch khác. PHP đang ngày càng thay thế Perl như một ngôn ngữ phát triển web. Tuy nhiên, hơn cả PHP hoặc Perl, Python dễ đọc hơn và dễ theo dõi hơn.

Ít nhất một nhược điểm mà PHP chia sẻ với Perl là mã squirrely của nó. Do cú pháp của PHP và Perl, khó có thể mã hóa các chương trình vượt quá 50 hoặc 100 dòng. Python, mặt khác, có khả năng đọc cứng có dây vào vải của ngôn ngữ. Khả năng đọc của Python làm cho các chương trình dễ bảo trì và mở rộng hơn.

Trong khi nó đang bắt đầu thấy việc sử dụng tổng quát hơn, PHP là trung tâm của một ngôn ngữ lập trình hướng web được thiết kế để xuất ra thông tin có thể đọc được trên web, không xử lý các nhiệm vụ cấp hệ thống. Sự khác biệt này được minh họa trong thực tế là bạn có thể phát triển một máy chủ web bằng Python hiểu PHP, nhưng bạn không thể phát triển một máy chủ web bằng PHP hiểu được Python.

Cuối cùng, Python là hướng đối tượng. PHP thì không. Điều này có ý nghĩa quan trọng đối với khả năng đọc, dễ bảo trì và khả năng mở rộng của các chương trình.

05/06

Python so sánh với Ruby như thế nào?

Todd Pearson / Getty Hình ảnh

Python thường được so sánh với Ruby. Cả hai đều được giải thích và do đó mức độ cao. Mã của họ được thực hiện theo cách mà bạn không cần phải hiểu tất cả các chi tiết. Họ chỉ đơn giản là được chăm sóc.

Cả hai đều hướng đối tượng từ mặt đất lên. Việc triển khai các lớp và đối tượng của chúng cho phép tái sử dụng mã và dễ bảo trì hơn.

Cả hai đều là mục đích chung. Chúng có thể được sử dụng cho các nhiệm vụ đơn giản nhất như chuyển đổi văn bản hoặc các vấn đề phức tạp hơn như kiểm soát rô bốt và quản lý các hệ thống dữ liệu tài chính lớn.

Có hai khác biệt lớn giữa hai ngôn ngữ: khả năng đọc và tính linh hoạt. Do tính chất hướng đối tượng của nó, mã Ruby không sai lầm về mặt tình cờ giống như Perl hay PHP. Thay vào đó, nó sai lầm trong việc quá lờ mờ đến nỗi nó thường không thể đọc được; nó có xu hướng dựa trên ý định của lập trình viên. Một trong những câu hỏi chính được học sinh hỏi Ruby là "Làm thế nào để biết được điều đó?" Với Python, thông tin này thường đơn giản trong cú pháp. Ngoài việc thực thi thụt đầu dòng cho khả năng đọc, Python cũng thực thi tính minh bạch của thông tin bằng cách không giả định quá nhiều.

Bởi vì nó không giả định, Python cho phép thay đổi dễ dàng từ cách làm tiêu chuẩn khi cần thiết trong khi nhấn mạnh rằng sự thay đổi đó là rõ ràng trong mã. Điều này mang lại sức mạnh cho các lập trình viên để làm bất cứ điều gì là cần thiết trong khi đảm bảo rằng những người đọc mã sau này có thể làm cho tinh thần của nó. Sau khi lập trình viên sử dụng Python cho một vài nhiệm vụ, họ thường thấy khó sử dụng bất cứ thứ gì khác.

06 trên 06

Python so sánh với Java như thế nào?

karimhesham / Getty Hình ảnh

Cả Python và Java là các ngôn ngữ hướng đối tượng với các thư viện mã viết sẵn có thể chạy trên hầu hết mọi hệ điều hành. Tuy nhiên, triển khai của họ là rất khác nhau.

Java không phải là ngôn ngữ thông dịch hay ngôn ngữ được biên dịch. Đó là một chút của cả hai. Khi được biên dịch, các chương trình Java được biên dịch sang bytecode — một loại mã Java cụ thể. Khi chương trình được chạy, bytecode này được chạy qua môi trường chạy Java để chuyển đổi nó thành mã máy, có thể đọc và thực thi được bằng máy tính. Khi được biên dịch sang bytecode, các chương trình Java không thể sửa đổi được.

Các chương trình Python, mặt khác, thường được biên dịch tại thời điểm chạy, khi trình thông dịch Python đọc chương trình. Tuy nhiên, chúng có thể được biên dịch thành mã máy tính có thể đọc được. Python không sử dụng một bước trung gian cho nền tảng độc lập. Thay vào đó, nền tảng độc lập là trong việc thực hiện các thông dịch viên.

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.

1 Like

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.

1 Like

Hi tutu. 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…

Tech Talk – 5 Apr 17

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.

1 Like

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.

1 Like

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ì?

1 Like

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 interpretervirtual 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].

1 Like

Bạn đọc mấy link này xem

, nói chung có mấy ý quan trọng là:

  • Ngôn ngữ Python khác với Python implementation, 1 ngôn ngữ thì không có khái niệm compiled hay interpreted mà implementation của ngôn ngữ đó mới có 2 khái niệm đó.
  • Ngôn ngữ python là cái trong file .py, còn python implementation là CPython [ cái hầu hết mọi người dùng], Jython, IronPython, PyPy.
  • CPython compile Python code ra bytecode rồi interpreted bytecode ra mã máy
  • CPython và Cython là 2 cái khác nhau
stackoverflow.com

python, interpreted-language

softwareengineering.stackexchange.com

programming-languages, python, compiler, efficiency

stackoverflow.com

python, cpython

3 Likes

Cpython là ngôn ngữ biên dịch nhé. Nó có hai giai đoạn. Giai đoạn đầu nó phân tích source code thành bytecode lưu ở dạng file đuôi pyc. Giai đoạn sau nó sử dụng máy ảo pvm hay ta thường hiểu nó là interpreter-thông dịch.máy ảo này sử dụng bytecode tạo ra ở giai đoạn trước để chạy chứ nó k biên dịch ra machine code như các ngôn ngữ như C,C++ và cũng không giống như máy ảo java hay .net. Trong java và .net nó cũng có máy ảo nhưng máy ảo đó sẽ dùng trình biên dịch JIT compiler để chuyển bytecode sang machine code. Thật sự lúc mới tìm hiểu mình cứ hay đánh đồng python giống .net hay java nhưng thực sự cách hiện thực của nó khác hoàn toàn và thật sự rất hack não. Nói chung triết lý xây dựng nên Python nó không nhất quán và bài bản như .net nên không thể vận dụng những hiểu biết bên .net hay C giải thích bên trong python.bạn nào hứng thú nghiên cứu bên trọng có thể giao lưu vs mình

Home Categories FAQ/Guidelines Terms of Service Privacy Policy

Video liên quan

Chủ Đề