ΠŸΡŠΡ‚ΡΡ‚ към ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Ρ‚ΠΈΠΏΠΎΠ²Π΅Ρ‚Π΅ Π² 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 Π³. Π²Π΅Ρ‡Π΅ Ρ€Π°Π·ΠΏΠΎΠ»Π°Π³Π°Ρ…ΠΌΠ΅ с ΠΎΠΊΠΎΠ»ΠΎ 420 000 Ρ€Π΅Π΄Π° Python ΠΊΠΎΠ΄ с Π°Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ Π½Π° Ρ‚ΠΈΠΏΠΎΠ²Π΅. Много ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈenthusiастично ΠΏΡ€ΠΈΠ΅Ρ…Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°Ρ‚Π° Π½Π° Ρ‚ΠΈΠΏΠΎΠ²Π΅. Π’ Dropbox mypy бСшС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ ΠΎΡ‚ всС ΠΏΠΎΠ²Π΅Ρ‡Π΅ Π΅ΠΊΠΈΠΏΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈ.

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

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

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

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

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

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

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

Π Π΅ΡˆΠΈΡ…ΠΌΠ΅ Π΄Π° сС Π²ΡŠΡ€Π½Π΅ΠΌ към Π΅Π΄Π½Π° ΠΎΡ‚ Ρ€Π°Π½Π½ΠΈΡ‚Π΅ ΠΈΠ΄Π΅ΠΈ ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ с mypy. А ΠΈΠΌΠ΅Π½Π½ΠΎ – ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Python ΠΊΠΎΠ΄ Π² C ΠΊΠΎΠ΄. ЕкспСримСнтитС с Cython (систСма, която позволява транслация Π½Π° ΠΊΠΎΠ΄ написан Π½Π° Python Π² C ΠΊΠΎΠ΄) Π½Π΅ Π½ΠΈ донСсоха Π²ΠΈΠ΄ΠΈΠΌΠΎ ускорСниС, Π·Π°Ρ‚ΠΎΠ²Π° Ρ€Π΅ΡˆΠΈΡ…ΠΌΠ΅ Π΄Π° Π²ΡŠΠ·Ρ€ΠΎΠ΄ΠΈΠΌ идСята Π·Π° написванС Π½Π° собствСн ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€. Въй ΠΊΠ°Ρ‚ΠΎ ΠΊΠΎΠ΄ΠΎΠ²Π°Ρ‚Π° Π±Π°Π·Π° Π½Π° mypy (написана Π½Π° Python) Π²Π΅Ρ‡Π΅ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°ΡˆΠ΅ всички Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈ Ρ‚ΠΈΠΏΠΎΠ²ΠΈ Π°Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ, Π½ΠΈ сС стори, Ρ‡Π΅ Π΅ достойно Π΄Π° ΠΎΠΏΠΈΡ‚Π°ΠΌΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Ρ‚Π΅Π·ΠΈ Π°Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ Π·Π° ускоряванС Π½Π° Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° Π½Π° систСмата. Π‘ΡŠΡ€Π·ΠΎ ΡΡŠΠ·Π΄Π°Π΄ΠΎΡ… ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ Π·Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Ρ‚Π°Π·ΠΈ идСя. Π’ΠΎΠΉ ΠΏΠΎΠΊΠ°Π·Π° ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΎΡ‚ дСсСткратно ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π½Π° производитСлността ΠΏΡ€ΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΌΠΈΠΊΡ€ΠΎ-Π±Π΅Π½Ρ‡ΠΌΠ°Ρ€ΠΊΠΎΠ²Π΅. Π˜Π΄Π΅ΡΡ‚Π° Π½ΠΈ бСшС Π΄Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°ΠΌΠ΅ 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