Trình phân tích cú pháp bytecode python
Mã byte (còn được gọi là mã di động hoặc mã p[cần dẫn nguồn]) là một dạng tập lệnh được thiết kế để thực thi hiệu quả bởi trình thông dịch phần mềm. Không giống như mã nguồn [1] mà con người có thể đọc được, mã byte là mã số nhỏ gọn, hằng số và tham chiếu (thường là địa chỉ số) mã hóa kết quả phân tích cú pháp của trình biên dịch và thực hiện phân tích ngữ nghĩa của những thứ như loại, phạm vi và độ sâu lồng nhau của các đối tượng chương trình Show Tên mã byte bắt nguồn từ các tập lệnh có mã lệnh một byte theo sau là các tham số tùy chọn. Các biểu diễn trung gian như mã byte có thể được xuất ra bằng cách triển khai ngôn ngữ lập trình để dễ hiểu hoặc nó có thể được sử dụng để giảm sự phụ thuộc vào phần cứng và hệ điều hành bằng cách cho phép cùng một mã chạy đa nền tảng, trên các thiết bị khác nhau. Mã byte thường có thể được thực thi trực tiếp trên máy ảo (máy p-code, i. e. , trình thông dịch) hoặc nó có thể được biên dịch thêm thành mã máy để có hiệu suất tốt hơn Vì các hướng dẫn mã byte được xử lý bằng phần mềm, nên chúng có thể phức tạp tùy ý, nhưng dù sao thì chúng cũng giống với các hướng dẫn phần cứng truyền thống. máy ngăn xếp ảo là phổ biến nhất, nhưng máy đăng ký ảo cũng đã được xây dựng. [2][3] Các phần khác nhau thường có thể được lưu trữ trong các tệp riêng biệt, tương tự như các mô-đun đối tượng, nhưng được tải động trong quá trình thực thi Thi hành[sửa]Một chương trình mã byte có thể được thực thi bằng cách phân tích cú pháp và thực hiện trực tiếp các lệnh, từng lệnh một. Loại trình thông dịch bytecode này rất di động. Một số hệ thống, được gọi là trình dịch động hoặc trình biên dịch đúng lúc (JIT), dịch mã byte thành mã máy khi cần thiết trong thời gian chạy. Điều này làm cho máy ảo dành riêng cho phần cứng nhưng không làm mất tính di động của mã byte. Ví dụ: mã Java và Smalltalk thường được lưu trữ ở định dạng mã byte, sau đó thường được JIT biên dịch để dịch mã byte thành mã máy trước khi thực thi. Điều này tạo ra độ trễ trước khi chương trình được chạy, khi mã byte được biên dịch thành mã máy gốc, nhưng cải thiện đáng kể tốc độ thực thi so với việc diễn giải mã nguồn trực tiếp, thường là khoảng một bậc độ lớn (10x). [4] Do lợi thế về hiệu suất của nó, ngày nay, nhiều triển khai ngôn ngữ thực hiện một chương trình theo hai giai đoạn, đầu tiên biên dịch mã nguồn thành mã byte, sau đó chuyển mã byte sang máy ảo. Có các máy ảo dựa trên mã byte thuộc loại này dành cho Java, Raku, Python, PHP,[a] Tcl, mawk và Forth (tuy nhiên, Forth hiếm khi được biên dịch qua mã byte theo cách này và thay vào đó, máy ảo của nó chung chung hơn). Việc triển khai Perl và Ruby 1. 8 thay vào đó hoạt động bằng cách đi bộ một biểu diễn cây cú pháp trừu tượng bắt nguồn từ mã nguồn Gần đây hơn, các tác giả của V8[1] và Dart[7] đã thách thức quan điểm rằng mã byte trung gian là cần thiết để triển khai VM nhanh chóng và hiệu quả. Cả hai triển khai ngôn ngữ này hiện đang thực hiện biên dịch JIT trực tiếp từ mã nguồn sang mã máy mà không có trung gian mã byte. [số 8] Các ví dụ[sửa](disassemble '(lambda (x) (print x))) ; disassembly for (LAMBDA (X)) ; 2436F6DF: 850500000F22 TEST EAX, [#x220F0000] ; no-arg-parsing entry point ; E5: 8BD6 MOV EDX, ESI ; E7: 8B05A8F63624 MOV EAX, [#x2436F6A8] ; # ; ED: B904000000 MOV ECX, 4 ; F2: FF7504 PUSH DWORD PTR [EBP+4] ; F5: FF6005 JMP DWORD PTR [EAX+5] ; F8: CC0A BREAK 10 ; error trap ; FA: 02 BYTE #X02 ; FB: 18 BYTE #X18 ; INVALID-ARG-COUNT-ERROR ; FC: 4F BYTE #X4F ; ECX Mã được biên dịch có thể được phân tích và điều tra bằng công cụ tích hợp để gỡ lỗi mã byte cấp thấp. Công cụ này có thể được khởi tạo từ trình bao, ví dụ Hướng dẫn thủ công này tồn tại để cung cấp cho cả nhà phát triển Python mới làm quen và chuyên gia một cuốn sổ tay thực hành tốt nhất để cài đặt, cấu hình và sử dụng Python hàng ngày Hướng dẫn này được đưa ra ý kiến theo cách gần như, nhưng không hoàn toàn, hoàn toàn không giống với tài liệu chính thức của Python. Bạn sẽ không tìm thấy danh sách mọi khung web Python có sẵn tại đây. Thay vào đó, bạn sẽ tìm thấy một danh sách ngắn gọn đẹp mắt về các tùy chọn được đề xuất cao Ghi chú Việc sử dụng Python 3 được khuyến nghị cao hơn Python 2. Cân nhắc nâng cấp các ứng dụng và cơ sở hạ tầng của bạn nếu bạn thấy mình vẫn đang sử dụng Python 2 trong phiên bản sản xuất hiện nay. Nếu bạn đang sử dụng Python 3, xin chúc mừng — bạn thực sự là một người có gu thẩm mỹ tuyệt vời. —Kenneth Reitz Bắt đầu nào. Nhưng trước tiên, hãy đảm bảo rằng bạn biết chiếc khăn của mình ở đâu Bắt đầu với Python¶Bạn mới sử dụng Python?
Môi trường phát triển Python¶Phần này của hướng dẫn tập trung vào môi trường phát triển Python và các công cụ thực hành tốt nhất hiện có để viết mã Python
Viết mã Python tuyệt vời¶Phần này của hướng dẫn tập trung vào các phương pháp hay nhất để viết mã Python
Hướng dẫn kịch bản cho các ứng dụng Python¶Phần này của hướng dẫn tập trung vào lời khuyên về công cụ và mô-đun dựa trên các tình huống khác nhau
Vận chuyển Great Python Code¶Phần này của hướng dẫn tập trung vào việc chia sẻ và triển khai mã Python của bạn
Ghi chú bổ sung¶Phần này của hướng dẫn, chủ yếu là văn xuôi, bắt đầu với một số thông tin cơ bản về Python, sau đó tập trung vào các bước tiếp theo
Ghi chú Các nốt được xác định trong tất cả các thang âm diatonic và chromatic đã bị loại trừ có chủ ý khỏi danh sách các nốt bổ sung này. Ngoài ra, lưu ý này |