ΠŸΡŠΡ‚ΡΡ‚ към ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Ρ‚ΠΈΠΏΠΎΠ²Π΅Ρ‚Π΅ Π½Π° 4 ΠΌΠΈΠ»ΠΈΠΎΠ½Π° Ρ€Π΅Π΄Π° Python ΠΊΠΎΠ΄. Част 2

ДнСс ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°ΠΌΠ΅ Π²Ρ‚ΠΎΡ€Π°Ρ‚Π° част ΠΎΡ‚ ΠΏΡ€Π΅Π²ΠΎΠ΄Π° Π½Π° ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π° Π·Π° Ρ‚ΠΎΠ²Π° ΠΊΠ°ΠΊ Π² Dropbox ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΈΡ€Π°Ρ…Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π° Π½Π° Ρ‚ΠΈΠΏΠΎΠ²Π΅ Π² няколко ΠΌΠΈΠ»ΠΈΠΎΠ½Π° Ρ€Π΅Π΄Π° Python ΠΊΠΎΠ΄.

ΠŸΡŠΡ‚ΡΡ‚ към ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Ρ‚ΠΈΠΏΠΎΠ²Π΅Ρ‚Π΅ Π½Π° 4 ΠΌΠΈΠ»ΠΈΠΎΠ½Π° Ρ€Π΅Π΄Π° Python ΠΊΠΎΠ΄. Част 2

β†’ ΠŸΡ€ΠΎΡ‡Π΅Ρ‚Π΅Ρ‚Π΅ ΠΏΡŠΡ€Π²Π°Ρ‚Π° част

ΠžΡ„ΠΈΡ†ΠΈΠ°Π»Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° Ρ‚ΠΈΠΏΠΎΠ²Π΅ (PEP 484)

НиС ΠΏΡ€ΠΎΠ²Π΅Π΄ΠΎΡ…ΠΌΠ΅ ΠΏΡŠΡ€Π²ΠΈΡ‚Π΅ сСриозни СкспСримСнти с mypy Π² Dropbox ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° Hack Week 2014. Hack Week Π΅ ΡΡŠΠ±ΠΈΡ‚ΠΈΠ΅, ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΈΡ€Π°Π½ΠΎ ΠΎΡ‚ Dropbox Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ Π½Π° Π΅Π΄Π½Π° сСдмица. ΠŸΡ€Π΅Π· Ρ‚ΠΎΠ²Π° Π²Ρ€Π΅ΠΌΠ΅ слуТитСлитС ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° работят Π²ΡŠΡ€Ρ…Ρƒ ΠΊΠ°ΠΊΠ²ΠΎΡ‚ΠΎ ΠΈΠΌ ΠΆΠ΅Π»Π°Π΅! Някои ΠΎΡ‚ Π½Π°ΠΉ-извСстнитС Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΡ‡Π½ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ Π½Π° Dropbox Π·Π°ΠΏΠΎΡ‡Π½Π°Ρ…Π° ΠΈΠΌΠ΅Π½Π½ΠΎ Π½Π° ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ мСроприятия. Π’ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ Π½Π° Ρ‚ΠΎΠ·ΠΈ СкспСримСнт Π½Π°ΠΏΡ€Π°Π²ΠΈΡ…ΠΌΠ΅ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ, Ρ‡Π΅ mypy ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° ΠΎΠ±Π΅Ρ‰Π°Π²Π°Ρ‰ΠΎ, Π²ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‡Π΅ Ρ‚ΠΎΠ·ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ всС ΠΎΡ‰Π΅ Π½Π΅ бСшС Π³ΠΎΡ‚ΠΎΠ² Π·Π° ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅.

По Ρ‚ΠΎΠ²Π° Π²Ρ€Π΅ΠΌΠ΅ Π²ΠΈΡ‚Π°Π΅ΡˆΠ΅ идСята Π·Π° стандартизиранС Π½Π° систСмитС Π·Π° ΠΏΠΎΠ΄Π°Π²Π°Π½Π΅ Π½Π° подсказки Π·Π° Ρ‚ΠΈΠΏΠΎΠ²Π΅ Python. ΠšΠ°ΠΊΡ‚ΠΎ спомСнах, ΠΎΡ‚ Python 3.0 бСшС възмоТно Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Π°Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ Π½Π° Ρ‚ΠΈΠΏΠΎΠ²Π΅ Π·Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π½ΠΎ Ρ‚Π΅ бяха просто ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»Π½ΠΈ ΠΈΠ·Ρ€Π°Π·ΠΈ, Π±Π΅Π· ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ синтаксис ΠΈ сСмантика. По Π²Ρ€Π΅ΠΌΠ΅ Π½Π° ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ°Ρ‚Π° Ρ‚Π΅Π·ΠΈ Π°Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ Π³Π»Π°Π²Π½ΠΎ сС ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€Π°Ρ…Π°. Π‘Π»Π΅Π΄ Hack Week Π·Π°ΠΏΠΎΡ‡Π½Π°Ρ…ΠΌΠ΅ Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈΠΌ Π²ΡŠΡ€Ρ…Ρƒ стандартизацията Π½Π° сСмантиката. Π’Π°Π·ΠΈ Ρ€Π°Π±ΠΎΡ‚Π° Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ появата Π½Π° PEP 484 (Ρ‚ΠΎΠ·ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ бСшС създадСн ΡΡŠΠ²ΠΌΠ΅ΡΡ‚Π½ΠΎ ΠΎΡ‚ Π“Π²ΠΈΠ΄ΠΎ Π²Π°Π½ Россум, Π›ΡƒΠΊΠ°Ρˆ Π›Π°Π½Π³Π° ΠΈ ΠΌΠ΅Π½).

ΠΠ°ΡˆΠΈΡ‚Π΅ ΠΌΠΎΡ‚ΠΈΠ²Π°Ρ†ΠΈΠΈ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС Ρ€Π°Π·Π³Π»Π΅ΠΆΠ΄Π°Ρ‚ ΠΎΡ‚ Π΄Π²Π΅ страни. ΠŸΡŠΡ€Π²ΠΎ, Π½ΠΈΠ΅ сС надявахмС, Ρ‡Π΅ цялата СкосистСма Π½Π° Python ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΡ€ΠΈΠ΅ΠΌΠ΅ ΠΎΠ±Ρ‰ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ към ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° подсказки Π·Π° Ρ‚ΠΈΠΏΠΎΠ²Π΅ (type hints β€” Ρ‚Π΅Ρ€ΠΌΠΈΠ½, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ Π² Python ΠΊΠ°Ρ‚ΠΎ Π°Π½Π°Π»ΠΎΠ³ Π½Π° "Π°Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ Π½Π° Ρ‚ΠΈΠΏΠΎΠ²Π΅"). Π‘ ΠΎΠ³Π»Π΅Π΄ Π½Π° Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΈΡ‚Π΅ рисковС, Ρ‚ΠΎΠ²Π° Π±ΠΈ Π±ΠΈΠ»ΠΎ ΠΏΠΎ-Π΄ΠΎΠ±Ρ€Π΅ ΠΎΡ‚ΠΊΠΎΠ»ΠΊΠΎΡ‚ΠΎ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ мноТСство Π²Π·Π°ΠΈΠΌΠ½ΠΎ Π½Π΅ΡΡŠΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΈ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈ. На Π²Ρ‚ΠΎΡ€ΠΎ място, Π½ΠΈΠ΅ искахмС ΠΎΡ‚ΠΊΡ€ΠΈΡ‚ΠΎ Π΄Π° обсъдим ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΈΡ‚Π΅ Π·Π° Π°Π½ΠΎΡ‚ΠΈΡ€Π°Π½Π΅ Π½Π° Ρ‚ΠΈΠΏΠΎΠ²Π΅ с ΠΌΠ½ΠΎΠ³ΠΎ прСдставитСли Π½Π° Python общността. ΠžΡ‚Ρ‡Π°ΡΡ‚ΠΈ, Ρ‚ΠΎΠ²Π° ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ бСшС ΠΏΡ€ΠΎΠ΄ΠΈΠΊΡ‚ΡƒΠ²Π°Π½ΠΎ ΠΎΡ‚ Ρ„Π°ΠΊΡ‚Π°, Ρ‡Π΅ Π½Π΅ искахмС Π΄Π° ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π°ΠΌΠ΅ ΠΊΠ°Ρ‚ΠΎ "ΠΎΡ‚ΡΡ‚ΡŠΠΏΠ½ΠΈΡ†ΠΈ" ΠΎΡ‚ основнитС ΠΈΠ΄Π΅ΠΈ Π½Π° Π΅Π·ΠΈΠΊΠ° Π² ΠΎΡ‡ΠΈΡ‚Π΅ Π½Π° ΡˆΠΈΡ€ΠΎΠΊΠ° ΠΏΡƒΠ±Π»ΠΈΠΊΠ° ΠΎΡ‚ Python програмисти. Π’ΠΎΠ²Π° Π΅ Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π½ΠΎ Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π΅Π·ΠΈΠΊ, извСстСн със "ΠΏΠ°Ρ‚ΠΈΡ†Π° типизация". Π’ общността, Π² самото Π½Π°Ρ‡Π°Π»ΠΎ, Π½Π΅ моТСшС Π΄Π° Π½Π΅ възникнС извСстно ΠΏΠΎΠ΄ΠΎΠ·Ρ€ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ към идСята Π·Π° статична типизация. Но ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ наглас Π² ΠΊΡ€Π°ΠΉΠ½Π° смСтка отслабна β€” слСд ΠΊΠ°Ρ‚ΠΎ стана ясно, Ρ‡Π΅ статичната типизация Π½Π΅ сС ΠΏΠ»Π°Π½ΠΈΡ€Π° Π΄Π° бъдС Π·Π°Π΄ΡŠΠ»ΠΆΠΈΡ‚Π΅Π»Π½Π° (ΠΈ слСд ΠΊΠ°Ρ‚ΠΎ Ρ…ΠΎΡ€Π°Ρ‚Π° ΠΎΡΡŠΠ·Π½Π°Ρ…Π°, Ρ‡Π΅ тя наистина Π΅ ΠΏΠΎΠ»Π΅Π·Π½Π°).

ΠŸΡ€ΠΈΠ΅Ρ‚ΠΈΡΡ‚ Π² ΠΊΡ€Π°ΠΉΠ½Π° смСтка синтаксис Π½Π° подсказкитС Π·Π° Ρ‚ΠΈΠΏΠΎΠ²Π΅ бСшС ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ Π½Π° Ρ‚ΠΎΠ·ΠΈ, ΠΊΠΎΠΉΡ‚ΠΎ ΠΏΠΎ ΠΎΠ½ΠΎΠ²Π° Π²Ρ€Π΅ΠΌΠ΅ ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°ΡˆΠ΅ mypy. Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΡŠΡ‚ PEP 484 ΠΈΠ·Π»Π΅Π·Π΅ Π·Π°Π΅Π΄Π½ΠΎ с Python 3.5 ΠΏΡ€Π΅Π· 2015 Π³ΠΎΠ΄ΠΈΠ½Π°. Python Π²Π΅Ρ‡Π΅ Π½Π΅ бСшС Π΅Π·ΠΈΠΊ, ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Ρ‰ само Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π½Π° типизация. Π₯арСсва ΠΌΠΈ Π΄Π° мисля Π·Π° Ρ‚ΠΎΠ²Π° ΡΡŠΠ±ΠΈΡ‚ΠΈΠ΅ ΠΊΠ°Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΠΌΠ° Π²Π΅Ρ…Π° Π² историята Π½Π° Python.

Π—Π°ΠΏΠΎΡ‡Π²Π°Π½Π΅ Π½Π° миграцията

Π’ края Π½Π° 2015 Π³ΠΎΠ΄ΠΈΠ½Π° Π² Dropbox Π±Π΅ създадСна Π΅ΠΊΠΈΠΏ ΠΎΡ‚ Ρ‚Ρ€ΠΈΠΌΠ° Π΄ΡƒΡˆΠΈ, Π·Π° Ρ€Π°Π±ΠΎΡ‚Π° ΠΏΠΎ mypy. Π’ Π½Π΅Π³ΠΎ участваха Π“Π²ΠΈΠ΄ΠΎ Π²Π°Π½ Россум, Π“Ρ€Π΅Π³ ΠŸΡ€Π°ΠΉΡ ΠΈ Π”Π΅ΠΉΠ²ΠΈΠ΄ Π€ΠΈΡˆΠ΅Ρ€. ΠžΡ‚ Ρ‚ΠΎΠ·ΠΈ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ситуацията Π·Π°ΠΏΠΎΡ‡Π½Π° Π΄Π° сС Ρ€Π°Π·Π²ΠΈΠ²Π° ΠΈΠ·ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ Π±ΡŠΡ€Π·ΠΎ. ΠŸΡŠΡ€Π²ΠΎΡ‚ΠΎ прСпятствиС ΠΏΠΎ ΠΏΡŠΡ‚Ρ Π½Π° растСТа Π½Π° mypy бСшС производитСлността. ΠšΠ°ΠΊΡ‚ΠΎ Π²Π΅Ρ‡Π΅ Π½Π°ΠΌΠ΅ΠΊΠ½Π°Ρ… ΠΏΠΎ-Π³ΠΎΡ€Π΅, Π² ранния ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ Π½Π° Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, обмислях Π΄Π° прСнСса рСализацията Π½Π° mypy Π½Π° Π΅Π·ΠΈΠΊ C, Π½ΠΎ Ρ‚Π°Π·ΠΈ идСя бСшС Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΎΡ‚Ρ…Π²ΡŠΡ€Π»Π΅Π½Π°. ЗастанахмС ΠΏΡ€Π΅Π΄ Ρ„Π°ΠΊΡ‚Π°, Ρ‡Π΅ Π·Π° стартиранС Π½Π° систСмата сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΡŠΡ‚ CPython, ΠΊΠΎΠΉΡ‚ΠΎ Π½Π΅ ΠΏΡ€Π΅Π΄Π»Π°Π³Π° Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½Π° скорост Π·Π° инструмСнти ΠΊΠ°Ρ‚ΠΎ mypy. (ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΡŠΡ‚ PyPy, Π°Π»Ρ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Π° рСализация Π½Π° Python с JIT ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€, ΡΡŠΡ‰ΠΎ Π½Π΅ Π½ΠΈ ΠΏΠΎΠΌΠΎΠ³Π½Π°.)

Π—Π° щастиС, Ρ‚ΡƒΠΊ Π½ΠΈ ΠΏΠΎΠΌΠΎΠ³Π½Π°Ρ…Π° някои Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΈΡ‡Π½ΠΈ подобрСния. ΠŸΡŠΡ€Π²ΠΈΡΡ‚ ΠΌΠΎΡ‰Π΅Π½ "ускоритСл" бСшС Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π°Π»Π½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°. Π˜Π΄Π΅ΡΡ‚Π° Π·Π° Ρ‚ΠΎΠ²Π° ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½ΠΈΠ΅ бСшС проста: Π°ΠΊΠΎ всички зависимости Π½Π° ΠΌΠΎΠ΄ΡƒΠ»Π° ΠΎΡ‚ послСдното стартиранС Π½Π° mypy Π½Π΅ са сС ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΠ»ΠΈ, Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅, ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° с зависимоститС, Π΄Π°Π½Π½ΠΈΡ‚Π΅, ΠΊΠ΅ΡˆΠΈΡ€Π°Π½ΠΈ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° ΠΏΡ€Π΅Π΄ΠΈΡˆΠ½Π°Ρ‚Π° сСсия. ЕдинствСно Ρ‚Ρ€ΡΠ±Π²Π°ΡˆΠ΅ Π΄Π° ΠΈΠ·Π²ΡŠΡ€ΡˆΠΈΠΌ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Ρ‚ΠΈΠΏΠΎΠ²Π΅Ρ‚Π΅ Π² ΠΏΡ€ΠΎΠΌΠ΅Π½Π΅Π½ΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ ΠΈ Π² Ρ‚Π΅Π·ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅, ΠΊΠΎΠΈΡ‚ΠΎ зависСли ΠΎΡ‚ тях. Mypy ΠΎΡ‚ΠΈΠ΄Π΅ Π΄ΠΎΡ€ΠΈ ΠΌΠ°Π»ΠΊΠΎ ΠΏΠΎ-Π΄Π°Π»Π΅Ρ‡: Π°ΠΊΠΎ Π²ΡŠΠ½ΡˆΠ½ΠΈΡΡ‚ интСрфСйс Π½Π° ΠΌΠΎΠ΄ΡƒΠ»Π° Π½Π΅ сС Π΅ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΠ» β€” mypy ΡΡ‡ΠΈΡ‚Π°ΡˆΠ΅, Ρ‡Π΅ Π½Π΅ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ провСряванС Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΡ‚Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€Π°Ρ‚ Ρ‚ΠΎΠ·ΠΈ ΠΌΠΎΠ΄ΡƒΠ».

Π˜Π½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π½Π°Ρ‚Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ Π½ΠΈ ΠΏΠΎΠΌΠΎΠ³Π½Π° ΠΏΡ€ΠΈ Π°Π½Π½ΠΎΡ‚ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π³ΠΎΠ»Π΅ΠΌΠΈ ΠΎΠ±Π΅ΠΌΠΈ ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‰ ΠΊΠΎΠ΄. ΠŸΡ€ΠΎΡ†Π΅ΡΡŠΡ‚ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π²Π° ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΈ стартирания Π½Π° mypy, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ Π°Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈΡ‚Π΅ сС добавят постСпСнно Π² ΠΊΠΎΠ΄Π° ΠΈ подобряват с Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ Π½Π° Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ. ΠŸΡŠΡ€Π²ΠΎΡ‚ΠΎ стартиранС Π½Π° mypy всС ΠΎΡ‰Π΅ бСшС ΠΌΠ½ΠΎΠ³ΠΎ Π±Π°Π²Π½ΠΎ, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ зависимости Ρ‚Ρ€ΡΠ±Π²Π°ΡˆΠ΅ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½ΠΈ. Π—Π°Ρ‚ΠΎΠ²Π°, Π·Π° Π΄Π° ΠΏΠΎΠ΄ΠΎΠ±Ρ€ΠΈΠΌ ситуацията, Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Ρ…ΠΌΠ΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΡŠΠΌ Π·Π° дистанционно ΠΊΠ΅ΡˆΠΈΡ€Π°Π½Π΅. Ако mypy ΠΎΡ‚ΠΊΡ€ΠΈΠ΅, Ρ‡Π΅ локалният кСш вСроятно Π΅ остарял, Ρ‚ΠΎΠΉ Π·Π°Ρ€Π΅ΠΆΠ΄Π° тСкущия ΠΌΠΎΠΌΠ΅Π½Ρ‚Π΅Π½ кСш Π½Π° цялата ΠΊΠΎΠ΄ΠΎΠ²Π° Π±Π°Π·Π° ΠΎΡ‚ Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅. Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π° ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π°Π»Π½Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ Ρ‚ΠΎΠ·ΠΈ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π΅Π½ кСш. Π’ΠΎΠ²Π° Π½ΠΈ прСмСсти ΠΎΡ‰Π΅ с Π΅Π΄Π½Π° ΡΡŠΡ‰Π΅ΡΡ‚Π²Π΅Π½Π° ΡΡ‚ΡŠΠΏΠΊΠ° Π½Π°ΠΏΡ€Π΅Π΄ Π² ΡƒΠ²Π΅Π»ΠΈΡ‡Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° производитСлността Π½Π° mypy.

Π’ΠΎΠ²Π° бСшС ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ Π½Π° Π±ΡŠΡ€Π·ΠΎ ΠΈ СстСствСно внСдряванС Π½Π° систСмата Π·Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Ρ‚ΠΈΠΏΠΎΠ²Π΅ Π² Dropbox. Към края Π½Π° 2016 Π³ΠΎΠ΄ΠΈΠ½Π°, Π²Π΅Ρ‡Π΅ ΠΈΠΌΠ°Ρ…ΠΌΠ΅ ΠΎΠΊΠΎΠ»ΠΎ 420000 Ρ€Π΅Π΄Π° ΠΊΠΎΠ΄ Π½Π° Python с Ρ‚ΠΈΠΏΠΎΠ²ΠΈ Π°Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ. Много ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈ Π²ΡŠΠ·ΠΏΡ€ΠΈΠ΅Ρ…Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°Ρ‚Π° Π½Π° Ρ‚ΠΈΠΏΠΎΠ²Π΅ с Π΅Π½Ρ‚ΡƒΡΠΈΠ°Π·ΡŠΠΌ. Π’ Dropbox mypy бСшС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ ΠΎΡ‚ всС ΠΏΠΎΠ²Π΅Ρ‡Π΅ Π΅ΠΊΠΈΠΏΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈ.

Π’ΠΎΠ³Π°Π²Π° всичко изглСТдашС Π΄ΠΎΠ±Ρ€Π΅, Π½ΠΎ Π½ΠΈ ΠΎΡΡ‚Π°Π²Π°ΡˆΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°. Π—Π°ΠΏΠΎΡ‡Π½Π°Ρ…ΠΌΠ΅ Π΄Π° ΠΏΡ€ΠΎΠ²Π΅ΠΆΠ΄Π°ΠΌΠ΅ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ΠΈΡ‡Π½ΠΈ Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½ΠΈ Π°Π½ΠΊΠ΅Ρ‚ΠΈ Π½Π° ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈΡ‚Π΅, Π·Π° Π΄Π° ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°ΠΌΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ½ΠΈΡ‚Π΅ области Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈ Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ ΠΊΠ°ΠΊΠ²ΠΈ Π²ΡŠΠΏΡ€ΠΎΡΠΈ трябва Π΄Π° Ρ€Π΅ΡˆΠΈΠΌ Π½Π° ΠΏΡŠΡ€Π²ΠΎ място (Ρ‚Π°ΠΊΠ°Π²Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΈ Π² компанията ΠΈ Π΄ΠΎ днСс). Най-Π²Π°ΠΆΠ½ΠΈΡ‚Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ, ΠΊΠ°ΠΊΠ²Π°Ρ‚ΠΎ стана ясна, бяха Π΄Π²Π΅. ΠŸΡŠΡ€Π²Π°Ρ‚Π° - Π΄Π° ΠΈΠΌΠ°ΠΌΠ΅ ΠΏΠΎ-голямо ΠΏΠΎΠΊΡ€ΠΈΡ‚ΠΈΠ΅ Π½Π° ΠΊΠΎΠ΄Π° с Ρ‚ΠΈΠΏΠΎΠ²Π΅, Π° Π²Ρ‚ΠΎΡ€Π°Ρ‚Π° - mypy Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ ΠΏΠΎ-Π±ΡŠΡ€Π·ΠΎ. Напълно ясно бСшС, Ρ‡Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° Π½ΠΈ ΠΏΠΎ ускоряванС Π½Π° mypy ΠΈ ΠΏΠΎ внСдряванСто ΠΌΡƒ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ‚Π΅ Π½Π° компанията Π΄Π°Π»Π΅Ρ‡ Π½Π΅ бСшС Π·Π°Π²ΡŠΡ€ΡˆΠ΅Π½Π°. Π‘ напълно ΠΎΡΡŠΠ·Π½Π°Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° Ρ‚Π΅Π·ΠΈ Π΄Π²Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ, Π·Π°ΠΏΠΎΡ‡Π½Π°Ρ…ΠΌΠ΅ Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈΠΌ ΠΏΠΎ Ρ€Π΅ΡˆΠ°Π²Π°Π½Π΅Ρ‚ΠΎ ΠΈΠΌ.

ΠŸΠΎΠ²Π΅Ρ‡Π΅ производитСлност!

Π˜Π½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π°Π»Π½ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ускориха mypy, Π½ΠΎ Ρ‚ΠΎΠ·ΠΈ инструмСнт всС ΠΎΡ‰Π΅ Π½Π΅ бСшС Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΎ Π±ΡŠΡ€Π·. ΠœΠ½ΠΎΠ³ΠΎΠ±Ρ€ΠΎΠΉΠ½ΠΈ ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π°Π»Π½ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠ°Π²Π°Ρ…Π° ΠΎΠΊΠΎΠ»ΠΎ ΠΌΠΈΠ½ΡƒΡ‚Π°. ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π°Ρ‚Π° Π·Π° Ρ‚ΠΎΠ²Π° бяха Ρ†ΠΈΠΊΠ»ΠΈΡ‡Π½ΠΈΡ‚Π΅ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈ. Π’ΠΎΠ²Π° вСроятно няма Π΄Π° ΠΈΠ·Π½Π΅Π½Π°Π΄Π° ΠΎΠ½Π΅Π·ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ са Ρ€Π°Π±ΠΎΡ‚ΠΈΠ»ΠΈ с Π³ΠΎΠ»Π΅ΠΌΠΈ ΠΊΠΎΠ΄ΠΎΠ²ΠΈ Π±Π°Π·ΠΈ, написани Π½Π° Python. Π Π°Π·ΠΏΠΎΠ»Π°Π³Π°Ρ…ΠΌΠ΅ с Π½Π°Π±ΠΎΡ€ΠΈ ΠΎΡ‚ стотици ΠΌΠΎΠ΄ΡƒΠ»ΠΈ, всСки ΠΎΡ‚ ΠΊΠΎΠΈΡ‚ΠΎ косвСно ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡˆΠ΅ всички останали. Ако някой Ρ„Π°ΠΉΠ» Π² Ρ†ΠΈΠΊΡŠΠ»Π° Π½Π° ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈ бСшС ΠΏΡ€ΠΎΠΌΠ΅Π½Π΅Π½, mypy Ρ‚Ρ€ΡΠ±Π²Π°ΡˆΠ΅ Π΄Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π° всички Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅, Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈ Π² Ρ‚ΠΎΠ·ΠΈ Ρ†ΠΈΠΊΡŠΠ», Π° чСсто ΠΈ всякакви ΠΌΠΎΠ΄ΡƒΠ»ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€Π²Π°Ρ‚ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΎΡ‚ Ρ‚ΠΎΠ·ΠΈ Ρ†ΠΈΠΊΡŠΠ». Π•Π΄ΠΈΠ½ ΠΎΡ‚ Ρ‚Π΅Π·ΠΈ Ρ†ΠΈΠΊΠ»ΠΈ бСшС Π·Π»ΠΎΠ²Π΅Ρ‰ΠΎ извСстният β€žΠ²ΡŠΠ·Π΅Π» ΠΎΡ‚ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΠΈβ€œ, ΠΊΠΎΠΉΡ‚ΠΎ ΠΏΡ€Π΅Π΄ΠΈΠ·Π²ΠΈΠΊΠ° мноТСство ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ Π² Dropbox. Π’Π΅Π΄Π½ΡŠΠΆ Ρ‚Π°Π·ΠΈ структура ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°ΡˆΠ΅ няколко стотин ΠΌΠΎΠ΄ΡƒΠ»Π°, ΠΊΠ°Ρ‚ΠΎ мноТСство тСстовС, пряко ΠΈΠ»ΠΈ косвСно, я ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€Π²Π°Ρ…Π° ΠΈ тя сС използвашС ΠΈ Π² продукционния ΠΊΠΎΠ΄.

Π Π°Π·Π³Π»Π΅ΠΆΠ΄Π°Ρ…ΠΌΠ΅ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚Ρ‚Π° Π·Π° β€žΡ€Π°Π·ΠΏΠ»ΠΈΡ‚Π°Π½Π΅β€œ Π½Π° Ρ†ΠΈΠΊΠ»ΠΈΡ‡Π½ΠΈΡ‚Π΅ зависимости, Π½ΠΎ нямашС рСсурси Π΄Π° Π³ΠΎ Π½Π°ΠΏΡ€Π°Π²ΠΈΠΌ. ИмашС Ρ‚Π²ΡŠΡ€Π΄Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄, ΠΊΠΎΠΉΡ‚ΠΎ Π½Π΅ ΠΏΠΎΠ·Π½Π°Π²Π°Ρ…ΠΌΠ΅. Π’ ΠΊΡ€Π°ΠΉΠ½Π° смСтка стигнахмС Π΄ΠΎ Π°Π»Ρ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π΅Π½ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄. Π Π΅ΡˆΠΈΡ…ΠΌΠ΅ Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΠΌ Ρ‚Π°ΠΊΠ°, Ρ‡Π΅ mypy Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ Π±ΡŠΡ€Π·ΠΎ Π΄ΠΎΡ€ΠΈ ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅Ρ‚ΠΎ Π½Π° β€žΠ²ΡŠΠ·Π»ΠΈ ΠΎΡ‚ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΠΈβ€œ. ΠŸΠΎΡΡ‚ΠΈΠ³Π½Π°Ρ…ΠΌΠ΅ Ρ‚Π°Π·ΠΈ Ρ†Π΅Π» Ρ‡Ρ€Π΅Π· Π΄Π΅ΠΌΠΎΠ½Π° mypy. Π”Π΅ΠΌΠΎΠ½ΡŠΡ‚ Π΅ ΡΡŠΡ€Π²ΡŠΡ€Π΅Π½ процСс, ΠΊΠΎΠΉΡ‚ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π° Π΄Π²Π΅ интСрСсни Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈ. ΠŸΡŠΡ€Π²ΠΎ, Ρ‚ΠΎΠΉ Π΄ΡŠΡ€ΠΆΠΈ Π² ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° информация Π·Π° цялата ΠΊΠΎΠ΄ΠΎΠ²Π° Π±Π°Π·Π°. Π’ΠΎΠ²Π° ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°, Ρ‡Π΅ ΠΏΡ€ΠΈ всяко стартиранС Π½Π° mypy Π½Π΅ Π΅ Π½ΡƒΠΆΠ½ΠΎ Π΄Π° сС Π·Π°Ρ€Π΅ΠΆΠ΄Π°Ρ‚ ΠΊΠ΅ΡˆΠΈΡ€Π°Π½ΠΈΡ‚Π΅ Π΄Π°Π½Π½ΠΈ, ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ с хиляди ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€Π½ΠΈ зависимости. На Π²Ρ‚ΠΎΡ€ΠΎ място, Ρ‚ΠΎΠΉ Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»Π½ΠΎ, Π½Π° Π½ΠΈΠ²ΠΎ ΠΌΠ°Π»ΠΊΠΈ структурни Π΅Π΄ΠΈΠ½ΠΈΡ†ΠΈ, Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π° зависимоститС ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈ Π΅Π΄ΠΈΠ½ΠΈΡ†ΠΈ. НапримСр, Π°ΠΊΠΎ функция foo Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ bar, ΠΈΠΌΠ° зависимост foo ΠΎΡ‚ bar. ΠšΠΎΠ³Π°Ρ‚ΠΎ Ρ„Π°ΠΉΠ»ΡŠΡ‚ сС промСня β€” Π΄Π΅ΠΌΠΎΠ½ΡŠΡ‚ ΠΏΡŠΡ€Π²ΠΎ, Π² изолация, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π° само промСнСния Ρ„Π°ΠΉΠ». Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° Ρ‚ΠΎΠΉ Ρ€Π°Π·Π³Π»Π΅ΠΆΠ΄Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ Π² Ρ‚ΠΎΠ·ΠΈ Ρ„Π°ΠΉΠ», Π²ΠΈΠ΄ΠΈΠΌΠΈ ΠΎΡ‚Π²ΡŠΠ½, ΠΊΠ°Ρ‚ΠΎ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡ€ΠΎΠΌΠ΅Π½Π΅Π½ΠΈΡ‚Π΅ сигнатури Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π”Π΅ΠΌΠΎΠ½ΡŠΡ‚ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π΄Π΅Ρ‚Π°ΠΉΠ»Π½Π° информация Π·Π° ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ‚Π΅ само Π·Π° ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Ρ‚Π΅Π·ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ наистина ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ ΠΏΡ€ΠΎΠΌΠ΅Π½Π΅Π½Π°Ρ‚Π° функция. ОбикновСно ΠΏΡ€ΠΈ Ρ‚Π°ΠΊΡŠΠ² ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ сС Π½Π°Π»Π°Π³Π° Π΄Π° сС провСряват ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠ°Π»ΠΊΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

РСализация Π½Π° всичко Ρ‚ΠΎΠ²Π° Π½Π΅ бСшС лСсна Ρ€Π°Π±ΠΎΡ‚Π°, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ ΠΏΡŠΡ€Π²ΠΎΠ½Π°Ρ‡Π°Π»Π½Π°Ρ‚Π° рСализация Π½Π° mypy бСшС силно насочСна към ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° Π΅Π΄ΠΈΠ½ Ρ„Π°ΠΉΠ» Π² Π΄Π°Π΄Π΅Π½ ΠΌΠΎΠΌΠ΅Π½Ρ‚. НуТно бСшС Π΄Π° сС справим с ΠΌΠ½ΠΎΠ³ΠΎ Π³Ρ€Π°Π½ΠΈΡ‡Π½ΠΈ ситуации, появата Π½Π° ΠΊΠΎΠΈΡ‚ΠΎ изисквашС ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ, ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΠΊΠΎΠ΄ΡŠΡ‚ сС ΠΏΡ€ΠΎΠΌΠ΅Π½ΡΡˆΠ΅. НапримСр, Ρ‚ΠΎΠ²Π° сС случва, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π½Π° Π΅Π΄ΠΈΠ½ клас сС Π½Π°Π·Π½Π°Ρ‡Π°Π²Π° Π½ΠΎΠ² Π±Π°Π·ΠΎΠ² клас. Π‘Π»Π΅Π΄ ΠΊΠ°Ρ‚ΠΎ Π½Π°ΠΏΡ€Π°Π²ΠΈΡ…ΠΌΠ΅ Ρ‚ΠΎΠ²Π°, ΠΊΠΎΠ΅Ρ‚ΠΎ искахмС, успяхмС Π΄Π° Π½Π°ΠΌΠ°Π»ΠΈΠΌ Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π·Π° изпълнСниС Π½Π° ΠΏΠΎΠ²Π΅Ρ‡Π΅Ρ‚ΠΎ ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π°Π»Π½ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π΄ΠΎ няколко сСкунди. Π’ΠΎΠ²Π° Π½ΠΈ сС стори голяма ΠΏΠΎΠ±Π΅Π΄Π°.

ΠžΡ‰Π΅ ΠΏΠΎ-голяма производитСлност!

Π—Π°Π΅Π΄Π½ΠΎ с ΠΎΡ‚Π΄Π°Π»Π΅Ρ‡Π΅Π½ΠΎΡ‚ΠΎ ΠΊΠ΅ΡˆΠΈΡ€Π°Π½Π΅, Π·Π° ΠΊΠΎΠ΅Ρ‚ΠΎ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ… ΠΏΠΎ-Π³ΠΎΡ€Π΅, Π΄Π΅ΠΌΠΎΠ½ΡŠΡ‚ mypy ΠΏΠΎΡ‡Ρ‚ΠΈ напълно Ρ€Π΅ΡˆΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈΡ‚Π΅, ΠΊΠΎΠΈΡ‚ΠΎ Π²ΡŠΠ·Π½ΠΈΠΊΠ²Π°Ρ‚, ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡΡ‚ΡŠΡ‚ чСсто стартира ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Ρ‚ΠΈΠΏΠΎΠ²Π΅Ρ‚Π΅, ΠΏΡ€Π°Π²Π΅ΠΉΠΊΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π² малък Π±Ρ€ΠΎΠΉ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅. Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‚ΠΎΠ²Π°, производитСлността Π½Π° систСмата Π² Π½Π°ΠΉ-ΠΌΠ°Π»ΠΊΠΎ благоприятния сцСнарий всС ΠΎΡ‰Π΅ бСшС Π΄Π°Π»Π΅Ρ‡ ΠΎΡ‚ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»Π½Π°Ρ‚Π°. Чистото стартиранС Π½Π° mypy моТСшС Π΄Π° ΠΎΡ‚Π½Π΅ΠΌΠ΅ ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΎΡ‚ 15 ΠΌΠΈΠ½ΡƒΡ‚ΠΈ. А Ρ‚ΠΎΠ²Π° бСшС ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ²Π΅Ρ‡Π΅, ΠΎΡ‚ΠΊΠΎΠ»ΠΊΠΎΡ‚ΠΎ Π½ΠΈ ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΠ²Π°ΡˆΠ΅. Битуацията ΡΡ‚Π°Π²Π°ΡˆΠ΅ всС ΠΏΠΎ-лоша всяка сСдмица, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ програмиститС ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠ°Π²Π°Ρ…Π° Π΄Π° ΠΏΠΈΡˆΠ°Ρ‚ Π½ΠΎΠ² ΠΊΠΎΠ΄ ΠΈ Π΄Π° добавят Π°Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ към ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‰ΠΈΡ ΠΊΠΎΠ΄. ΠΠ°ΡˆΠΈΡ‚Π΅ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈ всС ΠΎΡ‰Π΅ ΠΆΠ°Π΄ΡƒΠ²Π°Ρ…Π° Π·Π° ΠΏΠΎ-голяма производитСлност, Π° Π½ΠΈΠ΅ с удоволствиС бяхмС Π³ΠΎΡ‚ΠΎΠ²ΠΈ Π΄Π° ΠΈΠΌ ΠΎΡ‚Ρ‡Π΅Ρ‚Π΅ΠΌ.

Π Π΅ΡˆΠΈΡ…ΠΌΠ΅ Π΄Π° сС Π²ΡŠΡ€Π½Π΅ΠΌ към Π΅Π΄Π½Π° ΠΎΡ‚ Ρ€Π°Π½Π½ΠΈΡ‚Π΅ ΠΈΠ΄Π΅ΠΈ относно mypy. А ΠΈΠΌΠ΅Π½Π½ΠΎ β€” трансформиранСто Π½Π° Python ΠΊΠΎΠ΄ Π² C ΠΊΠΎΠ΄. ЕкспСримСнтитС с Cython (систСма, която позволява транслацията Π½Π° ΠΊΠΎΠ΄, написан Π½Π° Python, Π² C ΠΊΠΎΠ΄) Π½Π΅ Π½ΠΈ донСсоха Π²ΠΈΠ΄ΠΈΠΌΠΎ ускорСниС, Π·Π°Ρ‚ΠΎΠ²Π° Ρ€Π΅ΡˆΠΈΡ…ΠΌΠ΅ Π΄Π° Π²ΡŠΠ·Ρ€ΠΎΠ΄ΠΈΠΌ идСята Π·Π° написванС Π½Π° собствСн ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€. Въй ΠΊΠ°Ρ‚ΠΎ ΠΊΠΎΠ΄ΠΎΠ²Π°Ρ‚Π° Π±Π°Π·Π° mypy (написана Π½Π° Python) Π²Π΅Ρ‡Π΅ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°ΡˆΠ΅ всички Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈ Ρ‚ΠΈΠΏΠΎΠ²ΠΈ Π°Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ, Π½ΠΈ сС стори Ρ€Π°Π·ΡƒΠΌΠ½ΠΎ Π΄Π° ΠΎΠΏΠΈΡ‚Π°ΠΌΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Ρ‚Π΅Π·ΠΈ Π°Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ Π·Π° ускоряванС Π½Π° Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° Π½Π° систСмата. Π‘ΡŠΡ€Π·ΠΎ ΡΡŠΠ·Π΄Π°Π΄ΠΎΡ… ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ Π·Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Ρ‚Π°Π·ΠΈ идСя. Π’ΠΎΠΉ ΠΏΠΎΠΊΠ°Π·Π° Π½Π°Π΄ 10-ΠΊΡ€Π°Ρ‚Π½ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π½Π° производитСлността ΠΏΡ€ΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΌΠΈΠΊΡ€ΠΎ-Π±Π΅Π½Ρ‡ΠΌΠ°Ρ€ΠΊΠΎΠ²Π΅. ΠΠ°ΡˆΠ°Ρ‚Π° идСя бСшС Π΄Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°ΠΌΠ΅ Python ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Π² C ΠΌΠΎΠ΄ΡƒΠ»ΠΈ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Cython ΠΈ Π΄Π° ΠΏΡ€Π΅Π²Ρ€ΡŠΡ‰Π°ΠΌΠ΅ Ρ‚ΠΈΠΏΠΎΠ²ΠΈ Π°Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ Π² ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π½Π° Ρ‚ΠΈΠΏΠΎΠ²Π΅, ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°Π½ΠΈ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ°Ρ‚Π° (ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ Ρ‚ΠΈΠΏΠΎΠ²ΠΈ Π°Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ сС ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€Π°Ρ‚ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ‚Π΅ ΠΈ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ само ΠΎΡ‚ систСмитС Π·Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π½Π° Ρ‚ΠΈΠΏΠΎΠ²Π΅). По ΡΡŠΡ‰Π΅ΡΡ‚Π²ΠΎ, ΠΏΠ»Π°Π½ΠΈΡ€Π°Ρ…ΠΌΠ΅ Π΄Π° прСнСсСм рСализацията Π½Π° mypy ΠΎΡ‚ Python към Π΅Π·ΠΈΠΊ, ΠΊΠΎΠΉΡ‚ΠΎ Π΅ статично Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€Π°Π½ ΠΈ ΠΊΠΎΠΉΡ‚ΠΎ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° (ΠΈ Π² ΠΏΠΎΠ²Π΅Ρ‡Π΅Ρ‚ΠΎ случаи Ρ€Π°Π±ΠΎΡ‚ΠΈ) Ρ‚ΠΎΡ‡Π½ΠΎ ΠΊΠ°Ρ‚ΠΎ Python. (Π’Π°Π·ΠΈ разновидност Π½Π° мСТдусистСмна миграция стана Π½Π΅Ρ‰ΠΎ ΠΊΠ°Ρ‚ΠΎ традиция Π·Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° mypy. ΠŸΡŠΡ€Π²ΠΎΠ½Π°Ρ‡Π°Π»Π½Π°Ρ‚Π° рСализация Π½Π° mypy бСшС написана Π½Π° Alore, слСд Ρ‚ΠΎΠ²Π° послСдва синтактична хибридизация ΠΌΠ΅ΠΆΠ΄Ρƒ Java ΠΈ Python).

ΠžΡ€ΠΈΠ΅Π½Ρ‚Π°Ρ†ΠΈΡΡ‚Π° към API Π½Π° Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΡΡ‚Π° Π½Π° CPython бСшС ΠΊΠ»ΡŽΡ‡ΠΎΠ²Π°, Π·Π° Π΄Π° Π½Π΅ Π·Π°Π³ΡƒΠ±ΠΈΠΌ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈ Π·Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. НС Π½ΠΈ бСшС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°ΠΌΠ΅ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½Π° машина ΠΈΠ»ΠΈ всякакви Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, ΠΎΡ‚ ΠΊΠΎΠΈΡ‚ΠΎ mypy имашС Π½ΡƒΠΆΠ΄Π°. ОсвСн Ρ‚ΠΎΠ²Π°, всС ΠΎΡ‰Π΅ щяхмС Π΄Π° ΠΈΠΌΠ°ΠΌΠ΅ Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ цялата СкосистСма Π½Π° Python, Π±ΠΈΡ…Π° Π±ΠΈΠ»ΠΈ Π½Π°Π»ΠΈΡ‡Π½ΠΈ всички инструмСнти (ΠΊΠ°Ρ‚ΠΎ pytest). Π’ΠΎΠ²Π° ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°ΡˆΠ΅, Ρ‡Π΅ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠΈΠΌ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€Π°Π½ Python ΠΊΠΎΠ΄ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π°, ΠΊΠΎΠ΅Ρ‚ΠΎ Ρ‰Π΅ΡˆΠ΅ Π΄Π° Π½ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈ Π΄Π° ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠΈΠΌ Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈΠΌ с ΠΌΠ½ΠΎΠ³ΠΎ Π±ΡŠΡ€Π·Π° схСма Π·Π° ΠΊΠΎΡ€Π΅ΠΊΡ†ΠΈΠΈ Π½Π° ΠΊΠΎΠ΄Π° ΠΈ тСстванС, Π° Π½Π΅ Π΄Π° Ρ‡Π°ΠΊΠ°ΠΌΠ΅ компилацията Π½Π° ΠΊΠΎΠ΄Π°. ИзглСТдашС, Ρ‡Π΅ успявамС, Ρ‚Π°ΠΊΠ° Π΄Π° сС ΠΊΠ°ΠΆΠ΅, Π΄Π° сСдим Π½Π° Π΄Π²Π° стола ΠΈ Ρ‚ΠΎΠ²Π° Π½ΠΈ Ρ…Π°Ρ€Π΅ΡΠ²Π°ΡˆΠ΅.

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€, ΠΊΠΎΠΉΡ‚ΠΎ Π½Π°Ρ€Π΅ΠΊΠΎΡ…ΠΌΠ΅ mypyc (Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ Π·Π° Π°Π½Π°Π»ΠΈΠ· Π½Π° Ρ‚ΠΈΠΏΠΎΠ²Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° mypy) сС ΠΎΠΊΠ°Π·Π° доста ΡƒΡΠΏΠ΅ΡˆΠ΅Π½ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚. Π’ ΠΎΠ±Ρ‰ΠΈ Π»ΠΈΠ½ΠΈΠΈ - постигнахмС ΠΎΠΊΠΎΠ»ΠΎ 4-ΠΊΡ€Π°Ρ‚Π½ΠΎ ускорСниС Π½Π° чСсто стартирания mypy Π±Π΅Π· ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΊΠ΅ΡˆΠΈΡ€Π°Π½Π΅. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° Π½Π° ядрото Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° mypyc ΠΎΡ‚ малкия Π΅ΠΊΠΈΠΏ, ΠΊΠΎΠΉΡ‚ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π²Π°ΡˆΠ΅ Майкъл Бъливан, Иван ЛСвкивски, Π₯ю Π₯Π°Π½ ΠΈ ΠΌΠ΅Π½, ΠΎΡ‚Π½Π΅ ΠΎΠΊΠΎΠ»ΠΎ 4 ΠΊΠ°Π»Π΅Π½Π΄Π°Ρ€Π½ΠΈ мСсСца. ΠžΠ±Π΅ΠΌΡŠΡ‚ Π½Π° Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° бСшС ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-малък Π² сравнСниС с Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡ‚ΠΎ Π·Π° прСписванС Π½Π° mypy, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½Π° C++ ΠΈΠ»ΠΈ Π½Π° Go. И ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅, ΠΊΠΎΠΈΡ‚ΠΎ Ρ‚Ρ€ΡΠ±Π²Π°ΡˆΠ΅ Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΠΌ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, бяха ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ, ΠΎΡ‚ΠΊΠΎΠ»ΠΊΠΎΡ‚ΠΎ щяха Π΄Π° Π±ΡŠΠ΄Π°Ρ‚, Π°ΠΊΠΎ Π³ΠΎ ΠΏΡ€Π΅ΠΎΠΏΠΈΡˆΠ΅Ρ…ΠΌΠ΅ Π½Π° Π΄Ρ€ΡƒΠ³ Π΅Π·ΠΈΠΊ. ОсвСн Ρ‚ΠΎΠ²Π° сС надявахмС Π΄Π° ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Ρ€Π°Π·Π²ΠΈΠ΅ΠΌ mypyc Π΄ΠΎ Π½ΠΈΠ²ΠΎ, Π½Π° ΠΊΠΎΠ΅Ρ‚ΠΎ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈ програмисти ΠΎΡ‚ Dropbox Π·Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Π½Π΅ ΠΈ ускоряванС Π½Π° тСхния ΠΊΠΎΠ΄.

Π—Π° Π΄Π° постигнСм Ρ‚Π°ΠΊΠΎΠ²Π° Π½ΠΈΠ²ΠΎ Π½Π° производитСлност, сС Π½Π°Π»ΠΎΠΆΠΈ Π΄Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠΈΠΌ някои интСрСсни ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Π½ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ. НапримСр, ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€ΡŠΡ‚ ΠΌΠΎΠΆΠ΅ Π΄Π° ускори ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π±Π»Π°Π³ΠΎΠ΄Π°Ρ€Π΅Π½ΠΈΠ΅ Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π±ΡŠΡ€Π·ΠΈ нискоуровнСви конструкции Π½Π° C. НапримСр, ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Π½Π° функция сС трансформира Π² ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° C-функция. Π’Π°ΠΊΠΎΠ²Π° ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ сС изпълнява ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-Π±ΡŠΡ€Π·ΠΎ ΠΎΡ‚ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€Π°Π½Π° функция. Някои ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, ΠΊΠ°Ρ‚ΠΎ Ρ‚ΡŠΡ€ΡΠ΅Π½Π΅ Π² Ρ€Π΅Ρ‡Π½ΠΈΡ†ΠΈΡ‚Π΅, всС ΠΎΡ‰Π΅ Ρ€Π°Π·Ρ‡ΠΈΡ‚Π°Ρ…Π° Π½Π° стандартни извиквания Π½Π° C-API ΠΎΡ‚ CPython, ΠΊΠΎΠΈΡ‚ΠΎ слСд компилация сС ΠΎΠΊΠ°Π·Π²Π°Ρ…Π° Π΅Π΄Π²Π° ΠΌΠ°Π»ΠΊΠΎ ΠΏΠΎ-Π±ΡŠΡ€Π·ΠΈ. УспяхмС Π΄Π° сС ΠΎΡ‚ΡŠΡ€Π²Π΅ΠΌ ΠΎΡ‚ Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½Π°Ρ‚Π° натоварСност Π½Π° систСмата, създадСна ΠΎΡ‚ интСрпрСтацията, Π½ΠΎ Ρ‚ΠΎΠ²Π° Π² случая Π΄ΠΎΠ²Π΅Π΄Π΅ СдинствСно Π΄ΠΎ ΠΌΠ°Π»ΠΊΠΎ ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½ΠΈΠ΅ Π² производитСлността.

Π—Π° Π΄Π° ΠΎΡ‚ΠΊΡ€ΠΈΠ΅ΠΌ Π½Π°ΠΉ-разпространСнитС "Π±Π°Π²Π½ΠΈ" ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, Π½Π°ΠΏΡ€Π°Π²ΠΈΡ…ΠΌΠ΅ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΊΠΎΠ΄Π°. Π’ΡŠΠΎΡ€ΡŠΠΆΠ΅Π½ΠΈ с ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΡ‚Π΅ Π΄Π°Π½Π½ΠΈ, сС ΠΎΠΏΠΈΡ‚Π°Ρ…ΠΌΠ΅ ΠΈΠ»ΠΈ Π΄Π° "настроим" mypyc, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ Π΄Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π° ΠΏΠΎ-Π±ΡŠΡ€Π· C-ΠΊΠΎΠ΄ Π·Π° ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, ΠΈΠ»ΠΈ Π΄Π° ΠΏΡ€Π΅Π½Π°ΠΏΠΈΡˆΠ΅ΠΌ ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΈΡ Python ΠΊΠΎΠ΄, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ ΠΏΠΎ-Π±ΡŠΡ€Π·ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ (понякога просто нямахмС Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΎ просто Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π·Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π΅Π½ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ). ΠŸΡ€Π΅Π½Π°ΠΏΠΈΡΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Python ΠΊΠΎΠ΄Π° чСсто сС оказвашС ΠΏΠΎ-лСсното Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, ΠΎΡ‚ΠΊΠΎΠ»ΠΊΠΎΡ‚ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ изпълнСниС Π½Π° ΡΡŠΡ‰Π°Ρ‚Π° трансформация Π² ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€Π°. Π’ Π΄ΡŠΠ»Π³ΠΎΡΡ€ΠΎΡ‡Π΅Π½ ΠΏΠ»Π°Π½ искахмС Π΄Π° Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€Π°ΠΌΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΡ‚ Ρ‚Π΅Π·ΠΈ трансформации, Π½ΠΎ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Ρ†Π΅Π»Ρ‚Π° Π½ΠΈ бСшС Π΄Π° ускорим mypy с ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ усилия. И ΠΏΠΎ ΠΏΡŠΡ‚Ρ към Ρ‚Π°Π·ΠΈ Ρ†Π΅Π», свихмС няколко ъгъла.

ΠŸΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠ΅Π½ΠΈΠ΅ слСдва…

Π£Π²Π°ΠΆΠ°Π΅ΠΌΠΈ Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΠΈ! Какви впСчатлСния Π²ΠΈ остави ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΡŠΡ‚ mypy, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π·Π° ΠΏΡŠΡ€Π²ΠΈ ΠΏΡŠΡ‚ Ρ‡ΡƒΡ…Ρ‚Π΅ Π·Π° Π½Π΅Π³ΠΎ?

ΠŸΡŠΡ‚ΡΡ‚ към ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Ρ‚ΠΈΠΏΠΎΠ²Π΅Ρ‚Π΅ Π½Π° 4 ΠΌΠΈΠ»ΠΈΠΎΠ½Π° Ρ€Π΅Π΄Π° Python ΠΊΠΎΠ΄. Част 2
ΠŸΡŠΡ‚ΡΡ‚ към ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Ρ‚ΠΈΠΏΠΎΠ²Π΅Ρ‚Π΅ Π½Π° 4 ΠΌΠΈΠ»ΠΈΠΎΠ½Π° Ρ€Π΅Π΄Π° Python ΠΊΠΎΠ΄. Част 2

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС със Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS ΠΈ VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС със Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS ΠΈ VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster