Tại sao python không phải là ngôn ngữ cấp thấp?
Python thường được so sánh với các ngôn ngữ thông dịch khác như Java, JavaScript, Perl, Tcl hoặc Smalltalk. So sánh với C++, Common Lisp và Scheme cũng có thể làm sáng tỏ. Trong phần này, tôi sẽ so sánh ngắn gọn Python với từng ngôn ngữ này. Những so sánh này chỉ tập trung vào vấn đề ngôn ngữ. Trong thực tế, việc lựa chọn ngôn ngữ lập trình thường được quyết định bởi các ràng buộc khác trong thế giới thực như chi phí, tính khả dụng, đào tạo và đầu tư trước đó hoặc thậm chí là tình cảm gắn bó. Vì những khía cạnh này rất hay thay đổi, nên có vẻ lãng phí thời gian khi xem xét chúng nhiều cho sự so sánh này Show JavaCác chương trình Python thường chạy chậm hơn các chương trình Java, nhưng chúng cũng mất ít thời gian hơn để phát triển. Các chương trình Python thường ngắn hơn 3-5 lần so với các chương trình Java tương đương. Sự khác biệt này có thể là do các kiểu dữ liệu cấp cao tích hợp sẵn của Python và kiểu gõ động của nó. Ví dụ: một lập trình viên Python không lãng phí thời gian để khai báo các loại đối số hoặc biến và danh sách đa hình mạnh mẽ và các loại từ điển của Python, hỗ trợ cú pháp phong phú được tích hợp trực tiếp vào ngôn ngữ, được sử dụng trong hầu hết mọi chương trình Python. Vì gõ theo kiểu run-time nên Python runtime phải hoạt động nhiều hơn Java. Ví dụ, khi đánh giá biểu thức a+b, trước tiên nó phải kiểm tra các đối tượng a và b để tìm ra kiểu của chúng, điều này không được biết tại thời điểm biên dịch. Sau đó, nó gọi hoạt động bổ sung thích hợp, có thể là một phương thức do người dùng định nghĩa bị quá tải. Mặt khác, Java có thể thực hiện phép cộng số nguyên hoặc dấu phẩy động hiệu quả, nhưng yêu cầu khai báo biến cho a và b và không cho phép nạp chồng toán tử + đối với các thể hiện của lớp do người dùng định nghĩa Vì những lý do này, Python phù hợp hơn nhiều với tư cách là ngôn ngữ "keo", trong khi Java được mô tả tốt hơn với tư cách là ngôn ngữ triển khai cấp thấp. Trên thực tế, cả hai cùng nhau tạo nên một sự kết hợp tuyệt vời. Các thành phần có thể được phát triển bằng Java và được kết hợp để tạo thành các ứng dụng bằng Python; . Để hỗ trợ kiểu phát triển này, một triển khai Python được viết bằng Java đang được phát triển, cho phép gọi mã Python từ Java và ngược lại. Trong triển khai này, mã nguồn Python được dịch sang mã byte Java (với sự trợ giúp từ thư viện thời gian chạy để hỗ trợ ngữ nghĩa động của Python) JavascriptTập hợp con "dựa trên đối tượng" của Python gần tương đương với JavaScript. Giống như JavaScript (và không giống như Java), Python hỗ trợ phong cách lập trình sử dụng các hàm và biến đơn giản mà không cần tham gia vào các định nghĩa lớp. Tuy nhiên, đối với JavaScript, đó là tất cả. Mặt khác, Python hỗ trợ viết các chương trình lớn hơn nhiều và tái sử dụng mã tốt hơn thông qua phong cách lập trình hướng đối tượng thực sự, trong đó các lớp và tính kế thừa đóng vai trò quan trọng perlPython và Perl đến từ một nền tảng tương tự (tập lệnh Unix, cả hai đều đã phát triển vượt bậc từ lâu) và có nhiều tính năng tương tự, nhưng có một triết lý khác. Perl nhấn mạnh hỗ trợ cho các tác vụ hướng ứng dụng phổ biến, e. g. bằng cách tích hợp sẵn các biểu thức chính quy, tính năng quét tệp và tạo báo cáo. Python nhấn mạnh hỗ trợ cho các phương pháp lập trình phổ biến như thiết kế cấu trúc dữ liệu và lập trình hướng đối tượng, đồng thời khuyến khích các lập trình viên viết mã có thể đọc được (và do đó có thể bảo trì) bằng cách cung cấp một ký hiệu tao nhã nhưng không quá khó hiểu. Kết quả là Python tiến gần đến Perl nhưng hiếm khi đánh bại nó trong miền ứng dụng ban đầu của nó; tclGiống như Python, Tcl có thể được sử dụng làm ngôn ngữ mở rộng ứng dụng cũng như ngôn ngữ lập trình độc lập. Tuy nhiên, Tcl, theo truyền thống lưu trữ tất cả dữ liệu dưới dạng chuỗi, yếu về cấu trúc dữ liệu và thực thi mã thông thường chậm hơn nhiều so với Python. Tcl cũng thiếu các tính năng cần thiết để viết các chương trình lớn, chẳng hạn như không gian tên mô-đun. Do đó, trong khi một ứng dụng lớn "điển hình" sử dụng Tcl thường chứa các phần mở rộng Tcl được viết bằng C hoặc C++ dành riêng cho ứng dụng đó, thì một ứng dụng Python tương đương thường có thể được viết bằng "Python thuần túy". Tất nhiên, phát triển Python thuần túy nhanh hơn nhiều so với việc phải viết và gỡ lỗi một thành phần C hoặc C++. Người ta nói rằng phẩm chất đáng giá của Tcl là bộ công cụ Tk. Python đã sử dụng một giao diện cho Tk làm thư viện thành phần GUI tiêu chuẩn của nó Tcl 8. 0 giải quyết vấn đề tốc độ bằng cách cung cấp trình biên dịch mã byte với hỗ trợ loại dữ liệu hạn chế và thêm không gian tên. Tuy nhiên, nó vẫn là một ngôn ngữ lập trình cồng kềnh hơn nhiều nói nhỏCó lẽ sự khác biệt lớn nhất giữa Python và Smalltalk là cú pháp "chính thống" hơn của Python, giúp nó hỗ trợ đào tạo lập trình viên. Giống như Smalltalk, Python có kiểu gõ động và ràng buộc, và mọi thứ trong Python đều là đối tượng. Tuy nhiên, Python phân biệt các loại đối tượng dựng sẵn với các lớp do người dùng định nghĩa và hiện không cho phép kế thừa từ các loại dựng sẵn. Thư viện tiêu chuẩn của Smalltalk về các loại dữ liệu thu thập được tinh chỉnh hơn, trong khi thư viện của Python có nhiều phương tiện hơn để xử lý các thực tế Internet và WWW như email, HTML và FTP Python có một triết lý khác về môi trường phát triển và phân phối mã. Trong khi Smalltalk theo truyền thống có một "hình ảnh hệ thống" nguyên khối bao gồm cả môi trường và chương trình của người dùng, Python lưu trữ cả mô-đun tiêu chuẩn và mô-đun người dùng trong các tệp riêng lẻ có thể dễ dàng sắp xếp lại hoặc phân phối bên ngoài hệ thống. Một hậu quả là có nhiều tùy chọn để gắn Giao diện người dùng đồ họa (GUI) vào chương trình Python, vì GUI không được tích hợp vào hệ thống C++Hầu như mọi thứ nói về Java cũng áp dụng cho C++, hơn thế nữa. trong đó mã Python thường ngắn hơn 3-5 lần so với mã Java tương đương, nó thường ngắn hơn 5-10 lần so với mã C++ tương đương. Bằng chứng giai thoại cho thấy rằng một lập trình viên Python có thể hoàn thành trong hai tháng mà hai lập trình viên C ++ không thể hoàn thành trong một năm. Python tỏa sáng như một ngôn ngữ kết dính, dùng để kết hợp các thành phần được viết bằng C++ Sơ đồ và Lisp thông thườngCác ngôn ngữ này gần giống với Python về mặt ngữ nghĩa động, nhưng lại quá khác biệt về cách tiếp cận cú pháp khiến việc so sánh gần như trở thành một cuộc tranh luận tôn giáo. việc thiếu cú pháp của Lisp là một lợi thế hay bất lợi? . Thông thường, các thuộc tính trong thế giới thực là quyết định. Lisp thông thường là lớn (theo mọi nghĩa) và thế giới Scheme bị phân mảnh giữa nhiều phiên bản không tương thích, trong đó Python có một triển khai nhỏ gọn, miễn phí, duy nhất Python có thấp khôngPython là ngôn ngữ lập trình cấp cao thông dịch, hướng đối tượng với ngữ nghĩa động.
Tại sao Python được coi là caoPython là ngôn ngữ lập trình cấp cao, hướng đối tượng. Hướng đối tượng có nghĩa là ngôn ngữ này dựa trên các đối tượng (chẳng hạn như dữ liệu) chứ không phải chức năng và ngôn ngữ cấp cao có nghĩa là con người dễ hiểu .
Tại sao Python là một ngôn ngữ yếu?Nhược điểm của việc sử dụng Python
. Trình thông dịch khiến bộ điều hành mã hóa tự động chạy chậm lại. its execution takes place with the help of an interpreter, rather than a compiler. The interpreter causes the coding executive to slow down dynamically.
Tại sao Python dễ di chuyển hơn các ngôn ngữ cấp thấp hơn?Ngôn ngữ cấp cao dành cho lập trình viên sử dụng và mã viết được tiếp tục diễn giải thành ngôn ngữ cấp thấp. Giống như C++ hay Java, trước khi chạy, Python phải được xử lý . Điều này cho phép tính di động của Python — nó có thể chạy trên các loại máy tính khác nhau mà hầu như không cần sửa đổi. |