Python 4.0, Python 3.0'dan neden farklı?

[CSDN editörünün notu] Ne kadar PHP'nin her zaman dünyanın en iyisi olacağını ya da Java'nın sonsuza dek yenilmez olacağını umursak da, ya da C dilinin her zaman en iyi dil olacağını umuyoruz.

Ancak bugün Baidu Dizinini araştırdım ve Python dizininin Java ve PHP dizinlerinin toplamından daha yüksek olduğunu buldum.

Python'un sürüm yinelemesi de ıslık çalıyor, peki yeni sürüm 4.0 ile 3.0 arasındaki fark nedir? Bugün Python Yazılım Vakfı'nın yönetim kurulu üyesi ve CPython'un çekirdek geliştiricisi olan Nick Coghlan'ın bir makalesini paylaşıyorum, umarım ilgilenirsiniz.

Yazarın bugün Baidu Index'teki arama sonuçları

Python fikri ile yeni temasa geçen bazı kişiler, geriye dönük uyumlu olmayan modifikasyonlar önereceklerdir.Bu öneriler, mevcut yasal Python 3 kodu için net bir taşıma planı sağlamaz ve zaman zaman Python 4000 fikrinden bahseder. Sonuçta, Python 3.0'da bu tür bir değişikliğe izin verdik. Python 4.0'da neden izin verilmiyor?

Bu sorunu birçok kez duydum (çok endişelenen biri dahil ve şöyle dedi: "Geriye dönük uyumluluğu bir kez bozdunuz, bunu tekrar yapıp yapmayacağınızı nasıl bilebilirim?"), Sanırım Cevabımı yazın ve gelecekte birisi sorarsa, bu makaleyi okumasına izin verebilirim.

Python 4.0 için mevcut beklentiler nelerdir?

Şu anki beklentim: Python 4.0 sadece "Python 3.9'dan sonraki bir sürüm". Bu kadar. Dilde köklü değişiklikler ve geriye dönük uyumluluk sorunları yoktur.Python 3.9'dan 4.0'a kadar, Python 3.3'ten 3.4'e (veya 2.6'dan 2.7'ye) kadar güvenli olmalıdır. Hatta uygulamanın ikili arayüzünün (PEP 384 tarafından sunulan işlev) sürüm yükseltildiğinde kararlı kalacağını umuyorum.

Dil özelliklerinin mevcut yayın hızına göre (yaklaşık 18 ayda bir), bu, 2023'te Python 3.10 yerine Python 4.0 görebileceğimiz anlamına geliyor.

Peki Python nasıl gelişmeye devam edecek?

Birincisi ve en önemlisi, PEP sürecinde herhangi bir değişiklik olmayacak ve geriye dönük uyumlu değişiklikler önerilmeye devam edecek ve Python uygulamalarının kullanımını geliştirmek için yeni modüller (asyncio gibi) ve dil özellikleri (verim gibi) eklenecektir. Özellikleri.

Zamanla, Python 3, işlevler açısından Python 2'ye gittikçe daha fazla öncülük edecek.Python 2 kullanıcıları, aynı işlevleri üçüncü taraf modüller aracılığıyla veya Python 3'ün geriye doğru taşınmasıyla elde edebilseler bile, Python 3'ü yakalayamayacaklar. Özellikleri.

Farklı yorumlayıcı uygulamaları ve uzantıları arasındaki rekabet, PyPy'nin JIT derleyici oluşturma ve yazılım işlem belleğine yönelik girişimlerinin yanı sıra bilimsel ve veri analizi toplulukları ve dizi odaklı programlamanın keşfi de dahil olmak üzere Python'u geliştirmenin farklı yollarını keşfetmeye devam edecek. Modern CPU'lar ve GPU'lar tarafından sağlanan vektörleştirme işlevlerinden tam olarak yararlanın).

Diğer sanal makine çalışma zamanlarıyla (JVM ve CLR gibi) entegrasyonun da, özellikle eğitim alanında, Python'u daha popüler bir gömülü komut dosyası dili haline getirebilecek şekilde zaman içinde gelişmesi beklenmektedir. Daha büyük uygulamalarda çalıştırın.

Geriye dönük olarak uyumlu olmayan bazı değişiklikler için PEP 387, Python 2 serisinde uzun yıllardır kullanılan ve bugün hala geçerli olan makul bir yöntem sunar: yani, belirli bir işlevin büyük bir soruna neden olacağını düşünüyorsanız, değiştirebilirsiniz. Kullanımdan kaldırıldı olarak işaretlendi ve sonunda silindi.

Ancak, geliştirme ve yayınlama sırasında meydana gelen diğer birçok değişikliğin Python 3 serisinde kullanımdan kaldırılmış olarak işaretlenmesi olası değildir:

Buradaki ana vurgu Python paket deposu üzerindedir. Bu, CPython çekirdek geliştirme ekibi ile Python Paketleme Otoritesi arasındaki işbirliğinin sonucudur ve Python 3.4+, emin olmasanız bile standart kitaplığa modül ekleme zorluğunu azaltan pip yükleyici ile birlikte gelir. Nispeten yavaş dil güncelleme döngüsüne uyum sağlayacak kadar kararlıdırlar.

"Geçici API" konsepti (PEP 411 tarafından tanıtıldı), kitaplıklar ve API'ler oluşturmaya yardımcı olacak standart geriye dönük uyumluluk garantileri sağlamadan önce daha geniş geri bildirim almak için bir "geçiş dönemi" belirlemenize olanak tanır.

Birikmiş eski davranışların çoğu, Python 3 dönüştürme işlemi sırasında kesin olarak çözülmüştür.Şimdi Python'un yeni işlevleri ve standart kitaplık için gereksinimler, Python 1.x ve Python 2.x'inkilerden çok daha katıdır.

"Tek kaynaklı" Python 2/3 kitaplıkları ve çerçeveleri geniş çapta kabul görmektedir ve bu da, bu özellikler yeni ve daha iyi özelliklerle değiştirilse bile, Python 3'te "kullanımdan kaldırılmış özellik belgelerinin" kullanımını büyük ölçüde teşvik etmektedir. Bu durumlarda, belgede ayarlanan kullanımdan kaldırma bildirimi, yeni kodun kullanması gereken yöntemi önerecek, ancak programda bir kullanımdan kaldırma uyarısı oluşturmayacaktır. Bu şekilde, mevcut kod (Python 2 ve Python 3'ü destekleyen kod dahil) değişmeden kalabilir (karşılık gelen fiyat: yeni kullanıcıların mevcut kod tabanını koruma göreviyle karşı karşıya kaldıklarında biraz daha fazla bilgi edinmeleri gerekebilir. biraz).

İngilizceden tüm dillere

Python 3'ün şu an olduğu kadar yıkıcı olması amaçlanmadığını da belirtmekte fayda var. Python 3'te geriye dönük uyumlu olmayan tüm değişiklikler arasında, kod taşınabilirliğini ciddi şekilde engelleyen zorlukların çoğu, PEP 3100'deki bir noktaya atfedilebilir:

Tüm dizelerin Unicode olmasına ve ayrı bir bayt () türüne sahip olmasına izin verin. Yeni dize türü 'dize' olarak adlandırılacaktır.

PEP 3100, Python 3'teki tartışmalı olmayan tüm değişiklikleri özetler, bu nedenle ayrı bir PEP oluşturmaya gerek yoktur. Bu özel değişiklik tartışmasız olarak kabul edilir çünkü Python 2 ile olan deneyimimiz Web ve GUI çerçevelerinin yazarlarının doğru olduğunu gösterir, yani bir uygulama geliştiricisi olarak Unicode'un akıllıca kullanılması tüm metin verilerinin sağlanması anlamına gelir. , Mümkün olduğunca ikiliden sistem metin işlemine dönüştürülebilir ve daha sonra çıktı alındığında ikiliye geri dönüştürülebilir.

Maalesef Python 2, geliştiricileri programları bu şekilde yazmaya teşvik etmez, bu da ikili veri ile metin arasındaki sınırları büyük ölçüde bulanıklaştırır ve geliştiricilerin kodu bırakın, ikisi arasında ayrım yapmasını zorlaştırır.

Bu nedenle, web ve GUI çerçeve yazarları Python 2 kullanıcılarına "Unicode metin kullanmalarını söylemelidir. Aksi takdirde, Unicode girişini işlerken zor ve izlemesi zor hatalarla karşılaşacaksınız".

Python 3 farklıdır: "ikili" ve "metin" arasında daha büyük bir ayrım yaparak normal uygulama kodunu yazmayı kolaylaştırır, ancak aynı zamanda ikili ve metin verileri arasındaki ayrımı daha az netleştirir.

Pythonun Unicode desteğindeki bu devrim, hesaplamalı metin işlemlerinin aktarımı hakkında daha geniş bir arka planı hedefliyor: yalnızca İngilizce ASCII'den (resmi olarak 1963'te tanımlanmıştır) "ikili veri + kodlama beyanı" modeline (20. yüzyılın 80'leri dahil). On yılın sonlarında, C / POSIX dil ortamı ve Windows kod sayfası sisteminin tanıtımı) ve orijinal 16 bit Unicode standart sürümü (1991'de piyasaya sürüldü) nispeten kapsamlı bir modern Unicode kod noktası sistemine (ilk olarak 1996'da, birkaç yılda bir tanımlanmıştır) En son büyük bir güncelleme var).

Neden bundan bahsetmeliyim? "Varsayılan olarak Unicode kullan" şeklindeki değişiklik Python 3'teki en yıkıcı ve geriye dönük uyumlu değişiklik olduğundan ve diğer (belirli dil özelliklerine daha bağımlı olan) değişikliklerden farklı olduğundan, yalnızca metin verilerinin nasıl temsil edileceği ve işleneceği ile ilgilidir. Çok çeşitli değişikliklerin küçük bir kısmı.

Python 3 dönüşümü, Python'un ilk günlerine kıyasla bazı dile özgü sorunları ortadan kaldırdığından, yeni dil özelliklerinin eşiği çok arttı ve mevcut devam eden çalışmayla karşılaştırılabilecek şekilde, sektörü etkileyen bir transplantasyon ölçeği yok. Metin modelleme için "kodlanmış ikili veriler" den Unicode'a geçin.

Bu yüzden gelecekte Python 3 gibi geriye dönük uyumluluğa neden olabilecek ve paralel desteğe ihtiyaç duyan herhangi bir değişiklik olacağını düşünmüyorum. Aksine, normal değişim yönetimi sürecinde gelecekteki herhangi bir dil evrimine adapte olabileceğimizi umuyorum.Bu şekilde ele alınamayan herhangi bir teklif, topluluğa ve çekirdek geliştirme ekibine yüksek seviyeler getireceği için reddedilecektir. Kabul edilemez maliyet.

Orijinal: https://opensource.com/life/14/9/why-python-4-wont-be-python-3

Yazar: Nick Coghlan, CPython çekirdek geliştiricileri, Python Yazılım Vakfı yönetim kurulu üyeleri. Çeşitli Python geliştirme tekliflerinin yazarı ve ortağıdır (PEP 343 dahil: Python 2.5'e ifade ve içerik yöneticisi eklenmiş, PEP 453: Python 3.4 ile birlikte paketlenmiş pip yükleyici) ve BDFL olarak Guido van Rossum adına birçok PEP uygulamasını yöneten ajan.

Çevirmen: Crescent Moon, Kurgu: Hu Weiwei

"Belgeler için çağrı"

CSDN halka açık hesabı, "on binlerce teknik insanla büyüme" kavramına bağlıdır. Teknik insanların ilk kez ilgilendikleri endüstri odak olaylarını teknik insanların benzersiz bakış açılarından tanımlamak için yalnızca "inek başlıkları" ve "konuşma" sütunlarını kullanmakla kalmaz, aynı zamanda "Teknoloji Başlıkları" sütunu, sektördeki popüler teknolojilerin ve uygulamaların derinlemesine bir yorumunu sunarak, tüm geliştiricilerin teknolojik trendlere ayak uydurmasına, uyanık bir teknolojik anlayışı sürdürmesine ve sektör eğilimleri ve teknolojileri hakkında daha kapsamlı bir anlayışa sahip olmasına olanak tanır.

Yüksek kaliteli makaleleriniz veya sektörün sıcak olayları, teknoloji trendleri hakkında içgörüler veya derinlemesine uygulama uygulamaları, senaryolar vb. Hakkında yeni içgörüleriniz varsa, gönderimler için lütfen CSDN ile iletişime geçin. İletişim: WeChat (guorui_1118, lütfen gönderim + ad + şirket pozisyonunu not edin), e-posta (guorui@csdn.net).

"Büyük şehir hastalıkları" yönetimine odaklanan Pekin'in bu yıl büyük bir işi olacak
önceki
Tutma miktarı, riskten korunma oranıyla orantılı mı? Öyle düşünmeyin!
Sonraki
Zafer günlerini anmak için doğan 911 Speedster'ın seri üretim versiyonunun casus fotoğrafları
AI, Dr. Tsinghua'nın Jay Chou ekibine girmesine yardımcı oluyor, AI uygulamalarının altın çağını önceden mi söylüyor?
Yapay zekanın insan beynini taklit etmesi güvenilir midir?
İlk yarı-Çin 0-1 Tayland, Wu Lei fırsatı kaçırdı
Google Pixel 3 Lite gerçek makine pozlama: Snapdragon 670 artı Pixel 3 kamera
Google, veri seti aramasını başlatıyor! Baidu ne düşünüyor?
WeChat "Lingqiantong" resmen başlatıldı! Yu'e Bao'nun en büyük rakibi burada
Endonezya Banten'deki tsunami en az 20 kişiyi öldürdü, nasıl kaçmalıyız?
13. CPPCC Pekin Komitesi'nin İkinci Oturumu 1.278 teklif aldı, bu alanda en çok
Teknoloji ve retro Urban EV konsept otomobilin iç mekan resmi görselinin mükemmel kombinasyonu
Programcıların istihdamının bir sonraki durağı olan Xi'an'a 600.000'den fazla insan yerleşti?
Adam kaşlarını kesti ve 1680'de polise gitti. Netizen: Bu hikaye biraz Xiao Wu'nun saç çizgisine benziyor.
To Top