Π§Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚ строго Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ язык

Випизация языков программирования: разбираСмся Π² основах

Випизация языков программирования β€Œβ€”β€Œ β€ŒΡΡ‚ΠΎβ€Œ β€ŒΡ‚ΠΎ,β€Œ β€ŒΠΊΠ°ΠΊβ€Œ β€ŒΡ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅β€Œ β€ŒΡΠ·Ρ‹ΠΊΠΈβ€Œ β€ŒΡ€Π°ΡΠΏΠΎΠ·Π½Π°ΡŽΡ‚β€Œ β€ŒΡ‚ΠΈΠΏΡ‹β€Œ β€ŒΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ….β€Œ β€ŒΠžΠ½Π°β€Œ β€ŒΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚,β€Œ β€ŒΠΊΠ°ΠΊβ€Œ β€ŒΠ²Ρ‹β€Œ β€ŒΠ±ΡƒΠ΄Π΅Ρ‚Π΅β€Œ β€ŒΡ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒβ€Œ β€ŒΡβ€Œ β€ŒΡ‚ΠΈΠΏΠ°ΠΌΠΈβ€Œ β€ŒΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…:β€Œ β€ŒΠ½ΡƒΠΆΠ½ΠΎβ€Œ β€ŒΠ»ΠΈβ€Œ β€ŒΠΈΡ…β€Œ β€ŒΠ·Π°Π΄Π°Π²Π°Ρ‚ΡŒβ€Œ β€ŒΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ,β€Œ β€ŒΠΌΠΎΠΆΠ½ΠΎβ€Œ β€ŒΠ»ΠΈβ€Œ β€ŒΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒβ€Œ β€ŒΠΈβ€Œ β€ŒΡ‚Π°ΠΊβ€Œ β€ŒΠ΄Π°Π»Π΅Π΅.β€Œ β€Œ

Π’ΠΈΠ΄Ρ‹β€Œ β€ŒΡ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈβ€Œ

Π―Π·Ρ‹ΠΊΠΈβ€Œ β€ŒΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡβ€Œ β€ŒΠ±Ρ‹Π²Π°ΡŽΡ‚β€Œ β€ŒΡ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈβ€Œ β€ŒΠΈβ€Œ β€ŒΠ½Π΅Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈβ€Œ β€Œ(бСстиповыми).β€Œ β€Œ

Π‘Π΅ΡΡ‚ΠΈΠΏΠΎΠ²Π°Ρβ€Œ β€ŒΡ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΡβ€Œ β€ŒΠ²β€Œ β€ŒΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌβ€Œ β€ŒΠΏΡ€ΠΈΡΡƒΡ‰Π°β€Œ β€ŒΡΡ‚Π°Ρ€Ρ‹ΠΌβ€Œ β€ŒΠΈβ€Œ β€ŒΠ½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹ΠΌβ€Œ β€ŒΡΠ·Ρ‹ΠΊΠ°ΠΌβ€Œ β€ŒΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ,β€Œ β€ŒΠ½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€β€Œ β€Œβ€ŒForth.β€Œ β€Œβ€ŒΠ’ΡΠ΅β€Œ β€ŒΠ΄Π°Π½Π½Ρ‹Π΅β€Œ β€ŒΠ²β€Œ β€ŒΡ‚Π°ΠΊΠΈΡ…β€Œ β€ŒΡΠ·Ρ‹ΠΊΠ°Ρ…β€Œ β€ŒΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ΡΡβ€Œ β€ŒΡ†Π΅ΠΏΠΎΡ‡ΠΊΠ°ΠΌΠΈβ€Œ β€ŒΠ±ΠΈΡ‚β€Œ β€ŒΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠΉβ€Œ β€ŒΠ΄Π»ΠΈΠ½Ρ‹β€Œ β€ŒΠΈ,β€Œ β€ŒΠΊΠ°ΠΊβ€Œ β€ŒΡΠ»Π΅Π΄ΡƒΠ΅Ρ‚β€Œ β€ŒΠΈΠ·β€Œ β€ŒΠ½Π°Π·Π²Π°Π½ΠΈΡ,β€Œ β€ŒΠ½Π΅β€Œ β€ŒΠ΄Π΅Π»ΡΡ‚ΡΡβ€Œ β€ŒΠ½Π°β€Œ β€ŒΡ‚ΠΈΠΏΡ‹.β€Œ β€ŒΠ Π°Π±ΠΎΡ‚Π°β€Œ β€ŒΡβ€Œ β€ŒΠ½ΠΈΠΌΠΈβ€Œ β€ŒΡ‚Ρ€ΡƒΠ΄Π½Π΅Π΅,β€Œ β€ŒΠΈβ€Œ β€ŒΠΏΡ€ΠΈβ€Œ β€ŒΡ‡Ρ‚Π΅Π½ΠΈΠΈβ€Œ β€ŒΠΊΠΎΠ΄Π°β€Œ β€ŒΠ½Π΅β€Œ β€ŒΠ²ΡΠ΅Π³Π΄Π°β€Œ β€ŒΡΡΠ½ΠΎ,β€Œ β€ŒΠΎβ€Œ β€ŒΠΊΠ°ΠΊΠΎΠΌβ€Œ β€ŒΡ‚ΠΈΠΏΠ΅β€Œ β€ŒΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉβ€Œ β€ŒΠΈΠ΄Π΅Ρ‚β€Œ β€ŒΡ€Π΅Ρ‡ΡŒ.β€Œ β€ŒΠ­Ρ‚ΠΎβ€Œ β€ŒΠΌΠΎΠΆΠ½ΠΎβ€Œ β€ŒΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ,β€Œ β€ŒΠ½Π°ΠΏΠΈΡΠ°Π²β€Œ β€ŒΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈβ€Œ β€ŒΠΊβ€Œ β€ŒΠΊΠΎΠ΄Ρƒ.β€Œ

ΠŸΡ€ΠΈβ€Œ β€ŒΡΡ‚ΠΎΠΌβ€Œ β€ŒΡƒβ€Œ β€ŒΠ½Π΅Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ…β€Œ β€ŒΡΠ·Ρ‹ΠΊΠΎΠ²β€Œ β€ŒΠ½Π΅ΠΌΠ°Π»ΠΎβ€Œ β€ŒΠΏΠ»ΡŽΡΠΎΠ².β€Œ β€ŒΠ’β€Œ β€ŒΠ½ΠΈΡ…β€Œ β€ŒΠΌΠΎΠΆΠ½ΠΎβ€Œ β€ŒΡΠΎΠ²Π΅Ρ€ΡˆΠ°Ρ‚ΡŒβ€Œ β€ŒΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈβ€Œ β€ŒΡβ€Œ β€ŒΠ»ΡŽΠ±Ρ‹ΠΌΠΈβ€Œ β€ŒΠ΄Π°Π½Π½Ρ‹ΠΌΠΈ,β€Œ β€ŒΠΈβ€Œ β€ŒΠΊΠΎΠ΄β€Œ β€ŒΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ΡΡβ€Œ β€ŒΠ±ΠΎΠ»Π΅Π΅β€Œ β€ŒΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌ.β€Œ β€Œ

ΠŸΠ΅Ρ€Π΅ΠΉΠ΄Ρ‘ΠΌβ€Œ β€ŒΠΊβ€Œ β€ŒΡ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ языкам.β€Œ β€Œ

Π‘Ρ‚Π°Ρ‚ΠΈΡ‡Π΅ΡΠΊΠ°Ρβ€Œ β€ŒΠΈβ€Œ β€ŒΠ΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΠ°Ρβ€Œ β€ŒΡ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΡβ€Œ β€Œ

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒβ€Œ β€ŒΡΠ·Ρ‹ΠΊΠΎΠ²β€Œ β€ŒΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡβ€Œ β€ŒΡΠΎβ€Œ β€ŒΡΡ‚Π°Ρ‚ΠΈΡ‡Π΅ΡΠΊΠΎΠΉβ€Œ β€ŒΡ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉβ€Œ β€ŒΠ²β€Œ β€ŒΡ‚ΠΎΠΌ,β€Œ β€ŒΡ‡Ρ‚ΠΎβ€Œ β€ŒΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°β€Œ Ρ‚ΠΈΠΏΠΎΠ²β€Œ β€ŒΠ½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ΡΡβ€Œ β€ŒΠ½Π°β€Œ β€ŒΡΡ‚Π°Π΄ΠΈΠΈβ€Œ β€ŒΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΠΈ.β€Œ β€ŒΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€Ρ‹β€Œ β€ŒΠΈΡ‰ΡƒΡ‚β€Œ β€ŒΠΎΡˆΠΈΠ±ΠΊΠΈβ€Œ β€ŒΠ΅Ρ‰Ρ‘β€Œ β€ŒΠ΄ΠΎβ€Œ β€ŒΠ·Π°ΠΏΡƒΡΠΊΠ°β€Œ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹,β€Œ β€ŒΠΈβ€Œ β€ŒΠ²Π°ΠΌβ€Œ β€ŒΠ½Π΅β€Œ β€ŒΠ½ΡƒΠΆΠ½ΠΎβ€Œ β€ŒΡ€Π°Π·β€Œ β€ŒΠ·Π°β€Œ β€ŒΡ€Π°Π·ΠΎΠΌβ€Œ β€ŒΠ·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒβ€Œ β€ŒΠ΅Ρ‘,β€Œ β€ŒΡ‡Ρ‚ΠΎΠ±Ρ‹β€Œ Π²Ρ‹ΡΡΠ½ΠΈΡ‚ΡŒ,β€Œ β€ŒΡ‡Ρ‚ΠΎβ€Œ β€ŒΠΏΠΎΡˆΠ»ΠΎβ€Œ β€ŒΠ½Π΅β€Œ β€ŒΡ‚Π°ΠΊ.β€Œ β€ŒΠ‘Π»Π°Π³ΠΎΠ΄Π°Ρ€Ρβ€Œ β€ŒΡΡ‚ΠΎΠΌΡƒβ€Œ β€ŒΡΡ‚Π°Ρ‚ΠΈΡ‡Π΅ΡΠΊΠΈβ€Œ β€ŒΡ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ языки программирования β€ŒΠ·Π°Ρ‡Π°ΡΡ‚ΡƒΡŽβ€Œ β€ŒΠ±Ρ‹ΡΡ‚Ρ€Π΅Π΅.β€Œ β€ŒΠšΡ€ΠΎΠΌΠ΅β€Œ β€ŒΡ‚ΠΎΠ³ΠΎ,β€Œ β€ŒΡ‚ΠΈΠΏβ€Œ β€ŒΠ΄Π»Ρβ€Œ β€ŒΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉβ€Œ β€ŒΠΌΠΎΠΆΠ½ΠΎβ€Œ β€ŒΠ½Π°Π·Π½Π°Ρ‡ΠΈΡ‚ΡŒβ€Œ β€ŒΡ‚ΠΎΠ»ΡŒΠΊΠΎβ€Œ β€ŒΠΎΠ΄ΠΈΠ½β€Œ β€ŒΡ€Π°Π·.β€Œ β€ŒΠΠ°ΠΏΡ€ΠΈΠΌΠ΅Ρ€β€Œ β€Œβ€ŒΠ²β€Œ β€ŒJavaβ€Œ β€ŒΡ‚Π°ΠΊΠ°Ρβ€Œ β€ŒΠ·Π°ΠΏΠΈΡΡŒβ€Œ β€ŒΠ²Ρ‹Π·ΠΎΠ²Π΅Ρ‚β€Œ β€ŒΠΎΡˆΠΈΠ±ΠΊΡƒβ€Œ β€ŒΠ½Π°β€Œ β€ŒΡΡ‚Π°ΠΏΠ΅β€Œ β€ŒΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΠΈ:β€Œ β€Œ

Π’β€Œ β€ŒΡΠ²ΠΎΡŽβ€Œ β€ŒΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ,β€Œ β€ŒΡΠ·Ρ‹ΠΊΠΈβ€Œ β€ŒΡβ€Œ β€ŒΠ΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΠΎΠΉβ€Œ β€ŒΡ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉβ€Œ β€ŒΠΈΡ‰ΡƒΡ‚β€Œ β€ŒΠΎΡˆΠΈΠ±ΠΊΠΈβ€Œ β€ŒΠ½Π°β€Œ β€ŒΡΡ‚Π°Π΄ΠΈΠΈβ€Œ β€ŒΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ.β€Œ β€ŒΠ’β€Œ β€ŒΠ½ΠΈΡ…β€Œ β€ŒΠΌΠΎΠΆΠ½ΠΎβ€Œ β€ŒΠ·Π°Π΄Π°Ρ‚ΡŒβ€Œ β€ŒΡ€Π°Π·Π½Ρ‹Π΅β€Œ β€ŒΡ‚ΠΈΠΏΡ‹β€Œ β€ŒΠ΄Π»Ρβ€Œ β€ŒΠΎΠ΄Π½ΠΎΠΉβ€Œ β€ŒΠΈβ€Œ β€ŒΡ‚ΠΎΠΉβ€Œ β€ŒΠΆΠ΅β€Œ β€ŒΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ,β€Œ β€ŒΠΈβ€Œ β€ŒΠΎΠ½ΠΈβ€Œ β€ŒΠ±ΠΎΠ»Π΅Π΅β€Œ β€ŒΠ³ΠΈΠ±ΠΊΠΈΠ΅.β€Œ β€ŒΠΠ°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π²β€Œ β€ŒPythonβ€Œ β€ŒΠ²ΠΎΠ·ΠΌΠΎΠΆΠ½Π°β€Œ β€ŒΡ‚Π°ΠΊΠ°Ρβ€Œ β€ŒΠ·Π°ΠΏΠΈΡΡŒ,β€Œ β€ŒΠΈβ€Œ β€ŒΠΎΡˆΠΈΠ±ΠΊΠΈβ€Œ β€ŒΠ½Π΅β€Œ β€ŒΠ±ΡƒΠ΄Π΅Ρ‚:β€Œ β€Œ

Π‘ΠΈΠ»ΡŒΠ½Π°Ρβ€Œ β€ŒΠΈβ€Œ β€ŒΡΠ»Π°Π±Π°Ρβ€Œ β€ŒΡ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΡβ€Œ β€Œ

Π’β€Œ β€ŒΡΠ»Π°Π±ΠΎβ€Œ β€ŒΡ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ…β€Œ β€ŒΡΠ·Ρ‹ΠΊΠ°Ρ…β€Œ β€ŒΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡβ€Œ β€ŒΠΌΠΎΠΆΠ½ΠΎβ€Œ β€ŒΡΠΌΠ΅ΡˆΠΈΠ²Π°Ρ‚ΡŒβ€Œ β€ŒΡ€Π°Π·Π½Ρ‹Π΅β€Œ β€ŒΡ‚ΠΈΠΏΡ‹β€Œ β€ŒΠ΄Π°Π½Π½Ρ‹Ρ…. Π’Π°ΠΊβ€Œ β€ŒΠΊΠΎΠ΄β€Œ β€ŒΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ΡΡβ€Œ β€ŒΠΊΠΎΡ€ΠΎΡ‡Π΅β€Œ β€Œβ€”β€Œ β€ŒΡΠ·Ρ‹ΠΊβ€Œ β€ŒΒ«ΡΡ‚Π°Ρ€Π°Π΅Ρ‚ΡΡβ€ŒΒ»β€Œ β€ŒΡΠ°ΠΌβ€Œ β€ŒΠ²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒβ€Œ β€ŒΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈβ€Œ β€ŒΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΡβ€Œ β€ŒΡβ€Œ β€ŒΡ€Π°Π·Π½Ρ‹ΠΌΠΈβ€Œ β€ŒΡ‚ΠΈΠΏΠ°ΠΌΠΈ.β€Œ β€ŒΠ’ΠΏΡ€ΠΎΡ‡Π΅ΠΌ,β€Œ β€ŒΠ²β€Œ β€ŒΡ‚Π°ΠΊΠΎΠΌβ€Œ β€ŒΡΠ»ΡƒΡ‡Π°Π΅β€Œ β€ŒΠ½Π΅β€Œ β€ŒΠ²ΡΠ΅Π³Π΄Π°β€Œ β€ŒΡΡΠ½ΠΎ,β€Œ β€ŒΠΊΠ°ΠΊβ€Œ β€ŒΠΏΠΎΠ²Π΅Π΄Ρ‘Ρ‚β€Œ β€ŒΡΠ΅Π±Ρβ€Œ β€ŒΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°.β€Œ β€ŒΠΠ°ΠΏΡ€ΠΈΠΌΠ΅Ρ€,β€Œ β€ŒΠ²β€Œ β€ŒJavaScriptβ€Œ β€ŒΠ²ΠΎΠ·ΠΌΠΎΠΆΠ½Π°β€Œ β€ŒΡ‚Π°ΠΊΠ°Ρβ€Œ β€ŒΠ·Π°ΠΏΠΈΡΡŒ:β€Œ β€Œ

ΠŸΡ€ΠΈβ€Œ β€ŒΡΠΈΠ»ΡŒΠ½ΠΎΠΉβ€Œ β€ŒΠΈΠ»ΠΈβ€Œ β€ŒΡΡ‚Ρ€ΠΎΠ³ΠΎΠΉβ€Œ β€ŒΡ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ,β€Œ β€ŒΠΊΠ°ΠΊβ€Œ β€ŒΠ²β€Œ β€ŒPython,β€Œ β€ŒΡΠ·Ρ‹ΠΊβ€Œ β€ŒΠ½Π΅β€Œ β€ŒΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚β€Œ β€ŒΡΠΌΠ΅ΡˆΠΈΠ²Π°Ρ‚ΡŒβ€Œ β€ŒΡ€Π°Π·Π½Ρ‹Π΅β€Œ β€ŒΡ‚ΠΈΠΏΡ‹β€Œ β€Œβ€”β€Œ β€ŒΡ‚ΠΎβ€Œ β€ŒΠ΅ΡΡ‚ΡŒ,β€Œ β€ŒΠ΅ΡΠ»ΠΈβ€Œ β€ŒΠ²Ρ‹β€Œ β€ŒΠΎΠ±ΠΎΠ·Π½Π°Ρ‡ΠΈΠ»ΠΈβ€Œ β€ŒΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽβ€Œ β€ŒΠΊΠ°ΠΊβ€Œ β€ŒΡ‡ΠΈΡΠ»ΠΎ,β€Œ β€ŒΡ‚ΠΎβ€Œ β€ŒΠ΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒβ€Œ β€ŒΠΊβ€Œ β€ŒΠ½Π΅ΠΉβ€Œ β€ŒΡΡ‚Ρ€ΠΎΠΊΡƒβ€Œ β€ŒΡƒΠΆΠ΅β€Œ β€ŒΠ½Π΅β€Œ β€ŒΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡΡ:β€Œ β€Œ β€Œ

Π―Π·Ρ‹ΠΊΠΈβ€Œ β€ŒΡβ€Œ β€ŒΡΠΈΠ»ΡŒΠ½ΠΎΠΉβ€Œ β€ŒΡ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉβ€Œ β€ŒΠ½Π°Π΄Ρ‘ΠΆΠ½Π΅Π΅.β€Œ β€ŒΠ”Π° ΠΈβ€Œ β€ŒΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡΡ‚,β€Œ β€ŒΠΏΡ€ΠΎΠΏΠΈΡΡ‹Π²Π°Ρβ€Œ β€ŒΠ²ΡΠ΅β€Œ β€ŒΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΡβ€Œ β€ŒΠ²Ρ€ΡƒΡ‡Π½ΡƒΡŽ,β€Œ β€ŒΠ»ΡƒΡ‡ΡˆΠ΅β€Œ β€ŒΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚,β€Œ β€ŒΠΊΠ°ΠΊβ€Œ β€ŒΡ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚β€Œ β€ŒΠ΅Π³ΠΎβ€Œ β€ŒΠΊΠΎΠ΄.β€Œ β€Œ

Π―Π²Π½Π°Ρβ€Œ β€ŒΠΈβ€Œ β€ŒΠ½Π΅ΡΠ²Π½Π°Ρβ€Œ β€ŒΡ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΡβ€Œ β€Œ

Π’β€Œ β€ŒΡΠ·Ρ‹ΠΊΠ°Ρ…β€Œ β€ŒΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡβ€Œ β€ŒΡβ€Œ β€ŒΡΠ²Π½ΠΎΠΉβ€Œ β€ŒΡ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉβ€Œ β€ŒΡ‚ΠΈΠΏΡ‹β€Œ β€ŒΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…β€Œ β€ŒΠΈβ€Œ β€ŒΠ²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹Ρ…β€Œ β€ŒΠ·Π½Π°Ρ‡Π΅Π½ΠΈΠΉβ€Œ β€ŒΡ„ΡƒΠ½ΠΊΡ†ΠΈΠΉβ€Œ β€ŒΠ½ΡƒΠΆΠ½ΠΎβ€Œ β€ŒΠ·Π°Π΄Π°Π²Π°Ρ‚ΡŒ.β€Œ β€ŒΠ­Ρ‚ΠΎβ€Œ β€ŒΠ΄ΠΎΠ»ΡŒΡˆΠ΅,β€Œ β€ŒΠ½ΠΎβ€Œ β€ŒΡ‚Π°ΠΊβ€Œ β€ŒΠΏΡ€ΠΎΡ‰Π΅β€Œ β€ŒΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ,β€Œ β€ŒΡ‡Ρ‚ΠΎβ€Œ β€ŒΠ·Π½Π°Ρ‡Π°Ρ‚β€Œ β€ŒΠ²ΡΠ΅β€Œ β€ŒΠ΄Π°Π½Π½Ρ‹Π΅,β€Œ β€ŒΠ°β€Œ β€ŒΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡΡ‚Ρƒβ€Œ β€ŒΠ½Π΅β€Œ β€ŒΠΏΡ€ΠΈΠ΄Ρ‘Ρ‚ΡΡβ€Œ β€ŒΠ·Π°ΠΏΠΎΠΌΠΈΠ½Π°Ρ‚ΡŒβ€Œ β€ŒΠΈΠ»ΠΈβ€Œ β€ŒΠ·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒβ€Œ β€ŒΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎβ€Œ β€ŒΠΊΠ°ΠΆΠ΄ΠΎΠ΅β€Œ β€ŒΠ·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.β€Œ β€ŒΠ’β€Œ β€ŒΡΠ·Ρ‹ΠΊΠ΅β€Œ β€ŒΠ‘β€Œ β€ŒΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽβ€Œ β€ŒΠ½ΡƒΠΆΠ½ΠΎβ€Œ β€ŒΠ·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒβ€Œ β€ŒΡ‚Π°ΠΊ:β€Œ β€Œ

ΠŸΡ€ΠΈβ€Œ β€ŒΠ½Π΅ΡΠ²Π½ΠΎΠΉβ€Œ β€ŒΡ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈβ€Œ β€ŒΡ‚ΠΈΠΏβ€Œ β€ŒΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉβ€Œ β€ŒΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ΡΡβ€Œ β€ŒΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠΌβ€Œ β€ŒΠΈΠ»ΠΈβ€Œ β€ŒΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ΠΎΠΌ,β€Œ β€ŒΠΏΠΎΡΡ‚ΠΎΠΌΡƒβ€Œ β€ŒΠ·Π°ΠΏΠΈΡΠΈβ€Œ β€ŒΠ²β€Œ β€ŒΡ‚Π°ΠΊΠΈΡ…β€Œ β€ŒΡΠ·Ρ‹ΠΊΠ°Ρ…β€Œ β€ŒΠΊΠΎΡ€ΠΎΡ‡Π΅.β€Œ β€ŒΠ˜Π½ΠΎΠ³Π΄Π°β€Œ β€ŒΠΎΠ½ΠΈβ€Œ β€ŒΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚β€Œ β€ŒΠ²Ρ€ΡƒΡ‡Π½ΡƒΡŽβ€Œ β€ŒΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒβ€Œ β€ŒΡ‚ΠΈΠΏΡ‹β€Œ β€ŒΠ·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ,β€Œ β€ŒΠΊΠ°ΠΊβ€Œ β€ŒΠ²β€Œ β€ŒHaskellβ€Œ β€ŒΠΈΠ»ΠΈβ€Œ β€ŒPython.β€Œ β€ŒΠ’β€Œ β€ŒPythonβ€Œ β€ŒΠ²ΠΎΠ·ΠΌΠΎΠΆΠ½Π°β€Œ β€ŒΡ‚Π°ΠΊΠ°Ρβ€Œ β€ŒΠ·Π°ΠΏΠΈΡΡŒ,β€Œ β€ŒΠ²Π΅Π΄ΡŒβ€Œ β€ŒΡΠ·Ρ‹ΠΊβ€Œ β€ŒΡΠ°ΠΌβ€Œ β€ŒΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚,β€Œ β€ŒΡ‡Ρ‚ΠΎβ€Œ β€ŒΡΡ‚ΠΎβ€Œ β€ŒΡ†Π΅Π»ΠΎΠ΅β€Œ β€ŒΡ‡ΠΈΡΠ»ΠΎ:β€Œ β€Œ

Π’ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΡβ€Œ β€ŒΠ²β€Œ β€ŒΡ€Π°Π·Π½Ρ‹Ρ…β€Œ β€ŒΡΠ·Ρ‹ΠΊΠ°Ρ…β€Œ β€ŒΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡβ€Œ β€Œ

Π§Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚ строго Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ язык. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚ строго Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ язык. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚ строго Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ язык. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚ строго Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ язык. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚ строго Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ язык

Π Π°Π·Π½Ρ‹Π΅β€Œ β€ŒΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ β€ŒΠΌΠΎΠ³ΡƒΡ‚β€Œ β€ŒΠΏΠ΅Ρ€Π΅ΡΠ΅ΠΊΠ°Ρ‚ΡŒΡΡ.β€Œ β€ŒΠžΠ±Ρ‹Ρ‡Π½ΠΎβ€Œ β€ŒΡΠ·Ρ‹ΠΊΡƒβ€Œ β€ŒΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡβ€Œ β€ŒΠΏΡ€ΠΈΡΡƒΡ‰Π΅β€Œ β€ŒΠΎΠ΄Π½ΠΎβ€Œ β€ŒΠ·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅β€Œ β€ŒΠΈΠ·β€Œ β€ŒΠΊΠ°ΠΆΠ΄ΠΎΠΉβ€Œ β€ŒΠ³Ρ€ΡƒΠΏΠΏΡ‹:β€Œ β€ŒΠΎΠ½β€Œ β€ŒΠΌΠΎΠΆΠ΅Ρ‚β€Œ β€ŒΠ±Ρ‹Ρ‚ΡŒβ€Œ β€ŒΡΠΈΠ»ΡŒΠ½Ρ‹ΠΌβ€Œ β€ŒΠΈΠ»ΠΈβ€Œ β€ŒΡΠ»Π°Π±Ρ‹ΠΌ,β€Œ β€ŒΡΠ²Π½Ρ‹ΠΌβ€Œ β€ŒΠΈΠ»ΠΈβ€Œ β€ŒΠ½Π΅ΡΠ²Π½Ρ‹ΠΌ.β€Œ β€ŒΠΠΎβ€Œ β€ŒΠ΅ΡΡ‚ΡŒβ€Œ β€ŒΠ½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΎβ€Œ β€ŒΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ.β€Œ β€ŒΠ’Π°ΠΊ,β€Œ β€ŒPythonβ€Œ β€ŒΡβ€Œ β€ŒΠ°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΡΠΌΠΈβ€Œ β€ŒΠΌΠΎΠΆΠ΅Ρ‚β€Œ β€ŒΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒβ€Œ β€ŒΡΠ²Π½ΡƒΡŽβ€Œ β€ŒΡ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΡŽβ€Œ,β€Œ β€ŒΠ°β€Œ β€ŒΡΠ·Ρ‹ΠΊβ€Œ β€ŒD,β€Œ β€ŒΠ½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚,β€Œ β€Œβ€Œβ€”β€Œ β€ŒΠ½Π΅ΡΠ²Π½ΡƒΡŽ.β€Œ β€ŒΠ‘#β€Œ β€ŒΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚β€Œ β€ŒΠ΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΡƒΡŽβ€Œ β€ŒΡ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΡŽβ€Œ β€ŒΠ±Π»Π°Π³ΠΎΠ΄Π°Ρ€Ρβ€Œ β€ŒΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌβ€Œ β€ŒΡΠ»ΠΎΠ²Π°ΠΌβ€Œ β€Œβ€Œdynamicβ€Œ β€ŒΠΈβ€Œ β€Œvar,β€Œ β€ŒDelphiβ€Œ β€Œβ€”β€Œ β€ŒΠ±Π»Π°Π³ΠΎΠ΄Π°Ρ€Ρβ€Œ β€ŒΡ‚ΠΈΠΏΡƒβ€Œ β€ŒVariant,β€Œ β€ŒΠ°β€Œ β€ŒΠ‘++β€Œ β€Œβ€”β€Œ β€Œβ€ŒΡβ€Œ β€ŒΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽβ€Œ β€ŒΠ±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈβ€Œ β€ŒBoostβ€Œ β€ŒΠΈβ€Œ β€ŒΠΈΠΌΠ΅Π΅Ρ‚β€Œ β€ŒΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎβ€Œ β€ŒΡ‡Π΅Ρ€Ρ‚Ρ‹β€Œ β€ŒΡΠ·Ρ‹ΠΊΠ°β€Œ β€ŒΡβ€Œ β€ŒΡΠΈΠ»ΡŒΠ½ΠΎΠΉβ€Œ β€ŒΠΈβ€Œ β€Œ
ΡΠ»Π°Π±ΠΎΠΉβ€Œ β€ŒΡ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ.β€Œ

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

Випизация Π² языках

Π”Π°Π²Π°ΠΉΡ‚Π΅ Π½Π°Π²Π΅Π΄Π΅ΠΌ порядок Π² Π³ΠΎΠ»ΠΎΠ²Π΅

Π§Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚ строго Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ язык. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚ строго Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ язык. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚ строго Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ язык. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚ строго Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ язык. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚ строго Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ язык

АлСксандр ΠœΠ°ΠΉΠΎΡ€ΠΎΠ² β€” FullStack CTO

Aug 4, 2016 Β· 3 min read

Π―Π·Ρ‹ΠΊΠΈ программирования ΠΏΠΎ Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ дСлятся Π½Π° Π΄Π²Π° Π±ΠΎΠ»ΡŒΡˆΠΈΡ… лагСря β€” Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΈ Π½Π΅ Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅.

Π’ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ языки

К Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ языкам относятся

НС Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ языки

Π”Π°-Π΄Π°, ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΊ. JavaScript, ΠΊΠ°ΠΊ ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ языки β€” Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π½ΠΈ Π² ΠΊΠΎΠ΅ΠΌ случаС Π½Π΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π½Π΅ Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ. ОсобСнно Π½Π° собСсСдованиях!

Π’ свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ языки Ρ€Π°Π·Π΄Π΅Π»ΡΡŽΡ‚ΡΡ Π΅Ρ‰Π΅ Π½Π° нСсколько ΠΏΠ΅Ρ€Π΅ΡΠ΅ΠΊΠ°ΡŽΡ‰ΠΈΡ…ΡΡ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΉ:

Π―Π·Ρ‹ΠΊΠΈ со статичСской Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ

ΠŸΡ€ΠΈ статичСской Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ„ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π½Π° этапС компиляции. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ Π΅Ρ‰Π΅ Π΄ΠΎ запуска ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ исправляСт (Ρ‚ΠΎΡ‡Π½Π΅Π΅ ругаСтся Π½Π° Π½ΠΈΡ…, тыкая вас Π»ΠΈΡ†ΠΎΠΌ Π²) ваши ошибки ΠΏΡ€ΠΈ нСсоотвСтствии Ρ‚ΠΈΠΏΠΎΠ².

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚Π΅Π»ΠΈ: C/C++, C#, Java.

TypeScript β€” язык со статичСской Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ.

Π―Π·Ρ‹ΠΊΠΈ с динамичСской Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ

Π’ Π΄ΠΈ Π½ амичСской Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ всС Ρ‚ΠΈΠΏΡ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ ΡƒΠΆΠ΅ Π²ΠΎ врСмя выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. И Ссли Π²Ρ‹ допустили ΠΎΡˆΠΈΠ±ΠΊΡƒ, Ρ‚ΠΎ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅ ΠΎΠ± этом Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ (ΠΈΠ»ΠΈ Π½Π΅ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅, зависит ΠΎΡ‚ уровня рСагирования Π½Π° ошибки Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ вашСго компилятора/ΠΈΠ½Ρ‚Π΅ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π°). ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΏΡ€ΠΈ динамичСской Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½ΠΎ ΡƒΠ΄Π΅Π»ΡΡ‚ΡŒ особоС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°ΠΌ ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Ρƒ ошибок.

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚Π΅Π»ΠΈ: JavaScript, PHP, Python, Ruby…

Бтрогая типизация (сильная)

Π―Π·Ρ‹ΠΊΠΈ со строгой Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡΠΌΠ΅ΡˆΠΈΠ²Π°Ρ‚ΡŒ Π² выраТСниях Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ ΠΈ Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ автоматичСски нСявныС прСобразования Ρ‚ΠΈΠΏΠΎΠ². К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, нСльзя Π²Ρ‹Ρ‡Π΅ΡΡ‚ΡŒ ΠΈΠ· строки число ΠΈΠ»ΠΈ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ‚ΠΈΠΏ, Π½Π΅ ΡΠ²Π»ΡΡŽΡ‰Π΅Π³ΠΎΡΡ строкой.

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚Π΅Π»ΠΈ: Java, Python, Haskell, Lisp…

ΠšΡΡ‚Π°Ρ‚ΠΈ TypeScript добавляСт ΡΡ‚Ρ€ΠΎΠ³ΡƒΡŽ Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΈ Π½Π΅ позволяСт ΡΠΌΠ΅ΡˆΠΈΠ²Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏΡ‹:

НСстрогая типизация (слабая)

Π―Π·Ρ‹ΠΊΠΈ с нСстрогой Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ мноТСство нСявных ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΉ Ρ‚ΠΈΠΏΠΎΠ² автоматичСски. Они Π΄Π΅Π»Π°ΡŽΡ‚ это, Π΄Π°ΠΆΠ΅ Ссли ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΡ‚ΠΈ потСря точности ΠΈΠ»ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎ.

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚Π΅Π»ΠΈ: JavaScript (ΠΉΠ°Ρ…Ρƒ!), Lua, Visual Basic, PHP…

Явная типизация

Π’ явно Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… языках Ρ‚ΠΈΠΏ Π½ΠΎΠ²Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π½ΡƒΠΆΠ½ΠΎ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ явно.

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚Π΅Π»ΠΈ: C++, D, C#…

ΠšΡΡ‚Π°Ρ‚ΠΈ TypeScript β€” язык с явной ΠΈ нСявной строгой Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ. НСявная типизация Π΄ΠΎΡΡ‚Π°Π»Π°ΡΡŒ ΠΎΡ‚ JS (Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ TS β€” это JS). А Π²ΠΎΡ‚ Ρ„ΠΈΡ‡Π° ΠΈ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ TS β€” это Π΅Π³ΠΎ ΠΏΡ€ΠΈΡ€ΠΎΠ΄Π° явно Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ языка.

НСявная типизация

Π’ языках с нСявной Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ Π·Π°Π΄Π°Ρ‡Ρƒ ΠΏΠΎ ΡƒΠΊΠ°Π·Π°Π½ΠΈΡŽ Ρ‚ΠΈΠΏΠΎΠ² ΠΏΠ΅Ρ€Π΅ΠΊΠ»Π°Π΄Ρ‹Π²Π°ΡŽΡ‚ Π½Π° компилятор/ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€.

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚Π΅Π»ΠΈ: JavaScript (Π΅Π΅Π΅!), PHP, Lua, Python ( хотя с вСрсии 3 Π΅ΡΡ‚ΡŒ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ Ρ‚ΠΈΠΏΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΊΠ°ΠΊ Π±Ρ‹ Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ ΡΠ²Π½ΡƒΡŽ Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΡŽ)…

Π’ Ρ‚Π°ΠΊΠΈΡ… языках, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Ρƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ ΠΏΡ€ΠΈ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠΈ ΠΊ Ρ‚ΠΈΠΏΡƒ. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Π² PHP Π΅ΡΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ _toString(), Π° Π² JavaScript ΠΎΠ΄Π½ΠΎΠΈΠΌΠ΅Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄, Π½ΠΎ Π±Π΅Π· подчСркивания β€” toString(). Π­Ρ‚ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΊ строковому Ρ‚ΠΈΠΏΡƒ. Иногда Ρ‚Π°ΠΊΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ магичСскими (Π»ΡŽΠ±Ρ‹Π΅ нСявныС процСссы β€” это всСгда магия).

Π’Π°ΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ всС эти ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠΏΠ΅Ρ€Π΅ΡΠ΅ΠΊΠ°ΡŽΡ‚ΡΡ. Π˜ΡΡ…ΠΎΠ΄Ρ ΠΈΠ· этих ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΉ, ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ JavaScript ΠΈΠΌΠ΅Π΅Ρ‚ Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Π½Π΅ΡΠ²Π½ΡƒΡŽ Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΡŽ. ΠŸΡ€ΠΈ этом TypeScript ΠΈΠΌΠ΅Π΅Ρ‚ ΡΡ‚Π°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΡΡ‚Ρ€ΠΎΠ³ΡƒΡŽ ΡΠ²Π½ΡƒΡŽ Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΡŽ с возмоТностями нСявно Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ языка, Π½ΠΎ компилируСтся (транслируСтся/транспилируСтся) Π² Ρ€Π°Π½Ρ‚Π°ΠΉΠΌ ΠΊΠΎΠ΄ с нСявной динамичСской Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ.

Если Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΡ‰Π΅ ΠΏΡ€ΠΎ JavaScript, Ρ‚ΠΎ Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€ языка ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‚Π°ΠΊ: Π² любой нСпонятной ситуации ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈ всС ΠΊ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π°ΠΌ, прСимущСствСнно ΠΊ строкС (хотя это зависит ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΊΡ‚ΠΎ стоит Π² Π»Π΅Π²ΠΎΠΉ ΠΈ ΠΏΡ€Π°Π²ΠΎΠΉ частях выраТСния). На Π΄Π΅Π»Π΅ всС Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ слоТнСС, Π½ΠΎ Ссли Π²Ρ‹ΡƒΡ‡ΠΈΡ‚ΡŒ нСсколько простых ΠΏΡ€Π°Π²ΠΈΠ», Ρ‚ΠΎ всС становится ΠΎΡ‡Π΅Π½ΡŒ Π΄Π°ΠΆΠ΅ просто ΠΈ понятно (магия исчСзаСт). ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΡΡ‚ΠΈ ΠΏΡ€ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ² Π² JavaScript:

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

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ типизация Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ

ОбъясняСм, Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅, какая Π±Ρ‹Π²Π°Π΅Ρ‚ типизация ΠΈ Π½Π° Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° влияСт.

Π§Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚ строго Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ язык. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚ строго Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ язык. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚ строго Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ язык. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚ строго Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ язык. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚ строго Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ язык

Π§Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚ строго Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ язык. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚ строго Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ язык. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚ строго Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ язык. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚ строго Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ язык. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚ строго Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ язык

Если Π²Ρ‹ Ρ‡ΠΈΡ‚Π°Π»ΠΈ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΎ языках программирования, Ρ‚ΠΎ навСрняка Π½Π΅ Ρ€Π°Π· Π½Π°Ρ‚ΠΊΠ½ΡƒΠ»ΠΈΡΡŒ Π½Π° ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ. Π§Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅ ΠΈ Ρ‡Ρ‚ΠΎ ΠΎΠ± этом Π½ΡƒΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΡˆΡŒ язык программирования?

Випизация β€” это Ρ‚ΠΎ, ΠΊΠ°ΠΊ язык распознаёт Ρ‚ΠΈΠΏΡ‹ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. Випизация опрСдСляСт, Π½ΡƒΠΆΠ½ΠΎ Π»ΠΈ Π²Π°ΠΌ ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‚ΠΈΠΏ, ΠΈΠ»ΠΈ язык Β«ΠΏΠΎΠΉΠΌΡ‘Ρ‚Β» Π΅Π³ΠΎ сам, ΠΈ насколько свободно ΠΌΠΎΠΆΠ½ΠΎ с Ρ‚ΠΈΠΏΠ°ΠΌΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ: Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ ΠΈΡ… ΠΌΠ΅Π½ΡΡ‚ΡŒ.

Π§Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚ строго Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ язык. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚ строго Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ язык. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚ строго Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ язык. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚ строго Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ язык. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚ строго Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ язык

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

А Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ‚ΠΈΠΏΡ‹?

Π’ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, Π° Ρ‚ΠΈΠΏ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ описываСт, какая ΠΈΠΌΠ΅Π½Π½ΠΎ информация записана Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈ Ρ‡Ρ‚ΠΎ с Π½Π΅ΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ.

Π’ΠΈΠΏΡ‹ Π±Ρ‹Π²Π°ΡŽΡ‚ Ρ€Π°Π·Π½Ρ‹Π΅ ΠΈ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ Π² Ρ€Π°Π·Π½Ρ‹Ρ… языках.

Π—Π°Ρ‡Π΅ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ ΠΎ Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ?

ΠžΡ‚ Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ зависит, ΠΊΠ°ΠΊ Π²Π°ΠΌ работаСтся с языком, ΠΊΠ°ΠΊ ΠΎΠ½ сСбя Π²Π΅Π΄Ρ‘Ρ‚. Если Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊΠΈΠ΅ Π²Ρ‹Π³ΠΎΠ΄Ρ‹ ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ приносят Ρ€Π°Π·Π½Ρ‹Π΅ Π²ΠΈΠ΄Ρ‹ Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ, Π²Π°ΠΌ Π»Π΅Π³Ρ‡Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ язык.

Какая Π±Ρ‹Π²Π°Π΅Ρ‚ типизация?

Блабая и сильная

Если Ρƒ языка сильная типизация (Π΅Ρ‘ Π΅Ρ‰Ρ‘ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ строгой), это Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ строго слСдовали ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ‚ΠΈΠΏΠ°ΠΌΠΈ: Ссли Π²Ρ‹ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡ΠΈΠ»ΠΈ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΊΠ°ΠΊ Ρ†Π΅Π»ΠΎΠ΅ число, Π±ΡƒΠ΄ΡŒΡ‚Π΅ Π΄ΠΎΠ±Ρ€Ρ‹ с Π½ΠΈΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ с Ρ†Π΅Π»Ρ‹ΠΌ числом.

Π―Π·Ρ‹ΠΊΠΈ со слабой Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ Β«Π΄ΠΎΠ±Ρ€Π΅Π΅Β»: Ссли Π²Ρ‹ Ρ€Π΅ΡˆΠΈΡ‚Π΅ ΠΏΡ€ΠΈΠ±Π°Π²ΠΈΡ‚ΡŒ число ΠΊ тСксту, ΠΎΠ½ΠΈ Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Ρ€ΡƒΠ³Π°Ρ‚ΡŒΡΡ, Π° ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΡŽΡ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ проситС. ΠŸΡ€Π°Π²Π΄Π°, Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ совсСм Ρ‚Π°ΠΊΠΈΠΌ, ΠΊΠ°ΠΊ Π²Ρ‹ ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ.

Π’ JavaScript, языкС со слабой Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ, ΠΌΠΎΠΆΠ½ΠΎ ΡΠ»ΠΎΠΆΠΈΡ‚ΡŒ строку с числом, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π²ΠΎΡ‚ Ρ‚Π°ΠΊ:

И ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ строку Β«21Β».

А Π² Java Ρ‚Π°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ нСльзя: появится ошибка.

Π§Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚ строго Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ язык. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚ строго Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ язык. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚ строго Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ язык. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚ строго Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ язык. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚ строго Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ язык

БтатичСская ΠΈ динамичСская

БтатичСская типизация Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Ρ‚ΠΈΠΏΡ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ Π½Π° этапС компиляции. Π’ΠΎ Π΅ΡΡ‚ΡŒ ошибки Π² Ρ‚ΠΈΠΏΠ°Ρ… Π±ΡƒΠ΄ΡƒΡ‚ Π²ΠΈΠ΄Π½Ρ‹ Π΅Ρ‰Ρ‘ Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° запустится.

Π’ языках с динамичСской Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ Ρ‚ΠΈΠΏΡ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ Π²ΠΎ врСмя выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Π’Π°ΠΊ, Π² динамичСски Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ языкС Ρƒ ΠΎΠ΄Π½ΠΎΠΉ ΠΈ Ρ‚ΠΎΠΉ ΠΆΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π² Ρ€Π°Π·Π½Ρ‹Ρ… частях ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π° Π² статичСски Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ, Ссли Π²Ρ‹ Π·Π°Π΄Π°Π»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ‚ΠΈΠΏ string, Ρƒ Π½Π΅Ρ‘ Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΈΠΏ string.

НапримСр, Π² Python (динамичСская типизация) ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π²ΠΎΡ‚ Ρ‚Π°ΠΊ:

И язык Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΎΠ·Ρ€Π°ΠΆΠ°Ρ‚ΡŒ. Π’ Java (статичСская типизация) Ρ‚Π°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ нСльзя.

Явная и нСявная

Π•Ρ‰Ρ‘ Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΡŽ дСлят Π½Π° ΡΠ²Π½ΡƒΡŽ ΠΈ Π½Π΅ΡΠ²Π½ΡƒΡŽ. Когда типизация нСявная, Ρ‚ΠΈΠΏ опрСдСляСтся сам Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ записываСтС Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ.

НапримСр, Ссли Π² Python Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‚Π°ΠΊ:

Он ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π²Ρ‹ записали Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ b Ρ†Π΅Π»ΠΎΠ΅ число, ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ b ΠΊΠ°ΠΊ integer (int).

Явная типизация Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Ρ‚ΠΈΠΏ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ написан. НапримСр, Π² Π‘ пСрСмСнная записываСтся Π²ΠΎΡ‚ Ρ‚Π°ΠΊ:

Π‘Π°ΠΌΠΎ ΠΏΠΎ сСбС Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° ΡΠ²Π½ΡƒΡŽ ΠΈ Π½Π΅ΡΠ²Π½ΡƒΡŽ Π½Π΅ ΡΡ‚ΠΎΠ»ΡŒ Π²Π°ΠΆΠ½ΠΎ: Π² статичСски Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… языках ΠΎΠ½Π° ΠΏΠΎΡ‡Ρ‚ΠΈ всСгда явная, Π° Π² динамичСски β€” нСявная.

Как типизация влияСт Π½Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ с языком?

Π’Π°ΠΆΠ½ΠΎ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ типизация β€” Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ СдинствСнный Ρ„Π°ΠΊΡ‚ΠΎΡ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ влияСт Π½Π° ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ. НСльзя ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ всС языки со статичСской Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ быстрСС языков с динамичСской.

Π’ ΠΊΠ°ΠΊΠΈΡ… языках какая типизация

НапослСдок β€” Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… популярных языков:

Если Π²Ρ‹ ΠΏΠΎΠΊΠ° Π½ΠΎΠ²ΠΈΡ‡ΠΎΠΊ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ, Ρ‚ΠΎ ΠΏΡ€ΠΈΠ³Π»Π°ΡˆΠ°Π΅ΠΌ вас Π½Π° наш курс Β«Python-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΒ». ΠŸΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ 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) Π΄Π°Π»Π΅ΠΊΠΈ ΠΎΡ‚ мэйнстрима, Π½ΠΎ это ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒΡΡ со Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ. Π―Π·Ρ‹ΠΊΠΈ Π³Ρ€ΡƒΠΏΠΏΡ‹ Ρ‚Ρ€ΠΈ Π±Ρ‹Π»ΠΈ Π΄Π°Π»Π΅ΠΊΠΎ ΠΎΡ‚ мэйнстрима Π΅Ρ‰Π΅ Π΄Π΅ΡΡΡ‚ΡŒ Π»Π΅Ρ‚ Π½Π°Π·Π°Π΄.

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

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

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