Python có phải là ngôn ngữ kịch bản hoặc biên dịch không?

Về cơ bản, tất cả các ngôn ngữ kịch bản đều là ngôn ngữ lập trình. Sự khác biệt về mặt lý thuyết giữa hai ngôn ngữ này là các ngôn ngữ kịch bản không yêu cầu bước biên dịch và được diễn giải. Ví dụ, thông thường, một chương trình C cần được biên dịch trước khi chạy trong khi thông thường, một ngôn ngữ kịch bản như JavaScript hoặc PHP không cần phải biên dịch.   

Nói chung, các chương trình được biên dịch chạy nhanh hơn các chương trình được giải thích vì chúng là mã máy gốc được chuyển đổi lần đầu tiên. Ngoài ra, trình biên dịch chỉ đọc và phân tích mã một lần và báo cáo chung các lỗi mà mã có thể mắc phải, nhưng trình thông dịch sẽ đọc và phân tích các câu lệnh mã mỗi khi nó gặp chúng và dừng ngay tại trường hợp đó nếu có lỗi. Trên thực tế, sự khác biệt giữa hai loại này đang trở nên mờ nhạt do khả năng tính toán được cải thiện của phần cứng hiện đại và các phương pháp mã hóa tiên tiến.   

Một điểm khác cần lưu ý là trong khi phân loại một ngôn ngữ là ngôn ngữ kịch bản hoặc ngôn ngữ lập trình, môi trường mà ngôn ngữ đó sẽ thực thi phải được xem xét. Lý do tại sao điều này lại quan trọng là chúng ta có thể thiết kế một trình thông dịch cho ngôn ngữ C và sử dụng nó làm ngôn ngữ kịch bản, đồng thời, chúng ta có thể thiết kế một trình biên dịch cho JavaScript và sử dụng nó như một ngôn ngữ không phải kịch bản [ngôn ngữ được biên dịch]. Một ví dụ trực tiếp về điều này là V8, công cụ JavaScript của Google Chrome, công cụ biên dịch mã JavaScript thành mã máy, thay vì diễn giải nó.   

Một số ngôn ngữ kịch bản được sử dụng theo truyền thống mà không có bước biên dịch rõ ràng là JavaScript, PHP, Python, VBScript.   

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. khoảng trống

Là kịch bản Python hoặc được biên dịch?

Python vừa được biên dịch vừa là ngôn ngữ được giải thích , có nghĩa là khi chúng tôi chạy mã python, trước tiên, mã này được biên dịch và sau đó được giải thích từng dòng một. Phần biên dịch sẽ bị xóa ngay khi mã được thực thi trong Python để lập trình viên không gặp phải sự phức tạp không cần thiết.

Python có phải là ngôn ngữ kịch bản không?

Nhiều ngôn ngữ mã hóa phổ biến nhất hiện nay là ngôn ngữ kịch bản , chẳng hạn như JavaScript, PHP, Ruby, Python và một số ngôn ngữ khác. Vì các ngôn ngữ kịch bản giúp mã hóa đơn giản và nhanh hơn nên không ngạc nhiên khi chúng được sử dụng rộng rãi trong phát triển web.

Chủ Đề