Python – bất chấp việc từng làm mưa làm gió khắp nơi, tăng trưởng chóng mặt, được yêu thích và ứng dụng trên toàn thế giới thì nay đang mất dần đi sự hấp dẫn và ngày càng bộc lộ nhiều yếu điểm. Kể từ khi Python được phát hành vào đầu những năm 1990, nó đã tạo ra rất nhiều dấu ấn. Cộng đồng lập trình phải mất ít nhất 2 thập kỷ để đánh giá cao sự tồn tại của nó, nhưng kể từ đó, nó đã vượt xa C, C #, Java và thậm chí cả Javascript về mức độ phổ biến.
Mặc dù Python thống trị các lĩnh vực Khoa học Dữ liệu và Máy học, và ở một mức độ nào đó là cả Tính toán Khoa học và Toán học, nhưng nó có những nhược điểm khi so sánh với các ngôn ngữ mới hơn như Julia, Swift và Java.
1. Tại sao Python phổ biến đến thế?
Một trong những lý do chính đằng sau sự phát triển vượt bậc của Python là nó dễ đọc, dễ hiểu, dễ học, khiến nó trở nên cực kỳ hấp dẫn đối với người mới bắt đầu và ngay cả những người ngại lập trình vì cú pháp khó và lạ lẫm của các ngôn ngữ như C / C ++.
Python nhấn mạnh nhiều vào khả năng đọc code. Với cú pháp ngắn gọn và dễ hiểu, nó cho phép các LTV thể hiện ý tưởng và khái niệm mà không cần viết hàng cây số code dài dằng dặc (như trường hợp của các ngôn ngữ cấp thấp hơn như C hoặc Java). Bằng sự đơn giản, Python tích hợp liền mạch với các ngôn ngữ lập trình khác (như giảm tải các tác vụ đòi hỏi nhiều CPU sang C / C ++), làm cho nó trở thành một ngôn ngữ cực thích hợp với những LTV đa ngôn ngữ.
Tuy nhiên, một nguyên nhân khác cho tính linh hoạt của Python là do các doanh nghiệp sử dụng nhiều (bao gồm cả FAANG) cũng như vô số các dự án nhỏ hơn. Ngày nay, bạn có thể thấy Python được ứng dụng cho hầu hết mọi thứ bạn có thể nghĩ đến - đối với máy tính khoa học, bạn đã có Numpy, Sklearn cho Học máy và Caer cho Computer Vision.
2. Python đang bộc lộ nhiều điểm yếu
Tốc độ xử lý chậm, chậm kinh khủng
Đây có lẽ là điều không cần phải bàn cãi. Tốc độ thường được coi là một trong những điều quan trọng đối với LTV, nhưng tốc độ xử lý của Python thì lại quá chán.
Trong số các lý do chính khiến Python “chậm”, một là do nó được hiểu trái ngược với biên dịch, cuối cùng dẫn đến thời gian thực thi chậm hơn; và hai là nó được nhập động (kiểu dữ liệu của các biến được Python tự động suy ra trong quá trình thực thi).
Trên thực tế, "Python chậm" có xu hướng ảnh hưởng nhiều hơn đến những người mới bắt đầu nhưng thực ra, còn hơn thế nữa.
Lấy ví dụ, TensorFlow, một thư viện Học máy có sẵn bằng Python. Các thư viện này thực sự được viết bằng C ++ và có sẵn bằng Python, kiểu tạo thành một “trình bao bọc” Python xung quanh việc triển khai C ++. Điều tương tự cũng xảy ra với Numpy và ở một mức độ nào đó, thậm chí cả Caer.
Python có GIL (l)
Một trong những lý do chính dẫn đến sự chậm chạp của Python là sự hiện diện của GIL (Global Interpreter Lock) cho phép chỉ một chuỗi thực thi tại một thời điểm. Mặc dù điều này tăng hiệu suất của phân luồng đơn, nhưng nó đặt ra một hạn chế về tính song song, nơi các LTV phải triển khai các chương trình đa xử lý trái ngược với các chương trình đa luồng, để cải thiện tốc độ.
Không tốt cho các tác vụ đòi hỏi nhiều bộ nhớ
Khi các đối tượng vượt ra khỏi phạm vi, Python có các garbage collection tự động nhằm mục đích loại bỏ các sự phức tạp liên quan đến quản lý bộ nhớ mà C/C ++ có liên quan. Do tính linh hoạt (hoặc thiếu) trong việc chỉ định kiểu dữ liệu, dung lượng bộ nhớ Python sử dụng có thể nhanh chóng quá tải.
Hơn nữa, một số lỗi có thể không được Python chú ý có thể xuất hiện trong thời gian chạy, cuối cùng làm chậm quá trình xử lý.
Mờ nhạt trong Điện toán di động
Với sự thay đổi lớn từ máy tính để bàn sang điện thoại thông minh, rõ ràng là cần có nhiều ngôn ngữ mạnh mẽ hơn để xây dựng phần mềm cho điện thoại di động. Mặc dù Python có một đại diện khá lớn trong nền tảng máy tính để bàn và máy chủ, nhưng nó có xu hướng bị thua thiệt về phát triển di động do thiếu xử lý điện toán di động mạnh mẽ.
Trong những năm gần đây, đã có rất nhiều tiến bộ trong lĩnh vực này, nhưng những thư viện mới được bổ sung này thậm chí còn không bằng các đối thủ cạnh tranh mạnh mẽ của họ như Kotlin, Swift và Java.
Sự trỗi dậy của các ngôn ngữ khác
Gần đây, các ngôn ngữ mới hơn như Julia, Rust và Swift đã xuất hiện trên radar sử dụng rất nhiều khái niệm thiết kế tốt từ Python, C / C ++ và Java - Rust đảm bảo khá nhiều về tính an toàn và đồng thời của bộ nhớ khi chạy, và cung cấp khả năng tương tác với WebAssembly; Swift gần như nhanh như C do nó được hỗ trợ cho Chuỗi công cụ biên dịch LLVM và Julia cung cấp I / O không đồng bộ cho các tác vụ chuyên sâu I / O và cực kỳ nhanh.
Tạm kết
Python chưa bao giờ được xây dựng để trở thành ngôn ngữ lập trình tốt nhất. Nó không bao giờ được xây dựng để sử dụng C / C ++ và Java. Nó được xây dựng để trở thành một ngôn ngữ lập trình có mục đích chung nhấn mạnh vào cú pháp lấy tiếng Anh làm trung tâm và có thể đọc được cho phép con người phát triển nhanh chóng các chương trình và ứng dụng.
Python, giống như mọi ngôn ngữ khác, là một công cụ. Đôi khi, nó là công cụ tốt nhất. Đôi khi nó không phải. Thông thường, tôi thấy nó "chỉ tạm ổn".