Python ΠΈ python Π² Ρ‡Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅

ΠŸΠΎΡ‡Π΅ΠΌΡƒ сущСствуСт Ρ‚Π°ΠΊ ΠΌΠ½ΠΎΠ³ΠΎ ΠŸΠΈΡ‚ΠΎΠ½ΠΎΠ²?

Π£Π΄ΠΈΠ²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, Π½ΠΎ это довольно Π½Π΅ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎΠ΅ заявлСниС. Π§Ρ‚ΠΎ я имСю Π²Π²ΠΈΠ΄Ρƒ ΠΏΠΎΠ΄ β€œΠŸΠΈΡ‚ΠΎΠ½ΠΎΠΌβ€? ΠœΠΎΠΆΠ΅Ρ‚, абстрактный интСрфСйс ΠŸΠΈΡ‚ΠΎΠ½Π°? Или CPython, распространСнная рСализация ΠŸΠΈΡ‚ΠΎΠ½Π° (Π½Π΅ ΠΏΡƒΡ‚Π°Ρ‚ΡŒ с ΠΏΠΎΡ…ΠΎΠΆΠΈΠΌ ΠΏΠΎ названию Cython)? Или я имСю Π²Π²ΠΈΠ΄Ρƒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ совсСм ΠΈΠ½ΠΎΠ΅? ΠœΠΎΠΆΠ΅Ρ‚, я косвСнно ΡΡΡ‹Π»Π°ΡŽΡΡŒ Π½Π° Jython, ΠΈΠ»ΠΈ IronPython, ΠΈΠ»ΠΈ PyPy. Или ΠΌΠΎΠΆΠ΅Ρ‚ я отвлСкся Ρ‚Π°ΠΊ сильно, Ρ‡Ρ‚ΠΎ Π³ΠΎΠ²ΠΎΡ€ΡŽ ΠΎ RPython ΠΈΠ»ΠΈ RubyPython (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡ‡Π΅Π½ΡŒ сильно ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ).

НС смотря Π½Π° ΡΡ…ΠΎΠΆΠ΅ΡΡ‚ΡŒ Π² названиях ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… Π²Ρ‹ΡˆΠ΅ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· Π½ΠΈΡ… ΠΈΠΌΠ΅ΡŽΡ‚ совсСм Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ (ΠΈΠ»ΠΈ, ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ ΠΈΠ½Ρ‹ΠΌΠΈ способами)

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠŸΠΈΡ‚ΠΎΠ½ΠΎΠΌ я столкнулся с ΠΊΡƒΡ‡Π΅ΠΉ Ρ‚Π°ΠΊΠΈΡ… Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ. Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ *ython. Но лишь Π½Π΅Π΄Π°Π²Π½ΠΎ я ΡƒΠ΄Π΅Π»ΠΈΠ» врСмя, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ собой ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΎΠ½ΠΈ (каТдая ΠΏΠΎ-своСму) Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹.

Π’ этом постС я Π½Π°Ρ‡Π½Ρƒ с нуля ΠΈ ΠΏΡ€ΠΎΠΉΠ΄ΡƒΡΡŒ ΠΏΠΎ Ρ€Π°Π·Π½Ρ‹ΠΌ рСализациям ΠŸΠΈΡ‚ΠΎΠ½Π°, Π° Π·Π°ΠΊΠΎΠ½Ρ‡Ρƒ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹ΠΌ Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ Π² PyPy, Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ, ΠΏΠΎ ΠΌΠΎΠ΅ΠΌΡƒ мнСнию, Π±ΡƒΠ΄ΡƒΡ‰Π΅Π΅ языка.

ВсС начинаСтся с понимания Ρ‚ΠΎΠ³ΠΎ, Ρ‡Π΅ΠΌ Π½Π° самом Π΄Π΅Π»Π΅ являСтся β€œΠŸΠΈΡ‚ΠΎΠ½β€.

Если Ρƒ вас Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ машинного ΠΊΠΎΠ΄Π°, Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… машин ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ этот Ρ€Π°Π·Π΄Π΅Π».

ΠŸΠΈΡ‚ΠΎΠ½ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ?

Π­Ρ‚ΠΎ распространСнный источник нСпонимания срСди Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΎΠ² ΠŸΠΈΡ‚ΠΎΠ½Π°.

ΠŸΠ΅Ρ€Π²ΠΎΠ΅, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ: β€œΠŸΠΈΡ‚ΠΎΠ½β€ – это интСрфСйс. БущСствуСт спСцификация, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰Π°Ρ, Ρ‡Ρ‚ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π΄Π΅Π»Π°Ρ‚ΡŒ ΠŸΠΈΡ‚ΠΎΠ½, ΠΈ ΠΊΠ°ΠΊ ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ сСбя вСсти (Ρ‡Ρ‚ΠΎ справСдливо для любого интСрфСйса). И сущСствуСт нСсколько ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΉ (Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ справСдливо для любого интСрфСйса).

Π’Ρ‚ΠΎΡ€ΠΎΠ΅: β€œΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉβ€ ΠΈ β€œΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉβ€ это свойства ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ, Π½ΠΎ Π½Π΅ интСрфСйса.

Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ сам вопрос Π½Π΅ совсСм ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π΅Π½.

Π’ случаС с самой распространСнной Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ (CPython: написанный Π½Π° C, часто Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ просто β€œPython”, ΠΈ, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚ΠΎΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅, Ссли понятия Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚Π΅ ΠΎ Ρ‡Π΅ΠΌ я Ρ‚ΠΎΠ»ΠΊΡƒΡŽ) ΠΎΡ‚Π²Π΅Ρ‚: ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ, с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ компиляциСй. CPython ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅Ρ‚* исходный ΠΊΠΎΠ΄ Π½Π° ΠŸΠΈΡ‚ΠΎΠ½Π΅ Π² Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ этот Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄, запуская Π΅Π³ΠΎ Π² процСссС.

* Π—Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: это Π½Π΅ совсСм β€œΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡβ€ Π² Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎΠΌ смыслС. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ, ΠΌΡ‹ считаСм, Ρ‡Ρ‚ΠΎ β€œΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡβ€ это конвСртация ΠΈΠ· высокоуровнСвого языка Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ – Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Ρ€ΠΎΠ΄Π΅ это β€œΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡβ€.

Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΈΠ·ΡƒΡ‡ΠΈΠΌ этот ΠΎΡ‚Π²Π΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡ΡˆΠ΅, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°ΠΌ ΠΏΠΎΠ½ΡΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ, ΠΎΠΆΠΈΠ΄Π°ΡŽΡ‰ΠΈΠ΅ нас Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅.

Π‘Π°ΠΉΡ‚ΠΊΠΎΠ΄ ΠΈΠ»ΠΈ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄

ΠžΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ Ρ€Π°Π·Π½ΠΈΡ†Ρƒ ΠΌΠ΅ΠΆΠ΄Ρƒ Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄ΠΎΠΌ ΠΈ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΌ (ΠΈΠ»ΠΈ Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΌ) ΠΊΠΎΠ΄ΠΎΠΌ. ΠŸΠΎΠΆΠ°Π»ΡƒΠΉ, Π»Π΅Π³Ρ‡Π΅ всСго Π΅Π΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅:

β€” CΠΈ компилируСтся Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ впослСдствии запускаСтся Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ процСссором. КаТдая инструкция заставляСт процСссор ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ дСйствия.
β€” Java компилируСтся Π² Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ впослСдствии запускаСтся Π½Π° Π’ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ машинС Java (Java Virtual Machine, JVM), абстрактном ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ запускаСт ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. КаТдая инструкция обрабатываСтся JVM, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ взаимодСйствуСт с ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠΌ.

Бильно упрощая: ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ быстрСС, Π½ΠΎ Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄ Π»ΡƒΡ‡ΡˆΠ΅ пСрСносим ΠΈ Π·Π°Ρ‰ΠΈΡ‰Π΅Π½.

ΠœΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ Π² зависимости ΠΎΡ‚ ΠΌΠ°ΡˆΠΈΠ½Ρ‹, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΉ Π½Π° всСх ΠΌΠ°ΡˆΠΈΠ½Π°Ρ…. МоТно ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ ΠΏΠΎΠ΄ Π²Π°ΡˆΡƒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡΡΡŒ ΠΊ CPython, Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

1. CPython ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ ваш исходный ΠΊΠΎΠ΄ Π½Π° ΠŸΠΈΡ‚ΠΎΠ½Π΅ Π² Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄.
2. Π­Ρ‚ΠΎΡ‚ Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄ запускаСтся Π½Π° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ машинС CPython.

ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°ΡˆΠΈΠ½Ρ‹: Jython, IronPython ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅

Как я Π³ΠΎΠ²ΠΎΡ€ΠΈΠ» Π²Ρ‹ΡˆΠ΅, Ρƒ ΠŸΠΈΡ‚ΠΎΠ½Π° сущСствуСт нСсколько Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ. ΠžΠΏΡΡ‚ΡŒ ΠΆΠ΅, ΠΊΠ°ΠΊ Π³ΠΎΠ²ΠΎΡ€ΠΈ-лось Π²Ρ‹ΡˆΠ΅, самой популярной являСтся CPython. Π­Ρ‚Π° вСрсия ΠŸΠΈΡ‚ΠΎΠ½Π° написана Π½Π° C ΠΈ считаСтся ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠ΅ΠΉ β€œΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽβ€.

Но ΠΊΠ°ΠΊ насчСт Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²? Одна ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π²ΠΈΠ΄Π½Ρ‹Ρ… это Jython, рСализация ΠŸΠΈΡ‚ΠΎΠ½Π° Π½Π° Java, которая ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ JVM. Π’ Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ CPython Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄ для запуска Π½Π° CPython VM, Jython Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄ Java для запуска Π½Π° JVM (это Ρ‚ΠΎ ΠΆΠ΅ самоС, Ρ‡Ρ‚ΠΎ гСнСрируСтся ΠΏΡ€ΠΈ компиляции ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° Java).

Python ΠΈ python Π² Ρ‡Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅. image loader. Python ΠΈ python Π² Ρ‡Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ Ρ„ΠΎΡ‚ΠΎ. Python ΠΈ python Π² Ρ‡Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Python ΠΈ python Π² Ρ‡Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader

β€œΠ—Π°Ρ‡Π΅ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½ΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ?”, спроситС Π²Ρ‹. Ну, для Π½Π°Ρ‡Π°Π»Π°, Ρ€Π°Π·Π½Ρ‹Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ…ΠΎΡ€ΠΎΡˆΠΎ ладят с Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ Π½Π°Π±ΠΎΡ€Π°ΠΌΠΈ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ.

CPython ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ написаниС C-Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ для ΠΊΠΎΠ΄Π° Π½Π° ΠŸΠΈΡ‚ΠΎΠ½Π΅ ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π² ΠΊΠΎΠ½Ρ†Π΅ ΠΎΠ½ запускаСтся ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠΌ CΠΈ. Jython Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ Π½Π° Java: Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ Java-классы Π±Π΅Π· Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… усилий, призывая ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ваши Java-классы ΠΈΠ· ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° Jython. (Π—Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: Ссли Π²Ρ‹ Π΅Ρ‰Π΅ Π½Π΅ Π΄ΡƒΠΌΠ°Π»ΠΈ ΠΎΠ± этом Π²ΡΠ΅Ρ€ΡŒΠ΅Π·, это довольно Π±Π΅Π·ΡƒΠΌΠ½ΠΎ. ΠœΡ‹ Π΄ΠΎΠΆΠΈΠ»ΠΈ Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, ΠΊΠΎΠ³Π΄Π° ΠΌΠΎΠΆΠ½ΠΎ ΡΠΌΠ΅ΡˆΠΈΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ языки ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… Π² ΠΎΠ΄Π½Ρƒ ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ. Как Π·Π°ΠΌΠ΅Ρ‚ΠΈΠ» Rostin, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΡΠΌΠ΅ΡˆΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠ΄ Π½Π° Π€ΠΎΡ€Ρ‚Ρ€Π°Π½Π΅ с CΠΈ появились довольно Π΄Π°Π²Π½ΠΎ, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ это Π½Π΅ совсСм Π½ΠΎΠ²ΠΈΠ½ΠΊΠ°. Но это всС ΠΆΠ΅ ΠΊΡ€ΡƒΡ‚ΠΎ.)

Π’ качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°, Π²ΠΎΡ‚ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π½Π° Jython:

[Java HotSpot(TM) 64-Bit Server VM (Apple Inc.)] on java1.6.0_51
>>> from java.util import HashSet
>>> s = HashSet(5)
>>> s.add(«Foo»)
>>> s.add(«Bar»)
>>> s
[Foo, Bar]

МоТно ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Jython: Java :: IronPython: C#. Они Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π½Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΌΠ°ΡˆΠΈΠ½Π°Ρ…, Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ классы C# Π² ΠΊΠΎΠ΄ IronPython ΠΈ классы Java Π² ΠΊΠΎΠ΄ Jython, ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.

Python ΠΈ python Π² Ρ‡Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅. image loader. Python ΠΈ python Π² Ρ‡Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ Ρ„ΠΎΡ‚ΠΎ. Python ΠΈ python Π² Ρ‡Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Python ΠΈ python Π² Ρ‡Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader

ΠšΡΡ‚Π°Ρ‚ΠΈ, Ρ…ΠΎΡ‚ΡŒ это ΠΈ Π½Π΅ станСт ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ для ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° Π½Π° Π΄Ρ€ΡƒΠ³ΡƒΡŽ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ, стоит ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ эти Π½Π° самом Π΄Π΅Π»Π΅ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ. Π­Ρ‚ΠΎ касаСтся Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ способов ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π° Π½Π° ΠŸΠΈΡ‚ΠΎΠ½Π΅. Однако эти отличия, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Π½Π΅-Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹, ΠΎΠ½ΠΈ ΠΈΡΡ‡Π΅Π·Π°ΡŽΡ‚ ΠΈ ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ со Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ ΠΈΠ·-Π·Π° Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, IronPython ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ строки Unicode ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ; ΠΎΠ΄Π½Π°ΠΊΠΎ CPython ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ASCII Π² вСрсиях 2.x (выдавая ΠΎΡˆΠΈΠ±ΠΊΡƒ UnicodeEncodeError для Π½Π΅-ASCII символов), ΠΈ ΠΏΡ€ΠΈ этом ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ символы Unicode ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π² вСрсиях 3.x.

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ Π½Π° Π»Π΅Ρ‚Ρƒ (Just-in-Time Compilation): PyPy ΠΈ Π±ΡƒΠ΄ΡƒΡ‰Π΅Π΅

Π˜Ρ‚Π°ΠΊ, Ρƒ нас Π΅ΡΡ‚ΡŒ имплСмСнтация ΠŸΠΈΡ‚ΠΎΠ½Π°, написанная Π½Π° Π‘ΠΈ, Π΅Ρ‰Π΅ ΠΎΠ΄Π½Π° – Π½Π° Java, ΠΈ Ρ‚Ρ€Π΅Ρ‚ΡŒΡ Π½Π° C#. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΉ шаг: имплСмСнтация ΠŸΠΈΡ‚ΠΎΠ½Π°, написанная на… ΠŸΠΈΡ‚ΠΎΠ½Π΅. (ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Π½Ρ‹ΠΉ Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΡŒ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚, Ρ‡Ρ‚ΠΎ это ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΠΌΠ°Π½Ρ‡ΠΈΠ²ΠΎ).

Π’ΠΎΡ‚ ΠΏΠΎΡ‡Π΅ΠΌΡƒ это ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ±ΠΈΠ²Π°Ρ‚ΡŒ с Ρ‚ΠΎΠ»ΠΊΡƒ. Для Π½Π°Ρ‡Π°Π»Π°, Π΄Π°Π²Π°ΠΉΡ‚Π΅ обсудим ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ Π½Π° Π»Π΅Ρ‚Ρƒ (just-in-time ΠΈΠ»ΠΈ JIT).

JIT. ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΈ ΠΊΠ°ΠΊ

Напомню, Ρ‡Ρ‚ΠΎ Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ быстрСС Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄Π°. Ну, Π° Ρ‡Ρ‚ΠΎ, Ссли Π±Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Π°ΡΡ‚ΡŒ Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄Π° ΠΈ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΊΠ°ΠΊ Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ ΠΊΠΎΠ΄? ΠŸΡ€ΠΈΡˆΠ»ΠΎΡΡŒ Π±Ρ‹ β€œΠ·Π°ΠΏΠ»Π°Ρ‚ΠΈΡ‚ΡŒβ€ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Ρ†Π΅Π½Ρƒ (ΠΈΠ½Ρ‹ΠΌΠΈ словами: врСмя) Π·Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄Π°, Π½ΠΎ Ссли Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ быстрСС, Ρ‚ΠΎ это Π·Π΄ΠΎΡ€ΠΎΠ²ΠΎ! Π­Ρ‚ΠΈΠΌ ΠΈ мотивируСтся JIT-компиляция, гибридная Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ°, которая совмСщаСт Π² сСбС прСимущСства ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎ-Ρ€ΠΎΠ² ΠΈ компиляторов. Π’ Π΄Π²ΡƒΡ… словах – JIT стараСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ систСму ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ.

НапримСр, Π²ΠΎΡ‚ распространСнный ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ JIT:

Π’ этом вся ΡΡƒΡ‚ΡŒ PyPy: ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ JIT Π² ΠŸΠΈΡ‚ΠΎΠ½Π΅ (Π² Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠ΅ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΈ). ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π΅ΡΡ‚ΡŒ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ†Π΅Π»ΠΈ: PyPy Π½Π°Ρ†Π΅Π»Π΅Π½ Π½Π° ΠΊΡ€ΠΎΡΡΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½ΠΎΡΡ‚ΡŒ, Ρ€Π°Π±ΠΎΡ‚Ρƒ с нСбольшим количСством памяти ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ stackless (ΠΎΡ‚ΠΊΠ°Π·Π° ΠΎΡ‚ стСка Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² языка Π‘ΠΈ Π² ΠΏΠΎΠ»ΡŒΠ·Ρƒ собствСнного стСка). Но JIT это Π³Π»Π°Π²Π½ΠΎΠ΅ прСимущСство. Π’ срСднСм Π½Π° основС Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… тСстов, Ρ„Π°ΠΊΡ‚ΠΎΡ€ ускорСния составляСт 6.27. Π‘ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ· схСмы ΠΎΡ‚ PyPy Speed Center:

Python ΠΈ python Π² Ρ‡Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅. image loader. Python ΠΈ python Π² Ρ‡Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ Ρ„ΠΎΡ‚ΠΎ. Python ΠΈ python Π² Ρ‡Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Python ΠΈ python Π² Ρ‡Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader

Π’ PyPy слоТно Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ

Π£ PyPy Π΅ΡΡ‚ΡŒ ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹ΠΉ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π», ΠΈ Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΎΠ½ Ρ…ΠΎΡ€ΠΎΡˆΠΎ совмСстим с CPython (Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π½Π° Π½Π΅ΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Flask, Django, ΠΈ Ρ‚.Π΄.).

Но с PyPy Π΅ΡΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡƒΡ‚Π°Π½ΠΈΡ†Ρ‹. (ΠΎΡ†Π΅Π½ΠΈΡ‚Π΅, ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, это бСссмыслСнноС ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ PyPyPy…). По ΠΌΠΎΠ΅ΠΌΡƒ мнСнию основная ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ PyPy ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ являСтся:

1. Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠΌ ΠŸΠΈΡ‚ΠΎΠ½Π°, написанным Π½Π° RPython (Π½Π΅ Python (я ΠΎΠ±ΠΌΠ°Π½ΡƒΠ» вас Π΄ΠΎ этого)). RPython это подмноТСство Python со статичной Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ. Π’ Python, вСсти Ρ‚Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ бСсСды ΠΎ Ρ‚ΠΈΠΏΠ°Ρ… β€œΠ² Ρ†Π΅Π»ΠΎΠΌ нСвозмоТно” ΠΏΠΎΡ‡Π΅ΠΌΡƒ это Ρ‚Π°ΠΊ слоТно? рассмотритС ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

x = random.choice([1, «foo»])

это ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π½Π° Python (спасибо Ademanβ€˜Ρƒ). Какой Ρ‚ΠΈΠΏ Ρƒ x? Как ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠ±ΡΡƒΠΆΠ΄Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏΡ‹ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, ΠΊΠΎΠ³Π΄Π° Ρ‚ΠΈΠΏΡ‹ Π΄Π°ΠΆΠ΅ Π½Π΅ Ρ„ΠΎΡ€ΡΠΈΡ€ΡƒΡŽΡ‚ΡΡ?). Π’ RPython ΠΌΡ‹ ΠΆΠ΅Ρ€Ρ‚Π²ΡƒΠ΅ΠΌ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒΡŽ, Π½ΠΎ Π²Π·Π°ΠΌΠ΅Π½ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π³ΠΎΡ€Π°Π·Π΄ΠΎ ΠΏΡ€ΠΎΡ‰Π΅ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Ρ‡Π΅Π³ΠΎ Π΅Ρ‰Π΅, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΏΡ€ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ.

2. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠΎΠ΄ Π½Π° RPython Π² Ρ€Π°Π·Π½Ρ‹Π΅ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹ ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ JIT. ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΎΠΉ ΠΏΠΎ-ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ являСтся Π‘ΠΈ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ компилятор RPython-Π²-Π‘ΠΈ, Π½ΠΎ Π² качСствС Ρ†Π΅Π»Π΅Π²ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ JVM ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅.

Для простоты описания, я Π±ΡƒΠ΄Ρƒ Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΡ… PyPy (1) ΠΈ PyPy (2).

Π—Π°Ρ‡Π΅ΠΌ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ эти Π΄Π²Π΅ Π²Π΅Ρ‰ΠΈ, ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ – Π² ΠΎΠ΄Π½ΠΎΠΌ Π½Π°Π±ΠΎΡ€Π΅? Π”ΡƒΠΌΠ°ΠΉΡ‚Π΅ ΠΎΠ± этом Ρ‚Π°ΠΊ: PyPy (1) это ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€, написанный Π½Π° RPython. Π’ΠΎ Π΅ΡΡ‚ΡŒ ΠΎΠ½ Π±Π΅Ρ€Π΅Ρ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ ΠΊΠΎΠ΄ Π½Π° ΠŸΠΈΡ‚ΠΎΠ½Π΅ ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ Π΅Π³ΠΎ Π² Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄. Но Ρ‡Ρ‚ΠΎΠ±Ρ‹ сам ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ (написанный Π½Π° RPython) ΠΌΠΎΠ³ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ, ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ Пи-Ρ‚ΠΎΠ½Π°, Π²Π΅Ρ€Π½ΠΎ?

Π˜Ρ‚Π°ΠΊ, ΠΌΠΎΠΆΠ½ΠΎ просто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ CPython Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€. Но это Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅ слишком быстро.

ВмСсто этого ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ PyPy (2) (Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ RPython Toolchain) Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ PyPy Π² ΠΊΠΎΠ΄ для Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, C, JVM, ΠΈΠ»ΠΈ CLI) для запуска Π½Π° ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΉ машинС, с Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ JIT. Π­Ρ‚ΠΎ волшСбно: PyPy динамичСски добавляСт JIT ΠΊ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Ρƒ, гСнСрируя собствСнный компилятор! (ΠžΠΏΡΡ‚ΡŒ ΠΆΠ΅, это Π±Π΅Π·ΡƒΠΌΠΈΠ΅: ΠΌΡ‹ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€, добавляя Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ, ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ компилятор).

Π’ ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠΎΠ½Ρ†ΠΎΠ² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ исполняСмый Ρ„Π°ΠΉΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ исходный ΠΊΠΎΠ΄ Π½Π° ΠŸΠΈΡ‚ΠΎΠ½Π΅ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡŽ JIT. Π’ΠΎ, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ! ΠŸΠΎΠ½ΡΡ‚ΡŒ слоТновато, Π½ΠΎ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, эта схСма ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚:

Python ΠΈ python Π² Ρ‡Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅. image loader. Python ΠΈ python Π² Ρ‡Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ Ρ„ΠΎΡ‚ΠΎ. Python ΠΈ python Π² Ρ‡Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Python ΠΈ python Π² Ρ‡Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader

ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΠΈΠΌ: настоящая красота PyPy Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ сСбС ΠΊΡƒΡ‡Ρƒ Ρ€Π°Π·Π½Ρ‹Ρ… ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠ² ΠŸΠΈΡ‚ΠΎΠ½Π° Π½Π° RPython Π½Π΅ Π²ΠΎΠ»Π½ΡƒΡΡΡŒ ΠΎ JIT (Π½Π΅ считая ΠΏΠ°Ρ€Ρ‹ Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ). ПослС этого PyPy Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ для нас JIT, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ RPython Toolchain/PyPy (2).

На самом Π΄Π΅Π»Π΅, Ссли ΠΊΠΎΠΏΠ½ΡƒΡ‚ΡŒ Π³Π»ΡƒΠ±ΠΆΠ΅ Π² Π°Π±ΡΡ‚Ρ€Π°ΠΊΡ†ΠΈΡŽ, тСорСтичСски ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ любого языка, Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π² PyPy ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ JIT для этого языка. Π­Ρ‚ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ PyPy концСнтрируСтся Π½Π° ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ самого ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π°, Π° Π½Π΅ Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ языка, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ‚ΠΎΡ‚ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚.

Π’ качСствС отступлСния я Π±Ρ‹ Ρ…ΠΎΡ‚Π΅Π» Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ сам JIT ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ восхититСлСн. Он ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ‚Π΅Ρ…Π½ΠΈΠΊΡƒ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ β€œΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΠ΅β€ (tracing), которая Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Π£Π·Π½Π°Ρ‚ΡŒ большС ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ· этой лСгкодоступной ΠΈ ΠΎΡ‡Π΅Π½ΡŒ интСрСсной ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ.

ΠŸΠΎΠ΄Ρ‹Ρ‚ΠΎΠΆΠΈΠΌ: ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ PyPy-компилятор RPython-Π²-Π‘ΠΈ (ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΡƒΡŽ Ρ†Π΅Π»Π΅Π²ΡƒΡŽ ΠΏΠ»Π°Ρ‚-Ρ„ΠΎΡ€ΠΌΡƒ), Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π½Π° RPython ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚Π°Ρ‚ΠΎΡ€ PyPΡƒ.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

ΠŸΠΎΡ‡Π΅ΠΌΡƒ всС это Ρ‚Π°ΠΊ Π²ΠΎΡΡ…ΠΈΡ‚ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ? ΠŸΠΎΡ‡Π΅ΠΌΡƒ стоит Π³Π½Π°Ρ‚ΡŒΡΡ Π·Π° этой Π±Π΅Π·ΡƒΠΌΠ½ΠΎΠΉ ΠΈΠ΄Π΅Π΅ΠΉ? По-ΠΌΠΎΠ΅ΠΌΡƒ, АлСкс Π“Π΅ΠΉΠ½ΠΎΡ€ объяснил это ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ Π² своСм Π±Π»ΠΎΠ³Π΅: β€œ[Π—Π° PyPy Π±ΡƒΠ΄ΡƒΡ‰Π΅Π΅] ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ [ΠΎΠ½] Π±ΠΎΠ»Π΅Π΅ быстрый, Π±ΠΎΠ»Π΅Π΅ Π³ΠΈΠ±ΠΊΠΈΠΉ ΠΈ являСтся Π»ΡƒΡ‡ΡˆΠ΅ΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΎΠΉ для развития ΠŸΠΈΡ‚ΠΎΠ½Π°β€.

Π”ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅: Π΄Ρ€ΡƒΠ³ΠΈΠ΅ названия, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΠ»Ρ‹ΡˆΠ°Π»ΠΈ

Python 3000 (Py3k): Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½ΠΎΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Python 3.0, основной Ρ€Π΅Π»ΠΈΠ· ΠŸΠΈΡ‚ΠΎΠ½Π° с ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒΡŽ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ появился Π² 2008. Π³ΠΎΠ΄Ρƒ. Команда Py3k прСдсказала, Ρ‡Ρ‚ΠΎ Π½ΠΎΠ²ΠΎΠΉ вСрсии понадобится ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ ΠΏΡΡ‚ΡŒ Π»Π΅Ρ‚ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΏΡ€ΠΈΠΆΠΈΡ‚ΡŒΡΡ. И Π² Ρ‚ΠΎ врСмя, ΠΊΠ°ΠΊ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ (Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π½Π°Π΄ΡƒΠΌΠ°Π½Π½ΠΎΠ΅ ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅) Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Π½Π° ΠŸΠΈΡ‚ΠΎΠ½Π΅ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡŽΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Python 2.x, люди всС большС Π·Π°Π΄ΡƒΠΌΡ‹Π²Π°ΡŽΡ‚ΡΡ ΠΎ Py3k.

Numba: β€œΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ just-in-time компилятор”, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ добавляСт JIT Π² снабТСнный примСчаниями ΠΊΠΎΠ΄ Π½Π° ΠŸΠΈΡ‚ΠΎΠ½Π΅. ΠŸΡ€ΠΎΡ‰Π΅ говоря, Π²Ρ‹ Π΄Π°Π΅Ρ‚Π΅ Π΅ΠΌΡƒ подсказки, Π° ΠΎΠ½ ускоряСт Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ части вашСго ΠΊΠΎΠ΄Π°. Numba являСтся Ρ‡Π°ΡΡ‚ΡŒΡŽ дистрибутива Anaconda Π½Π°Π±ΠΎΡ€Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² для Π°Π½Π°Π»ΠΈΠ·Π° ΠΈ управлСния Π΄Π°Π½Π½Ρ‹ΠΌΠΈ.

IPython: сильно отличаСтся ΠΎΡ‚ всСго, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ обсудили. Π’Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ срСда для ΠŸΠΈΡ‚ΠΎΠ½Π°. Π˜Π½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Π°Ρ, с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ GUI-ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠ² ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.

Psyco: ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ ΠŸΠΈΡ‚ΠΎΠ½Π°, ΠΎΠ΄Π½Π° ΠΈΠ· ΠΏΠ΅Ρ€Π²Ρ‹Ρ… ΠΏΠΎΠΏΡ‹Ρ‚ΠΎΠΊ ΠŸΠΈΡ‚ΠΎΠ½Π° Π² области JIT. Π”Π°Π²Π½ΠΎ ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½ ΠΊΠ°ΠΊ β€œΠ½Π΅ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹ΠΉ ΠΈ мСртвый”. Π“Π»Π°Π²Π½Ρ‹ΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Psyco Армин Π ΠΈΠ³ΠΎ сСйчас Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π°Π΄ PyPy.

ΠŸΡ€ΠΈΠ²ΡΠ·ΠΊΠΈ ΠΊ языкам
JavaScript Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Python 2 vs Python 3

Π§ асто Π² сообщСствС программистов Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π»ΠΈ споры ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ Python Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ: Python 2 ΠΈΠ»ΠΈ Python 3.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, Π² 2020 Π³ΠΎΠ΄Ρƒ, ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ: Python 3 β€” явно Π»ΡƒΡ‡ΡˆΠΈΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ для Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΎΠ² ΠΈΠ»ΠΈ Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ Ρ…ΠΎΡ‡Π΅Ρ‚ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ свои знания. Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ рассмотрим, ΠΏΠΎΡ‡Π΅ΠΌΡƒ Python 3 Π»ΡƒΡ‡ΡˆΠ΅ ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ массово пСрСходят с Python 2 Π½Π° 3.

НСсмотря Π½Π° ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎΠ΅ прСимущСство Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΉ вСрсии, всС ΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ситуации, ΠΊΠΎΠ³Π΄Π° использованиС Π²Ρ‚ΠΎΡ€ΠΎΠΉ вСрсии языка Π±ΠΎΠ»Π΅Π΅ Π²Ρ‹Π³ΠΎΠ΄Π½ΠΎ ΠΈ осмыслСнно.

ΠžΠ±Ρ‰ΠΈΠΉ ΠΎΠ±Π·ΠΎΡ€

ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ возмоТности Python 2 ΠΈ Python 3, ΠΈ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ различия ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ, взглянСм Π½Π° ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ послСдних ΠΊΡ€ΡƒΠΏΠ½Ρ‹Ρ… выпусков Python.

Python 2

Π’Ρ‹ΠΏΡƒΡ‰Π΅Π½Π½Ρ‹ΠΉ Π² ΠΊΠΎΠ½Ρ†Π΅ 2000 Π³ΠΎΠ΄Π°, Python 2 заявлял ΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎΠΌ ΠΈ инклюзивном процСссС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ языка, ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΌΠΈ вСрсиями Python с Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ PEP (Python Enhancement Proposal). ВСхничСская спСцификация прСдставляла ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Ρ‡Π»Π΅Π½Π°ΠΌ сообщСства Python, Π° Ρ‚Π°ΠΊΠΆΠ΅ описывала Π½ΠΎΠ²Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ языка.

Python 2 Π²ΠΊΠ»ΡŽΡ‡Π°Π» мноТСство Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… возмоТностСй, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ цикличСский сборщик мусора, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΉ для Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ управлСния ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ, Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΡƒΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ Unicode для стандартизации символов ΠΈ создания списков.

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Python 2 ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π» Ρ€Π°Π·Π²ΠΈΠ²Π°Ρ‚ΡŒΡΡ, Π±Ρ‹Π»ΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ большС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ объСдинСниС Ρ‚ΠΈΠΏΠΎΠ² ΠΈ классов Python Π² Π΅Π΄ΠΈΠ½ΡƒΡŽ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΡŽ Π² вСрсии Python 2.2.

Python 3

На настоящий ΠΌΠΎΠΌΠ΅Π½Ρ‚ Python 3 считаСтся Π±ΡƒΠ΄ΡƒΡ‰ΠΈΠΌ Python ΠΈ являСтся вСрсиСй, которая всС Π΅Ρ‰Π΅ находится Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅. Π’Ρ€Π΅Ρ‚ΡŒΡ вСрсия Π±Ρ‹Π»Π° Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½Π° Π² ΠΊΠΎΠ½Ρ†Π΅ 2008 Π³ΠΎΠ΄Π° с Ρ†Π΅Π»ΡŒΡŽ устранСния Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… нСдостатков Π΄ΠΈΠ·Π°ΠΉΠ½Π° ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… вСрсий языка.

ΠŸΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Python 3 основноС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡƒΠ΄Π΅Π»ΡΠ»ΠΎΡΡŒ очисткС ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Π±Π°Π·Ρ‹ ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΡŽ избыточности, Ρ‡Ρ‚ΠΎ оставляСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ Π·Π°Π΄Π°Ρ‡Ρƒ лишь ΠΎΠ΄Π½ΠΈΠΌ способом. ΠŸΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° print, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΠ½ стал встроСнной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ. Π’Π°ΠΊΠΆΠ΅ Π±Ρ‹Π»ΠΎ ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½ΠΎ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠ΅ способа раздСлСния Ρ†Π΅Π»Ρ‹Ρ… чисСл, Π±Ρ‹Π»Π° прСдусмотрСна Π»ΡƒΡ‡ΡˆΠ°Ρ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Unicode.

НСмного истории

НачнСм с ΠΊΡ€Π°Ρ‚ΠΊΠΎΠΉ истории Python Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΈ Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΉ вСрсий:

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ отличия Python 2 ΠΎΡ‚ Python 3

Π•ΡΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ этими вСрсиями программирования Π½Π° Python, Π½ΠΎ Π²ΠΎΡ‚ ΠΏΡΡ‚ΡŒ основных.

1 Python 2 β€” это стандарт, Π° Python 3 β€” это Π±ΡƒΠ΄ΡƒΡ‰Π΅Π΅ ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Python 2 Π±Ρ‹Π» самой популярной вСрсиСй Π±ΠΎΠ»Π΅Π΅ пятнадцати Π»Π΅Ρ‚, ΠΎΠ½Π° всС Π΅Ρ‰Π΅ являСтся Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ срСди Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Но, сСйчас ΡƒΠΆΠ΅ всС большС ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ пСрСходят ΠΊ использованию Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΉ вСрсии, поэтому Π½ΠΎΠ²ΠΈΡ‡ΠΊΠ°ΠΌ слСдуСт ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π½Π½ΠΎ Π½Π° Π½Π΅Π΅. Π˜Π·ΡƒΡ‡Π΅Π½ΠΈΠ΅ Π²Ρ‚ΠΎΡ€ΠΎΠΉ вСрсии ΠŸΠΈΡ‚ΠΎΠ½Π° Π½Π° сСгодняшний дСнь ΡƒΠΆΠ΅ являСтся пустой Ρ‚Ρ€Π°Ρ‚ΠΎΠΉ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

2 Python 2 ΠΈ Python 3 ΠΈΠΌΠ΅ΡŽΡ‚ Ρ€Π°Π·Π½Ρ‹Π΅ (ΠΈΠ½ΠΎΠ³Π΄Π° нСсовмСстимыС) Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ БСгодня ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ для использования с Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΉ Ρ‡Π°ΡΡ‚ΡŒΡŽ. Π’ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ старыС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, созданныС для Python 2, Π½Π΅ совмСстимы с ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ вСрсиСй. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Ρƒ вас получится ΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ 2.x Π½Π° 3.x., Π½ΠΎ это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ слоТно ΠΈ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ β€” это ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎ Π½Π΅ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΎΠ².

3 Π›ΡƒΡ‡ΡˆΠ°Ρ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Unicode Π² Python 3 Π’ Python 3 тСкстовыС строки ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Unicode. Π’ Python 2 строки хранятся ΠΊΠ°ΠΊ ASCII ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ β€” Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ «u» Ссли Π²Ρ‹ Π·Π°Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ строки Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ Unicode Π² Python 2.x.

Π­Ρ‚ΠΎ Π²Π°ΠΆΠ½ΠΎ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Unicode Π±ΠΎΠ»Π΅Π΅ унивСрсалСн, Ρ‡Π΅ΠΌ ASCII. Π‘Ρ‚Ρ€ΠΎΠΊΠΈ Unicode ΠΌΠΎΠ³ΡƒΡ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π±ΡƒΠΊΠ²Ρ‹ Π½Π° иностранных языках, латинскиС Π±ΡƒΠΊΠ²Ρ‹ ΠΈ Ρ†ΠΈΡ„Ρ€Ρ‹, символы, смайлики ΠΈ Ρ‚. Π΄., прСдлагая ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π±ΠΎΠ»Π΅Π΅ ΡˆΠΈΡ€ΠΎΠΊΠΈΠΉ Π²Ρ‹Π±ΠΎΡ€.

4 Python 3 ΡƒΠ»ΡƒΡ‡ΡˆΠΈΠ» цСлочислСнноС Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π’ Python 2, Ссли Π²Ρ‹ ΠΏΠΈΡˆΠ΅Ρ‚Π΅ Ρ†Π΅Π»ΠΎΠ΅ число (Π±Π΅Π· Ρ†ΠΈΡ„Ρ€ послС дСсятичной Ρ‚ΠΎΡ‡ΠΊΠΈ), ΠΎΠ½ΠΎ округляСт ваш расчСт Π΄ΠΎ блиТайшСго мСньшСго Ρ†Π΅Π»ΠΎΠ³ΠΎ числа:

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‚ΠΎΡ‡Π½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚, придСтся Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ эту Ρ„ΠΎΡ€ΠΌΡƒΠ»Ρƒ ΠΊΠ°ΠΊ 5.0 / 2.0

Однако, Π² Python 3 Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π²Π΅Ρ€Π½Π΅Ρ‚ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π΅ бСспокоясь ΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ этих Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π½ΡƒΠ»Π΅ΠΉ. ИмСнно Ρ‚Π°ΠΊΠΈΠ΅ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ ΠΎΠ±Π»Π΅Π³Ρ‡Π°ΡŽΡ‚ Π·Π°Π΄Π°Ρ‡Ρƒ изучСния языка программирования всСм Π½ΠΎΠ²ΠΈΡ‡ΠΊΠ°ΠΌ.

5 ВСрсии ΠΈΠΌΠ΅ΡŽΡ‚ Ρ€Π°Π·Π½Ρ‹ΠΉ синтаксис «print» Π­Ρ‚ΠΎ всСго лишь синтаксичСскоС Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅, ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π½Π΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌ, Ρ‚Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Π·Π½Π°Ρ‚ΡŒ ΠΎ Π½Π΅ΠΌ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ. По сути, Π² Python 3 ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ print Π±Ρ‹Π» Π·Π°ΠΌΠ΅Π½Π΅Π½ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ print (). НапримСр, Π² Python 2 это:

Если Π²Ρ‹ ΡΠΎΠ±ΠΈΡ€Π°Π΅Ρ‚Π΅ΡΡŒ ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Python Π²ΠΏΠ΅Ρ€Π²Ρ‹Π΅, Ρ‚ΠΎ это Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ сильно вас ΡƒΠ΄ΠΈΠ²ΠΈΡ‚ΡŒ. Но Ссли Π²Ρ‹ Ρ€Π°Π½Π΅Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ с Python 2, Ρ‚ΠΎ измСнСния ΠΌΠΎΠ³ΡƒΡ‚ ΡΠ±ΠΈΡ‚ΡŒ вас с Ρ‚ΠΎΠ»ΠΊΡƒ.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ пСрСходят с 2-ΠΎΠΉ вСрсии Π½Π° 3-ю?

Как ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΎΡΡŒ Ρ€Π°Π½Π΅Π΅, Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ всС Π΅Ρ‰Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Python 2 ΠΏΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ, Π½ΠΎ всС большС ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΉ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ с 2-ΠΎΠΉ Π½Π° 3-ю Π²Π΅Ρ€ΡΠΈΡŽ. Рассмотрим ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Instagram ΠΈ Facebook β€” ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΡˆΠ»ΠΈ с Python 2 Π½Π° 3 ΠΈΠ»ΠΈ находятся Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π² процСссС (для ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ) β€” ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΎΠ½ΠΈ Ρ€Π΅ΡˆΠΈΠ»ΠΈ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ.

Instagram Π’ 2017 Π³ΠΎΠ΄Ρƒ Instagram пСрСнСс Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ своСго ΠΊΠΎΠ΄Π° с Python 2.7 Π½Π° Python 3. ΠŸΡ€ΠΈΡ‡ΠΈΠ½Ρ‹, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΎΠ½ΠΈ это сдСлали:

Facebook Π’ настоящСС врСмя Facebook находится Π² процСссС обновлСния своСй инфраструктуры ΠΈ систСм ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… с Python вСрсии 2 Π΄ΠΎ Python вСрсии 3.

Богласно Π΄Π°Π½Π½Ρ‹ΠΌ с RealPython:

ΠŸΡ€ΠΎΡΡ‚ΠΎΡ‚Π° использования Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ Python ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ производствСнным ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈΠ»ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ большоС количСство ΠΊΠΎΠ΄Π°, Ρ‡Ρ‚ΠΎ позволяСт ΠΈΠΌ ΡΠΎΡΡ€Π΅Π΄ΠΎΡ‚ΠΎΡ‡ΠΈΡ‚ΡŒΡΡ Π½Π° ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

Π­Ρ‚ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ инфраструктура Facebook способна эффСктивно ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ.

Π‘ ΠΊΠ°ΠΊΠΎΠΉ вСрсии языка ΠΌΠ½Π΅ стоит Π½Π°Ρ‡Π°Ρ‚ΡŒ, Ссли я Π½ΠΎΠ²ΠΈΡ‡ΠΎΠΊ?

Π‘Π°ΠΌΡ‹ΠΉ простой ΠΈ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ ΠΎΡ‚Π²Π΅Ρ‚ β€” с послСднСй вСрсии. ОбновлСния Π²Ρ‹ΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ постоянно ΠΈ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ смысла Π³ΠΎΠ½ΡΡ‚ΡŒΡΡ Π·Π° ΠΏΡ€ΠΈΠ·Ρ€Π°ΠΊΠ°ΠΌΠΈ старых вСрсий. Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, внСсСнных Π² Python 3 Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Ρ‹ Π½Π° ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½ΠΈΠ΅, поэтому Π½ΠΎΠ²ΠΈΡ‡ΠΊΠ°ΠΌ понравятся ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ нововвСдСния, ΠΎΠ½ΠΈ ΡΠ΄Π΅Π»Π°ΡŽΡ‚ процСсс обучСния ΠΏΡ€ΠΎΡ‰Π΅.

НСмаловаТным Ρ„Π°ΠΊΡ‚ΠΎΠΌ выступаСт ΠΈ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ с апрСля 2020 Π³ΠΎΠ΄Π° вСрсия 2.7 большС Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒΡΡ, поэтому Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ смысла Π±Ρ€Π°Ρ‚ΡŒΡΡ Π·Π° ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ, которая пСрСстанСт Π±Ρ‹Ρ‚ΡŒ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ΅Π½Π΅Π΅, Ρ‡Π΅ΠΌ Ρ‡Π΅Ρ€Π΅Π· нСсколько мСсяцСв. Π€Π°ΠΊΡ‚, Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΏΠ°Π΄Π°Ρ‚ΡŒ постСпСнно, Π½ΠΎ, этот процСсс Π½Π΅ΠΈΠ·Π±Π΅ΠΆΠ΅Π½ Π² блиТайшСм Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ.

Π’ ΠΊΠ°ΠΊΠΈΡ… случаях ΠΈΠΌΠ΅Π΅Ρ‚ смысл ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ 2-ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ?

И всС ΠΆΠ΅, сущСствуСт нСсколько ситуаций, ΠΊΠΎΠ³Π΄Π° ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ Π²Ρ‚ΠΎΡ€ΠΎΠΉ вСрсии Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ:

К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, с ΠΊΠ°ΠΊΠΎΠΉ Π±Ρ‹ вСрсии Π²Ρ‹ Π½ΠΈ Π½Π°Ρ‡Π°Π»ΠΈ своС ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅, Π²Π°ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ достаточно Π»Π΅Π³ΠΊΠΎ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π½Π° Π½ΠΎΠ²Π΅ΠΉΡˆΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ, Ρ‚.ΠΊ. Π±Π°Π·Π° Π²Π΅Π·Π΄Π΅ общая.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π’Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ язык программирования: Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ ΠΎ Python

РассказываСм, Ρ‡Π΅ΠΌ Ρ…ΠΎΡ€ΠΎΡˆ Python, слоТно Π»ΠΈ Π΅Π³ΠΎ ΡƒΡ‡ΠΈΡ‚ΡŒ, Π³Π΄Π΅ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚, β€” ΠΈ сравниваСм Python с Java ΠΈ JavaScript.

Python ΠΈ python Π² Ρ‡Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅. d442ae5ec7790943d1d3eba5fe1d4597. Python ΠΈ python Π² Ρ‡Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ Ρ„ΠΎΡ‚ΠΎ. Python ΠΈ python Π² Ρ‡Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅-d442ae5ec7790943d1d3eba5fe1d4597. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Python ΠΈ python Π² Ρ‡Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° d442ae5ec7790943d1d3eba5fe1d4597

Python ΠΈ python Π² Ρ‡Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅. 13158aa9152a51e7c4a2c0f2018520b3. Python ΠΈ python Π² Ρ‡Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ Ρ„ΠΎΡ‚ΠΎ. Python ΠΈ python Π² Ρ‡Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅-13158aa9152a51e7c4a2c0f2018520b3. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Python ΠΈ python Π² Ρ‡Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 13158aa9152a51e7c4a2c0f2018520b3

Python β€” скриптовый язык ΠΎΠ±Ρ‰Π΅Π³ΠΎ назначСния. Π‘ΠΊΡ€ΠΈΠΏΡ‚ΠΎΠ²Ρ‹Π΅ языки ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π·Π°Π΄Π°Ρ‡, Π½ΠΎ Python Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ вписываСтся Π² эти Ρ€Π°ΠΌΠΊΠΈ. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, JavaScript, сфСра примСнСния Python Π½Π΅ ограничиваСтся Π²Π΅Π±-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ: ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΌΡ‹ ΠΎΠ± этом расскаТСм Π½ΠΈΠΆΠ΅.

Python ΠΈ python Π² Ρ‡Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅. 12451909042020 e3ea06ecc4efe66fd609360c227a5daace25eda6. Python ΠΈ python Π² Ρ‡Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ Ρ„ΠΎΡ‚ΠΎ. Python ΠΈ python Π² Ρ‡Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅-12451909042020 e3ea06ecc4efe66fd609360c227a5daace25eda6. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Python ΠΈ python Π² Ρ‡Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 12451909042020 e3ea06ecc4efe66fd609360c227a5daace25eda6

Π­Ρ‚ΠΎΡ‚ язык программирования:

Python ΠΈ python Π² Ρ‡Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅. 12443309042020 934ed956c9b0693fa2e227324bdc5ae191a5705b. Python ΠΈ python Π² Ρ‡Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ Ρ„ΠΎΡ‚ΠΎ. Python ΠΈ python Π² Ρ‡Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅-12443309042020 934ed956c9b0693fa2e227324bdc5ae191a5705b. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Python ΠΈ python Π² Ρ‡Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 12443309042020 934ed956c9b0693fa2e227324bdc5ae191a5705b

Π’ бэкграундС β€” ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, французский язык, акадСмичСскоС рисованиС, капоэйра. БСйчас ΡƒΡ‡ΠΈΡ‚ финский. Π›ΡŽΠ±ΠΈΡ‚ ΠΏΡƒΡ‚Π΅ΡˆΠ΅ΡΡ‚Π²ΠΈΡ ΠΈ БалтийскоС ΠΌΠΎΡ€Π΅.

Для Ρ‡Π΅Π³ΠΎ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚

Из самых популярных отраслСй β€” Data Science, автоматизация ΠΈ Π²Π΅Π±-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°. Π’ΠΎΡ‚ области, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Python:

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Python ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ здСсь: Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ язык программирования Python.

Π›Π΅Π³ΠΊΠΎ Π»ΠΈ ΡƒΡ‡ΠΈΡ‚ΡŒ Python?

Python β€” ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π»ΡƒΡ‡ΡˆΠΈΡ… языков для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…. Он Π³ΠΈΠ±ΠΊΠΈΠΉ, ΠΏΠΎΡ‡Ρ‚ΠΈ Β«Π²ΡΠ΅ΠΏΡ€ΠΎΡ‰Π°ΡŽΡ‰ΠΈΠΉΒ», ΠΈ Ρƒ Π½Π΅Π³ΠΎ минималистичный синтаксис. Π’ Ρ€Π°Π±ΠΎΡ‚Π΅ Π½Π° Python Π²Π°ΠΌ Π½Π΅ придётся Π±Π΅ΡΠΏΠΎΠΊΠΎΠΈΡ‚ΡŒΡΡ ΠΎ тонкостях Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ ΠΈ указатСлями (ΠΊΠ°ΠΊ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² C++), Π·Π°Ρ‚ΠΎ Π²Ρ‹ смоТСтС сразу ΠΏΡ€ΠΈΡΡ‚ΡƒΠΏΠΈΡ‚ΡŒ ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ Π² Π΄Ρ€ΡƒΠΆΠ΅Π»ΡŽΠ±Π½ΠΎΠΉ срСдС. А Π΅Ρ‰Ρ‘ Python ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΠΏΠΈΡˆΠ΅Ρ‚, Π³Π΄Π΅ Ρƒ вас Π² ΠΊΠΎΠ΄Π΅ ошибка ΠΈ какая (Π½Π° английском), β€” это ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠ΄ΠΎΠ±Π½ΠΎ.

ΠŸΠ»ΡŽΡΡ‹ ΠΈ минусы Python

ΠŸΠ»ΡŽΡΡ‹

ΠœΠΈΠ½ΡƒΡΡ‹

КакиС Ρƒ Python ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ‚Ρ‹

Π‘Ρ‚ΠΎΠΈΡ‚ Π»ΠΈ ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠΌΠ΅Π½Π½ΠΎ Python? И Ρ‡Π΅ΠΌ ΠΎΠ½ отличаСтся ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ… языков? Π”Π°Π²Π°ΠΉΡ‚Π΅ сравним Π΅Π³ΠΎ с Java β€” Π΅Ρ‰Ρ‘ ΠΎΠ΄Π½ΠΈΠΌ кроссплатформСнным ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ языком, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Python сорСвнуСтся Π² Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³Π°Ρ…, ΠΈ с JavaScript β€” популярным скриптовым языком для Π²Π΅Π±-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.

Python vs. Java

Python ΠΈ Java β€” сосСди ΠΏΠΎ Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³Ρƒ, ΠΈ Ρƒ Π½ΠΈΡ… Π΅ΡΡ‚ΡŒ ΠΎΠ±Ρ‰ΠΈΠ΅ Ρ‡Π΅Ρ€Ρ‚Ρ‹: Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования ΠΈ ΠΊΡ€ΠΎΡΡΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½ΠΎΡΡ‚ΡŒ.

Но ΠΌΠ½ΠΎΠ³ΠΎ ΠΈ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠΉ.

Випизация

Начнём с Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹Ρ… Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠΉ: Π² Java, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Python, типизация статичСская. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Ρ‚ΠΈΠΏΡ‹ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ Π² ΠΊΠΎΠ΄Π΅ ΠΈ ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π½Π° этапС компиляции, Π° нСкоррСктная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° просто Π½Π΅ запустится. Π’ Python Π²Ρ‹ сэкономитС врСмя Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ (Ρ‚ΠΈΠΏΡ‹ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π½Π΅ Π½Π°Π΄ΠΎ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Ρ‚ΡŒ), Π½ΠΎ ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ… ΡƒΠ·Π½Π°Π΅Ρ‚Π΅ ΡƒΠΆΠ΅ послС запуска ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ

Python β€” ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ язык (ΠΎΠ± этом ΠΌΡ‹ Ρ‡ΡƒΡ‚ΡŒ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ рассказали Π²Ρ‹ΡˆΠ΅), Π° Java ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ, ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΡŽ. Благодаря этому Java ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π²Ρ‹Π³ΠΎΠ΄Ρƒ ΠΎΠ±ΠΎΠΈΡ… способов β€” ΠΊΡ€ΠΎΡΡΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½ΠΎΡΡ‚ΡŒ ΠΈ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ.

Π‘ΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ

Π—Π΄Π΅ΡΡŒ Π²Ρ‹ΠΈΠ³Ρ€Ρ‹Π²Π°Π΅Ρ‚ Java. Π‘ΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ β€” Π΅Ρ‘ большоС прСимущСство, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ Ρƒ Python это ΠΎΠ΄Π½Π° ΠΈΠ· слабостСй. НапримСр, простоС Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠ΅ Π΄Π΅Ρ€Π΅Π²ΠΎ выполняСтся Π² Java Π² 10 Ρ€Π°Π· быстрСС.

Бинтаксис ΠΈ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΡΡ‚ΡŒ

Бинтаксис Java ΠΏΠΎΡ…ΠΎΠΆ Π½Π° синтаксисы C ΠΈ Π‘++. Π£ всСх этих языков достаточно строгий ΠΈ «многословный» синтаксис, ΠΈ для Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΎΠ² это минус: вмСсто Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΡΡ€Π΅Π΄ΠΎΡ‚ΠΎΡ‡ΠΈΡ‚ΡŒΡΡ Π½Π° Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ, приходится большС Π΄ΡƒΠΌΠ°Ρ‚ΡŒ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΏΠΈΡΠ°Ρ‚ΡŒ. Π’ΠΏΡ€ΠΎΡ‡Π΅ΠΌ, ΠΎΡ‚ витиСватости языка ΡΡ‚Ρ€Π°Π΄Π°ΡŽΡ‚ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΈ. Π‘ΠΎΠ»ΡŒΡˆΠ°Ρ Ρ‡Π°ΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ программиста β€” это Ρ€Π°Π±ΠΎΡ‚Π° с ΡƒΠΆΠ΅ написанным ΠΊΠΎΠ΄ΠΎΠΌ, поэтому Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΡΡ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½Π°.

Π’ Python синтаксис ΠΎΡ‡Π΅Π½ΡŒ Π»Π°ΠΊΠΎΠ½ΠΈΡ‡Π½Ρ‹ΠΉ, Π° ΠΊΠΎΠ΄ минималистичный ΠΈ Ρ…ΠΎΡ€ΠΎΡˆΠΎ читаСтся.

ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅

Java β€” Π»ΠΈΠ΄Π΅Ρ€ Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π° Π΅Ρ‰Ρ‘ Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для дСсктопных ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΏΡ€ΠΎΠΌΡ‹ΡˆΠ»Π΅Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ для ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ†ΠΈΠΉ.

Python β€” Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π²Ρ‹Π±ΠΎΡ€ для машинного обучСния, Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ, искусствСнного ΠΈΠ½Ρ‚Π΅Π»Π»Π΅ΠΊΡ‚Π° ΠΈ Π²Π΅Π±-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.

Python vs. JavaScript

Випизация

Π’ Python строгая типизация. Как ΠΌΡ‹ писали Π²Ρ‹ΡˆΠ΅, нСсмотря Π½Π° Ρ‚ΠΎ Ρ‡Ρ‚ΠΎ это достаточно Π³ΠΈΠ±ΠΊΠΈΠΉ язык, Ρƒ Π½Π΅Π³ΠΎ Π΅ΡΡ‚ΡŒ свои Π³Ρ€Π°Π½ΠΈΡ†Ρ‹. Π’ JavaScript слабая типизация: ΠΎΠ½Π° Π΄Π°Ρ‘Ρ‚ Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ свободу, Π½ΠΎ ΠΈΠ·-Π·Π° этого ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Ρ‚ΡŒ ошибки ΠΈΠ»ΠΈ просто странныС выраТСния.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π’ΠΎΠΏ 16 Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ Python ΠΈ C++

Python ΠΈ C++ β€” Π΄Π²Π° ΠΎΡ‡Π΅Π½ΡŒ Ρ€Π°Π·Π½Ρ‹Ρ… языка программирования. Π£ Π½ΠΈΡ… Ρ€Π°Π·Π½Ρ‹Π΅ особСнности ΠΈ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Ρ‹ ΠΎΠ½ΠΈ для Ρ€Π°Π·Π½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡. Однако Ρƒ ΠΎΠ±ΠΎΠΈΡ… Π΅ΡΡ‚ΡŒ ΠΎΠ΄Π½Π° общая Ρ‡Π΅Ρ€Ρ‚Π°: ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования.

Π’ этом руководствС рассмотрим особСнности Python, ΠΈ Π΅Π³ΠΎ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ отличия ΠΎΡ‚ C++.

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ C++

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ Python

Π’Π΅ΠΏΠ΅Ρ€ΡŒ посмотрим Π½Π° основныС отличия:

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€C++Python
ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡΠšΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉΠ˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ
ΠŸΡ€ΠΎΡΡ‚ΠΎΡ‚Π° Π² ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠΈΠŸΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄ нСпростоЛСгко ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄
БтатичСская/динамичСская типизацияБтатичСски типизируСмыйДинамичСски Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ
ΠŸΠΎΡ€Ρ‚Π°Ρ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒΠΠ΅ ΠΏΠΎΡ€Ρ‚Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉΠŸΠΎΡ€Ρ‚Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ
Π‘Π±ΠΎΡ€ΠΊΠ° мусораНС ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ сборку ΠΌΡƒΡΠΎΡ€Π°ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ сборку мусора
Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ°ΠŸΡ€ΠΎΡΡ‚Π°Ρ установкаБлоТный Π² установкС
Π’ΠΈΠΏΡ‹Π’ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΠΈΠŸΡ€ΠΈΠ²ΡΠ·Ρ‹Π²Π°Π΅Ρ‚ΡΡ ΠΊ значСниям, провСряСмым Π²ΠΎ врСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹
ΠžΠ±Π»Π°ΡΡ‚ΡŒ видимости ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Ρ‹ Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… Π±Π»ΠΎΠΊΠΎΠ² ΠΈ цикловДоступны Π²Π½Π΅ Ρ†ΠΈΠΊΠ»ΠΎΠ² ΠΈΠ»ΠΈ Π±Π»ΠΎΠΊΠΎΠ²
БыстроС прототипированиСНСвозмоТноВозмоТно
Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Ρ‹ ΠΏΠΎ Ρ‚ΠΈΠΏΡƒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠΌΡƒ типуНСт ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ ΠΏΠΎ Ρ‚ΠΈΠΏΡƒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠΌΡƒ Ρ‚ΠΈΠΏΡƒ
Π­Ρ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒΠ‘Π»ΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒΠ›Π΅Π³ΠΊΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΈΠ½Ρ‚Π°ΠΊΡΠΈΡΠ°Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π±Π»ΠΎΠΊΠΈ ΠΈ Ρ‚ΠΎΡ‡ΠΊΠΈ с запятойНСт Π±Π»ΠΎΠΊΠΎΠ² ΠΈ Ρ‚ΠΎΡ‡Π΅ΠΊ с запятой (ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ отступы)
Π‘ΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡΠ‘Ρ‹ΡΡ‚Ρ€Ρ‹ΠΉΠœΠ΅Π΄Π»Π΅Π½Π½Ρ‹ΠΉ
ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΠ’Ρ‹ΡΠΎΠΊΠ°Ρ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΠΠΈΠ·ΠΊΠ°Ρ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ
ΠŸΠΎΠΏΡƒΠ»ΡΡ€Π½ΠΎΡΡ‚ΡŒΠ‘ΠΎΠ»Π΅Π΅ популярный Π²ΠΎ встроСнных ΠΈ энтСрпрайз-систСмахНаиболСС популярСн Π² машинном ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠΈ
ΠŸΡ€ΠΎΡΡ‚ΠΎΡ‚Π° ΠΈ удобство использованияБлоТСн Π² ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠΈ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ…ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² машинном ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠΈ ΠΈ Π²Π΅Π±-прилоТСниях

ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ отличия C++ ΠΈ Python

Π”Π°Π»ΡŒΡˆΠ΅ пСрСчислСны основныС отличия C++ ΠΈ Python с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния языков программирования.

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ

C++ β€” это ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ язык. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ создаСт ΠΊΠΎΠ΄ ΠΈΠ· написанного программистом, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΌ выполняСтся для получСния Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°.

ИспользованиС

Π£ C++ ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ слоТный синтаксис. Код Π½Π° этом языкС ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π΅ Ρ‚Π°ΠΊ просто.

Π£ Python синтаксис ΠΎΡ‡Π΅Π½ΡŒ простой, поэтому ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ выглядят Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΡ‰Π΅ ΠΈ ΠΈΡ… Π»Π΅Π³Ρ‡Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ.

БтатичСская/динамичСская типизация

C++ β€” статичСски Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ язык. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽΡ‚ΡΡ Π²ΠΎ врСмя компиляции. Благодаря этому исходный ΠΊΠΎΠ΄ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ Π·Π°Ρ‰ΠΈΡ‰Π΅Π½ ΠΎΡ‚ ошибок.

Python ΠΆΠ΅ прСдрасполоТСн ΠΊ ошибкам, вСдь Ρ‚ΠΈΠΏΡ‹ Ρ‚Π°ΠΌ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽΡ‚ΡΡ ΡƒΠΆΠ΅ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

ΠŸΠΎΡ€Ρ‚Π°Ρ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ

Python ΠΏΠΎΡ€Ρ‚Π°Ρ‚ΠΈΠ²Π΅Π½. Он Ρ‚Π°ΠΊΠΆΠ΅ кроссплатформСнный, Ρ‡Ρ‚ΠΎ позволяСт Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄ Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… устройствах.

C++ Π½Π΅ являСтся ΠΏΠΎΡ€Ρ‚Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΌ, поэтому для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ ΠΊΠΎΠ΄ Π½ΡƒΠΆΠ½ΠΎ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ: «Написал ΠΊΠΎΠ΄ ΠΎΠ΄Π½Π°ΠΆΠ΄Ρ‹, ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠΉ Π²Π΅Π·Π΄Π΅Β».

Π‘Π±ΠΎΡ€ΠΊΠ° мусора/ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ

Π’ C++ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ. Π—Π΄Π΅ΡΡŒ Π½Π΅Ρ‚ автоматичСской сборки мусора.

Python ΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ сборку мусора. Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ Π² Π½Π΅ΠΌ осущСствляСтся автоматичСски.

БыстроС ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Python ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒΡΡ быстрым ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΡ‚ΠΎΠΌ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΡ… языках программирования.

ΠžΠ±Π»Π°ΡΡ‚ΡŒ видимости ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…

Код Π² C++ раздСляСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Ρ… скобок Π² Ρ†ΠΈΠΊΠ»Π°Ρ…. ΠžΠ±Π»Π°ΡΡ‚ΡŒ видимости ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π° этими Π±Π»ΠΎΠΊΠ°ΠΌΠΈ.

Π’ Python ΠΎΠ±Π»Π°ΡΡ‚ΡŒ видимости ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π½Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π° Π½ΠΈΡ‡Π΅ΠΌ. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ доступны Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΎΠ΄Π½ΠΎΠΉ конструкции.

Установка

C++ ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π½Π° Windows, Π° Π²ΠΎΡ‚ с Python послоТнСС. НСкоторыС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π½Π΅ совмСстимы с Windows.

Π’ C++ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ²ΡΠ·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΊ ΠΈΠΌΠ΅Π½Π°ΠΌ ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ компиляции. Π­Ρ‚ΠΎ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ количСство Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… ошибок ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅.

Π’ Python ΠΆΠ΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽΡ‚ΡΡ ΡƒΠΆΠ΅ Π²ΠΎ врСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Из-Π·Π° этого количСство ошибок Π² этом языкС ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ большС.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ β€” это Π±Π»ΠΎΠΊΠΈ ΠΊΠΎΠ΄Π° с ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ»ΠΈ нСсколькими ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ. Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ³ΠΎ значСния Π΅ΡΡ‚ΡŒ свой Ρ‚ΠΈΠΏ.

Π’ C++ Ρ‚ΠΈΠΏΡ‹ всСх Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΠ²ΠΏΠ°Π΄Π°Ρ‚ΡŒ с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ пСрСдаСтся. Π’ Python Ρ‚Π°ΠΊΠΈΡ… ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ Π½Π΅Ρ‚.

Π­Ρ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ

Код Π½Π° C++ слоТнСС ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ становится Ρ‚ΠΎΠ»ΡŒΠΊΠΎ слоТнСС с ростом Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

Π£ Python ΠΆΠ΅ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚ Π±ΠΎΠ»Π΅Π΅ чистый ΠΊΠΎΠ΄ ΠΈ понятный синтаксис. Π•Π³ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π»Π΅Π³Ρ‡Π΅.

Π‘Π»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ синтаксиса

Π’ C++ Π΅ΡΡ‚ΡŒ Ρ‡Π΅Ρ‚ΠΊΠΎΠ΅ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π±Π»ΠΎΠΊΠΎΠ² с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Ρ… скобок, Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ‚ΠΎΡ‡Π΅ΠΊ с запятой. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ этот ΠΊΠΎΠ΄ ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½.

Π’ Python ΠΆΠ΅ Π½Π΅Ρ‚ Π½ΠΈ скобок, Π½ΠΈ Ρ‚ΠΎΡ‡Π΅ΠΊ с запятой. Π’Π°ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ отступы.

Π‘ΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ выполнСния

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° C++ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ быстрСС. ИмСнно поэтому этот язык ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Ρ‚Π΅Ρ… сфСрах, Π³Π΄Π΅ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² ΠΈΠ³Ρ€Π°Ρ….

Python ΠΆΠ΅ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅. Код Π½Π° Python Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π΄Π°ΠΆΠ΅ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅ Java-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ

C++ β€” статичСски Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ язык, поэтому ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ мСньшС ошибок. Π’Π°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ быстрСС. Π­Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ C++ Π²Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ языком.

Python динамичСский, поэтому ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π½ΠΈΠΌ Ρ‡Π°Ρ‰Π΅ происходят ошибки, Π° общая ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π½ΠΈΠΆΠ΅ Π² сравнСнии с C++.

Π—Π°Ρ‚ΠΎ Π² машинном ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠΈ Python ΠΏΠΎΡ‡Ρ‚ΠΈ Π½Π΅Ρ‚ Ρ€Π°Π²Π½Ρ‹Ρ….

ΠŸΡ€ΠΎΡΡ‚ΠΎΡ‚Π° ΠΈ удобство Π² использовании

Python Π΄Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΈΡΠ°Ρ‚ΡŒ простой ΠΈ понятный ΠΊΠΎΠ΄. Π­Ρ‚ΠΎ позволяСт Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ слоТныС прилоТСния для машинного обучСния, Π½Π΅ Π·Π°Π΄ΡƒΠΌΡ‹Π²Π°ΡΡΡŒ ΠΎΠ± особСнностях синтаксиса.

Π’Π°ΠΊΠΆΠ΅ Python Π»Π΅Π³Ρ‡Π΅ ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ. О C++ Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ нСльзя. Π­Ρ‚ΠΎ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹ΠΉ язык, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ большС ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°ΠΌ, Ρ‡Π΅ΠΌ людям.

Π£ Python Π² этом ΠΏΠ»Π°Π½Π΅ прСимущСство, особСнности Ссли Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ ΠΎ прилоТСниях для машинного обучСния.

ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ достоинства Python

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° C++ Π½Π°Π΄ Python

Часто Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ вопросы

Π›ΡƒΡ‡ΡˆΠ΅ ΡƒΡ‡ΠΈΡ‚ΡŒ C++ вмСсто Python?

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡΡ‚ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π΅ΠΌΡƒ ΡƒΡ‡ΠΈΡ‚ΡŒ. Π­Ρ‚ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ зависит ΠΎΡ‚ потрСбностСй. Если вас интСрСсуСт систСмноС ΠΈΠ»ΠΈ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, Ρ‚ΠΎ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° C++.

Если ΠΆΠ΅ Π±Π»ΠΈΠΆΠ΅ машинноС ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅, Ρ‚ΠΎ Python ΠΏΠΎΠ΄ΠΎΠΉΠ΄Π΅Ρ‚ большС. Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с Π²Π΅Π±-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Ruby, JavaScript, Angular ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.

ВсС зависит ΠΎΡ‚ интСрСсов ΠΈ потрСбностСй. Плюс, Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ лишним Π·Π½Π°Ρ‚ΡŒ нСсколько языков программирования.

Python Π»ΡƒΡ‡ΡˆΠ΅ Ρ‡Π΅ΠΌ C++

Π”Π°. Если Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ ΠΎ простотС синтаксиса ΠΈ лСгкости освоСния. Python ΠΌΠΎΠΆΠ½ΠΎ Π²Π·ΡΡ‚ΡŒ просто для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ. Π’Π°ΠΌ Π½Π΅Ρ‚ Ρ‚ΠΎΡ‡Π΅ΠΊ с запятой, ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ, шаблонов, STL, Ρ‚ΠΈΠΏΠΎΠ² ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с основами программирования, Ρ‚ΠΎ Python явно Π»ΡƒΡ‡ΡˆΠ΅ C++. Однако послСдний Π²Ρ‹ΠΈΠ³Ρ€Ρ‹Π²Π°Π΅Ρ‚ Π² ΠΏΠ»Π°Π½Π΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, скорости Ρ€Π°Π±ΠΎΡ‚Ρ‹, ΡˆΠΈΡ€ΠΎΡ‚Ρ‹ примСнСния ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.

ΠœΠΎΠΆΠ΅Ρ‚ Π»ΠΈ Python Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ C++

НСт. C ΠΈ C++ ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ основу программирования. По сути, Π΄Π°ΠΆΠ΅ Python построСн Π½Π° Π±Π°Π·Π΅ C. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‚Π°ΠΊΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Python Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· этих языков.

Он ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Π²ΠΏΠ΅Ρ€Π΅Π΄ΠΈ Π² Ρ‚Π΅Ρ… сфСрах, Π³Π΄Π΅ Π½Π΅Ρ‚ взаимодСйствия с устройствами, ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, ΡΠ΅Ρ€ΡŒΠ΅Π·Π½ΠΎΠ³ΠΎ управлСния рСсурсами ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.

Π§Ρ‚ΠΎ Π»ΡƒΡ‡ΡˆΠ΅, Ссли Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ ΠΈΠ· C++, Python ΠΈ Java

Π£ всСх Ρ‚Ρ€Π΅Ρ… языков Π΅ΡΡ‚ΡŒ свои прСимущСства ΠΈ нСдостатки. C++ славится своСй ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ, ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ. Π’ Java основноС β€” это Π΅Π³ΠΎ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°. Π’ Ρ‚ΠΎ ΠΆΠ΅ врСмя для Python Π³Π»Π°Π²Π½ΠΎΠ΅ простота, Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΡΡ‚ΡŒ ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° со стороны сообщСства.

Π›ΠΈΡ‡Π½Ρ‹Π΅ прСдпочтСния ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π²Ρ‹Π±ΠΎΡ€. Π‘Π΅Π· этого Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΎΠΉ язык Π»ΡƒΡ‡ΡˆΠ΅.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ C++ быстрСС Python

По ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ:

Π­Ρ‚ΠΎ всС ΠΈ влияСт Π½Π° Π±ΠΎΠ»Π΅Π΅ Π²Ρ‹ΡΠΎΠΊΡƒΡŽ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° C++. Π’ΠΎΡ‚ Ρ‡Ρ‚ΠΎ влияСт Π½Π° Π±ΠΎΠ»Π΅Π΅ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ Python:

Π’Ρ‹Π²ΠΎΠ΄Ρ‹

C++ ΠΈ Python β€” Ρ€Π°Π·Π½Ρ‹Π΅ языки с Ρ€Π°Π·Π½Ρ‹ΠΌ Π½Π°Π±ΠΎΡ€ΠΎΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ областями примСнСния. Π£ Python Π±ΠΎΠ»Π΅Π΅ простой синтаксис, Ρ…ΠΎΡ€ΠΎΡˆΠ°Ρ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΡΡ‚ΡŒ, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΎΠ½ ΠΏΡ€ΠΎΠΈΠ³Ρ€Ρ‹Π²Π°Π΅Ρ‚ C++ Π² ΠΏΠ»Π°Π½Π΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈ скорости.

Python ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для машинного обучСния, Π° C++ β€” для ΡˆΠΈΡ€ΠΎΠΊΠΎΠ³ΠΎ спСктра ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ систСмноС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *