Python có chuyển đổi mã thành c không?

Là một Kỹ sư Máy học, tôi đã sử dụng Python được hơn một năm. Dạo này mình cũng bắt đầu học C++ cho vui. Nó khiến tôi nhận ra Python dễ dàng và trực quan như thế nào. Tôi tò mò hơn về cách Python khác với các ngôn ngữ khác và cách nó hoạt động. Trong blog này, tôi cố gắng khám phá hoạt động bên trong của Python

Python bắt đầu như một dự án sở thích của Guido Van Rossum và được phát hành lần đầu tiên vào năm 1991. Một ngôn ngữ có mục đích chung, Python đang cung cấp năng lượng cho phần lớn các công ty như Netflix và Instagram. Trong một cuộc phỏng vấn, Guido so sánh Python với các ngôn ngữ như Java hoặc Swift và nói rằng mặc dù hai ngôn ngữ sau là lựa chọn tuyệt vời cho các nhà phát triển phần mềm — những người có công việc hàng ngày là lập trình, nhưng Python được tạo ra cho những người có công việc hàng ngày không liên quan gì đến phần mềm

Khi bạn đọc về Python, bạn thường bắt gặp những từ như — được biên dịch so với thông dịch, mã byte so với mã máy, gõ động so với gõ tĩnh, trình thu gom rác, v.v. Wikipedia mô tả Python là

Python là một ngôn ngữ lập trình thông dịch, cấp cao, có mục đích chung. Nó được gõ động và thu gom rác

ngôn ngữ thông dịch

Khi bạn viết một chương trình bằng C/C++, bạn phải biên dịch nó. Biên dịch liên quan đến việc dịch mã có thể hiểu được của con người sang mã máy có thể hiểu được hoặc Mã máy. Mã máy là dạng hướng dẫn cấp cơ sở có thể được CPU thực thi trực tiếp. Sau khi biên dịch thành công, mã của bạn sẽ tạo một tệp thực thi. Việc thực thi tệp này sẽ chạy từng bước các hoạt động trong mã của bạn

Đối với hầu hết các phần, Python là ngôn ngữ được thông dịch chứ không phải ngôn ngữ được biên dịch, mặc dù biên dịch là một bước. Mã Python, được viết bằng. py trước tiên được biên dịch thành mã byte (được thảo luận chi tiết hơn) được lưu trữ với một. pyc hoặc. định dạng pyo

Thay vì dịch mã nguồn sang mã máy như C++, mã Python nó dịch sang mã byte. Mã byte này là một bộ hướng dẫn cấp thấp có thể được thực thi bởi trình thông dịch. Trong hầu hết các PC, trình thông dịch Python được cài đặt tại /usr/local/bin/python3. 8. Thay vì thực hiện các lệnh trên CPU, các lệnh mã byte được thực thi trên Máy ảo

Tại sao giải thích?

Một lợi thế phổ biến của ngôn ngữ thông dịch là chúng độc lập với nền tảng. Miễn là mã byte Python và Máy ảo có cùng phiên bản, mã byte Python có thể được thực thi trên mọi nền tảng (Windows, MacOS, v.v.)

Gõ động là một lợi thế khác. Trong các ngôn ngữ kiểu tĩnh như C++, bạn phải khai báo kiểu biến và bất kỳ sự khác biệt nào như thêm chuỗi và số nguyên đều được kiểm tra trong thời gian biên dịch. Trong các ngôn ngữ được gõ mạnh như Python, công việc của trình thông dịch là kiểm tra tính hợp lệ của các loại biến và các thao tác được thực hiện

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

Dynamic typing cung cấp rất nhiều sự tự do, nhưng đồng thời nó làm cho mã của bạn trở nên rủi ro và đôi khi khó gỡ lỗi

Python thường bị cho là 'chậm chạp'. Bây giờ, trong khi thuật ngữ này là tương đối và được tranh luận rất nhiều, thì lý do chậm là do trình thông dịch phải làm thêm công việc để dịch lệnh mã byte thành một dạng có thể được thực thi trên máy. Một bài đăng trên StackOverflow giúp dễ hiểu hơn bằng cách sử dụng phép loại suy -

Nếu bạn có thể nói chuyện bằng ngôn ngữ mẹ đẻ của mình với ai đó, điều đó nói chung sẽ hiệu quả hơn là nhờ một thông dịch viên phải dịch ngôn ngữ của bạn sang một ngôn ngữ khác để người nghe hiểu

Bộ sưu tập rác chính xác là gì?

Trong các ngôn ngữ lập trình cũ hơn, việc cấp phát bộ nhớ khá thủ công. Nhiều khi bạn sử dụng các biến không còn được sử dụng hoặc được tham chiếu ở bất kỳ nơi nào khác trong chương trình, chúng cần được xóa khỏi bộ nhớ. Garbage Collector làm điều đó cho bạn. Nó tự động giải phóng dung lượng mà bạn không cần làm gì cả. Việc quản lý bộ nhớ hoạt động theo hai cách —

Nói một cách đơn giản, nó theo dõi số lượng tham chiếu đến một đối tượng. Khi con số đó giảm xuống 0, nó sẽ xóa đối tượng đó. Điều này được gọi là đếm tham chiếu. Điều này không thể bị vô hiệu hóa trong Python

Trong trường hợp đối tượng tự tham chiếu hoặc hai đối tượng tham chiếu lẫn nhau, một quy trình được gọi là bộ sưu tập rác tạo sẽ giúp. Đây là điều mà việc đếm tham chiếu truyền thống không thể giải quyết được

__pycache__ là gì?

Nhiều lần trong dự án cá nhân của bạn hoặc trên GitHub, bạn có thể đã thấy một thư mục có tên __pycache__ được tạo tự động

/folder   - __pycache__       - preprocess.cpython-36.pyc   - preprocess.py

Như bạn có thể thấy, tên tệp giống với tên bên ngoài thư mục __pycache__. Các. phần mở rộng pyc cho chúng tôi biết rằng tệp chứa mã byte cho tiền xử lý. py. Tên cpython biểu thị loại trình thông dịch. CPython có nghĩa là trình thông dịch được triển khai bằng ngôn ngữ C. Tương tự, JPython là trình thông dịch Python được triển khai trong Java

Nhưng tại sao thư mục được tạo ở nơi đầu tiên? . Trừ khi bạn thay đổi mã Python của mình, việc biên dịch lại thành mã byte sẽ tránh được, do đó tiết kiệm thời gian

Tôi đã bắt đầu blog cá nhân của mình và tôi không có ý định viết thêm những bài báo hay trên Medium. Hỗ trợ blog của tôi bằng cách đăng ký vào thenlp. không gian

Python có được xây dựng từ C không?

Trình thông dịch Python có tên là “CPython” và được viết bằng ngôn ngữ lập trình C . Đây là triển khai mặc định cho Python.

Python có chuyển đổi thành mã máy không?

Python không chuyển đổi mã của nó thành mã máy , điều mà phần cứng có thể hiểu được. Nó thực sự chuyển đổi nó thành một thứ gọi là mã byte. Vì vậy, trong python, quá trình biên dịch xảy ra, nhưng nó không phải là ngôn ngữ máy. Đó là mã byte (.

C và Python có thể hoạt động cùng nhau không?

Mở rộng Python bằng C hoặc C++ Việc thêm các mô-đun tích hợp mới vào Python khá dễ dàng, nếu bạn biết cách lập trình bằng C. Such extension modules can do two things that can't be done directly in Python: they can implement new built-in object types, and they can call C library functions and system calls.

Python được biên dịch thành gì?

Mã Python, được viết bằng. py trước tiên được biên dịch thành mã byte (được thảo luận chi tiết hơn) được lưu trữ với . pyc hoặc. định dạng pyo .