Python 4 được phát hành khi nào?

Những người mới làm quen với ý tưởng python đôi khi tham khảo ý tưởng "Python 4000" khi đề xuất các thay đổi không tương thích ngược không cung cấp đường dẫn di chuyển rõ ràng từ mã Python 3 hợp pháp hiện tại. Xét cho cùng, chúng tôi đã cho phép loại thay đổi đó đối với Python 3. 0, vậy tại sao chúng tôi không cho phép nó cho Python 4. 0?

Tôi đã nghe câu hỏi đó đủ nhiều lần rồi [bao gồm cả cụm từ được quan tâm hơn "Bạn đã thực hiện một lần vi phạm khả năng tương thích ngược lớn, làm sao tôi biết bạn sẽ không lặp lại điều đó nữa?"], nên tôi nghĩ rằng tôi nên ghi lại câu trả lời của mình tại đây

Kỳ vọng hiện tại đối với Python 4 là gì. 0?

Lập trình và phát triển

  • Blog nhà phát triển mũ đỏ
  • Lập trình cheat sheet
  • Thử miễn phí. Đăng ký học Red Hat
  • sách điện tử. Giới thiệu về lập trình với Bash
  • Bash Shell Scripting Cheat Sheet
  • sách điện tử. Hiện đại hóa doanh nghiệp Java

Kỳ vọng hiện tại của tôi là Python 4. 0 sẽ chỉ là "bản phát hành sau Python 3. 9". Đó là nó. Không có thay đổi sâu sắc nào đối với ngôn ngữ, không có sự cố tương thích ngược lớn nào - bắt nguồn từ Python 3. 9 đến 4. 0 sẽ ổn định như đi từ Python 3. 3 đến 3. 4 [hoặc từ 2. 6 đến 2. 7]. Tôi thậm chí mong đợi Giao diện nhị phân ứng dụng ổn định [như được xác định lần đầu trong PEP 384] sẽ được giữ nguyên qua ranh giới

Với tốc độ phát hành tính năng ngôn ngữ hiện tại [khoảng 18 tháng một lần], điều đó có nghĩa là chúng ta có thể sẽ thấy Python 4. 0 vào năm 2023, thay vì xem Python 3. 10

Vậy Python sẽ tiếp tục phát triển như thế nào?

Đầu tiên và quan trọng nhất, không có gì thay đổi về quy trình Đề xuất cải tiến Python - các thay đổi tương thích ngược vẫn được đề xuất mọi lúc, với các mô-đun mới [như asyncio] và các tính năng ngôn ngữ [như yield from] được thêm vào để nâng cao khả năng có sẵn cho các ứng dụng Python. Thời gian trôi qua, Python 3 sẽ tiếp tục vượt xa Python 2 về các khả năng mà nó cung cấp theo mặc định, ngay cả khi người dùng Python 2 có quyền truy cập vào các khả năng tương đương thông qua các mô-đun bên thứ ba hoặc các bản nhập từ Python 3

Các tiện ích mở rộng và triển khai trình thông dịch cạnh tranh cũng sẽ tiếp tục khám phá các cách khác nhau để nâng cao Python, bao gồm khám phá của PyPy về tạo trình biên dịch JIT và bộ nhớ giao dịch phần mềm, cũng như khám phá của cộng đồng khoa học và phân tích dữ liệu về lập trình hướng mảng tận dụng tối đa khả năng vector hóa được cung cấp . Khả năng tích hợp với các thời gian chạy máy ảo khác [như JVM và CLR] cũng được dự kiến ​​sẽ cải thiện theo thời gian, đặc biệt khi những bước tiến mà Python đang tạo ra trong lĩnh vực giáo dục có thể sẽ khiến nó trở nên phổ biến hơn bao giờ hết như một ngôn ngữ kịch bản nhúng trong các ứng dụng lớn hơn chạy trong

Đối với các thay đổi không tương thích ngược, PEP 387 cung cấp thông tin tổng quan hợp lý về phương pháp đã được sử dụng trong nhiều năm trong chuỗi Python 2 và vẫn được áp dụng cho đến ngày nay. nếu một tính năng được xác định là quá có vấn đề, thì tính năng đó có thể không được dùng nữa và cuối cùng bị xóa

Tuy nhiên, một số thay đổi khác đã được thực hiện đối với quy trình phát triển và phát hành khiến cho việc ngừng sử dụng như vậy sẽ ít cần thiết hơn trong chuỗi Python 3

  • sự nhấn mạnh nhiều hơn vào Chỉ mục gói Python, thể hiện qua sự hợp tác giữa nhóm phát triển cốt lõi CPython và Cơ quan quản lý bao bì Python, cũng như gói trình cài đặt pip với Python 3. 4+, giảm áp lực phải thêm các mô-đun vào thư viện chuẩn trước khi chúng đủ ổn định để đáp ứng chu kỳ cập nhật ngôn ngữ tương đối chậm
  • khái niệm "API tạm thời" [được giới thiệu trong PEP 411] cho phép áp dụng giai đoạn "quyết định" cho các thư viện và API được đánh giá là có khả năng hưởng lợi từ phản hồi rộng hơn trước khi đưa ra các đảm bảo về khả năng tương thích ngược tiêu chuẩn
  • rất nhiều hành vi kế thừa tích lũy thực sự đã bị loại bỏ trong quá trình chuyển đổi Python 3 và các yêu cầu đối với các bổ sung mới cho Python và thư viện chuẩn hiện nay nghiêm ngặt hơn nhiều so với trong Python 1. x và Python 2. x ngày
  • sự phát triển rộng rãi của các thư viện và khung Python 2/3 "nguồn đơn" khuyến khích mạnh mẽ việc sử dụng "không dùng nữa" trong Python 3, ngay cả khi các tính năng được thay thế bằng các lựa chọn thay thế mới hơn, được ưu tiên hơn. Trong những trường hợp này, một thông báo ngừng sử dụng được đặt trong tài liệu, gợi ý cách tiếp cận được ưu tiên cho mã mới, nhưng không có cảnh báo ngừng sử dụng có lập trình nào được thêm vào. Điều này cho phép mã hiện có, bao gồm mã hỗ trợ cả Python 2 và Python 3, không bị thay đổi [với chi phí là người dùng mới có khả năng phải tìm hiểu thêm một chút khi được giao nhiệm vụ duy trì cơ sở mã hiện có]

Từ [hầu hết] tiếng Anh đến tất cả các ngôn ngữ viết

Cũng cần lưu ý rằng Python 3 không được kỳ vọng sẽ gây rối như hóa ra. Trong số tất cả các thay đổi không tương thích ngược trong Python 3, nhiều rào cản nghiêm trọng đối với việc di chuyển có thể được đặt dưới chân một dấu đầu dòng nhỏ trong PEP 3100

  • Đặt tất cả các chuỗi thành Unicode và có loại byte[] riêng biệt. Loại chuỗi mới sẽ được gọi là 'str'

PEP 3100 là ngôi nhà cho những thay đổi của Python 3 được coi là đủ không gây tranh cãi đến mức không có PEP riêng biệt nào được coi là cần thiết. Lý do thay đổi cụ thể này được coi là không gây tranh cãi là vì trải nghiệm của chúng tôi với Python 2 đã chỉ ra rằng các tác giả của khung web và GUI đã đúng. Xử lý hợp lý Unicode với tư cách là nhà phát triển ứng dụng có nghĩa là đảm bảo tất cả dữ liệu văn bản được chuyển đổi từ dạng nhị phân càng gần ranh giới hệ thống càng tốt, được xử lý dưới dạng văn bản, sau đó được chuyển đổi trở lại thành dạng nhị phân cho các mục đích đầu ra

Thật không may, Python 2 không khuyến khích các nhà phát triển viết chương trình theo cách đó - nó làm mờ đi ranh giới giữa dữ liệu nhị phân và văn bản, đồng thời khiến các nhà phát triển khó tách biệt hai thứ này trong đầu, chứ đừng nói đến mã của họ. Vì vậy, các tác giả khung web và GUI phải nói với người dùng Python 2 của họ "luôn sử dụng văn bản Unicode. Nếu không, bạn có thể gặp phải các lỗi khó hiểu và khó theo dõi khi xử lý đầu vào Unicode"

Python 3 thì khác. nó tạo ra sự tách biệt lớn hơn nhiều giữa "miền nhị phân" và "miền văn bản", giúp viết mã ứng dụng thông thường dễ dàng hơn, đồng thời khiến việc viết mã hoạt động với các ranh giới hệ thống trở nên khó khăn hơn một chút khi có sự phân biệt giữa dữ liệu nhị phân và dữ liệu văn bản . Tôi đã viết chi tiết hơn ở nơi khác về những gì thực sự đã thay đổi trong mô hình văn bản giữa Python 2 và Python 3

Cuộc cách mạng hỗ trợ Unicode của Python này đang diễn ra trong bối cảnh quá trình di chuyển nền tảng lớn hơn của thao tác văn bản tính toán từ ASCII chỉ có tiếng Anh [được xác định chính thức vào năm 1963], thông qua sự phức tạp của mô hình "khai báo mã hóa + dữ liệu nhị phân" [bao gồm cả C/POSIX

Tại sao lại đề cập đến điểm này? . Với các vấn đề cụ thể về ngôn ngữ đã được giải quyết bằng quá trình chuyển đổi Python 3, rào cản gia nhập đối với các tính năng ngôn ngữ mới cao hơn nhiều so với những ngày đầu của Python và không có sự di chuyển toàn ngành nào khác trên quy mô chuyển đổi từ "dữ liệu nhị phân có mã hóa" sang . Thay vào đó, tôi hy vọng chúng ta sẽ có thể đáp ứng bất kỳ sự phát triển ngôn ngữ nào trong tương lai trong các quy trình quản lý thay đổi thông thường và bất kỳ đề xuất nào không thể xử lý theo cách đó sẽ bị từ chối vì áp đặt chi phí cao không thể chấp nhận được đối với cộng đồng và sự phát triển cốt lõi

Được xuất bản lần đầu trên Curious Efficiency và cũng có trên Blog nhà phát triển Red Hat. Tái bản dưới Creative Commons. Để biết thêm thông tin về quá trình phát triển của Python, bạn có thể quan tâm đến Sự chuyển đổi sang lập trình đa ngôn ngữ với Python, cũng của Nick Coghlan

Đọc gì tiếp theo

thẻ

con trăn

lập trình

Nick Coghlan

Nick là nhà phát triển cốt lõi của CPython và là thành viên Hội đồng quản trị của Quỹ phần mềm Python

Thêm về tôi

13 Bình luận

Những bình luận này đã bị đóng, tuy nhiên bạn có thể Đăng ký hoặc Đăng nhập để đăng bình luận về một bài viết khác

WorMzy. 26 Tháng chín 2014

Đăng ký hoặc Đăng nhập để thích

'Kỳ vọng hiện tại của tôi là Python 4. 0 sẽ chỉ là "bản phát hành sau Python 3. 9"'

Đó không phải là một dấu thập phân. Điều gì đến sau 3. 9 là 3. 10

Ricardo J. thợ hớt tóc. 27 Tháng Chín, 2014

Đăng ký hoặc Đăng nhập để thích

Vâng, nhưng Nick là một trong những nhà phát triển cốt lõi của Python, vì vậy nếu họ nói "sau Python 3,9 là 4. 0" rồi 4. 0 đó là. ]

Trả lời 'Kỳ vọng hiện tại của tôi là bởi WorMzy [chưa được xác minh]

dhj. 8 Tháng Ba, 2015

Đăng ký hoặc Đăng nhập để thích

và đây là thái độ khiến Python 3 trở thành một trong những bản cập nhật ngôn ngữ được chấp nhận tồi tệ nhất kể từ Perl 6. Tại sao bạn không chuyển tất cả các tính năng hay của python 3 sang python 2. 7 và gọi nó là Python 4 [hoặc python 2. số 8]. Sau đó, phần lớn các cơ sở mã có khả năng tương thích với phiên bản python mới nhất cùng với tất cả các tính năng mới nhất và chúng ta có thể coi như Py3K chưa bao giờ xảy ra

Trả lời Vâng, nhưng Nick là một trong số Ricardo J. Thợ cắt tóc [chưa được xác minh]

vô danh. 25 Tháng Tư, 2015

Đăng ký hoặc Đăng nhập để thích

Xin lỗi, nhưng đó là điều mà chỉ người không biết mới có thể nói. “Tại sao bạn không. " - nghiêm túc đấy, bạn có phải là nhà phát triển phần mềm không?. / Nếu họ làm như vậy, Python sẽ không gọn gàng như bây giờ, nó sẽ là một đống rác, theo đúng nghĩa đen

Trả lời. và đây là thái độ của dhj [chưa kiểm chứng]

Jack. 17 Tháng Sáu, 2015

Đăng ký hoặc Đăng nhập để thích

Ugh, đó là một sự vi phạm phiên bản ngữ nghĩa khủng khiếp. Tôi hy vọng anh ấy nói đùa

Nếu python có nghĩa là không bao giờ thực hiện các thay đổi không tương thích ngược, thì sẽ không bao giờ có python 4. 0

Trả lời Vâng, nhưng Nick là một trong số Ricardo J. Thợ cắt tóc [chưa được xác minh]

Clive. 1 Tháng mười 2014

Đăng ký hoặc Đăng nhập để thích

"ngôn ngữ kịch bản nhúng"

Xin lỗi, Lua đã sở hữu thị trường đó. Python hoàn toàn không có cơ hội, vì VM cồng kềnh và rất kém phù hợp để nhúng

Jesse. 8 Tháng mười 2014

Đăng ký hoặc Đăng nhập để thích

Đây là lý do tại sao tôi nghĩ Python 4 nên liên quan đến việc viết lại toàn bộ hiệu suất của trình thông dịch. Nắm bắt việc sử dụng rộng rãi Python trong điện toán số và mở rộng tiện ích của nó sang các lĩnh vực như phát triển trò chơi. Nhìn vào pypy và cython để lấy cảm hứng. Cả hai đều có thể được tích hợp vào lõi, nhưng có lẽ sẽ dễ dàng hơn để bắt đầu lại từ đầu

Trả lời "ngôn ngữ kịch bản nhúng" của Clive [chưa được xác minh]

Zed. 18 Tháng hai, 2015

Đăng ký hoặc Đăng nhập để thích

Lua là một ngôn ngữ kịch bản nhúng, nó không thể tự hoạt động

Trả lời "ngôn ngữ kịch bản nhúng" của Clive [chưa được xác minh]

Nick Coghlan. 25 Tháng hai, 2015

Đăng ký hoặc Đăng nhập để thích

Xin lỗi vì trả lời chậm trễ, nhưng bạn nói đúng rằng có một số rào cản kỹ thuật nghiêm trọng đối với việc nhúng CPython ở dạng hiện tại. Mọi người sẽ làm công việc đó nếu họ coi kết quả cuối cùng là đủ giá trị [e. g. Blender], nhưng nó phức tạp và phức tạp đến mức không phải là lựa chọn đầu tiên của mọi người, đặc biệt khi trọng tâm chính là viết kịch bản các thành phần của ứng dụng nhúng và bạn không muốn hoặc không cần truy cập vào những thứ như Khoa học.

PEP 432 [https. //www. con trăn. org/dev/peps/pep-0432/] là một đề xuất hiện chưa được cấp vốn để thay đổi tình trạng đó bằng cách thiết kế lại cách cấu hình thời gian chạy CPython. Chúng tôi đã đủ muộn trong 3. 5 hiện tại không có khả năng được triển khai trong năm nay, vì vậy tôi có thể sẽ xem xét lại việc chuyển tiếp chu kỳ đó trong Python 3. 6 khung thời gian

Đây là một lĩnh vực có khả năng trở nên thú vị hơn khi những thay đổi trong chính sách giáo dục kỹ thuật số bắt đầu có tác động và chúng tôi bắt đầu thấy học sinh trung học [ít nhất là ở Úc và Vương quốc Anh, nhưng cũng có thể ở các khu vực khác] đã tốt nghiệp.

Trả lời "ngôn ngữ kịch bản nhúng" của Clive [chưa được xác minh]

Zed. 18 Tháng hai, 2015

Đăng ký hoặc Đăng nhập để thích

Python 4 sẽ trở thành sát thủ Java và C# nếu nó muốn giữ danh hiệu của mình. Những gì chúng ta đang thấy ở thời điểm hiện tại với Python là nó liên tục nhảy giữa các phiên bản tạm thời, ví dụ như cơ sở người dùng Linux thậm chí còn chưa chấp nhận 3. 0. Nếu nó muốn trở thành vua của ngọn đồi, nó cần lắng nghe cơ sở người dùng của nó

Nick Coghlan. 25 Tháng hai, 2015

Đăng ký hoặc Đăng nhập để thích

Chính xác. Về mặt Linux, một số người trong chúng tôi đã làm việc với các nhà cung cấp Linux và các dự án lớn như OpenStack về các vấn đề chuyển của họ và giải quyết những vấn đề đó ở bất cứ đâu hợp lý nhất [cho dù đó là thêm chế độ "--py3k" vào cột . ngôn ngữ UTF-8 một tính năng tiêu chuẩn của glibc ngược dòng]. [Red Hat và Canonical trên thực tế đều sử dụng một số nhà phát triển cốt lõi CPython, cũng như những người tiêu dùng Python-on-Linux lớn khác như HP, Google và Rackspace]

Khi các rào cản kỹ thuật khác nhau đối với việc chuyển được xác định, chúng tôi đã xem xét các cách để cải thiện chính Python 3 để giải quyết chúng [chẳng hạn như khôi phục hỗ trợ đầy đủ cho codec biến đổi nhị phân và khôi phục hỗ trợ nội suy nhị phân] hoặc xem cách thực hiện chuyển

Về mặt người dùng, lĩnh vực giáo dục tiểu học và trung học nói chung đã chuyển sang Python 3 và việc đưa vào một phép toán nhân ma trận chuyên dụng trong Python 3. 5 đặc biệt để đáp lại phản hồi [và đóng góp] từ cộng đồng Python phân tích

Bên cạnh mối quan tâm có thể có đối với toán tử nhân ma trận để biểu diễn rõ ràng hơn các phép toán ma trận và véc tơ, rất tiếc là vẫn chưa có một củ cà rốt Python 3 tuyệt vời cho các tổ chức như AutoDesk [có thể là điểm bùng phát cho các phần đó của hoạt hình 3D

Theo như thách thức của JVM và CLR, tôi đồng ý rằng đó là một không gian rất thú vị và tôi thực sự tin rằng cộng đồng PyPy là nơi tốt nhất để làm điều đó. PyPy không chỉ thể hiện một cách tiếp cận sáng tạo để thiết kế trình biên dịch JIT, mà nghiên cứu của Armin Rigo về các ứng dụng thực tế của Bộ nhớ giao dịch phần mềm thực sự mang tính đột phá và mang đến triển vọng thực tế về khả năng lập trình các ứng dụng được lưu trữ trên PyPy trong mô hình hướng sự kiện trong khi vẫn sử dụng

Trả lời Python 4 phải là by Zed [chưa được xác minh]

Đồi vách đá. 8 Tháng sáu 2015

Đăng ký hoặc Đăng nhập để thích

Thật tuyệt vời với những gì Python đã làm và tôi đồng ý với những gì bạn đang nói. Tôi hy vọng điều đó sẽ sớm được chấp nhận Python 3 là phiên bản python tiêu chuẩn cho Ubuntu, Red Hat, v.v. sẽ xảy ra, vì nó đã liên tục vượt lên trên Python 2. 7 bộ tính năng

Tôi cũng đang theo dõi một cách thích thú những gì cộng đồng PyPy đã làm, trên rất nhiều mặt. Tôi có thể thấy rằng trong tương lai, PyPy có thể khiến việc có nhiều phiên bản Python cho các phần phụ trợ khác nhau [CPython, Jython, IronPython] trở thành dĩ vãng. Nếu họ có thể tích hợp Jython & IronPython với API JVM/CLR giống như cách Jython/IronPython làm, và nếu họ có thể có khả năng tương thích gần nhất với mã của CPython [mà không phải hy sinh công việc tuyệt vời của họ trên nhiều mặt], cũng như khả năng tích hợp tốt với C . Tuy nhiên, họ vẫn còn cách xa tất cả những điều đó

Sự thúc đẩy của Python vào lĩnh vực khoa học/giáo dục trung học cũng không có gì đáng kinh ngạc. Một người bạn cũ của tôi đã sử dụng Python trong quá trình làm Tiến sĩ của anh ấy [sau khi được tôi thúc giục và nhận ra rằng nó rẻ hơn/phong phú hơn Matlab và các công cụ khác], cũng như việc phòng thí nghiệm nghiên cứu của anh ấy chấp nhận nó làm tiêu chuẩn thực tế

Phiên bản nào của Python là năm 2022?

Trăn 3. 10. 9 , tài liệu phát hành vào ngày 6 tháng 12 năm 2022.

Có gì mới trong Python 4?

Ngoài các bộ dữ liệu được đặt tên và các lớp dữ liệu [3. 7], Trăn 4. 0 sẽ bao gồm một số thủ thuật trang trí nghìn dòng mới để triển khai các loại cấu trúc đơn giản . GIL đã bị xóa.

Khi nào Python 3. 8 phát hành?

Bài viết này giải thích các tính năng mới trong Python 3. 8, so với 3. 7. Trăn 3. 8 được phát hành vào ngày 14 tháng 10 năm 2019 .

Khi nào Python 3. 5 phát hành?

Trăn 3. 5 được phát hành vào ngày 13 tháng 9 năm 2015 .

Chủ Đề