Cuộc tranh luận về công cụ phát triển Python nóng lên khi các lập trình viên chấp nhận ngăn xếp công nghệ hiện đại

Nhóm Cộng đồng BigGo
Cuộc tranh luận về công cụ phát triển Python nóng lên khi các lập trình viên chấp nhận ngăn xếp công nghệ hiện đại

Sự phổ biến ngày càng tăng của Python trong AI và machine learning đã khơi mào những cuộc thảo luận sôi nổi trong cộng đồng về các công cụ phát triển và lựa chọn kiến trúc của ngôn ngữ này. Trong khi nhiều lập trình viên đang chấp nhận Python vì khả năng AI của nó, cộng đồng vẫn chia rẽ về một số khía cạnh cơ bản của ngôn ngữ và hệ sinh thái của nó.

Cuộc tranh luận cú pháp lớn: Vẻ đẹp so với chức năng

Một trong những cuộc thảo luận nóng nhất xoay quanh các phương thức dunder của Python - những phương thức đặc biệt được bao quanh bởi dấu gạch dưới kép như __init____new__. Những người chỉ trích cho rằng các phương thức này đại diện cho sự xấu xí kế thừa khiến mã Python trông kém hấp dẫn so với các ngôn ngữ khác. Họ chỉ ra các lựa chọn thay thế sạch sẽ hơn trong các ngôn ngữ như Kotlin, Ruby và JavaScript, nơi các constructor sử dụng từ khóa dễ đọc hơn.

Tuy nhiên, những người bảo vệ cách tiếp cận của Python lập luận rằng quy ước dấu gạch dưới kép phục vụ một mục đích quan trọng. Nó xác định rõ ràng các phương thức ma thuật không được gọi trực tiếp, làm cho ý định của mã trở nên rõ ràng hơn đối với các lập trình viên khác. Sự phân biệt trực quan giúp tách biệt các phương thức đặc biệt khỏi các API công khai thông thường.

Quản lý gói: Vẫn là điểm đau mặc dù có tiến bộ

Việc quản lý gói của Python tiếp tục làm các lập trình viên thất vọng, ngay cả với những cải tiến gần đây. Cộng đồng thừa nhận rằng các công cụ như uv đã cải thiện đáng kể trải nghiệm, nhưng nhiều người chỉ ra rằng hàng thập kỷ các dự án kế thừa vẫn sử dụng các cách tiếp cận cũ hơn, có vấn đề hơn. Thách thức trở nên đặc biệt nghiêm trọng khi xử lý các phụ thuộc mã gốc và khả năng tương thích đa nền tảng.

Vẫn còn 20 năm các dự án sử dụng mọi thứ đã có trước khi uv xuất hiện. Chúng không nâng cấp ngay khi uv ra đời.

Tình hình trở nên phức tạp bởi hệ sinh thái phân mảnh của Python, nơi các dự án khác nhau sử dụng các trình quản lý gói khác nhau, công cụ môi trường ảo và cách tiếp cận quản lý phụ thuộc khác nhau. Điều này tạo ra đau đầu cho các lập trình viên cần làm việc trên nhiều dự án hoặc duy trì các codebase kế thừa.

So sánh Stack Phát triển Python Hiện đại

Danh mục Công cụ Cách tiếp cận Truyền thống Giải pháp Thay thế Hiện đại
Quản lý Package pip + requirements.txt uv
Định dạng Code Định dạng thủ công ruff
Kiểm tra Type Lỗi Runtime pyright + typing
Testing unittest pytest
Tài liệu Tài liệu thủ công mkDocs
Phát triển API Flask/Django FastAPI
Cấu trúc Project Tổ chức tùy ý Mono-repo với sự tách biệt frontend/backend

Kiểm tra thực tế tích hợp nền tảng

Trong khi những người ủng hộ Python thường tuyên bố ngôn ngữ này được tích hợp tự nhiên trên các hệ thống Unix, thực tế phức tạp hơn. Nhiều hệ thống BSD không bao gồm Python trong cài đặt cơ sở của chúng, và macOS đã loại bỏ Python 2 trong một bản cập nhật giữa chu kỳ khiến nhiều lập trình viên bất ngờ. Ngay cả các bản phân phối Linux cũng khác nhau đáng kể về phiên bản Python nào chúng bao gồm và cách chúng được cấu hình.

Sự không nhất quán này buộc các lập trình viên phải dựa vào containerization, trình quản lý phiên bản, hoặc các công cụ như uv để đảm bảo môi trường nhất quán trên các nền tảng khác nhau. Lời hứa về tính khả dụng Python phổ quát không phù hợp với thực tế lộn xộn của quản trị hệ thống hiện đại.

Tình trạng cài đặt Python theo từng nền tảng

  • Linux: Được tích hợp sẵn trong hầu hết các bản phân phối desktop/server (có một số ngoại lệ)
  • macOS: Python 2 đã bị loại bỏ trong Monterey 12.3; Python 3 có sẵn thông qua Xcode Developer Tools
  • Hệ thống BSD: Thường không được tích hợp trong hệ thống cơ bản
  • Windows: Không được tích hợp mặc định; yêu cầu cài đặt riêng biệt

Lưu ý: Các phiên bản Python hệ thống thường đã lỗi thời và không được khuyến nghị cho công việc phát triển

Tình trạng khó xử trong lựa chọn ngôn ngữ do AI thúc đẩy

Sự gia tăng trong việc áp dụng Python được thúc đẩy bởi các cơ hội AI và machine learning đã tạo ra một hiện tượng thú vị. Một số lập trình viên bày tỏ lo ngại rằng xu hướng này đang đẩy mọi người về phía sự tuân thủ thay vì khám phá các cách tiếp cận lập trình đa dạng. Sự tập trung của công cụ AI xung quanh Python có nghĩa là các lập trình viên thường cảm thấy bị buộc phải sử dụng nó bất kể nó có phải là lựa chọn tốt nhất cho trường hợp sử dụng cụ thể của họ hay không.

Điều này đã dẫn đến một cuộc thảo luận rộng hơn về tiêu chí lựa chọn ngôn ngữ. Trong khi Python có thể là ngôn ngữ tốt thứ hai cho bất kỳ công việc nào, như một câu nói của cộng đồng, câu hỏi vẫn còn là liệu việc áp dụng do AI thúc đẩy có đang giúp đỡ hay cản trở sự đa dạng và đổi mới ngôn ngữ lập trình.

Các cuộc tranh luận đang diễn ra của cộng đồng Python phản ánh sự trưởng thành và việc áp dụng rộng rãi của ngôn ngữ này. Khi nhiều lập trình viên chấp nhận Python cho các ứng dụng sản xuất, những cuộc thảo luận này về công cụ, cú pháp và quản lý hệ sinh thái có thể sẽ tiếp tục định hình hướng đi tương lai của ngôn ngữ.

Tham khảo: I'm Switching to Python and Actually Liking It