ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ ΠΏΠΈΡΠΎΠ½
ΠΡΠΎΠ²Π΅ΡΠΊΠ° ΡΠΈΠΏΠΎΠ² Π΄Π°Π½Π½ΡΡ ΠΈ Β«ΡΡΠΈΠ½Π°ΡΒ» ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ Π² Python
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ Π²Π°ΠΌ ΡΠ°ΡΡΠΊΠ°ΠΆΠ΅ΠΌ ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ΅ ΡΠΈΠΏΠΎΠ², ΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠΈΠΏΠ°Ρ Π΄Π°Π½Π½ΡΡ Π² ΡΠ°Π·Π½ΡΡ ΡΠ·ΡΠΊΠ°Ρ , Π° ΡΠ°ΠΊΠΆΠ΅ ΠΎ Π½Π΅ΡΠ²Π½ΠΎΠΉ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠΈ ΠΈ ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠ°Ρ .
Π Python ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΡΠΈΠΏΠΎΠ² Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π² ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ΅. Π’Π°ΠΊ ΠΊΠ°ΠΊ Python β ΡΠ·ΡΠΊ Ρ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠ΅ΠΉ, ΠΎΠ½ Π½Π΅ Π·Π°ΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΏΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΡΠΈΠΏ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ². ΠΡΠΎ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΠΎΡΠΈΠ±ΠΊΠ°ΠΌ, ΠΏΡΠΈΡΠ΅ΠΌ ΠΈΡ Π±ΡΠ΄Π΅Ρ ΡΡΡΠ΄Π½ΠΎ Π½Π°ΠΉΡΠΈ. Π§ΡΠΎΠ±Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΡΡΠΎΠ³ΠΎ, Python ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²ΠΌΠ΅ΡΡΠ΅ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²ΡΠ²Π°ΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΠΈΠΏΠΎΠ² Π²ΠΌΠ΅ΡΡΠ΅ Ρ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΌ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠΌ Π½Π΅ΡΠ²Π½ΠΎΠΉ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠΈ.
Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π΄Π²Π° ΠΌΠ΅ΡΠΎΠ΄Π° ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠΈ, Π·Π° ΠΊΠ°ΠΆΠ΄ΡΠΌ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ ΡΡΠΎΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΡΠ·ΡΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ:
Π―Π·ΡΠΊΠΈ ΡΠΎ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠ΅ΠΉ
ΠΡΠΎΠ²Π΅ΡΠΊΠ° ΡΠΈΠΏΠ° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΡΠΈΡΡΠ΅ΠΌΠ° ΡΠΈΠΏΠΎΠ² ΡΠ·ΡΠΊΠ° Π·Π°ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ²Π½ΠΎ ΠΎΠ±ΡΡΠ²Π»ΡΡΡ Β«ΡΠΈΠΏ Π΄Π°Π½Π½ΡΡ Β» ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΏΠ΅ΡΠ΅Π΄ Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ.
ΠΠΎΡ ΡΡΠ΄ ΡΠ·ΡΠΊΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠΎ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠ΅ΠΉ: Scala, Java, C++ ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΎΠ²ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° Π² ΡΠ·ΡΠΊΠ΅ Scala Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
Π―Π·ΡΠΊΠΈ Ρ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠ΅ΠΉ
Π ΡΡΠΈΡ ΡΠ·ΡΠΊΠ°Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΡΠΈΠΏΠ° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΡΠΈΡΡΠ΅ΠΌΠ° ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠΈ ΡΠ·ΡΠΊΠ° Π½Π΅ ΡΡΠ΅Π±ΡΠ΅Ρ ΡΠ²Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΡΠΈΠΏΠ° Π΄Π°Π½Π½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΏΠ΅ΡΠ΅Π΄ Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ. Π ΡΠ·ΡΠΊΠ°ΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Ρ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠ΅ΠΉ ΠΎΡΠ½ΠΎΡΡΡΡΡ Python, JavaScript, Ruby ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΡΡΡΠΎΠΊΠΎΠ²ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° Π² ΡΠ·ΡΠΊΠ΅ Python ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
ΠΠ΄Π΅ΡΡ ΠΌΡ Π²ΠΈΠ΄ΠΈΠΌ, ΡΡΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ myCar Π½Π΅ Π½ΡΠΆΠ½ΠΎ ΡΠ²Π½ΠΎ ΠΎΠ±ΡΡΠ²Π»ΡΡΡ.
Π€ΡΠ½ΠΊΡΠΈΠΈ type() ΠΈ βisinstance() Π² Python
ΠΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠΉ Π²ΡΡΠ΅ ΠΊΠΎΠ΄ Π²ΡΠ΄Π°Π΅Ρ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° βintβ. Π’ΠΈΠΏ Π΄Π°Π½Π½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ my_var ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠΌ, ΠΈ ΡΡΠ½ΠΊΡΠΈΡ type() ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Π΅Π³ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ.
ΠΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ isinstance(‘ obj ‘,’ class ‘) Π² ΡΠ·ΡΠΊΠ΅ Python ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΈ Π΄Π°Π½Π½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ( ‘obj’ ) ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠΌ ΠΊΠ»Π°ΡΡΠ° ( ‘class’ ). ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ Π±ΡΠ»Π΅Π²ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ( True ΠΈΠ»ΠΈ False ).
ΠΠ΅ΡΠ²Π½Π°Ρ (Β«ΡΡΠΈΠ½Π°ΡΒ») ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ Π² Python
Π Python Π΄Π΅ΠΉΡΡΠ²ΡΠ΅Ρ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠΉ ΠΏΡΠΈΠ½ΡΠΈΠΏ: Β«ΠΡΠ»ΠΈ ΡΡΠΎ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΠΊΠ°ΠΊ ΡΡΠΊΠ°, ΠΏΠ»Π°Π²Π°Π΅Ρ ΠΊΠ°ΠΊ ΡΡΠΊΠ° ΠΈ ΠΊΡΡΠΊΠ°Π΅Ρ ΠΊΠ°ΠΊ ΡΡΠΊΠ°, ΡΠΎ ΡΡΠΎ, Π²Π΅ΡΠΎΡΡΠ½ΠΎ, ΠΈ Π΅ΡΡΡ ΡΡΠΊΠ°Β». ΠΠΎΠΏΡΠΎΡΡΡ Π³ΠΎΠ²ΠΎΡΡ, ΡΠΈΠΏ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΈΠ»ΠΈ ΠΊΠ»Π°ΡΡΠ° Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, Π½ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΈ ΡΠ²ΠΎΠΉΡΡΠ²Π°, ΡΠΎΠ³Π΄Π° ΠΎΠ±ΡΠ΅ΠΊΡ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΡΠ΅Π»ΠΈ.
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌ ΡΡΠΎ Π½Π° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅.
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π±ΡΠ΄Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ:
ΠΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠΈ ΡΠΈΠΏΠΎΠ² ΠΈ ΠΌΠΎΠ΄ΡΠ»Ρ mypy
Π£ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΡΠ·ΡΠΊΠΎΠ², ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ Python, Π΅ΡΡΡ ΡΠ²ΠΎΠΈ ΠΌΠΎΡΠ½ΡΠ΅ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π°, Π½ΠΎ Π΅ΡΡΡ ΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΈ. ΠΠ΄Π½ΠΈΠΌ ΠΈΠ· Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΎΠ² ΡΠ²Π»ΡΠ΅ΡΡΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠ΅ ΠΎΡΠΈΠ±ΠΎΠΊ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ (runtime error) ΠΊΠΎΠ³Π΄Π° Python Π½Π΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ ΠΏΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΈΠΏΠΎΠ². Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΌΠΎΠ³ΡΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡ Π±Π°Π³ΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Ρ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠ΅ΠΌ Π΄Π»ΠΈΠ½Ρ ΠΊΠΎΠ΄Π° ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π²ΡΠ΅ ΡΡΡΠ΄Π½Π΅ΠΉ Π½Π°ΠΉΡΠΈ.
ΠΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠΈ ΡΠΈΠΏΠΎΠ² ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ Π² Python Π½Π°ΡΠΈΠ½Π°Ρ Ρ Π²Π΅ΡΡΠΈΠΈ 3.5. Π Π±ΠΎΠ»Π΅Π΅ ΡΡΠ°ΡΡΠ΅ Π²Π΅ΡΡΠΈΠΈ ΠΌΠΎΠ³ΡΡ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ Π΄Π°Π½Π½ΡΠΉ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π».
ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΎΡΡΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ Π±Π΅Π· ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΎΠΊ ΡΠΈΠΏΠΎΠ² ΠΈ ΠΌΠΎΠ΄ΡΠ»Ρ mypy.
ΠΠ°Π½Π½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π° Π΄Π»Ρ Π²ΡΡΠΈΡΠ°Π½ΠΈΡ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ. ΠΠ½Π° ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π½Π° Π²Ρ ΠΎΠ΄ Π΄Π²Π° ΡΠ΅Π»ΡΡ ΡΠΈΡΠ»Π° ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΈΡ ΡΠ°Π·Π½ΠΎΡΡΡ.
mypy β ΡΡΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ Python, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ Π² ΠΏΡΠΎΠ²Π΅ΡΠΊΠ΅ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠΈΠΏΠΎΠ². ΠΠ½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ Python ΠΈΠ»ΠΈ Π½Π΅ΡΠ²Π½ΡΡ (Β«ΡΡΠΈΠ½ΡΡΒ») ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ Ρ ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠΎΠΉ ΡΠ°ΠΌΠΎΠ³ΠΎ ΡΠΈΠΏΠ°.
ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΠ°ΠΌ ΠΌΠΎΠ΄ΡΠ»Ρ mypy:
ΠΠ°Π»Π΅Π΅ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ°ΠΉΠ» Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ mypy_example.py Π½Π° ΡΠ²ΠΎΠ΅ΠΌ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΌ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ΅ ΠΈ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ ΡΡΠ΄Π° ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄:
ΠΡΠΎ ΠΏΡΠΎΡΡΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π΄Π²Π° ΡΠ΅Π»ΡΡ ΡΠΈΡΠ»Π° Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π²Ρ ΠΎΠ΄Π½ΡΡ Π΄Π°Π½Π½ΡΡ Π² ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ΅, Π° ΠΏΠΎΡΠ»Π΅ β->β ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΡΠΈΠΏ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΡ Π΄Π°Π½Π½ΡΡ , ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°ΠΊΠΆΠ΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠΌ (βintβ). ΠΠΎ Ρ ΠΎΡΡ ΡΡΠ½ΠΊΡΠΈΡ Π΄ΠΎΠ»ΠΆΠ½Π° Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ (int), Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ ΡΡΡΠΎΠΊΠ° βSubtracted two integersβ.
ΠΠ°ΠΏΡΡΡΠΈΡΠ΅ ΡΠΊΠ°Π·Π°Π½Π½ΡΠΉ Π²ΡΡΠ΅ ΠΊΠΎΠ΄ Π² ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠΊΠ°Π·Π°Π½Π° ΠΎΡΠΈΠ±ΠΊΠ°, ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΠ°Ρ Π½Π° Π½Π΅ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ ΡΠΈΠΏΠΎΠ² (Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ βintΒ», Π° Π²ΡΠ΄Π°Π΅ΡΡΡ βstrβ).
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ΅ΠΏΠ΅ΡΡ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠΌ ΡΠΈΠΏ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. ΠΠ°ΠΌΠ΅Π½ΠΈΠΌ ΡΡΡΠΎΠΊΠΎΠ²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π° ΡΠ°Π·Π½ΠΈΡΡ Π΄Π²ΡΡ ΡΠ΅Π»ΡΡ ΡΠΈΡΠ΅Π». Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π±ΡΠ΄Π΅Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΡΡ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅.
ΠΡ Π²ΠΈΠ΄ΠΈΠΌ, ΡΡΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΡΡΠΏΠ΅ΡΠ½ΠΎ, Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Π½Π΅ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΎ.
ΠΠΎΠ·Π΄ΡΠ°Π²Π»ΡΠ΅ΠΌ!
ΠΠΈΠΊΠ±Π΅Π· ΠΏΠΎ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠΈ Π² ΡΠ·ΡΠΊΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ
ΠΡΠ° ΡΡΠ°ΡΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠΉ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ ΡΠ΅Ρ Π²Π΅ΡΠ΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΎΡΡΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π·Π½Π°ΡΡ ΠΎ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠΈ, ΡΡΠΎΠ±Ρ Π½Π΅ Π½Π°Π·ΡΠ²Π°ΡΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΡΡ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ Π·Π»ΠΎΠΌ, Lisp β Π±Π΅ΡΡΠΈΠΏΠΎΠ²ΡΠΌ ΡΠ·ΡΠΊΠΎΠΌ, Π° C β ΡΠ·ΡΠΊΠΎΠΌ ΡΠΎ ΡΡΡΠΎΠ³ΠΎΠΉ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠ΅ΠΉ.
Π ΠΏΠΎΠ»Π½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π²ΡΠ΅Ρ Π²ΠΈΠ΄ΠΎΠ² ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠΈ, ΠΏΡΠΈΠΏΡΠ°Π²Π»Π΅Π½Π½ΠΎΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ°ΠΌΠΈ ΠΊΠΎΠ΄Π°, ΡΡΡΠ»ΠΊΠ°ΠΌΠΈ Π½Π° ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠ΅ ΡΠ·ΡΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π»ΡΠ½ΡΠΌΠΈ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠ°ΠΌΠΈ.
Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ ΡΠ½Π°ΡΠ°Π»Π° ΠΊΡΠ°ΡΠΊΡΡ Π²Π΅ΡΡΠΈΡ ΡΡΠ°ΡΡΠΈ, Π° Π·Π°ΡΠ΅ΠΌ ΠΏΡΠΈ Π½Π°Π»ΠΈΡΠΈΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΡ ΠΈ ΠΏΠΎΠ»Π½ΡΡ.
ΠΡΠ°ΡΠΊΠ°Ρ Π²Π΅ΡΡΠΈΡ
Π―Π·ΡΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠΈΠ½ΡΡΠΎ Π΄Π΅Π»ΠΈΡΡ Π½Π° Π΄Π²Π° Π±ΠΎΠ»ΡΡΠΈΡ Π»Π°Π³Π΅ΡΡ β ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΈ Π½Π΅ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ (Π±Π΅ΡΡΠΈΠΏΠΎΠ²ΡΠ΅). Π ΠΏΠ΅ΡΠ²ΠΎΠΌΡ Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΎΡΠ½ΠΎΡΡΡΡΡ C, Python, Scala, PHP ΠΈ Lua, Π° ΠΊΠΎ Π²ΡΠΎΡΠΎΠΌΡ β ΡΠ·ΡΠΊ Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ°, Forth ΠΈ Brainfuck.
Π’Π°ΠΊ ΠΊΠ°ΠΊ Β«Π±Π΅ΡΡΠΈΠΏΠΎΠ²Π°Ρ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡΒ» ΠΏΠΎ ΡΠ²ΠΎΠ΅ΠΉ ΡΡΡΠΈ β ΠΏΡΠΎΡΡΠ° ΠΊΠ°ΠΊ ΠΏΡΠΎΠ±ΠΊΠ°, Π΄Π°Π»ΡΡΠ΅ ΠΎΠ½Π° Π½ΠΈ Π½Π° ΠΊΠ°ΠΊΠΈΠ΅ Π΄ΡΡΠ³ΠΈΠ΅ Π²ΠΈΠ΄Ρ Π½Π΅ Π΄Π΅Π»ΠΈΡΡΡ. Π Π²ΠΎΡ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠ·ΡΠΊΠΈ ΡΠ°Π·Π΄Π΅Π»ΡΡΡΡΡ Π΅ΡΠ΅ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠ΅ΡΠ΅ΡΠ΅ΠΊΠ°ΡΡΠΈΡ ΡΡ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΉ:
ΠΡΠΈΠΌΠ΅ΡΡ:
Π‘ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ: C, Java, C#;
ΠΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠ°Ρ: Python, JavaScript, Ruby.
ΠΡΠΈΠΌΠ΅ΡΡ:
Π‘ΠΈΠ»ΡΠ½Π°Ρ: Java, Python, Haskell, Lisp;
Π‘Π»Π°Π±Π°Ρ: C, JavaScript, Visual Basic, PHP.
ΠΡΠΈΠΌΠ΅ΡΡ:
Π―Π²Π½Π°Ρ: C++, D, C#
ΠΠ΅ΡΠ²Π½Π°Ρ: PHP, Lua, JavaScript
Π’Π°ΠΊΠΆΠ΅ Π½ΡΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ Π²ΡΠ΅ ΡΡΠΈ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ ΠΏΠ΅ΡΠ΅ΡΠ΅ΠΊΠ°ΡΡΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ·ΡΠΊ C ΠΈΠΌΠ΅Π΅Ρ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΡΡ ΡΠ»Π°Π±ΡΡ ΡΠ²Π½ΡΡ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ, Π° ΡΠ·ΡΠΊ Python β Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΡΡ ΡΠΈΠ»ΡΠ½ΡΡ Π½Π΅ΡΠ²Π½ΡΡ.
Π’Π΅ΠΌ-Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ Π½Π΅ Π±ΡΠ²Π°Π΅Ρ ΡΠ·ΡΠΊΠΎΠ² ΡΠΎ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠΉ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ. Π₯ΠΎΡΡ Π·Π°Π±Π΅Π³Π°Ρ Π²ΠΏΠ΅ΡΠ΅Π΄ ΡΠΊΠ°ΠΆΡ, ΡΡΠΎ ΡΡΡ Ρ Π²ΡΡ β ΠΎΠ½ΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ, Π½ΠΎ ΠΎΠ± ΡΡΠΎΠΌ ΠΏΠΎΠ·ΠΆΠ΅.
ΠΠΎΠ΄ΡΠΎΠ±Π½Π°Ρ Π²Π΅ΡΡΠΈΡ
ΠΡΠ»ΠΈ ΠΊΡΠ°ΡΠΊΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ ΠΠ°ΠΌ ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΎΡΡ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ, Ρ ΠΎΡΠΎΡΠΎ. ΠΠ΅ Π·ΡΡ ΠΆΠ΅ Ρ ΠΏΠΈΡΠ°Π» ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΡΡ? ΠΠ»Π°Π²Π½ΠΎΠ΅, ΡΡΠΎ Π² ΠΊΡΠ°ΡΠΊΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ ΠΏΡΠΎΡΡΠΎ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΡΠΌΠ΅ΡΡΠΈΡΡ Π²ΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΡΡ ΠΈ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, Π° ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π°Ρ Π±ΡΠ΄Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠ»ΠΈΡΠΊΠΎΠΌ Π΄Π»ΠΈΠ½Π½ΠΎΠΉ, ΡΡΠΎΠ±Ρ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠΌΠΎΠ³ Π΅Π΅ ΠΏΡΠΎΡΠ΅ΡΡΡ, Π½Π΅ Π½Π°ΠΏΡΡΠ³Π°ΡΡΡ.
ΠΠ΅ΡΡΠΈΠΏΠΎΠ²Π°Ρ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ
Π Π±Π΅ΡΡΠΈΠΏΠΎΠ²ΡΡ ΡΠ·ΡΠΊΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ β Π²ΡΠ΅ ΡΡΡΠ½ΠΎΡΡΠΈ ΡΡΠΈΡΠ°ΡΡΡΡ ΠΏΡΠΎΡΡΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡΠΌΠΈ Π±ΠΈΡ, ΡΠ°Π·Π»ΠΈΡΠ½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ.
ΠΠ΅ΡΡΠΈΠΏΠΎΠ²Π°Ρ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ ΠΎΠ±ΡΡΠ½ΠΎ ΠΏΡΠΈΡΡΡΠ° Π½ΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΠΌ (ΡΠ·ΡΠΊ Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ°, Forth) ΠΈ ΡΠ·ΠΎΡΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ (Brainfuck, HQ9, Piet) ΡΠ·ΡΠΊΠ°ΠΌ. ΠΠ΄Π½Π°ΠΊΠΎ ΠΈ Ρ Π½Π΅Π΅, Π½Π°ΡΡΠ΄Ρ Ρ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠ°ΠΌΠΈ, Π΅ΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π°.
ΠΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π°
ΠΠ΅Π΄ΠΎΡΡΠ°ΡΠΊΠΈ
Π‘ΠΈΠ»ΡΠ½Π°Ρ Π±Π΅Π·ΡΠΈΠΏΠΎΠ²Π°Ρ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ?
ΠΠ°, ΡΠ°ΠΊΠΎΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ Π² ΡΠ·ΡΠΊΠ΅ Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ° (Π΄Π»Ρ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ Ρ 86/Ρ 86-64, Π΄ΡΡΠ³ΠΈΡ Π½Π΅ Π·Π½Π°Ρ) Π½Π΅Π»ΡΠ·Ρ Π°ΡΡΠ΅ΠΌΠ±Π»ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π΅ΡΠ»ΠΈ Π²Ρ ΠΏΠΎΠΏΡΡΠ°Π΅ΡΠ΅ΡΡ Π·Π°Π³ΡΡΠ·ΠΈΡΡ Π² ΡΠ΅Π³ΠΈΡΡΡ cx (16 Π±ΠΈΡ) Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ· ΡΠ΅Π³ΠΈΡΡΡΠ° rax (64 Π±ΠΈΡΠ°).
mov cx, eax ; ΠΎΡΠΈΠ±ΠΊΠ° Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π°ΡΡΠ΅ΠΌΠ±Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ
Π’Π°ΠΊ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ, ΡΡΠΎ Π² Π°ΡΡΠ΅ΠΌΠ»Π΅ΡΠ΅ Π²ΡΠ΅-ΡΠ°ΠΊΠΈ Π΅ΡΡΡ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ? Π― ΡΡΠΈΡΠ°Ρ, ΡΡΠΎ ΡΡΠΈΡ ΠΏΡΠΎΠ²Π΅ΡΠΎΠΊ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ. Π ΠΠ°ΡΠ΅ ΠΌΠ½Π΅Π½ΠΈΠ΅, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, Π·Π°Π²ΠΈΡΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΡ ΠΠ°Ρ.
Π‘ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠΈ
ΠΠ»Π°Π²Π½ΠΎΠ΅, ΡΡΠΎ ΠΎΡΠ»ΠΈΡΠ°Π΅Ρ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΡΡ (static) ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ ΠΎΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΉ (dynamic) ΡΠΎ, ΡΡΠΎ Π²ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΠΈΠΏΠΎΠ² Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π½Π° ΡΡΠ°ΠΏΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ, Π° Π½Π΅ ΡΡΠ°ΠΏΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ.
ΠΠ΅ΠΊΠΎΡΠΎΡΡΠΌ Π»ΡΠ΄ΡΠΌ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΡΡΡ, ΡΡΠΎ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π° (Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΡΠ°ΠΊ ΠΈ Π΅ΡΡΡ, Π½ΠΎ ΠΎΡ ΡΡΠΎΠ³ΠΎ Π΄Π°Π²Π½ΠΎ ΠΈΠ·Π±Π°Π²ΠΈΠ»ΠΈΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΈΠΊ). ΠΠ΅ΠΊΠΎΡΠΎΡΡΠΌ ΠΆΠ΅, ΡΡΠΎ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠ·ΡΠΊΠΈ β ΡΡΠΎ ΠΈΠ³ΡΠ° Ρ ΠΎΠ³Π½Π΅ΠΌ, Π½ΠΎ ΠΊΠ°ΠΊΠΈΠ΅ ΠΆΠ΅ ΡΠ΅ΡΡΡ ΠΈΡ Π²ΡΠ΄Π΅Π»ΡΡΡ? ΠΠ΅ΡΠΆΠ΅Π»ΠΈ ΠΎΠ±Π° Π²ΠΈΠ΄Π° ΠΈΠΌΠ΅ΡΡ ΡΠ°Π½ΡΡ Π½Π° ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΠ΅? ΠΡΠ»ΠΈ Π½Π΅Ρ, ΡΠΎ ΠΏΠΎΡΠ΅ΠΌΡ ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ, ΡΠ°ΠΊ ΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΡΠ·ΡΠΊΠΎΠ²?
ΠΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠΈ
ΠΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠΈ
ΠΠ±ΠΎΠ±ΡΠ΅Π½Π½ΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
Π₯ΠΎΡΠΎΡΠΎ, ΡΠ°ΠΌΡΠΉ Π²Π°ΠΆΠ½ΡΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ Π·Π° Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΡΡ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ β ΡΠ΄ΠΎΠ±ΡΡΠ²ΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΠΎΠ±ΠΎΠ±ΡΠ΅Π½Π½ΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ². ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠΌ ΡΠ΅Π±Π΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ β Π½Π°ΠΌ Π½ΡΠΆΠ½Π° ΡΡΠ½ΠΊΡΠΈΡ ΠΏΠΎΠΈΡΠΊΠ° ΠΏΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌ ΠΌΠ°ΡΡΠΈΠ²Π°ΠΌ (ΠΈΠ»ΠΈ ΡΠΏΠΈΡΠΊΠ°ΠΌ) β ΠΏΠΎ ΠΌΠ°ΡΡΠΈΠ²Ρ ΡΠ΅Π»ΡΡ ΡΠΈΡΠ΅Π», ΠΏΠΎ ΠΌΠ°ΡΡΠΈΠ²Ρ Π²Π΅ΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΡ ΠΈ ΠΌΠ°ΡΡΠΈΠ²Ρ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ².
ΠΠ°ΠΊ ΠΆΠ΅ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ Π΅Π΅ ΡΠ΅ΡΠ°ΡΡ? Π Π΅ΡΠΈΠΌ Π΅Π΅ Π½Π° 3-Π΅Ρ ΡΠ°Π·Π½ΡΡ ΡΠ·ΡΠΊΠ°Ρ : ΠΎΠ΄Π½ΠΎΠΌ Ρ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠ΅ΠΉ ΠΈ Π΄Π²ΡΡ ΡΠΎ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ.
ΠΠ»Π³ΠΎΡΠΈΡΠΌ ΠΏΠΎΠΈΡΠΊΠ° Ρ Π²ΠΎΠ·ΡΠΌΡ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΏΡΠΎΡΡΠ΅ΠΉΡΠΈΡ β ΠΏΠ΅ΡΠ΅Π±ΠΎΡ. Π€ΡΠ½ΠΊΡΠΈΡ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΠΈΡΠΊΠΎΠΌΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ, ΡΠ°ΠΌ ΠΌΠ°ΡΡΠΈΠ² (ΠΈΠ»ΠΈ ΡΠΏΠΈΡΠΎΠΊ) ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΠΈΠ½Π΄Π΅ΠΊΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°, ΠΈΠ»ΠΈ, Π΅ΡΠ»ΠΈ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ β (-1).
ΠΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ (Python):
ΠΠ°ΠΊ Π²ΠΈΠ΄ΠΈΡΠ΅, Π²ΡΠ΅ ΠΏΡΠΎΡΡΠΎ ΠΈ Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Ρ ΡΠ΅ΠΌ, ΡΡΠΎ ΡΠΏΠΈΡΠΎΠΊ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ Ρ ΠΎΡΡ ΡΠΈΡΠ»Π°, Ρ ΠΎΡΡ ΡΠΏΠΈΡΠΊΠΈ, Ρ ΠΎΡΡ Π΄ΡΡΠ³ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΠ²Ρ Π½Π΅Ρ. ΠΡΠ΅Π½Ρ Ρ ΠΎΡΠΎΡΠΎ. ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΠΉΠ΄Π΅ΠΌ Π΄Π°Π»ΡΡΠ΅ β ΡΠ΅ΡΠΈΠΌ ΡΡΡ-ΠΆΠ΅ Π·Π°Π΄Π°ΡΡ Π½Π° Π‘ΠΈ!
Π‘ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ (Π‘ΠΈ):
ΠΡ, ΠΊΠ°ΠΆΠ΄Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΏΠΎΡ ΠΎΠΆΠ° Π½Π° Π²Π΅ΡΡΠΈΡ ΠΈΠ· Python, Π½ΠΎ ΠΏΠΎΡΠ΅ΠΌΡ ΠΈΡ ΡΡΠΈ? ΠΠ΅ΡΠΆΠ΅Π»ΠΈ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠΈΠ³ΡΠ°Π»ΠΎ?
Π Π΄Π°, ΠΈ Π½Π΅Ρ. ΠΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΠ΅ΡΠΎΠ΄ΠΈΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΎΠ΄Π½Ρ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ ΠΌΡ ΡΠ΅ΠΉΡΠ°Ρ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ. ΠΠ½Π° Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΎΠ±ΠΎΠ±ΡΠ΅Π½Π½ΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΡΠ·ΡΠΊ C++ Π΅Π΅ Π½Π΅ΠΏΠ»ΠΎΡ ΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ. ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ Π½Π° Π½ΠΎΠ²ΡΡ Π²Π΅ΡΡΠΈΡ:
Π‘ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ (ΠΎΠ±ΠΎΠ±ΡΠ΅Π½Π½ΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, C++):
Π₯ΠΎΡΠΎΡΠΎ! ΠΡΠΎ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ Π½Π΅ ΡΠΈΠ»ΡΠ½ΠΎ ΡΠ»ΠΎΠΆΠ½Π΅Π΅ ΡΠ΅ΠΌ Π²Π΅ΡΡΠΈΡ Π½Π° Python ΠΈ ΠΏΡΠΈ ΡΡΠΎΠΌ Π½Π΅ ΠΏΡΠΈΡΠ»ΠΎΡΡ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΈΡΠ°ΡΡ. ΠΠ΄ΠΎΠ±Π°Π²ΠΎΠΊ ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π΄Π»Ρ Π²ΡΠ΅Ρ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ², Π° Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ 3-Π΅Ρ , Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ Π΄Π»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π·Π°Π΄Π°ΡΠΈ!
ΠΡΠ° Π²Π΅ΡΡΠΈΡ ΠΏΠΎΡ ΠΎΠΆΠ΅ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠΎ, ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ β ΠΌΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΏΠ»ΡΡΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠΈ ΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠ»ΡΡΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΉ.
ΠΠ΄ΠΎΡΠΎΠ²ΠΎ, ΡΡΠΎ ΡΡΠΎ Π²ΠΎΠΎΠ±ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π΅ΡΠ΅ Π»ΡΡΡΠ΅. ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ ΠΎΠ±ΠΎΠ±ΡΠ΅Π½Π½ΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ΄ΠΎΠ±Π½Π΅Π΅ ΠΈ ΠΊΡΠ°ΡΠΈΠ²Π΅Π΅ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π² ΡΠ·ΡΠΊΠ΅ Haskell). ΠΠΎ-Π²ΡΠΎΡΡΡ ΠΏΠΎΠΌΠΈΠΌΠΎ ΠΎΠ±ΠΎΠ±ΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ ΠΏΠΎΠ»ΠΈΠΌΠΎΡΡΠΈΠ·ΠΌ (ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π±ΡΠ΄Π΅Ρ Ρ ΡΠΆΠ΅), ΠΏΠ΅ΡΠ΅Π³ΡΡΠ·ΠΊΡ ΡΡΠ½ΠΊΡΠΈΠΉ (Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ) ΠΈΠ»ΠΈ ΠΌΠ°ΠΊΡΠΎΡΡ.
Π‘ΡΠ°ΡΠΈΠΊΠ° Π² Π΄ΠΈΠ½Π°ΠΌΠΈΠΊΠ΅
Π’Π°ΠΊΠΆΠ΅ Π½ΡΠΆΠ½ΠΎ ΡΠΏΠΎΠΌΡΠ½ΡΡΡ, ΡΡΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠ·ΡΠΊΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΡΡ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ:
Π‘ΠΈΠ»ΡΠ½Π°Ρ ΠΈ ΡΠ»Π°Π±Π°Ρ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠΈ
Π―Π·ΡΠΊΠΈ Ρ ΡΠΈΠ»ΡΠ½ΠΎΠΉ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠ΅ΠΉ Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΡΠΌΠ΅ΡΠΈΠ²Π°ΡΡ ΡΡΡΠ½ΠΎΡΡΠΈ ΡΠ°Π·Π½ΡΡ ΡΠΈΠΏΠΎΠ² Π² Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡΡ ΠΈ Π½Π΅ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π½ΠΈΠΊΠ°ΠΊΠΈΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠΉ. Π’Π°ΠΊΠΆΠ΅ ΠΈΡ Π½Π°Π·ΡΠ²Π°ΡΡ Β«ΡΠ·ΡΠΊΠΈ Ρ ΡΡΡΠΎΠ³ΠΎΠΉ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠ΅ΠΉΒ». ΠΠ½Π³Π»ΠΈΠΉΡΠΊΠΈΠΉ ΡΠ΅ΡΠΌΠΈΠ½ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ β strong typing.
Π‘Π»Π°Π±ΠΎ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠ·ΡΠΊΠΈ, Π½Π°ΠΎΠ±ΠΎΡΠΎΡ Π²ΡΡΡΠ΅ΡΠΊΠΈ ΡΠΏΠΎΡΠΎΠ±ΡΡΠ²ΡΡΡ, ΡΡΠΎΠ±Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ ΡΠΌΠ΅ΡΠΈΠ²Π°Π» ΡΠ°Π·Π½ΡΠ΅ ΡΠΈΠΏΡ Π² ΠΎΠ΄Π½ΠΎΠΌ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΈ, ΠΏΡΠΈΡΠ΅ΠΌ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΡΠ°ΠΌ ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ Π²ΡΠ΅ ΠΊ Π΅Π΄ΠΈΠ½ΠΎΠΌΡ ΡΠΈΠΏΡ. Π’Π°ΠΊΠΆΠ΅ ΠΈΡ Π½Π°Π·ΡΠ²Π°ΡΡ Β«ΡΠ·ΡΠΊΠΈ Ρ Π½Π΅ΡΡΡΠΎΠ³ΠΎΠΉ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠ΅ΠΉΒ». ΠΠ½Π³Π»ΠΈΠΉΡΠΊΠΈΠΉ ΡΠ΅ΡΠΌΠΈΠ½ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ β weak typing.
Π‘Π»Π°Π±ΡΡ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ ΡΠ°ΡΡΠΎ ΠΏΡΡΠ°ΡΡ Ρ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΉ, ΡΡΠΎ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ Π½Π΅Π²Π΅ΡΠ½ΠΎ. ΠΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠ·ΡΠΊ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈ ΡΠ»Π°Π±ΠΎ ΠΈ ΡΠΈΠ»ΡΠ½ΠΎ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½.
ΠΠ΄Π½Π°ΠΊΠΎ ΠΌΠ°Π»ΠΎ, ΠΊΡΠΎ ΠΏΡΠΈΠ΄Π°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΡΠΎΠ³ΠΎΡΡΠΈ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠΈ. Π§Π°ΡΡΠΎ Π·Π°ΡΠ²Π»ΡΡΡ, ΡΡΠΎ Π΅ΡΠ»ΠΈ ΡΠ·ΡΠΊ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½, ΡΠΎ ΠΡ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΡΠ»ΠΎΠ²ΠΈΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΡΡ ΠΎΡΠΈΠ±ΠΎΠΊ ΠΏΡΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ. ΠΠ½ΠΈ ΠΠ°ΠΌ Π²ΡΡΡ!
Π―Π·ΡΠΊ ΠΏΡΠΈ ΡΡΠΎΠΌ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅ΡΡ Π΅ΡΠ΅ ΠΈ ΡΠΈΠ»ΡΠ½ΡΡ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ. Π ΠΏΡΠ°Π²Π΄Π°, Π΅ΡΠ»ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π²ΠΌΠ΅ΡΡΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΡΡΠΎ ΠΏΡΠΈΠ±Π°Π²Π»ΡΡΡ ΡΡΡΠΎΠΊΡ ΠΊ ΡΠΈΡΠ»Ρ, ΠΈΠ»ΠΈ ΡΡΠΎ Π΅ΡΠ΅ Ρ ΡΠΆΠ΅, Π²ΡΡΡΠ΅Ρ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π° Π΄ΡΡΠ³ΠΎΠΉ, ΠΊΠ°ΠΊΠΎΠΉ Π½Π°ΠΌ ΡΠΎΠ»ΠΊ, ΡΡΠΎ Π²ΡΠ΅ Β«ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈΒ» ΡΠΈΠΏΠΎΠ² Π±ΡΠ΄ΡΡ Π½Π° ΡΡΠ°ΠΏΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ? ΠΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ β ΡΠ»Π°Π±Π°Ρ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ Π΅ΡΠ΅ Ρ ΡΠΆΠ΅, ΡΠ΅ΠΌ ΡΠΈΠ»ΡΠ½Π°Ρ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠ°Ρ! (ΠΡ, ΡΡΠΎ ΠΌΠΎΠ΅ ΠΌΠ½Π΅Π½ΠΈΠ΅)
Π’Π°ΠΊ ΡΡΠΎ-ΠΆΠ΅ Ρ ΡΠ»Π°Π±ΠΎΠΉ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠΈ Π²ΠΎΠΎΠ±ΡΠ΅ Π½Π΅Ρ ΠΏΠ»ΡΡΠΎΠ²? ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΠΊ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ, ΠΎΠ΄Π½Π°ΠΊΠΎ Π½Π΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ, ΡΡΠΎ Ρ ΡΡΡΠΉ ΡΡΠΎΡΠΎΠ½Π½ΠΈΠΊ ΡΠΈΠ»ΡΠ½ΠΎΠΉ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠΈ, Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ³Π»Π°ΡΠΈΡΡΡΡ, ΡΡΠΎ Ρ ΡΠ»Π°Π±ΠΎΠΉ ΡΠΎΠΆΠ΅ Π΅ΡΡΡ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π°.
Π₯ΠΎΡΠΈΡΠ΅ ΡΠ·Π½Π°ΡΡ ΠΊΠ°ΠΊΠΈΠ΅?
ΠΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° ΡΠΈΠ»ΡΠ½ΠΎΠΉ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠΈ
ΠΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° ΡΠ»Π°Π±ΠΎΠΉ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠΈ
ΠΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ Π΅ΡΡΡ ΠΈ Π΄Π°ΠΆΠ΅ Π΄Π²Π°.
ΠΠ΅ΡΠ²Π½ΠΎΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΠΈΠΏΠΎΠ², Π² ΠΎΠ΄Π½ΠΎΠ·Π½Π°ΡΠ½ΡΡ ΡΠΈΡΡΠ°ΡΠΈΡΡ ΠΈ Π±Π΅Π· ΠΏΠΎΡΠ΅ΡΡ Π΄Π°Π½Π½ΡΡ
Π£Ρ β¦ ΠΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Π΄Π»ΠΈΠ½Π½ΡΠΉ ΠΏΡΠ½ΠΊΡ. ΠΠ°Π²Π°ΠΉΡΠ΅ Ρ Π±ΡΠ΄Ρ Π΄Π°Π»ΡΡΠ΅ ΡΠΎΠΊΡΠ°ΡΠ°ΡΡ Π΅Π³ΠΎ Π΄ΠΎ Β«ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΠΎΠ΅ Π½Π΅ΡΠ²Π½ΠΎΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅Β» Π’Π°ΠΊ ΡΡΠΎ ΠΆΠ΅ Π·Π½Π°ΡΠΈΡ ΠΎΠ΄Π½ΠΎΠ·Π½Π°ΡΠ½Π°Ρ ΡΠΈΡΡΠ°ΡΠΈΡ ΠΈ ΠΏΠΎΡΠ΅ΡΠΈ Π΄Π°Π½Π½ΡΡ ?
ΠΠ΄Π½ΠΎΠ·Π½Π°ΡΠ½Π°Ρ ΡΠΈΡΡΠ°ΡΠΈΡ, ΡΡΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΡΡΠ½ΠΎΡΡΡ ΡΡΠ°Π·Ρ ΠΏΠΎΠ½ΡΡΠ½Π°. ΠΠΎΡ Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄Π²ΡΡ ΡΠΈΡΠ΅Π» β ΠΎΠ΄Π½ΠΎΠ·Π½Π°ΡΠ½Π°Ρ ΡΠΈΡΡΠ°ΡΠΈΡ. Π ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΈΡΠ»Π° Π² ΠΌΠ°ΡΡΠΈΠ² β Π½Π΅Ρ (Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡΡΡ ΠΌΠ°ΡΡΠΈΠ² ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΌΠ°ΡΡΠΈΠ², Ρ ΡΠ°ΠΊΠΎΠΉ Π΄Π»ΠΈΠ½Π½ΠΎΠΉ, Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΠΏΠΎ-ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠΈΡΠ»ΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅ΡΡΡ Π² ΡΡΡΠΎΠΊΡ, Π° Π·Π°ΡΠ΅ΠΌ Π² ΠΌΠ°ΡΡΠΈΠ² ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ²).
ΠΠΎΡΠ΅ΡΡ Π΄Π°Π½Π½ΡΡ ΡΡΠΎ Π΅ΡΠ΅ ΠΏΡΠΎΡΠ΅. ΠΡΠ»ΠΈ ΠΌΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅ΠΌ Π²Π΅ΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ 3.5 Π² ΡΠ΅Π»ΠΎΠ΅ β ΠΌΡ ΠΏΠΎΡΠ΅ΡΡΠ΅ΠΌ ΡΠ°ΡΡΡ Π΄Π°Π½Π½ΡΡ (Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΡΡΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Π΅ΡΠ΅ ΠΈ Π½Π΅ΠΎΠ΄Π½ΠΎΠ·Π½Π°ΡΠ½Π°Ρ β ΠΊΠ°ΠΊ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡΡ ΠΎΠΊΡΡΠ³Π»Π΅Π½ΠΈΠ΅? Π Π±ΠΎΠ»ΡΡΡΡ ΡΡΠΎΡΠΎΠ½Ρ? Π ΠΌΠ΅Π½ΡΡΡΡ? ΠΡΠ±ΡΠ°ΡΡΠ²Π°Π½ΠΈΠ΅ Π΄ΡΠΎΠ±Π½ΠΎΠΉ ΡΠ°ΡΡΠΈ?).
ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ Π² Π½Π΅ΠΎΠ΄Π½ΠΎΠ·Π½Π°ΡΠ½ΡΡ ΡΠΈΡΡΠ°ΡΠΈΡΡ ΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ Ρ ΠΏΠΎΡΠ΅ΡΠ΅ΠΉ Π΄Π°Π½Π½ΡΡ β ΡΡΠΎ ΠΎΡΠ΅Π½Ρ, ΠΎΡΠ΅Π½Ρ ΠΏΠ»ΠΎΡ ΠΎ. ΠΠΈΡΠ΅Π³ΠΎ Ρ ΡΠΆΠ΅ ΡΡΠΎΠ³ΠΎ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ Π½Π΅Ρ.
ΠΡΠ»ΠΈ Π²Ρ ΠΌΠ½Π΅ Π½Π΅ Π²Π΅ΡΠΈΡΠ΅, ΠΈΠ·ΡΡΠΈΡΠ΅ ΡΠ·ΡΠΊ PL/I ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ ΠΏΡΠΎΡΡΠΎ ΠΏΠΎΠΈΡΠΈΡΠ΅ Π΅Π³ΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ. Π Π½Π΅ΠΌ Π΅ΡΡΡ ΠΏΡΠ°Π²ΠΈΠ»Π° ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΠ‘ΠΠΠ ΡΠΈΠΏΠ°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ ! ΠΡΠΎ ΠΏΡΠΎΡΡΠΎ Π°Π΄!
ΠΠ°Π΄Π½ΠΎ, Π΄Π°Π²Π°ΠΉΡΠ΅ Π²ΡΠΏΠΎΠΌΠ½ΠΈΠΌ ΠΏΡΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΠΎΠ΅ Π½Π΅ΡΠ²Π½ΠΎΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅. ΠΡΡΡ Π»ΠΈ ΡΠ°ΠΊΠΈΠ΅ ΡΠ·ΡΠΊΠΈ? ΠΠ°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π² Pascal ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ Π² Π²Π΅ΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ΅, Π½ΠΎ Π½Π΅ Π½Π°ΠΎΠ±ΠΎΡΠΎΡ. Π’Π°ΠΊΠΆΠ΅ ΠΏΠΎΡ ΠΎΠΆΠΈΠ΅ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΡ Π΅ΡΡΡ Π² C#, Groovy ΠΈ Common Lisp.
ΠΠ°Π΄Π½ΠΎ, Ρ Π³ΠΎΠ²ΠΎΡΠΈΠ», ΡΡΠΎ Π΅ΡΡΡ Π΅ΡΠ΅ ΡΠΏΠΎΡΠΎΠ± ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΏΠ°ΡΡ ΠΏΠ»ΡΡΠΎΠ² ΡΠ»Π°Π±ΠΎΠΉ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠΈ Π² ΡΠΈΠ»ΡΠ½ΠΎΠΌ ΡΠ·ΡΠΊΠ΅. Π Π΄Π°, ΠΎΠ½ Π΅ΡΡΡ ΠΈ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΏΠΎΠ»ΠΈΠΌΠΎΡΡΠΈΠ·ΠΌ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠΎΠ².
Π― ΠΏΠΎΡΡΠ½Ρ Π΅Π³ΠΎ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π·Π°ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ° Haskell.
ΠΠΎΠ»ΠΈΠΌΠΎΡΡΠ½ΡΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΡ ΠΏΠΎΡΠ²ΠΈΠ»ΠΈΡΡ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π½Π°Π±Π»ΡΠ΄Π΅Π½ΠΈΡ, ΡΡΠΎ ΡΠ°ΡΠ΅ Π²ΡΠ΅Π³ΠΎ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠ΅ Π½Π΅ΡΠ²Π½ΡΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ Π½ΡΠΆΠ½Ρ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΠΈΡΠ»ΠΎΠ²ΡΡ Π»ΠΈΡΠ΅ΡΠ°Π»ΠΎΠ².
Π ΡΡΠΎ ΡΠ΄Π΅Π»Π°Π½ΠΎ Π² Haskell, Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΡΠΎΠΌΡ, ΡΡΠΎ Ρ Π»ΠΈΡΠ΅ΡΠ°Π»Π° 1 Π½Π΅Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°. ΠΡΠΎ Π½ΠΈ ΡΠ΅Π»ΠΎΠ΅, Π½ΠΈ Π²Π΅ΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ΅, Π½ΠΈ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ½ΠΎΠ΅. ΠΡΠΎ ΠΆΠ΅ ΠΏΡΠΎΡΡΠΎ ΡΠΈΡΠ»ΠΎ!
ΠΠΎΠ½Π΅ΡΠ½ΠΎ ΡΠΏΠ°ΡΠ°Π΅Ρ ΡΡΠΎΡ ΠΏΡΠΈΠ΅ΠΌ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΠΌΠ΅ΡΠ°Π½Π½ΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Ρ ΡΠΈΡΠ»ΠΎΠ²ΡΠΌΠΈ Π»ΠΈΡΠ΅ΡΠ°Π»Π°ΠΌΠΈ, Π° ΡΡΠΎ Π»ΠΈΡΡ Π²Π΅ΡΡ ΡΡΠΊΠ° Π°ΠΉΡΠ±Π΅ΡΠ³Π°.
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ, ΡΡΠΎ Π»ΡΡΡΠΈΠΌ Π²ΡΡ ΠΎΠ΄ΠΎΠΌ Π±ΡΠ΄Π΅Ρ Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Π³ΡΠ°Π½ΠΈ, ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΈΠ»ΡΠ½ΠΎΠΉ ΠΈ ΡΠ»Π°Π±ΠΎΠΉ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠ΅ΠΉ. ΠΠΎ ΠΏΠΎΠΊΠ° ΠΈΠ΄Π΅Π°Π»ΡΠ½ΡΠΉ Π±Π°Π»Π°Π½Ρ Π½Π΅ Π΄Π΅ΡΠΆΠΈΡ Π½ΠΈ ΠΎΠ΄ΠΈΠ½ ΡΠ·ΡΠΊ, ΠΏΠΎΡΡΠΎΠΌΡ Ρ Π±ΠΎΠ»ΡΡΠ΅ ΡΠΊΠ»ΠΎΠ½ΡΡΡΡ ΠΊ ΡΠΈΠ»ΡΠ½ΠΎ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ ΡΠ·ΡΠΊΠ°ΠΌ (ΡΠ°ΠΊΠΈΠΌ ΠΊΠ°ΠΊ Haskell, Java, C#, Python), Π° Π½Π΅ ΠΊ ΡΠ»Π°Π±ΠΎ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ (ΡΠ°ΠΊΠΈΠΌ ΠΊΠ°ΠΊ C, JavaScript, Lua, PHP).
ΠΠ°Π΄Π½ΠΎ, ΠΏΠΎΠΉΠ΄Π΅ΠΌ Π΄Π°Π»ΡΡΠ΅?
Π―Π²Π½Π°Ρ ΠΈ Π½Π΅ΡΠ²Π½Π°Ρ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠΈ
Π―Π·ΡΠΊ Ρ ΡΠ²Π½ΠΎΠΉ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠ΅ΠΉ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ, ΡΡΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΡΠΈΠΏΡ Π²ΡΠ΅Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ±ΡΡΠ²Π»ΡΠ΅Ρ. ΠΠ½Π³Π»ΠΈΠΉΡΠΊΠΈΠΉ ΡΠ΅ΡΠΌΠΈΠ½ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ β explicit typing.
Π―Π·ΡΠΊ Ρ Π½Π΅ΡΠ²Π½ΠΎΠΉ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠ΅ΠΉ, Π½Π°ΠΏΡΠΎΡΠΈΠ², ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ ΠΠ°ΠΌ Π·Π°Π±ΡΡΡ ΠΎ ΡΠΈΠΏΠ°Ρ ΠΈ ΠΏΠ΅ΡΠ΅Π»ΠΎΠΆΠΈΡΡ Π·Π°Π΄Π°ΡΡ Π²ΡΠ²ΠΎΠ΄Π° ΡΠΈΠΏΠΎΠ² Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΠΈΠ»ΠΈ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ. ΠΠ½Π³Π»ΠΈΠΉΡΠΊΠΈ ΡΠ΅ΡΠΌΠΈΠ½ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ β implicit typing.
ΠΠΎ-Π½Π°ΡΠ°Π»Ρ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅ΡΠΈΡΡ, ΡΡΠΎ Π½Π΅ΡΠ²Π½Π°Ρ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ ΡΠ°Π²Π½ΠΎΡΠΈΠ»ΡΠ½Π° Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΉ, Π° ΡΠ²Π½Π°Ρ β ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ, Π½ΠΎ Π΄Π°Π»ΡΡΠ΅ ΠΌΡ ΡΠ²ΠΈΠ΄ΠΈΠΌ, ΡΡΠΎ ΡΡΠΎ Π½Π΅ ΡΠ°ΠΊ.
ΠΡΡΡ Π»ΠΈ ΠΏΠ»ΡΡΡ Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π°, ΠΈ ΠΎΠΏΡΡΡ ΠΆΠ΅, Π΅ΡΡΡ Π»ΠΈ ΠΈΡ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ ΠΈ Π΅ΡΡΡ Π»ΠΈ ΡΠ·ΡΠΊΠΈ Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΎΠΉ ΠΎΠ±ΠΎΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ²?
ΠΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° ΡΠ²Π½ΠΎΠΉ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠΈ
ΠΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° Π½Π΅ΡΠ²Π½ΠΎΠΉ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠΈ
Π―Π²Π½Π°Ρ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ ΠΏΠΎ-Π²ΡΠ±ΠΎΡΡ
ΠΡΡΡ ΡΠ·ΡΠΊΠΈ, Ρ Π½Π΅ΡΠ²Π½ΠΎΠΉ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠ΅ΠΉ ΠΏΠΎ-ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΡ ΡΠΊΠ°Π·Π°ΡΡ ΡΠΈΠΏ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ. ΠΠ°ΡΡΠΎΡΡΠΈΠΉ ΡΠΈΠΏ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΡΠ°Π½ΡΠ»ΡΡΠΎΡ Π²ΡΠ²Π΅Π΄Π΅Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ. ΠΠ΄ΠΈΠ½ ΠΈΠ· ΡΠ°ΠΊΠΈΡ ΡΠ·ΡΠΊΠΎΠ² β Haskell, Π΄Π°Π²Π°ΠΉΡΠ΅ Ρ ΠΏΡΠΈΠ²Π΅Π΄Ρ ΠΏΡΠΎΡΡΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ Π½Π°Π³Π»ΡΠ΄Π½ΠΎΡΡΠΈ:
* Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ int_index Π·Π° Π½Π°Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ.
Π₯ΠΌ. ΠΠ°ΠΊ ΠΌΡ Π²ΠΈΠ΄ΠΈΠΌ, ΡΡΠΎ ΠΎΡΠ΅Π½Ρ ΠΊΡΠ°ΡΠΈΠ²ΠΎ ΠΈ ΠΊΠΎΡΠΎΡΠΊΠΎ. ΠΠ°ΠΏΠΈΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ Π²ΡΠ΅Π³ΠΎ 18 ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Π½Π° ΠΎΠ΄Π½ΠΎΠΉ ΡΡΡΠΎΡΠΊΠ΅, Π²ΠΊΠ»ΡΡΠ°Ρ ΠΏΡΠΎΠ±Π΅Π»Ρ!
ΠΠ΄Π½Π°ΠΊΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π²ΡΠ²ΠΎΠ΄ ΡΠΈΠΏΠΎΠ² Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΡΠ»ΠΎΠΆΠ½Π°Ρ Π²Π΅ΡΡ, ΠΈ Π΄Π°ΠΆΠ΅ Π² ΡΠ°ΠΊΠΎΠΌ ΠΊΡΡΡΠΎΠΌ ΡΠ·ΡΠΊΠ΅ ΠΊΠ°ΠΊ Haskell, ΠΎΠ½ ΠΈΠ½ΠΎΠ³Π΄Π° Π½Π΅ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΡΡΡ. (ΠΊΠ°ΠΊ ΠΏΡΠΈΠΌΠ΅Ρ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠ½ΠΎΠΌΠΎΡΡΠΈΠ·ΠΌΠ°)
ΠΡΡΡ Π»ΠΈ ΡΠ·ΡΠΊΠΈ Ρ ΡΠ²Π½ΠΎΠΉ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠ΅ΠΉ ΠΏΠΎ-ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΈ Π½Π΅ΡΠ²Π½ΠΎΠΉ ΠΏΠΎ-Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ? ΠΠΎΠ½
Π΅ΡΠ½ΠΎ.
ΠΠ΅ΡΠ²Π½Π°Ρ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ ΠΏΠΎ-Π²ΡΠ±ΠΎΡΡ
Π Π½ΠΎΠ²ΠΎΠΌ ΡΡΠ°Π½Π΄Π°ΡΡΠ΅ ΡΠ·ΡΠΊΠ° C++, Π½Π°Π·Π²Π°Π½Π½ΠΎΠΌ C++11 (ΡΠ°Π½Π΅Π΅ Π½Π°Π·ΡΠ²Π°Π»ΡΡ C++0x), Π±ΡΠ»ΠΎ Π²Π²Π΅Π΄Π΅Π½ΠΎ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ auto, Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΡΡΠ°Π²ΠΈΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π²ΡΠ²Π΅ΡΡΠΈ ΡΠΈΠΏ, ΠΈΡΡ ΠΎΠ΄Ρ ΠΈΠ· ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ°:
ΠΠ΅ΠΏΠ»ΠΎΡ ΠΎ. ΠΠΎ Π·Π°ΠΏΠΈΡΡ ΡΠΎΠΊΡΠ°ΡΠΈΠ»Π°ΡΡ Π½Π΅ ΡΠΈΠ»ΡΠ½ΠΎ. ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΈΠΌΠ΅Ρ Ρ ΠΈΡΠ΅ΡΠ°ΡΠΎΡΠ°ΠΌΠΈ (Π΅ΡΠ»ΠΈ Π½Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΡΠ΅, Π½Π΅ Π±ΠΎΠΉΡΠ΅ΡΡ, Π³Π»Π°Π²Π½ΠΎΠ΅ Π·Π°ΠΌΠ΅ΡΡΡΠ΅, ΡΡΠΎ Π·Π°ΠΏΠΈΡΡ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΌΡ Π²ΡΠ²ΠΎΠ΄Ρ ΠΎΡΠ΅Π½Ρ ΡΠΈΠ»ΡΠ½ΠΎ ΡΠΎΠΊΡΠ°ΡΠ°Π΅ΡΡΡ):
Π£Ρ ΡΡ! ΠΠΎΡ ΡΡΠΎ ΡΠΎΠΊΡΠ°ΡΠ΅Π½ΠΈΠ΅. ΠΠ°Π΄Π½ΠΎ, Π½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ Π² Π΄ΡΡ Π΅ Haskell, Π³Π΄Π΅ ΡΠΈΠΏ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π±ΡΠ΄Π΅Ρ Π·Π°Π²ΠΈΡΠ΅ΡΡ ΠΎΡ ΡΠΈΠΏΠΎΠ² Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ²?
Π ΠΎΠΏΡΡΡ ΠΎΡΠ²Π΅Ρ Π΄Π°, Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠΌΡ ΡΠ»ΠΎΠ²Ρ decltype Π² ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ Ρ auto:
ΠΠΎΠΆΠ΅Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΡΡΡ, ΡΡΠΎ ΡΡΠ° ΡΠΎΡΠΌΠ° Π·Π°ΠΏΠΈΡΠΈ Π½Π΅ ΡΠΈΠ»ΡΠ½ΠΎ Ρ ΠΎΡΠΎΡΠ°, Π½ΠΎ Π² ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ Ρ ΠΎΠ±ΠΎΠ±ΡΠ΅Π½Π½ΡΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ (templates / generics) Π½Π΅ΡΠ²Π½Π°Ρ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ ΠΈΠ»ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π²ΡΠ²ΠΎΠ΄ ΡΠΈΠΏΠΎΠ² ΡΠ²ΠΎΡΡΡ ΡΡΠ΄Π΅ΡΠ°.
ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ·ΡΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎ Π΄Π°Π½Π½ΠΎΠΉ ΠΊΠ»Π°ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ
Π― ΠΏΡΠΈΠ²Π΅Π΄Ρ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ ΡΠΏΠΈΡΠΎΠΊ ΠΈΠ· ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΡ ΡΠ·ΡΠΊΠΎΠ² ΠΈ Π½Π°ΠΏΠΈΡΡ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΠΏΠΎΠ΄ΡΠ°Π·Π΄Π΅Π»ΡΡΡΡΡ ΠΏΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ βΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠΉβ.
ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Ρ Π³Π΄Π΅-ΡΠΎ ΠΎΡΠΈΠ±ΡΡ, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Ρ CL, PHP ΠΈ Obj-C, Π΅ΡΠ»ΠΈ ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΌΡ-ΡΠΎ ΡΠ·ΡΠΊΡ Ρ ΠΠ°Ρ Π΄ΡΡΠ³ΠΎΠ΅ ΠΌΠ½Π΅Π½ΠΈΠ΅ β Π½Π°ΠΏΠΈΡΠΈΡΠ΅ Π² ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡ .
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΠΊΠ΅ΠΉ. Π£ΠΆΠ΅ ΡΠΊΠΎΡΠΎ Π±ΡΠ΄Π΅Ρ ΡΠ²Π΅ΡΠ»ΠΎ ΠΈ Ρ ΡΡΠ²ΡΡΠ²ΡΡ, ΡΡΠΎ ΠΏΡΠΎ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ΡΠ΅Π³ΠΎ ΡΠΊΠ°Π·Π°ΡΡ. ΠΠΉ ΠΊΠ°ΠΊ? Π’Π΅ΠΌΠ° Π±Π΅Π·Π΄ΠΎΠ½Π½Π°Ρ? ΠΡΠ΅Π½Ρ ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΡΡΠ°Π»ΠΎΡΡ Π½Π΅Π΄ΠΎΡΠΊΠ°Π·Π°Π½ΠΎ? ΠΡΠΎΡΡ Π² ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ, ΠΏΠΎΠ΄Π΅Π»ΠΈΡΠ΅ΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ΅ΠΉ.
ΠΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠ΅ΠΉ Π² Python
ΠΠ²ΡΠΎΡΠΈΠ·ΡΠΉΡΠ΅ΡΡ
ΠΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠ΅ΠΉ Π² Python
ΠΠ΅ΡΠ²ΡΠ΅ ΡΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΡ ΠΎ ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠ°Ρ ΡΠΈΠΏΠΎΠ² Π² ΡΠ·ΡΠΊΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Python ΠΏΠΎΡΠ²ΠΈΠ»ΠΈΡΡ Π² Π±Π°Π·Π΅ Python Enhancement Proposals (PEP-483). Π’Π°ΠΊΠΈΠ΅ ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠΈ Π½ΡΠΆΠ½Ρ Π΄Π»Ρ ΡΠ»ΡΡΡΠ΅Π½ΠΈΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° ΠΊΠΎΠ΄Π° ΠΈ Π°Π²ΡΠΎΠ΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ°ΠΌΠΈ, ΡΡΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΡΠ½ΠΈΠ·ΠΈΡΡ ΡΠΈΡΠΊΠΈ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ Π±Π°Π³ΠΎΠ² Π² ΠΊΠΎΠ΄Π΅.
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΎΡΠ½ΠΎΠ²Ρ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠΎΠ΄Π° Python ΠΈ Π΅Π΅ ΡΠΎΠ»Ρ Π² Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ-ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌ ΡΠ·ΡΠΊΠ΅, ΡΡΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π±ΡΠ΄Π΅Ρ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ»Π΅Π·Π½Π° Π΄Π»Ρ Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΡ Python-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ².
Π’ΠΈΠΏΠΈΠ·Π°ΡΠΈΡ Π² Python
ΠΠ»Ρ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΡ Π±Π°Π·ΠΎΠ²ΡΡ ΡΠΈΠΏΠΎΠ² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΡΠ°ΠΌΠΈ ΡΠΈΠΏΡ:
ΠΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π±Π°Π·ΠΎΠ²ΡΡ ΡΠΈΠΏΠΎΠ² Π² python-ΡΡΠ½ΠΊΡΠΈΠΈ:
25β27 Π½ΠΎΡΠ±ΡΡ, ΠΠ½Π»Π°ΠΉΠ½, ΠΠ΅cΠΏΠ»Π°ΡΠ½ΠΎ
Π’Π°ΠΊΠΆΠ΅ Π΅ΡΡΡ Π±ΠΎΠ»Π΅Π΅ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΠ΅ ΡΠΈΠΏΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ:
ΠΠ° ΠΏΠ΅ΡΠ²ΠΎΠΌ ΠΌΠ΅ΡΡΠ΅ ΡΡΠΎΠΈΡ ΠΌΠ°ΡΡΠΈΠ² ΡΠΈΠΏΠΎΠ² Π²Ρ ΠΎΠ΄Π½ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ², Π½Π° Π²ΡΠΎΡΠΎΠΌ β ΡΠΈΠΏ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ.
ΠΡΠΎ ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΠ΅ ΡΠΈΠΏΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Python.
Π’Π°ΠΊΠΆΠ΅ Python ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΡΠ²ΠΎΠΈ Generic-ΡΠΈΠΏΡ.
Π Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ TypeVar ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π»ΡΠ±ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°, ΠΊΠΎΡΠΎΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΡΡΠ°Π²ΠΈΡΡ ΠΏΡΠΈ ΡΠΊΠ°Π·Π°Π½ΠΈΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
ΠΠ° ΠΌΠ΅ΡΡΠ΅ KeyType ΠΈΠ»ΠΈ ValueType ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠ΅ ΡΠΈΠΏΡ.
ΠΠ°ΡΠ΅ΠΌ ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ
Π¦Π΅Π»Ρ β ΡΠΊΠ°Π·Π°ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΡ Π½Π° ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡΠΉ ΡΠΈΠΏ Π΄Π°Π½Π½ΡΡ ΠΏΡΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠΈ ΠΈΠ»ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ΅ Π΄Π°Π½Π½ΡΡ ΠΈΠ· ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΠ»ΠΈ ΠΌΠ΅ΡΠΎΠ΄Π°. Π ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΎΠΊΡΠ°ΡΠΈΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π±Π°Π³ΠΎΠ², ΡΡΠΊΠΎΡΠΈΡΡ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° ΠΈ ΡΠ»ΡΡΡΠΈΡΡ Π΅Π³ΠΎ ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎ.
ΠΠΎΠ½Π΅ΡΠ½ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΈ ΠΏΡΠΎΡΠ΅:
ΠΠ΄Π½Π°ΠΊΠΎ, Π² ΠΎΠ±ΠΎΠΈΡ ΡΠ»ΡΡΠ°ΡΡ ΠΌΠΎΠΆΠ΅Ρ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡΡΡ ΠΎΡΠΈΠ±ΠΊΠ°, Π΅ΡΠ»ΠΈ ΠΊΠ»ΡΡ age Π±ΡΠ΄Π΅Ρ ΠΏΡΠΈΡΡΡΡΡΠ²ΠΎΠ²Π°ΡΡ ΠΈ ΠΏΡΠΈ ΡΡΠΎΠΌ ΠΈΠΌΠ΅ΡΡ ΡΡΡΠΎΠΊΠΎΠ²ΡΠΉ ΡΠΈΠΏ. ΠΠ°Π»ΠΈΠ΄Π°ΡΠΈΡ ΡΠΈΠΏΠΎΠ² Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ Π½Π΅ ΠΎΡΠ΅Π½Ρ ΠΌΠ½ΠΎΠ³ΠΎ ΡΡΡΠΎΠΊ ΠΊΠΎΠ΄Π°, Π½ΠΎ ΠΏΡΠΈ Π±ΠΎΠ»ΡΡΠΎΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π΅ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ ΠΌΠΎΠΆΠ΅Ρ Π·Π°Π½ΠΈΠΌΠ°ΡΡ Π½Π΅ΠΌΠ°Π»ΠΎ ΠΌΠ΅ΡΡΠ° Π² ΠΏΡΠΎΠ΅ΠΊΡΠ΅.
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Pydantic ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ Π²Π°Π»ΠΈΠ΄ΠΈΡΠΎΠ²Π°ΡΡ Π΄Π°Π½Π½ΡΠ΅, ΠΏΡΠΈ ΡΡΠΎΠΌ ΡΠΈΠΏ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΠΎΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π½Π° ΡΡΠ΅Π±ΡΠ΅ΠΌΡΠΉ.
ΠΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅ΡΠΈΡΡ, Π±ΠΎΠ»Π΅Π΅ ΡΡΡΠΎΠ³Π°Ρ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ ΠΊΠΎΠ΄Π° ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΡΠ΄Π΅Π»Π°ΡΡ Π΅Π³ΠΎ ΠΏΡΠΎΡΠ΅ ΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½Π΅Π΅. ΠΠ΄Π½Π°ΠΊΠΎ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ Pydantic ΠΌΠΎΠΆΠ΅Ρ Π½Π΅ΠΆΠ΅Π»Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠΎΠ²Π»ΠΈΡΡΡ Π½Π° ΠΊΠΎΠ΄. Π’Π°ΠΊ, ΠΌΡΡΠ°ΡΠΈΡ Π΄Π°Π½Π½ΡΡ ΠΏΡΠΈ Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΠΈ ΡΠΏΠΎΡΠΎΠ±Π½Π° ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΡΠΎΠΌΡ, ΡΡΠΎ ΡΠΈΠΏ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π±ΡΠ΄Π΅Ρ Π½Π΅ΠΏΠΎΠ½ΡΡΠ΅Π½. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
Π Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΉ User ΠΏΠΎΡΠ»Π΅ Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΠΈ Π±ΡΠ΄Π΅Ρ ΠΈΠΌΠ΅ΡΡ ΠΎΡΠ»ΠΈΡΠ½ΡΠΉ ΠΎΡ ΡΠΎΠ³ΠΎ, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ» ΡΠΊΠ°Π·Π°Π½ Π² ΠΌΠΎΠ΄Π΅Π»ΠΈ. ΠΡΠΎ Π²Π΅Π΄Π΅Ρ ΠΊ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠΌ ΠΊΡΡΠΏΠ½ΡΠΌ Π±Π°Π³Π°ΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ Π»ΡΡΡΠ΅ Π²ΡΠ΅Π³Π΄Π° ΠΈΠ·Π±Π΅Π³Π°ΡΡ.
Π’Π°ΠΊΠΆΠ΅ ΡΠ΅ΠΉΡΠ°Ρ Π½Π°Π±ΠΈΡΠ°Π΅Ρ Π±ΠΎΠ»ΡΡΡΡ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎΡΡΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ FastAPI, ΠΊΠΎΡΠΎΡΡΠΉ, Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ Pydantic, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π±ΡΡΡΡΠΎ ΠΏΠΈΡΠ°ΡΡ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΠ΅ΠΉ Π΄Π°Π½Π½ΡΡ .
Π Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΠ½Π΄ΠΏΠΎΠΈΠ½Ρ /item Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π²Π°Π»ΠΈΠ΄ΠΈΡΡΠ΅Ρ Π²Ρ ΠΎΠ΄ΡΡΠΈΠΉ json ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅Ρ Π΅Π³ΠΎ Π² ΡΡΠ½ΠΊΡΠΈΡ ΠΊΠ°ΠΊ ΡΡΠ΅Π±ΡΠ΅ΠΌΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ.
Π’Π°ΠΊΠΆΠ΅ Π΄Π»Ρ ΡΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° Π±Π°Π³ΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ mypy, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΡΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ· ΠΊΠΎΠ΄Π° Π½Π° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ ΡΠΈΠΏΠΎΠ². ΠΠ° ΡΡΠ΅Ρ ΡΡΠΎΠ³ΠΎ Π·Π°ΡΠ°ΡΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΡΡ Π±Π°Π³ΠΎΠ² ΠΈΠ»ΠΈ Π½Π΅ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΉ ΡΠΈΠΏΠΎΠ² Π² ΡΡΠ½ΠΊΡΠΈΡΡ .
Π ΠΊΠ°ΠΊ Π±ΠΎΠ½ΡΡ Π΄Π»Ρ ΡΠ΅Ρ , ΠΊΡΠΎ Π»Π΅Π½ΠΈΡΡΡ Π²ΡΡΡΠ½ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ. MonkeyType Π΄Π°Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΡΠΎΡΡΠ°Π²ΠΈΡΡ ΡΠΈΠΏΡ Π²ΠΎ Π²ΡΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΡΡ , Ρ ΠΎΡΡ ΠΏΠΎΡΠ»Π΅ Π·Π°ΠΏΡΡΠΊΠ° ΡΡΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΎΠ±ΡΡΠ½ΠΎ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΏΡΠΎΠΉΡΠΈΡΡ ΠΏΠΎ ΠΊΠΎΠ΄Ρ ΠΈ ΠΏΠΎΠΏΡΠ°Π²ΠΈΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠΊΠ°Π·Π°Π»ΠΈΡΡ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π½Ρ Π½Π΅ ΡΠ°ΠΊ, ΠΊΠ°ΠΊ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π»ΠΎΡΡ.
ΠΠΎΠ²ΠΎΠ²Π²Π΅Π΄Π΅Π½ΠΈΡ Python 3.9.0
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π»ΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΈΠΏΡ Π² ΡΠ·ΡΠΊΠ΅ Python. Π Π·Π°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΎΡΠΌΠ΅ΡΠΈΠΌ, ΡΡΠΎ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΊΠΎΠ΄ Π² Python ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΎΠ»Π΅Π΅ ΡΠΈΡΠ°Π΅ΠΌΡΠΌ ΠΈ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΡΠΌ, ΡΡΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΡΡ ΡΠ΅Π²ΡΡ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ ΠΈ Π½Π΅ Π΄ΠΎΠΏΡΡΠΊΠ°ΡΡ Π³Π»ΡΠΏΡΡ ΠΎΡΠΈΠ±ΠΎΠΊ. Π₯ΠΎΡΠΎΡΠ΅Π΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠΈΠΏΠΎΠ² ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ Π±ΡΡΡΡΠ΅Π΅ Π²Π»ΠΈΡΡΡΡ Π² ΠΏΡΠΎΠ΅ΠΊΡ, ΠΏΠΎΠ½ΡΡΡ, ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ, ΠΈ ΠΏΠΎΠ³ΡΡΠ·ΠΈΡΡΡΡ Π² Π·Π°Π΄Π°ΡΠΈ. Π’Π°ΠΊΠΆΠ΅ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ ΡΠ΄Π°Π΅ΡΡΡ Π² Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π· ΡΠΎΠΊΡΠ°ΡΠΈΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΡΡΠΎΠΊ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°Π½Π΅Π΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π»ΠΈΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΠΈ ΡΠΈΠΏΠΎΠ² ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ.
Π’ΠΈΠΏΡ Π΄Π°Π½Π½ΡΡ Python
ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΡΠ΅ΠΌΡ
ΠΠ°Π½Π½ΡΠ΅ Π½Π΅ ΠΎΠ΄Π½ΠΎΡΠΎΠ΄Π½Ρ. ΠΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, Π·Π°ΠΏΠΈΡΠ°Π½Π½Π°Ρ Π½Π° Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠΌ ΡΠ·ΡΠΊΠ΅, ΠΊ ΠΏΡΠΈΠΌΠ΅ΡΡ, ΡΡΠΎ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΡΠΈΠ»ΡΠ½ΠΎ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ Π΄Π°Π½Π½ΡΡ , ΡΠΎΡΡΠΎΡΡΠΈΡ ΠΈΠ· ΡΠΈΡΠ΅Π». Π‘Π»ΠΎΠ²Π° ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ»ΠΎΠ½ΡΡΡ, Π° ΡΠΈΡΠ»Π° β ΡΠΌΠ½ΠΎΠΆΠ°ΡΡ. ΠΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΡΠ΄ΠΎΠ±Π½Π΅Π΅ Π±ΡΠ»ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΡΠ°ΠΊΠΈΠΌΠΈ ΡΠ°Π·Π½ΡΠΌΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ, ΡΠΎΠ·Π΄Π°ΡΠ΅Π»ΠΈ ΡΠ·ΡΠΊΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ°Π·Π΄Π΅Π»ΡΡΡ ΠΈΡ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΠΈΠΏΡ. Π’ΠΈΠΏΡ Π΄Π°Π½Π½ΡΡ Python Π½Π΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅. Π Π½ΠΈΡ ΠΌΡ ΠΈ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ Π² ΡΡΠΎΠΌ ΡΡΠΎΠΊΠ΅.
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ
Python, ΠΊΠ°ΠΊ ΡΠΆΠ΅ Π³ΠΎΠ²ΠΎΡΠΈΠ»ΠΎΡΡ, ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ ΡΠ·ΡΠΊΠΎΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ, Ρ ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ° Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠΈΠΏΠ° Π΄Π°Π½Π½ΡΡ . ΠΡΠ»ΠΈ Π±Ρ ΡΡΠΎΠ³ΠΎ Π½Π΅ Π±ΡΠ»ΠΎ, Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π»ΠΈ Π±Ρ ΡΠΈΡΡΠ°ΡΠΈΠΈ, ΠΊΠΎΠ³Π΄Π° Π»ΠΎΠ³ΠΈΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π±ΡΠ΄Π΅Ρ Π½Π°ΡΡΡΠ΅Π½Π°, Π° ΠΊΠΎΠ΄ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡΡ Π½Π΅ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ.
ΠΡΠΈΠΌ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΎΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ.
Π ΠΏΡΠΎΡΠ΅ΡΡΠ΅ Π΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ . Π’ΠΈΠΏΠΈΠ·Π°ΡΠΈΡ Π±ΡΠ²Π°Π΅Ρ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΉ. ΠΡΠΈ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π° ΠΏΡΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΉ β Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.
Π£ ΠΠ°ΠΉΡΠΎΠ½Π° ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠ°Ρ. ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΡ ΡΡΠΎΠΌΡ ΠΎΠ΄Π½Ρ ΠΈ ΡΡ ΠΆΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ°Π· Ρ Π΄Π°Π½Π½ΡΠΌΠΈ ΡΠ°Π·Π½ΡΡ ΡΠΈΠΏΠΎΠ², ΠΈ ΠΎΠ½Π° ΠΏΡΠΈ ΡΡΠΎΠΌ Π±ΡΠ΄Π΅Ρ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π· ΠΌΠ΅Π½ΡΡΡ ΡΠ²ΠΎΠΉ ΡΠΈΠΏ ΡΡΠΎΠ±Ρ ΠΊΠΎΠ΄ ΠΈΡΠΏΠΎΠ»Π½ΡΠ»ΡΡ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ:
ΠΠΎ, ΡΠ²Π»Π΅ΠΊΠ°ΡΡΡΡ ΡΡΠΈΠΌ Π½Π΅ ΡΡΠΎΠΈΡ β Π΄Π»Ρ ΡΠ»ΡΡΡΠ΅Π½ΠΈΡ ΡΠΈΡΠ°Π΅ΠΌΠΎΡΡΠΈ ΠΊΠΎΠ΄Π°, Π² Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΡΠ»ΡΡΠ°Π΅Π², Π»ΡΡΡΠ΅ Π²Π²Π΅ΡΡΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π΄Π»Ρ Π΄Π°Π½Π½ΡΡ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΡΠΈΠΏΠ°ΠΌΠΈ. ΠΡΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π΅ΡΡ ΠΈ ΡΠ΅ΠΌ, ΡΡΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Ρ Ρ ΠΎΡΠΎΡΠΎ Π²ΡΠ±ΡΠ°Π½Π½ΡΠΌΠΈ Π½Π°Π·Π²Π°Π½ΠΈΡΠΌΠΈ ΡΠ²Π»ΡΡΡΡΡ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²ΠΎΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠΌ ΠΈ ΠΎΠ±ΡΡΡΠ½ΡΡΡ, ΡΡΠΎ Π·Π° Π΄Π°Π½Π½ΡΠ΅ ΠΎΠ½ΠΈ Ρ ΡΠ°Π½ΡΡ.
Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π΄Π°Π²Π½ΠΈΠΉ ΡΠΏΠΎΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΠΎΡΠΎΠ½Π½ΠΈΠΊΠ°ΠΌΠΈ ΡΠ°Π·Π½ΡΡ ΡΠ·ΡΠΊΠΎΠ² ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊΠ°Ρ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ Π»ΡΡΡΠ΅: ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΈΠ»ΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠ°Ρ. Π’Π°ΠΊ ΠΊΠ°ΠΊ Ρ ΠΎΠ±ΠΎΠΈΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΎΠ² Π΅ΡΡΡ ΠΈ ΠΌΠΈΠ½ΡΡΡ, ΠΈ ΠΏΠ»ΡΡΡ, ΡΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΌ ΠΎΡΠ²Π΅ΡΠΎΠΌ Π±ΡΠ΄Π΅Ρ: Π»ΡΡΡΠ΅, ΡΠ° ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π±ΠΎΠ»ΡΡΠ΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ ΠΏΠΎΠ΄ ΠΠ°ΡΠΈ Π·Π°Π΄Π°ΡΠΈ. Π ΡΡΠ΅Π΄Π½Π΅ΠΌ, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠ΅ Π½Π° ΡΠ·ΡΠΊΠ°Ρ ΡΠΎ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠ΅ΠΉ, Π±ΠΎΠ»Π΅Π΅ Π½Π°Π΄ΡΠΆΠ½Ρ, Π½ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΡΠ·ΡΠΊΠ°Ρ Ρ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠ΅ΠΉ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π±ΡΡΡΡΠ΅Π΅. Π§Π°ΡΡΠΎ Π²ΡΡΡΠ΅ΡΠ°Π΅ΡΡΡ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄, ΠΊΠΎΠ³Π΄Π° Π½Π° Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΌ ΡΠ·ΡΠΊΠ΅ ΠΏΠΈΡΡΡ ΠΏΡΠΎΡΠΎΡΠΈΠΏ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π° ΠΏΠΎΡΠΎΠΌ, ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈ Π²Π°ΠΆΠ½ΡΠ΅ ΠΌΠ΅ΡΡΠ° ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΡΠ²Π°ΡΡ Π½Π° ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠ·ΡΠΊ.
Π ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ Π²ΡΠ΅ΠΌΡ Π½Π°Π±ΠΈΡΠ°Π΅Ρ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎΡΡΡ Β«ΡΠΌΠ΅ΡΠ°Π½Π½Π°Ρ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡΒ». Π‘Π°ΠΌΡΠΌ ΡΡΠΊΠΈΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠΌ ΡΡΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π° ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ·ΡΠΊ Rust: ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ ΠΏΡΠΈ Π²Ρ ΠΎΠ΄Π΅ ΠΈ Π²ΡΡ ΠΎΠ΄Π΅ ΠΈΠ· Π±Π»ΠΎΠΊΠ° ΠΊΠΎΠ΄Π°, Π½ΠΎ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠ°Ρ Π²Π½ΡΡΡΠΈ ΡΡΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ°. Π ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡ Π²Π΅ΡΡΠΈΡΡ ΠΠΈΡΠΎΠ½ ΡΠΎΠΆΠ΅ Π΄Π΅Π»Π°Π΅Ρ ΡΠ°Π³ Π² ΡΡΡ ΡΡΠΎΡΠΎΠ½Ρ: ΠΏΠΎΡΠ²ΠΈΠ»ΡΡ ΡΠ°ΠΊΠΎΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ, ΠΊΠ°ΠΊ Π°Π½Π½ΠΎΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΈΠΏΠΎΠ² ΠΈΠ»ΠΈ type hinting, Π½ΠΎ ΡΡΠΎ ΡΠ΅ΠΌΠ° ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΉ ΡΡΠ°ΡΡΠΈ.
Π ΠΎΡΠ½ΠΎΠ²Π½ΡΠΌ ΠΏΠ»ΡΡΠ°ΠΌ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠΈ ΠΎΡΠ½ΠΎΡΡΡΡΡ:
Π ΠΎΡΠ½ΠΎΠ²Π½ΡΠΌ ΠΌΠΈΠ½ΡΡΠ°ΠΌ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠΈ ΠΎΡΠ½ΠΎΡΡΡΡΡ:
Π Π°Π·Π½ΠΈΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ Π°ΡΠΎΠΌΠ°ΡΠ½ΡΠΌΠΈ ΠΈ ΡΡΡΡΠΊΡΡΡΠ½ΡΠΌΠΈ ΡΠΈΠΏΡ Π΄Π°Π½Π½ΡΡ
ΠΡΠ΅ ΡΠΈΠΏΡ Π΄Π°Π½Π½ΡΡ Π² Python ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΡ Π½Π° Π°ΡΠΎΠΌΠ°ΡΠ½ΡΠ΅ ΠΈ ΡΡΡΠ»ΠΎΡΠ½ΡΠ΅.
Π Π°Π·Π½ΠΈΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΠΈΠΌΠΈ ΡΠΈΠΏΠ°ΠΌΠΈ Π² ΡΠΎΠΌ, ΡΡΠΎ Π°ΡΠΎΠΌΠ°ΡΠ½ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ, ΠΏΡΠΈ ΠΈΡ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌ, ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ ΠΏΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, Π° ΡΡΡΠ»ΠΎΡΠ½ΡΠ΅ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ ΠΏΠΎ ΡΡΡΠ»ΠΊΠ΅.
Π‘ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ
ΠΡΠ° ΡΡΠ°ΡΡΡ ΡΠ°ΡΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΠΎ ΡΠ°Π·Π½ΠΈΡΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌΠΈ ΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌΠΈ ΡΠ·ΡΠΊΠ°ΠΌΠΈ, ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅Ρ ΠΏΠΎΠ½ΡΡΠΈΡ «ΡΠΈΠ»ΡΠ½ΠΎΠΉ» ΠΈ «ΡΠ»Π°Π±ΠΎΠΉ» ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠΈ, ΠΈ ΡΡΠ°Π²Π½ΠΈΠ²Π°Π΅Ρ ΠΌΠΎΡΠ½ΠΎΡΡΡ ΡΠΈΡΡΠ΅ΠΌ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠΈ Π² ΡΠ°Π·Π½ΡΡ ΡΠ·ΡΠΊΠ°Ρ . Π ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ Π²ΡΠ΅ΠΌΡ Π½Π°Π±Π»ΡΠ΄Π°Π΅ΡΡΡ ΡΠ΅ΡΠΊΠΎΠ΅ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ Π² ΡΡΠΎΡΠΎΠ½Ρ Π±ΠΎΠ»Π΅Π΅ ΡΡΡΠΎΠ³ΠΈΡ ΠΈ ΠΌΠΎΡΠ½ΡΡ ΡΠΈΡΡΠ΅ΠΌ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠΈ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ, ΠΏΠΎΡΡΠΎΠΌΡ Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ ΠΎ ΡΠ΅ΠΌ ΠΈΠ΄Π΅Ρ ΡΠ΅ΡΡ ΠΊΠΎΠ³Π΄Π° Π³ΠΎΠ²ΠΎΡΡΡ ΠΎ ΡΠΈΠΏΠ°Ρ ΠΈ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠΈ.
Π’ΠΈΠΏ β ΡΡΠΎ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ. Π¦Π΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΎΠ±Π»Π°Π΄Π°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ 0, 1, 2, 3 ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅. ΠΡΠ»Π΅Π²ΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΡΡΠΈΠ½ΠΎΠΉ ΠΈΠ»ΠΈ Π»ΠΎΠΆΡΡ. ΠΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠ΄ΡΠΌΠ°ΡΡ ΡΠ²ΠΎΠΉ ΡΠΈΠΏ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΈΠΏ «ΠΠ°ΠΉΠΡΡΡ», Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ «Π΄Π°ΠΉ» ΠΈ «5», ΠΈ Π±ΠΎΠ»ΡΡΠ΅ Π½ΠΈΡΠ΅Π³ΠΎ. ΠΡΠΎ Π½Π΅ ΡΡΡΠΎΠΊΠ° ΠΈ Π½Π΅ ΡΠΈΡΠ»ΠΎ, ΡΡΠΎ Π½ΠΎΠ²ΡΠΉ, ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΡΠΈΠΏ.
ΠΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠ·ΡΠΊΠΈ ΠΏΠΎΠΌΠ΅ΡΠ°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠΈΠΏΠ°ΠΌΠΈ: ΡΠ·ΡΠΊ Π·Π½Π°Π΅Ρ, ΡΡΠΎ 1 ΡΡΠΎ integer, 2 ΡΡΠΎ integer, Π½ΠΎ ΠΎΠ½ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π·Π½Π°ΡΡ, ΡΡΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ x Π²ΡΠ΅Π³Π΄Π° ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ integer.
Π‘ΡΠ΅Π΄Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ·ΡΠΊΠ° ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ ΡΡΠΈ ΠΌΠ΅ΡΠΊΠΈ Π² ΡΠ°Π·Π½ΡΠ΅ ΠΌΠΎΠΌΠ΅Π½ΡΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ. ΠΡΠ»ΠΈ ΠΌΡ ΠΏΠΎΠΏΡΠΎΠ±ΡΠ΅ΠΌ ΡΠ»ΠΎΠΆΠΈΡΡ Π΄Π²Π° Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΡΠΎ ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, ΡΠ²Π»ΡΡΡΡΡ Π»ΠΈ ΠΎΠ½ΠΈ ΡΠΈΡΠ»Π°ΠΌΠΈ, ΡΡΡΠΎΠΊΠ°ΠΌΠΈ ΠΈΠ»ΠΈ ΠΌΠ°ΡΡΠΈΠ²Π°ΠΌΠΈ. ΠΠΎΡΠΎΠΌ ΠΎΠ½Π° ΡΠ»ΠΎΠΆΠΈΡ ΡΡΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΡΠΊΠ»Π΅ΠΈΡ ΠΈΡ ΠΈΠ»ΠΈ Π²ΡΠ΄Π°ΡΡ ΠΎΡΠΈΠ±ΠΊΡ, Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΈΠΏΠ°.
Π‘ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠ·ΡΠΊΠΈ
Π‘ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠ·ΡΠΊΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ ΡΠΈΠΏΡ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ, Π΅ΡΠ΅ Π΄ΠΎ Π·Π°ΠΏΡΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΡΠ±Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠΈΠΏΡ Π½Π°ΡΡΡΠ°ΡΡ ΠΏΡΠ°Π²ΠΈΠ»Π° ΡΠ·ΡΠΊΠ°, ΡΡΠΈΡΠ°Π΅ΡΡΡ Π½Π΅ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΠΉ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠ·ΡΠΊΠΎΠ² ΠΎΡΠΊΠ»ΠΎΠ½ΠΈΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ «a» + 1 (ΡΠ·ΡΠΊ Π‘ΠΈ β ΡΡΠΎ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΈΠ· ΡΡΠΎΠ³ΠΎ ΠΏΡΠ°Π²ΠΈΠ»Π°). ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π·Π½Π°Π΅Ρ, ΡΡΠΎ «a» β ΡΡΠΎ ΡΡΡΠΎΠΊΠ°, Π° 1 β ΡΡΠΎ ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ, ΠΈ ΡΡΠΎ + ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠ³Π΄Π° Π»Π΅Π²Π°Ρ ΠΈ ΠΏΡΠ°Π²Π°Ρ ΡΠ°ΡΡΡ ΠΎΡΠ½ΠΎΡΡΡΡΡ ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡ ΡΠΈΠΏΡ. Π’Π°ΠΊ ΡΡΠΎ Π΅ΠΌΡ Π½Π΅ Π½ΡΠΆΠ½ΠΎ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΡΠΎΠ±Ρ ΠΏΠΎΠ½ΡΡΡ, ΡΡΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°. ΠΠ°ΠΆΠ΄ΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π² ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌ ΡΠ·ΡΠΊΠ΅ ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΊ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌΡ ΡΠΈΠΏΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π±Π΅Π· Π·Π°ΠΏΡΡΠΊΠ° ΠΊΠΎΠ΄Π°.
ΠΡΠΎ Π½Π΅ ΡΠΌΠ΅Π½ΡΡΠ°Π΅Ρ «ΡΡΠ°ΡΠΈΡΠ½ΠΎΡΡΡ» ΡΠΈΡΡΠ΅ΠΌΡ ΡΠΈΠΏΠΎΠ². Π‘ΠΈΡΡΠ΅ΠΌΠ° ΡΠΈΠΏΠΎΠ² Π² Haskell Π·Π½Π°ΠΌΠ΅Π½ΠΈΡΠ° ΡΠ²ΠΎΠ΅ΠΉ ΡΡΠ°ΡΠΈΡΠ½ΠΎΡΡΡΡ, ΡΡΡΠΎΠ³ΠΎΡΡΡΡ ΠΈ ΠΌΠΎΡΠ½ΠΎΡΡΡΡ, ΠΈ Π² ΠΏΠΎ Π²ΡΠ΅ΠΌ ΡΡΠΈΠΌ ΡΡΠΎΠ½ΡΠ°ΠΌ Haskell ΠΎΠΏΠ΅ΡΠ΅ΠΆΠ°Π΅Ρ Java.
ΠΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠ·ΡΠΊΠΈ
ΠΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠ·ΡΠΊΠΈ Π½Π΅ ΡΡΠ΅Π±ΡΡΡ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΡΠΈΠΏ, Π½ΠΎ ΠΈ Π½Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ Π΅Π³ΠΎ ΡΠ°ΠΌΠΈ. Π’ΠΈΠΏΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π½Π΅ΠΈΠ·Π²Π΅ΡΡΠ½Ρ Π΄ΠΎ ΡΠΎΠ³ΠΎ ΠΌΠΎΠΌΠ΅Π½ΡΠ°, ΠΊΠΎΠ³Π΄Π° Ρ Π½ΠΈΡ Π΅ΡΡΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠ½ΠΊΡΠΈΡ Π² Python
ΠΌΠΎΠΆΠ΅Ρ ΡΠΊΠ»Π°Π΄ΡΠ²Π°ΡΡ Π΄Π²Π° ΡΠ΅Π»ΡΡ ΡΠΈΡΠ»Π°, ΡΠΊΠ»Π΅ΠΈΠ²Π°ΡΡ ΡΡΡΠΎΠΊΠΈ, ΡΠΏΠΈΡΠΊΠΈ ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅, ΠΈ ΠΌΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ½ΡΡΡ, ΡΡΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ, ΠΏΠΎΠΊΠ° Π½Π΅ Π·Π°ΠΏΡΡΡΠΈΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π² ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ ΡΡΠ½ΠΊΡΠΈΡ f Π²ΡΠ·ΠΎΠ²ΡΡ Ρ Π΄Π²ΡΠΌΡ ΡΡΡΠΎΠΊΠ°ΠΌΠΈ, ΠΈ Ρ Π΄Π²ΡΠΌΡ ΡΠΈΡΠ»Π°ΠΌΠΈ Π² Π΄ΡΡΠ³ΠΎΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ. Π ΡΠ°ΠΊΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ x ΠΈ y Π±ΡΠ΄ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ°Π·Π½ΡΡ ΡΠΈΠΏΠΎΠ² Π² ΡΠ°Π·Π½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ. ΠΠΎΡΡΠΎΠΌΡ Π³ΠΎΠ²ΠΎΡΡΡ, ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠ·ΡΠΊΠ°Ρ ΠΎΠ±Π»Π°Π΄Π°ΡΡ ΡΠΈΠΏΠΎΠΌ, Π½ΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ β Π½Π΅Ρ. ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ 1 ΡΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎ integer, Π½ΠΎ x ΠΈ y ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠ΅ΠΌ ΡΠ³ΠΎΠ΄Π½ΠΎ.
Π‘ΡΠ°Π²Π½Π΅Π½ΠΈΠ΅
ΠΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠ·ΡΠΊΠΎΠ² Π²ΡΠ΄Π°Π΄ΡΡ ΠΎΡΠΈΠ±ΠΊΡ, Π΅ΡΠ»ΠΈ ΡΠΈΠΏΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π½Π΅ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ (JavaScript β ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎΠ΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅; ΠΎΠ½ ΠΏΡΡΠ°Π΅ΡΡΡ Π²Π΅ΡΠ½ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ Π»ΡΠ±ΠΎΠ³ΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ, Π΄Π°ΠΆΠ΅ ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ΠΎ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ ΡΠΌΡΡΠ»Π°). ΠΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΡΠ·ΡΠΊΠΎΠ² Π΄Π°ΠΆΠ΅ ΠΏΡΠΎΡΡΠ°Ρ ΠΎΡΠΈΠ±ΠΊΠ° Π²ΠΈΠ΄Π° «a» + 1 ΠΌΠΎΠΆΠ΅Ρ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡΡΡ Π² Π±ΠΎΠ΅Π²ΠΎΠΌ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠΈ. Π‘ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠ·ΡΠΊΠΈ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ°ΡΡ ΡΠ°ΠΊΠΈΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ, Π½ΠΎ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, ΡΡΠ΅ΠΏΠ΅Π½Ρ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ΅Π½ΠΈΡ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΠΌΠΎΡΠ½ΠΎΡΡΠΈ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠΈΠΏΠΎΠ².
Π‘ΠΈΠ»ΡΠ½Π°Ρ ΠΈ ΡΠ»Π°Π±Π°Ρ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ
ΠΠΎΠ½ΡΡΠΈΡ «ΡΠΈΠ»ΡΠ½ΡΠΉ» ΠΈ «ΡΠ»Π°Π±ΡΠΉ» β ΠΎΡΠ΅Π½Ρ Π½Π΅ΠΎΠ΄Π½ΠΎΠ·Π½Π°ΡΠ½ΡΠ΅. ΠΠΎΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ:
ΠΠ½ΠΎΠ³Π΄Π° «ΡΠΈΠ»ΡΠ½ΡΠΉ» ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ «ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ».
Π’ΡΡ Π²ΡΠ΅ ΠΏΡΠΎΡΡΠΎ, Π½ΠΎ Π»ΡΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ΅ΡΠΌΠΈΠ½ «ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ», ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΠΈ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ Π΅Π³ΠΎ.
ΠΠ½ΠΎΠ³Π΄Π° «ΡΠΈΠ»ΡΠ½ΡΠΉ» ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΠΎΠΉΡΠΈ ΡΡΡΠΎΠ³ΠΈΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π° ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠΈ Π² ΡΠ·ΡΠΊΠ΅.
ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΠΌΡΡ. ΠΠΎΡ ΠΊΠ°ΠΊ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ·ΡΠΊΠΈ ΠΎΡΠ²Π΅ΡΠ°ΡΡ ΡΡΠΈΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡΠΌ. ΠΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅ΡΠΈΡΡ, ΡΠΎΠ»ΡΠΊΠΎ Haskell ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ «ΡΠΈΠ»ΡΠ½ΡΠΉ» ΠΏΠΎ Π²ΡΠ΅ΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌ. ΠΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΡΠ·ΡΠΊΠΎΠ² Π½Π΅ ΡΠ°ΠΊΠΈΠ΅ ΡΠ΅ΡΠΊΠΈΠ΅.
Π―Π·ΡΠΊ | Π‘ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ? | ΠΠ΅ΡΠ²Π½ΡΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ? | Π‘ΡΡΠΎΠ³ΠΈΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π°? | ΠΠ΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠΉ Π΄Π»Ρ ΠΏΠ°ΠΌΡΡΠΈ? |
---|---|---|---|---|
C | Π‘ΠΈΠ»ΡΠ½ΡΠΉ | ΠΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ | Π‘Π»Π°Π±ΡΠΉ | Π‘Π»Π°Π±ΡΠΉ |
Java | Π‘ΠΈΠ»ΡΠ½ΡΠΉ | ΠΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ | Π‘ΠΈΠ»ΡΠ½ΡΠΉ | Π‘ΠΈΠ»ΡΠ½ΡΠΉ |
Haskell | Π‘ΠΈΠ»ΡΠ½ΡΠΉ | Π‘ΠΈΠ»ΡΠ½ΡΠΉ | Π‘ΠΈΠ»ΡΠ½ΡΠΉ | Π‘ΠΈΠ»ΡΠ½ΡΠΉ |
Python | Π‘Π»Π°Π±ΡΠΉ | ΠΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ | Π‘Π»Π°Π±ΡΠΉ | Π‘ΠΈΠ»ΡΠ½ΡΠΉ |
JavaScript | Π‘Π»Π°Π±ΡΠΉ | Π‘Π»Π°Π±ΡΠΉ | Π‘Π»Π°Π±ΡΠΉ | Π‘ΠΈΠ»ΡΠ½ΡΠΉ |
(«ΠΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ» Π² ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ΅ «ΠΠ΅ΡΠ²Π½ΡΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ» ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΈΠ»ΡΠ½ΡΠΌ ΠΈ ΡΠ»Π°Π±ΡΠΌ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΠΌΡ ΡΡΠΈΡΠ°Π΅ΠΌ ΠΏΡΠΈΠ΅ΠΌΠ»Π΅ΠΌΡΠΌΠΈ).
ΠΠ°ΡΠ°ΡΡΡΡ ΡΠ΅ΡΠΌΠΈΠ½Ρ «ΡΠΈΠ»ΡΠ½ΡΠΉ» ΠΈ «ΡΠ»Π°Π±ΡΠΉ» ΠΎΡΠ½ΠΎΡΡΡΡΡ ΠΊ Π½Π΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ ΡΠ°Π·Π½ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΉ Π²ΡΡΠ΅, ΠΈ Π΄ΡΡΠ³ΠΈΡ , Π½Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½Π½ΡΡ Π·Π΄Π΅ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΉ. ΠΠ΅ΡΡ ΡΡΠΎΡ Π±Π΅ΡΠΏΠΎΡΡΠ΄ΠΎΠΊ Π΄Π΅Π»Π°Π΅Ρ ΡΠ»ΠΎΠ²Π° «ΡΠΈΠ»ΡΠ½ΡΠΉ» ΠΈ «ΡΠ»Π°Π±ΡΠΉ» ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π±Π΅ΡΡΠΌΡΡΠ»Π΅Π½Π½ΡΠΌΠΈ. ΠΠΎΠ³Π΄Π° Ρ ΠΎΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΈ ΡΠ΅ΡΠΌΠΈΠ½Ρ, ΡΠΎ Π»ΡΡΡΠ΅ ΠΎΠΏΠΈΡΠ°ΡΡ, ΡΡΠΎ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎ ΠΈΠΌΠ΅Π΅ΡΡΡ Π²Π²ΠΈΠ΄Ρ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ, ΡΡΠΎ «JavaScript Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΊΠΎΠ³Π΄Π° ΡΠΊΠ»Π°Π΄ΡΠ²Π°Π΅ΡΡΡ ΡΡΡΠΎΠΊΠ° Ρ ΡΠΈΡΠ»ΠΎΠΌ, Π½ΠΎ Python Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΎΡΠΈΠ±ΠΊΡ». Π ΡΠ°ΠΊΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΌΡ Π½Π΅ Π±ΡΠ΄Π΅ΠΌ ΡΡΠ°ΡΠΈΡΡ ΡΠ²ΠΎΠΈ ΡΠΈΠ»Ρ Π½Π° ΠΏΠΎΠΏΡΡΠΊΠΈ ΠΏΡΠΈΠΉΡΠΈ ΠΊ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΡ ΠΎ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΡΠ»ΠΎΠ²Π° «ΡΠΈΠ»ΡΠ½ΡΠΉ». ΠΠ»ΠΈ, Π΅ΡΠ΅ Ρ ΡΠΆΠ΅: ΠΏΡΠΈΠ΄Π΅ΠΌ ΠΊ Π½Π΅ΡΠ°Π·ΡΠ΅ΡΠ΅Π½Π½ΠΎΠΌΡ Π½Π΅ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ ΠΈΠ·-Π·Π° ΡΠ΅ΡΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΠΈ.
Π Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΡΠ»ΡΡΠ°Π΅Π² ΡΠ΅ΡΠΌΠΈΠ½Ρ «ΡΠΈΠ»ΡΠ½ΡΠΉ» ΠΈ «ΡΠ»Π°Π±ΡΠΉ» Π² ΠΈΠ½ΡΠ΅ΡΠ½Π΅ΡΠ΅ ΡΠ²Π»ΡΡΡΡΡ Π½Π΅ΡΡΠ½ΡΠΌΠΈ ΠΈ ΠΏΠ»ΠΎΡ ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌΠΈ ΠΌΠ½Π΅Π½ΠΈΡΠΌΠΈ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ Π»ΡΠ΄Π΅ΠΉ. ΠΠ½ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ, ΡΡΠΎΠ±Ρ Π½Π°Π·Π²Π°ΡΡ ΡΠ·ΡΠΊ «ΠΏΠ»ΠΎΡ ΠΈΠΌ» ΠΈΠ»ΠΈ «Ρ ΠΎΡΠΎΡΠΈΠΌ», ΠΈ ΡΡΠΎ ΠΌΠ½Π΅Π½ΠΈΠ΅ ΠΎΠ±ΠΎΡΠ°ΡΠΈΠ²Π°Π΅ΡΡΡ Π² ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΆΠ°ΡΠ³ΠΎΠ½.
Π‘ΠΈΠ»ΡΠ½Π°Ρ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ: Π‘ΠΈΡΡΠ΅ΠΌΠ° ΡΠΈΠΏΠΎΠ², ΠΊΠΎΡΠΎΡΡΡ Ρ Π»ΡΠ±Π»Ρ ΠΈ Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΌΠ½Π΅ ΠΊΠΎΠΌΡΠΎΡΡΠ½ΠΎ.
Π‘Π»Π°Π±Π°Ρ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ: Π‘ΠΈΡΡΠ΅ΠΌΠ° ΡΠΈΠΏΠΎΠ², ΠΊΠΎΡΠΎΡΠ°Ρ Π±Π΅ΡΠΏΠΎΠΊΠΎΠΈΡ ΠΌΠ΅Π½Ρ ΠΈΠ»ΠΈ Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΌΠ½Π΅ Π½Π΅ ΠΊΠΎΠΌΡΠΎΡΡΠ½ΠΎ.
ΠΠΎΡΡΠ΅ΠΏΠ΅Π½Π½Π°Ρ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ (gradual typing)
ΠΠ΅ΡΠ΄ΠΎΠ²Π»Π΅ΡΠ²ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅ β ΡΡΠΎ Π·Π°Π΄Π°ΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ eval() ΡΠΈΠΏ Any, ΡΡΠΎ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ Object Π² Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΡΠ·ΡΠΊΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ»ΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ interface <> Π² Go: ΡΡΠΎ ΡΠΈΠΏ, ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΡΠ΄ΠΎΠ²Π»Π΅ΡΠ²ΠΎΡΡΠ΅Ρ Π»ΡΠ±ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅.
Π Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠ·ΡΠΊΠ°Ρ Π΅ΡΡΡ ΠΎΠΏΡΠΈΠΎΠ½Π°Π»ΡΠ½Π°Ρ ΠΈΠ»ΠΈ ΠΏΠΎΡΡΠ΅ΠΏΠ΅Π½Π½Π°Ρ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ (gradual typing): ΠΎΠ½ΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, Π½ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ. Π Python Π½Π΅Π΄Π°Π²Π½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ ΠΎΠΏΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ ΡΠΈΠΏΡ; TypeScript β ΡΡΠΎ Π½Π°Π΄ΡΡΡΠΎΠΉΠΊΠ° Π½Π°Π΄ JavaScript, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π΅ΡΡΡ ΠΎΠΏΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ ΡΠΈΠΏΡ; Flow ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ· ΡΡΠ°ΡΠΎΠ³ΠΎ Π΄ΠΎΠ±ΡΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π½Π° JavaScript.
ΠΡΠΈ ΡΠ·ΡΠΊΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠΈ, Π½ΠΎ ΠΎΠ½ΠΈ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π΄Π°Π΄ΡΡ Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎΠΉ Π³Π°ΡΠ°Π½ΡΠΈΠΈ, ΠΊΠ°ΠΊ ΠΏΠΎ-Π½Π°ΡΡΠΎΡΡΠ΅ΠΌΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠ·ΡΠΊΠΈ. ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π±ΡΠ΄ΡΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌΠΈ, Π° Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ΄ΡΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌΠΈ. ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ Π²ΡΠ΅Π³Π΄Π° Π½ΡΠΆΠ½ΠΎ Π·Π½Π°ΡΡ ΠΈ ΠΎΠΏΠ°ΡΠ°ΡΡΡΡ ΡΠ°Π·Π½ΠΈΡΡ.
ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°
ΠΠΎΠ³Π΄Π° ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, ΡΠ½Π°ΡΠ°Π»Π° ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΡΡΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ, ΠΊΠ°ΠΊ Π² Π»ΡΠ±ΠΎΠΌ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ΅. ΠΠΎΡΠΎΠΌ ΠΏΡΠΎΠ²Π΅ΡΡΡΡΡΡ ΡΠΈΠΏΡ. ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠ·ΡΠΊ ΡΠ½Π°ΡΠ°Π»Π° ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΆΠ°Π»ΠΎΠ²Π°ΡΡΡΡ Π½Π° ΠΎΠ΄Π½Ρ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΡΡ ΠΎΡΠΈΠ±ΠΊΡ, Π° ΠΏΠΎΡΠ»Π΅ Π΅Π΅ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΠΎΠΆΠ°Π»ΠΎΠ²Π°ΡΡΡΡ Π½Π° 100 ΠΎΡΠΈΠ±ΠΎΠΊ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠΈ. ΠΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΎΡΠΈΠ±ΠΊΠΈ Π½Π΅ ΡΠΎΠ·Π΄Π°Π»ΠΎ ΡΡΠΈ 100 ΠΎΡΠΈΠ±ΠΎΠΊ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠΈ. ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΠΏΡΠΎΡΡΠΎ Π½Π΅ ΠΈΠΌΠ΅Π» Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ ΡΠΈΠΏΠΎΠ², ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡΠ» ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ.
ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠ·ΡΠΊΠΎΠ² ΠΎΠ±ΡΡΠ½ΠΎ ΠΌΠΎΠ³ΡΡ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ Π±ΠΎΠ»Π΅Π΅ Π±ΡΡΡΡΡΠΉ ΠΊΠΎΠ΄, ΡΠ΅ΠΌ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΡ . ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π·Π½Π°Π΅Ρ, ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ add ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΡΠ΅Π»ΡΠ΅ ΡΠΈΡΠ»Π°, ΡΠΎ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π°ΡΠΈΠ²Π½ΡΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ ADD ΡΠ΅Π½ΡΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°. ΠΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠ·ΡΠΊ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ ΡΠΈΠΏ ΠΏΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ, Π²ΡΠ±ΠΈΡΠ°Ρ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° ΡΡΠ½ΠΊΡΠΈΠΉ add Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΈΠΏΠΎΠ² (ΡΠΊΠ»Π°Π΄ΡΠ²Π°Π΅ΠΌ integers ΠΈΠ»ΠΈ floats ΠΈΠ»ΠΈ ΡΠΊΠ»Π΅ΠΈΠ²Π°Π΅ΠΌ ΡΡΡΠΎΠΊΠΈ ΠΈΠ»ΠΈ, ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ, ΡΠΏΠΈΡΠΊΠΈ?) ΠΠ»ΠΈ Π½ΡΠΆΠ½ΠΎ ΡΠ΅ΡΠΈΡΡ, ΡΡΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° ΠΎΡΠΈΠ±ΠΊΠ° ΠΈ ΡΠΈΠΏΡ Π½Π΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡ Π΄ΡΡΠ³ Π΄ΡΡΠ³Ρ. ΠΡΠ΅ ΡΡΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π·Π°Π½ΠΈΠΌΠ°ΡΡ Π²ΡΠ΅ΠΌΡ. Π Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠ·ΡΠΊΠ°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΡΠ°Π·Π½ΡΠ΅ ΡΡΡΠΊΠΈ Π΄Π»Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ JIT-ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ (just-in-time), Π³Π΄Π΅ ΠΊΠΎΠ΄ ΠΏΠ΅ΡΠ΅ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ ΠΏΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΏΠΎΡΠ»Π΅ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π²ΡΠ΅ΠΉ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΠΉ ΠΎ ΡΠΈΠΏΠ°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ. ΠΠ΄Π½Π°ΠΊΠΎ, Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠ·ΡΠΊ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΡΡΠ°Π²Π½ΠΈΡΡΡΡ ΠΏΠΎ ΡΠΊΠΎΡΠΎΡΡΡΡ Ρ Π°ΠΊΠΊΡΡΠ°ΡΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠΌ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΊΠΎΠ΄ΠΎΠΌ Π½Π° ΡΠ·ΡΠΊΠ΅ Π²ΡΠΎΠ΄Π΅ Rust.
ΠΡΠ³ΡΠΌΠ΅Π½ΡΡ Π² ΠΏΠΎΠ»ΡΠ·Ρ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠΈΠΏΠΎΠ²
Π‘ΡΠΎΡΠΎΠ½Π½ΠΈΠΊΠΈ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠΈΠΏΠΎΠ² ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π½Π° ΡΠΎ, ΡΡΠΎ Π±Π΅Π· ΡΠΈΡΡΠ΅ΠΌΡ ΡΠΈΠΏΠΎΠ² ΠΏΡΠΎΡΡΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΌΠΎΠ³ΡΡ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°ΠΌ Π² ΠΏΡΠΎΠ΄Π°ΠΊΡΠ΅Π½Π΅. ΠΡΠΎ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ ΠΆΠ΅, ΠΏΡΠ°Π²Π΄Π°. ΠΡΠ±ΠΎΠΉ, ΠΊΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π» Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠ·ΡΠΊ, ΠΈΡΠΏΡΡΠ°Π» ΡΡΠΎ Π½Π° ΡΠ΅Π±Π΅.
ΠΠ»ΡΡΡ ΠΈ ΠΌΠΈΠ½ΡΡΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠΈΡΡΠ΅ΠΌ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠΈ Π²ΡΠ΅ Π΅ΡΠ΅ ΠΏΠ»ΠΎΡ ΠΎ ΠΈΠ·ΡΡΠ΅Π½Ρ, Π½ΠΎ ΠΎΠ½ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎ Π·Π°Π²ΠΈΡΡΡ ΠΎΡ ΡΠ·ΡΠΊΠ° ΠΈ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ ΡΠ΅ΡΠ°Π΅ΠΌΠΎΠΉ Π·Π°Π΄Π°ΡΠΈ.
Π‘ΡΡΠ΅ΡΡΠ²ΡΡΡ ΡΠ°Π·Π½ΡΠ΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Ρ Ρ ΡΠ°Π·Π½ΡΠΌΠΈ ΡΡΠΎΠ²Π½ΡΠΌΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ, Π½ΠΎ Python ΠΈ JavaScript ΠΎΠ±Π° ΡΠ²Π»ΡΡΡΡΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌΠΈ ΡΠ·ΡΠΊΠ°ΠΌΠΈ.
Π‘ΠΈ Ρ ΡΠ°Π΄ΠΎΡΡΡΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ ΡΡΠΈΡΠ°ΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ· Π»ΡΠ±ΠΎΠ³ΠΎ ΠΌΠ΅ΡΡΠ° Π² ΠΏΠ°ΠΌΡΡΠΈ, ΠΈΠ»ΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΡ, ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ Π΄ΡΡΠ³ΠΈΠΌ ΡΠΈΠΏΠΎΠΌ, Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΡΡΠΎ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ ΡΠΌΡΡΠ»Π° ΠΈ ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ ΠΊ ΠΏΠ°Π΄Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
Haskell ΠΆΠ΅ Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ ΡΠ»ΠΎΠΆΠΈΡΡ integer ΠΈ float Π±Π΅Π· ΡΠ²Π½ΠΎΠ³ΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠ΅ΡΠ΅Π΄ ΡΡΠΈΠΌ. Π‘ΠΈ ΠΈ Haskell ΠΎΠ±Π° ΡΠ²Π»ΡΡΡΡΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌΠΈ, Π½Π΅ ΡΠΌΠΎΡΡΡ Π½Π° ΡΠ°ΠΊΠΈΠ΅ Π±ΠΎΠ»ΡΡΠΈΠ΅ ΠΎΡΠ»ΠΈΡΠΈΡ.
ΠΡΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π²Π°ΡΠΈΠ°ΡΠΈΠΉ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΡ ΠΈ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠ·ΡΠΊΠΎΠ². ΠΡΠ±ΠΎΠ΅ Π±Π΅Π·ΠΎΠ³ΠΎΠ²ΠΎΡΠΎΡΠ½ΠΎΠ΅ Π²ΡΡΠΊΠ°Π·ΡΠ²Π°Π½ΠΈΠ΅ Π²ΠΈΠ΄Π° «ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠ·ΡΠΊΠΈ Π»ΡΡΡΠ΅, ΡΠ΅ΠΌ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠ΅, ΠΊΠΎΠ³Π΄Π° Π΄Π΅Π»ΠΎ ΠΊΠ°ΡΠ°Π΅ΡΡΡ Π₯» β ΡΡΠΎ ΠΏΠΎΡΡΠΈ Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎ Π΅ΡΡΠ½Π΄Π°. ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΡΠ°Π²Π΄ΠΎΠΉ Π² ΡΠ»ΡΡΠ°Π΅ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ ΡΠ·ΡΠΊΠΎΠ², Π½ΠΎ ΡΠΎΠ³Π΄Π° Π»ΡΡΡΠ΅ ΡΠΊΠ°Π·Π°ΡΡ «Haskell Π»ΡΡΡΠ΅, ΡΠ΅ΠΌ Python ΠΊΠΎΠ³Π΄Π° Π΄Π΅Π»ΠΎ ΠΊΠ°ΡΠ°Π΅ΡΡΡ Π₯».
Π Π°Π·Π½ΠΎΠΎΠ±ΡΠ°Π·ΠΈΠ΅ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠΈΡΡΠ΅ΠΌ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠΈ
ΠΠ°Π²Π°ΠΉΡΠ΅ Π²Π·Π³Π»ΡΠ½Π΅ΠΌ Π½Π° Π΄Π²Π° Π·Π½Π°ΠΌΠ΅Π½ΠΈΡΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΡΠ·ΡΠΊΠΎΠ²: Go ΠΈ Haskell. Π ΡΠΈΡΡΠ΅ΠΌΠ΅ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠΈ Go Π½Π΅Ρ ΠΎΠ±ΠΎΠ±ΡΠ΅Π½Π½ΡΡ ΡΠΈΠΏΠΎΠ², ΡΠΈΠΏΠΎΠ² Ρ «ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ» ΠΎΡ Π΄ΡΡΠ³ΠΈΡ ΡΠΈΠΏΠΎΠ². ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ²ΠΎΠΉ ΡΠΈΠΏ Π΄Π»Ρ ΡΠΏΠΈΡΠΊΠΎΠ² MyList, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ Ρ ΡΠ°Π½ΠΈΡΡ Π»ΡΠ±ΡΠ΅ Π½ΡΠΆΠ½ΡΠ΅ Π½Π°ΠΌ Π΄Π°Π½Π½ΡΠ΅. ΠΡ Ρ ΠΎΡΠΈΠΌ ΠΈΠΌΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ MyList ΡΠ΅Π»ΡΡ ΡΠΈΡΠ΅Π», MyList ΡΡΡΠΎΠΊ ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅, Π½Π΅ ΠΌΠ΅Π½ΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ MyList. ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠ»Π΅Π΄ΠΈΡΡ Π·Π° ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠ΅ΠΉ: Π΅ΡΠ»ΠΈ Π΅ΡΡΡ MyList ΡΠ΅Π»ΡΡ ΡΠΈΡΠ΅Π», ΠΈ ΠΌΡ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ ΡΡΠ΄Π° ΡΡΡΠΎΠΊΡ, ΡΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΡΠΊΠ»ΠΎΠ½ΠΈΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
Go ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎ Π±ΡΠ» ΡΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠΎΠ±Ρ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π·Π°Π΄Π°Π²Π°ΡΡ ΡΠΈΠΏΡ Π²ΡΠΎΠ΄Π΅ MyList. ΠΡΡΡΠ΅Π΅, ΡΡΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ, ΡΡΠΎ ΡΠΎΠ·Π΄Π°ΡΡ MyList «ΠΏΡΡΡΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ²»: MyList ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ, Π½ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΠΏΡΠΎΡΡΠΎ Π½Π΅ Π·Π½Π°Π΅Ρ ΠΈΡ ΡΠΈΠΏ. ΠΠΎΠ³Π΄Π° ΠΌΡ Π΄ΠΎΡΡΠ°Π΅ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΈΠ· MyList, Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠΎΠΎΠ±ΡΠΈΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ ΠΈΡ ΡΠΈΠΏ. ΠΡΠ»ΠΈ ΠΌΡ Π³ΠΎΠ²ΠΎΡΠΈΠΌ «Π― Π΄ΠΎΡΡΠ°Ρ ΡΡΡΠΎΠΊΡ», Π½ΠΎ Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΡΡΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ β ΡΡΠΎ ΡΠΈΡΠ»ΠΎ, ΡΠΎ Π±ΡΠ΄Π΅Ρ ΠΎΡΠΈΠ±ΠΊΠ° ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ, ΠΊΠ°ΠΊ Π² ΡΠ»ΡΡΠ°Π΅ Ρ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ ΡΠ·ΡΠΊΠ°ΠΌΠΈ.
Π Go ΡΠ°ΠΊΠΆΠ΅ Π½Π΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° Π΄ΡΡΠ³ΠΈΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΈΡΡΡΡΡΠ²ΡΡΡ Π² ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΡΠ·ΡΠΊΠ°Ρ (ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ Π² Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ 1970-Ρ Π³ΠΎΠ΄ΠΎΠ²). Π£ ΡΠΎΠ·Π΄Π°ΡΠ΅Π»Π΅ΠΉ Go Π±ΡΠ»ΠΈ ΡΠ²ΠΎΠΈ ΠΏΡΠΈΡΠΈΠ½Ρ Π΄Π»Ρ ΡΡΠΈΡ ΡΠ΅ΡΠ΅Π½ΠΈΠΉ, Π½ΠΎ ΠΌΠ½Π΅Π½ΠΈΠ΅ Π»ΡΠ΄Π΅ΠΉ ΡΠΎ ΡΡΠΎΡΠΎΠ½Ρ ΠΏΠΎ ΡΡΠΎΠΌΡ ΠΏΠΎΠ²ΠΎΠ΄Ρ ΠΈΠ½ΠΎΠ³Π΄Π° ΠΌΠΎΠΆΠ΅Ρ Π·Π²ΡΡΠ°ΡΡ ΡΠ΅Π·ΠΊΠΎ.
Haskell ΠΌΠΎΠΆΠ΅Ρ Π²ΡΡΠ°ΠΆΠ°ΡΡ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ ΠΈΠ΄Π΅ΠΈ Π½Π°ΠΏΡΡΠΌΡΡ ΡΠΈΠΏΠ°ΠΌΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Num a => MyList a ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ «MyList Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΡΠ½ΠΎΡΡΡΡΡ ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡ ΡΠΈΠΏΡ ΡΠΈΡΠ΅Π»». ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠΏΠΈΡΠΎΠΊ integer’ΠΎΠ², float’ΠΎΠ² ΠΈΠ»ΠΈ Π΄Π΅ΡΡΡΠΈΡΠ½ΡΡ ΡΠΈΡΠ΅Π» Ρ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ ΡΠΎΡΠ½ΠΎΡΡΡΡ, Π½ΠΎ ΡΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π±ΡΠ΄Π΅Ρ ΡΠΏΠΈΡΠΊΠΎΠΌ ΡΡΡΠΎΠΊ, ΡΡΠΎ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΡΡΡ ΠΏΡΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ.
ΠΡΠ»ΠΈ Ρ ΡΡΠ½ΠΊΡΠΈΠΈ Π² ΡΠΈΠΏΠ΅ Π½Π΅Ρ IO, ΡΠΎ ΠΌΡ Π·Π½Π°Π΅ΠΌ, ΡΡΠΎ ΠΎΠ½Π° Π½Π΅ ΡΠΎΠ²Π΅ΡΡΠ°Π΅Ρ Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π²Π²ΠΎΠ΄Π°/Π²ΡΠ²ΠΎΠ΄Π°. Π Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, ΠΊ ΠΏΡΠΈΠΌΠ΅ΡΡ, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ½ΡΡΡ, ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅Ρ Π»ΠΈ ΡΡΠ½ΠΊΡΠΈΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ , ΠΏΡΠΎΡΡΠΎ Π²Π·Π³Π»ΡΠ½ΡΠ² Π½Π° Π΅Π΅ ΡΠΈΠΏ. ΠΠΈΠΊΠ°ΠΊΠΈΠ΅ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΈ ΠΏΠΎΡΡΠΈ Π½ΠΈΠΊΠ°ΠΊΠΈΠ΅ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠ·ΡΠΊΠΈ Π½Π΅ ΡΠΏΠΎΡΠΎΠ±Ρ Π½Π° ΡΠ°ΠΊΠΎΠ΅. ΠΡΠΎ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡ ΡΠ·ΡΠΊΠΎΠ² Ρ ΡΠ°ΠΌΠΎΠΉ ΠΌΠΎΡΠ½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠΈ.
Π Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΡΠ·ΡΠΊΠΎΠ² Π½Π°ΠΌ ΠΏΡΠΈΡΠ»ΠΎΡΡ Π±Ρ ΡΠ°Π·Π±ΠΈΡΠ°ΡΡΡΡ Ρ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ ΠΈ Π²ΡΠ΅ΠΌΠΈ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΡΡΡΠ΄Π° Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ, ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅, Π² ΠΏΠΎΠΏΡΡΠΊΠ°Ρ Π½Π°ΠΉΡΠΈ ΡΡΠΎ-ΡΠΎ, ΠΈΠ·ΠΌΠ΅Π½ΡΡΡΠ΅Π΅ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ . ΠΡΠΎ ΡΡΠΎΠΌΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΠΏΡΠΎΡΠ΅ΡΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π»Π΅Π³ΠΊΠΎ Π΄ΠΎΠΏΡΡΡΠΈΡΡ ΠΎΡΠΈΠ±ΠΊΡ. Π ΡΠΈΡΡΠ΅ΠΌΠ° ΡΠΈΠΏΠΎΠ² Haskell ΠΌΠΎΠΆΠ΅Ρ ΠΎΡΠ²Π΅ΡΠΈΡΡ Π½Π° ΡΡΠΎΡ Π²ΠΎΠΏΡΠΎΡ ΠΏΡΠΎΡΡΠΎ ΠΈ Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎ.
Π‘ΡΠ°Π²Π½ΠΈΡΠ΅ ΡΡΡ ΠΌΠΎΡΠ½ΠΎΡΡΡ Ρ Go, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅ ΡΠΏΠΎΡΠΎΠ±Π΅Π½ Π²ΡΡΠ°Π·ΠΈΡΡ ΠΏΡΠΎΡΡΡΡ ΠΈΠ΄Π΅Ρ MyList, Π½Π΅ Π³ΠΎΠ²ΠΎΡΡ ΡΠΆΠ΅ ΠΎ «ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π΄Π²Π° Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°, ΠΈ ΠΎΠ½ΠΈ ΠΎΠ±Π° ΡΠΈΡΠ»Π΅Π½Π½ΡΠ΅ ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°, ΠΈ ΠΊΠΎΡΠΎΡΠ°Ρ Π΄Π΅Π»Π°Π΅Ρ Π²Π²ΠΎΠ΄/Π²ΡΠ²ΠΎΠ΄».
ΠΠΎΠ΄Ρ ΠΎΠ΄ Go ΡΠΏΡΠΎΡΠ°Π΅Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² Π΄Π»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π° Go (Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΡΠΎΡΡΠΎΠΉ). Π ΡΠΎΠΌΡ ΠΆΠ΅, ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΈΠ·ΡΡΠΈΡΡ ΠΌΠ΅Π½ΡΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΉ. ΠΠ°ΠΊ ΡΡΠΈ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° ΡΡΠ°Π²Π½ΠΈΠΌΡ ΡΠΎ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΠΌΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡΠΌΠΈ β ΡΡΠ±ΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΉ Π²ΠΎΠΏΡΠΎΡ. ΠΠ΄Π½Π°ΠΊΠΎ, Π½Π΅Π»ΡΠ·Ρ ΠΏΠΎΡΠΏΠΎΡΠΈΡΡ, ΡΡΠΎ Haskell ΡΠ»ΠΎΠΆΠ½Π΅Π΅ ΠΈΠ·ΡΡΠΈΡΡ, ΡΠ΅ΠΌ Go, ΠΈ ΡΡΠΎ ΡΠΈΡΡΠ΅ΠΌΠ° ΡΠΈΠΏΠΎΠ² Π² Haskell Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠΎΡΠ½Π΅Π΅, ΠΈ ΡΡΠΎ Haskell ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠΈΡΡ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΎΠ»ΡΡΠ΅ ΡΠΈΠΏΠΎΠ² Π±Π°Π³ΠΎΠ² ΠΏΡΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ.
Go ΠΈ Haskell Π½Π°ΡΡΠΎΠ»ΡΠΊΠΎ ΡΠ°Π·Π½ΡΠ΅ ΡΠ·ΡΠΊΠΈ, ΡΡΠΎ ΠΈΡ Π³ΡΡΠΏΠΏΠΈΡΠΎΠ²ΠΊΠ° Π² ΠΎΠ΄ΠΈΠ½ ΠΊΠ»Π°ΡΡ «ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠ·ΡΠΊΠΎΠ²» ΠΌΠΎΠΆΠ΅Ρ Π²Π²ΠΎΠ΄ΠΈΡΡ Π² Π·Π°Π±Π»ΡΠΆΠ΄Π΅Π½ΠΈΠ΅, Π½Π΅ ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ, ΡΡΠΎ ΡΠ΅ΡΠΌΠΈΠ½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ. ΠΡΠ»ΠΈ ΡΡΠ°Π²Π½ΠΈΠ²Π°ΡΡ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ, ΡΠΎ Go Π±Π»ΠΈΠΆΠ΅ ΠΊ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠ·ΡΠΊΠ°ΠΌ, Π½Π΅ΠΆΠ΅Π»ΠΈ ΠΊ Haskell’Ρ.
Π‘ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠ·ΡΠΊΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½Π΅Π΅, ΡΠ΅ΠΌ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠ·ΡΠΊΠΈ. (Python Π² ΡΠ΅Π»ΠΎΠΌ ΡΡΠΈΡΠ°Π΅ΡΡΡ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½Π΅Π΅, ΡΠ΅ΠΌ Π‘ΠΈ). ΠΠΎΠ³Π΄Π° Ρ ΠΎΡΠ΅ΡΡΡ Π΄Π΅Π»Π°ΡΡ ΠΎΠ±ΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΈΠ»ΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠ·ΡΠΊΠ°Ρ ΠΊΠ°ΠΊ Π³ΡΡΠΏΠΏΠ°Ρ , ΡΠΎ Π½Π΅ Π·Π°Π±ΡΠ²Π°ΠΉΡΠ΅ ΠΎΠ± ΠΎΠ³ΡΠΎΠΌΠ½ΠΎΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π΅ ΠΎΡΠ»ΠΈΡΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ·ΡΠΊΠ°ΠΌΠΈ.
ΠΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΎΡΠ»ΠΈΡΠΈΡ Π² Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΡ ΡΠΈΡΡΠ΅ΠΌ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠΈ
Π Π±ΠΎΠ»Π΅Π΅ ΠΌΠΎΡΠ½ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ Π½Π° Π±ΠΎΠ»Π΅Π΅ ΠΌΠ΅Π»ΠΊΠΈΡ ΡΡΠΎΠ²Π½ΡΡ . ΠΠΎΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ², Π½ΠΎ Π½Π΅ Π·Π°ΡΠΈΠΊΠ»ΠΈΠ²Π°ΠΉΡΠ΅ΡΡ Π½Π° Π½ΠΈΡ , Π΅ΡΠ»ΠΈ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Π½Π΅ΠΏΠΎΠ½ΡΡΠ½ΡΠΉ.
Π Go ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ «ΡΡΠ½ΠΊΡΠΈΡ add ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π΄Π²Π° integer’Π° ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ integer»:
Π Haskell ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ «ΡΡΠ½ΠΊΡΠΈΡ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π»ΡΠ±ΠΎΠΉ ΡΠΈΡΠ»Π΅Π½Π½ΡΠΉ ΡΠΈΠΏ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΈΡΠ»ΠΎ ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΡΠΈΠΏΠ°»:
Π Idris ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ «ΡΡΠ½ΠΊΡΠΈΡ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π΄Π²Π° integer’Π° ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ integer, Π½ΠΎ ΠΏΠ΅ΡΠ²ΡΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΌΠ΅Π½ΡΡΠ΅ Π²ΡΠΎΡΠΎΠ³ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°»:
Π Haskell Π½Π΅Ρ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ° ΡΠ°ΠΊΠΎΠΌΡ ΡΠΈΠΏΡ ΠΊΠ°ΠΊ Π² ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Ρ Idris Π²ΡΡΠ΅, Π° Π² Go Π½Π΅Ρ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ° Π½ΠΈ ΠΏΡΠΈΠΌΠ΅ΡΡ Ρ Haskell, Π½ΠΈ ΠΏΡΠΈΠΌΠ΅ΡΡ Ρ Idris. Π ΠΈΡΠΎΠ³Π΅, Idris ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠΈΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π±Π°Π³ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΡΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠΈΡΡ Haskell, Π° Haskell ΡΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠΈΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π±Π°Π³ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ Π·Π°ΠΌΠ΅ΡΠΈΡ Go. Π ΠΎΠ±ΠΎΠΈΡ ΡΠ»ΡΡΠ°ΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ·ΡΠΊ Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡΠΌ.
Π‘ΠΈΡΡΠ΅ΠΌΡ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠ·ΡΠΊΠΎΠ²
ΠΠΎΡ Π³ΡΡΠ±ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ ΡΠΈΡΡΠ΅ΠΌ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠ·ΡΠΊΠΎΠ² Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅ Π²ΠΎΠ·ΡΠ°ΡΡΠ°Π½ΠΈΡ ΠΌΠΎΡΠ½ΠΎΡΡΠΈ. ΠΡΠΎΡ ΡΠΏΠΈΡΠΎΠΊ Π΄Π°ΡΡ Π²Π°ΠΌ ΠΎΠ±ΡΠ΅Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎ ΠΌΠΎΡΠ½ΠΎΡΡΠΈ ΡΠΈΡΡΠ΅ΠΌ, Π½Π΅ Π½ΡΠΆΠ½ΠΎ ΠΎΡΠ½ΠΎΡΠΈΡΡΡΡ ΠΊ Π½Π΅ΠΌΡ ΠΊΠ°ΠΊ ΠΊ Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎΠΉ ΠΏΡΠ°Π²Π΄Π΅. Π‘ΠΎΠ±ΡΠ°Π½Π½ΡΠ΅ Π² ΠΎΠ΄Π½Ρ Π³ΡΡΠΏΠΏΡ ΡΠ·ΡΠΊΠΈ ΠΌΠΎΠ³ΡΡ ΡΠΈΠ»ΡΠ½ΠΎ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ Π΄ΡΡΠ³ ΠΎΡ Π΄ΡΡΠ³Π°. Π ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠΈ Π΅ΡΡΡ ΡΠ²ΠΎΠΈ Π·Π°ΠΌΠΎΡΠΎΡΠΊΠΈ, ΠΈ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΈΠ· Π½ΠΈΡ ΠΎΡΠ΅Π½Ρ ΡΠ»ΠΎΠΆΠ½Ρ.
ΠΠ°Π±Π»ΡΠ΄Π°Π΅ΡΡΡ ΡΠ²Π½ΠΎΠ΅ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ Π² ΡΡΠΎΡΠΎΠ½Ρ Π±ΠΎΠ»Π΅Π΅ ΠΌΠΎΡΠ½ΡΡ ΡΠΈΡΡΠ΅ΠΌ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠΈ, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π΅ΡΠ»ΠΈ ΡΡΠ΄ΠΈΡΡ ΠΏΠΎ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎΡΡΠΈ ΡΠ·ΡΠΊΠΎΠ², Π° Π½Π΅ ΠΏΠΎ ΠΏΡΠΎΡΡΠΎΠΌΡ ΡΠ°ΠΊΡΡ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΡ ΡΠ·ΡΠΊΠΎΠ². ΠΠ·Π²Π΅ΡΡΠ½ΠΎΠ΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ β ΡΡΠΎ Go, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠ±ΡΡΡΠ½ΡΠ΅Ρ, ΠΏΠΎΡΠ΅ΠΌΡ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΡΡΠΎΡΠΎΠ½Π½ΠΈΠΊΠΈ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠ·ΡΠΊΠΎΠ² ΡΡΠΈΡΠ°ΡΡ Π΅Π³ΠΎ ΡΠ°Π³ΠΎΠΌ Π½Π°Π·Π°Π΄.
ΠΡΡΠΏΠΏΠ° Π΄Π²Π° (Java ΠΈ C#) β ΡΡΠΎ ΠΌΡΠΉΠ½ΡΡΡΠΈΠΌΠΎΠ²ΡΠ΅ ΡΠ·ΡΠΊΠΈ, Π·ΡΠ΅Π»ΡΠ΅ ΠΈ ΡΠΈΡΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅.
ΠΡΡΠΏΠΏΠ° ΡΡΠΈ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π½Π° ΠΏΠΎΡΠΎΠ³Π΅ Π²Ρ ΠΎΠ΄Π° Π² ΠΌΡΠΉΠ½ΡΡΡΠΈΠΌ, Ρ Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΎΠΉ ΡΠΎ ΡΡΠΎΡΠΎΠ½Ρ Mozilla (Rust) ΠΈ Apple (Swift).
ΠΡΡΠΏΠΏΠ° ΡΠ΅ΡΡΡΠ΅ (Idris and Agda) Π΄Π°Π»Π΅ΠΊΠΈ ΠΎΡ ΠΌΡΠΉΠ½ΡΡΡΠΈΠΌΠ°, Π½ΠΎ ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡΡΡ ΡΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ. Π―Π·ΡΠΊΠΈ Π³ΡΡΠΏΠΏΡ ΡΡΠΈ Π±ΡΠ»ΠΈ Π΄Π°Π»Π΅ΠΊΠΎ ΠΎΡ ΠΌΡΠΉΠ½ΡΡΡΠΈΠΌΠ° Π΅ΡΠ΅ Π΄Π΅ΡΡΡΡ Π»Π΅Ρ Π½Π°Π·Π°Π΄.