Π Π°Π·Π½ΠΎΠ΅

Π―Π·Ρ‹ΠΊΠΈ Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня программирования список: Π―Π·Ρ‹ΠΊΠΈ программирования высокого ΠΈ Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня: ΠΊΠ°ΠΊΠΈΠ΅ ΠΈΠ· Π½ΠΈΡ… Π²Π°ΠΌ слСдуСт ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

Π―Π·Ρ‹ΠΊΠΈ программирования высокого ΠΈ Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня: ΠΊΠ°ΠΊΠΈΠ΅ ΠΈΠ· Π½ΠΈΡ… Π²Π°ΠΌ слСдуСт ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΡΡ‚ΠΈ




ноября 10, 2017




ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ΠΎΠ²: 46402


Когда Π²Ρ‹ ΠΏΡ‹Ρ‚Π°Π΅Ρ‚Π΅ΡΡŒ Π²Ρ‹ΡΡΠ½ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊΠΎΠΉ язык программирования Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ, Π²Ρ‹, вСроятно, ΡΡ‚ΠΎΠ»ΠΊΠ½Π΅Ρ‚Π΅ΡΡŒ с Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°ΠΌΠΈ «высокий ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒΒ» ΠΈ Β«Π½ΠΈΠ·ΠΊΠΈΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒΒ». Π›ΡŽΠ΄ΠΈ постоянно говорят ΠΎ языках программирования высокого ΠΈ Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня. Но Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚? И Ρ‡Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚ Π½Π°ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄? НачнСм с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΉ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ.


Π―Π·Ρ‹ΠΊΠΈ программирования «Высокого» ΠΈ «Низкого уровня»

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ я расскаТу ΠΎ языках «высокого» ΠΈ Β«Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня». Но особых ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠ΅Π² для опрСдСлСния этого Π½Π΅Ρ‚. ΠŸΡ€ΠΎΡΡ‚ΠΎ ΠΈΠΌΠ΅ΠΉΡ‚Π΅ Π² Π²ΠΈΠ΄Ρƒ, Ρ‡Ρ‚ΠΎ это Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΌ зависит ΠΎΡ‚ вашСй пСрспСктивы. Если Π²Ρ‹ программист C, Java ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ довольно высокоуровнСвым. Если Π²Ρ‹ ΠΏΡ€ΠΈΠ²Ρ‹ΠΊΠ»ΠΈ ΠΊ Ruby, Java ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ языком Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня.

Β 

ΠœΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΈ языки Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня

НСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, считаСтся Π»ΠΈ язык высокоуровнСвым ΠΈΠ»ΠΈ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹ΠΌ (ΠΈΠ»ΠΈ Π³Π΄Π΅-Ρ‚ΠΎ посСрСдинС), Ρ€Π΅Ρ‡ΡŒ ΠΈΠ΄Π΅Ρ‚ ΠΎΠ± абстракции. ΠœΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ абстракции — ΠΎΠ½ содСрТит ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ инструкции, ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€. И ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ ΠΈΠΌΠ΅ΡŽΡ‚ Π΄Π΅Π»ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с числами, ΠΎΠ½ΠΈ прСдставлСны Π² Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅ (хотя ΠΎΠ½ΠΈ ΠΈΠ½ΠΎΠ³Π΄Π° Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ Π² дСсятичной ΠΈΠ»ΠΈ ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½ΠΎΠΉ Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ).

Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ машинного ΠΊΠΎΠ΄Π°:

Π’ машинном ΠΊΠΎΠ΄Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Π½Ρ‹ Ρ‚ΠΎΡ‡Π½ΠΎ. НапримСр, Ссли Ρ‡Π°ΡΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½Π° ΠΈΠ· памяти, ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρƒ, Π³Π΄Π΅ Π² памяти Π΅Π³ΠΎ Π½Π°ΠΉΡ‚ΠΈ.

ΠŸΠΈΡΠ°Ρ‚ΡŒ нСпосрСдствСнно Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π½ΠΎ ΠΎΡ‡Π΅Π½ΡŒ слоТно.

НизкоуровнСвыС языки программирования Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ абстракции ΠΊ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΌ ΠΊΠΎΠ΄Π°ΠΌ. Π­Ρ‚Π° абстракция скрываСт ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ инструкции машинного ΠΊΠΎΠ΄Π° Π·Π° дСкларациями, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΠΎΠ»Π΅Π΅ Ρ‡ΠΈΡ‚Π°Π±Π΅Π»ΡŒΠ½Ρ‹ для Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ°. Π―Π·Ρ‹ΠΊΠΈ ассСмблСра ΡΠ²Π»ΡΡŽΡ‚ΡΡ языками самого Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня рядом с ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ.

Π’ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅ Β«10110000 01100001Β», Π½ΠΎ язык ассСмблСра ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ это ΠΊΠ°ΠΊ Β«MOV AL, 61hΒ». ΠœΠ΅ΠΆΠ΄Ρƒ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ написано Π½Π° языкС ассСмблСра, ΠΈ инструкциями, ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹ΠΌΠΈ машинС, ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ сущСствуСт ΠΏΠΎΡ‡Ρ‚ΠΈ ΠΎΠ΄Π½ΠΎ-ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎΠ΅ соотвСтствиС.

ΠŸΠ΅Ρ€Π΅ΠΉΠ΄Ρ Π½Π° Π±ΠΎΠ»Π΅Π΅ популярныС языки программирования, Π²Ρ‹ ΠΏΡ€ΠΈΠ΄Π΅Ρ‚Π΅ ΠΊ Ρ‡Π΅ΠΌΡƒ-Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅ C. Π₯отя этот язык Π½Π΅ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня, ΠΊΠ°ΠΊ язык ассСмблСра, всС Π΅Ρ‰Π΅ сущСствуСт сильноС соотвСтствиС ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ написано Π½Π° C ΠΈ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ. Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, написанных Π½Π° C, ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Ρ‹ нСбольшим количСством инструкций машинного ΠΊΠΎΠ΄Π°.

Β 

Π―Π·Ρ‹ΠΊΠΈ программирования высокого уровня

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

Π”Ρ€ΡƒΠ³ΠΈΠ΅, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Ruby ΠΈ Python, ΠΎΡ‡Π΅Π½ΡŒ абстрактны. Они Π΄Π°ΡŽΡ‚ Π²Π°ΠΌ мСньшС доступа ΠΊ функциям Π½ΠΈΠΆΠ½Π΅Π³ΠΎ уровня, Π½ΠΎ синтаксис Π³ΠΎΡ€Π°Π·Π΄ΠΎ Π»Π΅Π³Ρ‡Π΅ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΈ ΠΏΠΈΡΠ°Ρ‚ΡŒ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²Π΅Ρ‰ΠΈ Π² классах, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π°ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ характСристики, поэтому Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ ΠΈΡ… ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·.

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ Ρ†ΠΈΠΊΠ»Ρ‹ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π²Π°ΠΆΠ½Ρ‹ΠΌΠΈ частями языков высокого уровня. Π­Ρ‚ΠΈ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ Π²Π°ΠΌ Ρ€Π°ΡΡΠΊΠ°Π·Π°Ρ‚ΡŒ машинС ΠΎ мноТСствС Π²Π΅Ρ‰Π΅ΠΉ с ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΌΠΈ, ΠΊΡ€Π°Ρ‚ΠΊΠΈΠΌΠΈ заявлСниями.

Если язык ассСмблСра ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΠΎΡ‡Ρ‚ΠΈ Π΅Π΄ΠΈΠ½ΠΎΠΎΠ±Ρ€Π°Π·Π½ΠΎΠ΅ соотвСтствиС ΠΌΠ΅ΠΆΠ΄Ρƒ Π΅Π³ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ машинного ΠΊΠΎΠ΄Π°, язык Π±ΠΎΠ»Π΅Π΅ высокого уровня ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ дСсятки ΠΊΠΎΠΌΠ°Π½Π΄ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠ΄Π½ΠΎΠΉ строки ΠΊΠΎΠ΄Π°.

Π’Π°ΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ «языки программирования высокого уровня» ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π² сСбя всС, Ρ‡Ρ‚ΠΎ Π±ΠΎΠ»Π΅Π΅ абстрактно, Ρ‡Π΅ΠΌ язык ассСмблСра.

Β 

Какой язык ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ: Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ ΠΈΠ»ΠΈ высокого уровня?

Π­Ρ‚ΠΎ, бСзусловно, ΠΎΠ±Ρ‰ΠΈΠΉ вопрос срСди Π½ΠΎΠ²Ρ‹Ρ… ΠΈ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… программистов. КакиС языки программирования Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ: высокого ΠΈΠ»ΠΈ Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня? Как ΠΈ Π² случаС со ΠΌΠ½ΠΎΠ³ΠΈΠΌΠΈ вопросами программирования, вопрос ΠΎ языках программирования высокого ΠΈ Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня Π½Π΅ Ρ‚Π°ΠΊ прост.

Оба Ρ‚ΠΈΠΏΠ° языков ΠΈΠΌΠ΅ΡŽΡ‚ Π²Π°ΠΆΠ½Ρ‹Π΅ прСимущСства. НизкоуровнСвыС языки, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ нСбольшой ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠΌ, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΎΡ‡Π΅Π½ΡŒ быстро. И ΠΎΠ½ΠΈ Π΄Π°ΡŽΡ‚ программистам большой ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ Π½Π°Π΄ Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ΠΌ, ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ ΠΈ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ΠΌ Π΄Π°Π½Π½Ρ‹Ρ….

Однако языки высокого уровня ΠΈΠ½Ρ‚ΡƒΠΈΡ‚ΠΈΠ²Π½ΠΎ понятны ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ программистам ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ эффСктивнСС. Π­Ρ‚ΠΈ языки Ρ‚Π°ΠΊΠΆΠ΅ ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ΡΡ Β«Π±ΠΎΠ»Π΅Π΅ бСзопасными», Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π΅ΡΡ‚ΡŒ большС Π³Π°Ρ€Π°Π½Ρ‚ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€Π΅ΠΏΡΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΊΠΎΠ΄Π΅Ρ€Ρƒ ΠΈΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΠ»ΠΎΡ…ΠΎ написанныС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ нанСсти ΡƒΡ‰Π΅Ρ€Π±. Но ΠΎΠ½ΠΈ Π½Π΅ Π΄Π°ΡŽΡ‚ программистам Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΆΠ΅ контроля Π½Π°Π΄ процСссами Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня.

Помня ΠΎΠ± этом, Π²ΠΎΡ‚ список популярных языков ΠΏΠΎ шкалС ΠΎΡ‚ Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ Π΄ΠΎ высокого:

  • C
  • C++
  • Java
  • C#
  • Perl
  • Lisp
  • JavaScript
  • Python
  • Ruby
  • SQL

ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, это отчасти ΡΡƒΠ±ΡŠΠ΅ΠΊΡ‚ΠΈΠ²Π½ΠΎ. И Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΡ€ΠΎΡˆΠ΅Ρ‡Π½ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ доступных языков.

Но это Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π΄Π°Ρ‚ΡŒ Π²Π°ΠΌ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ прСдставлСниС ΠΎ Ρ‚ΠΎΠΌ, Π½Π° ΠΊΠ°ΠΊΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ находятся ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‰ΠΈΠ΅ вас языки.

Β 

Π§Ρ‚ΠΎ Π’Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π΄Π΅Π»Π°Ρ‚ΡŒ?

ΠŸΡ€ΠΈ принятии Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊΠΎΠΉ язык Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ, ваш ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ вопрос Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ: Ρ‡Ρ‚ΠΎ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π·Π°ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ?

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ систСмы, ядра ΠΈΠ»ΠΈ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π° максимальной скорости, язык Π±ΠΎΠ»Π΅Π΅ Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΌ Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ. Π‘ΠΎΠ»ΡŒΡˆΠ°Ρ Ρ‡Π°ΡΡ‚ΡŒ Windows, OS X ΠΈ Linux написана Π½Π° языках C ΠΈ C-ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹Ρ… языках, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ C ++ ΠΈ Objective-C.

МногиС соврСмСнныС прилоТСния ΠΏΠΈΡˆΡƒΡ‚ΡΡ Π½Π° языках Π±ΠΎΠ»Π΅Π΅ высокого уровня ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ Π½Π° ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… языках. Python ΠΈ Ruby особСнно популярны для Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, хотя HTML5 становится всС Π±ΠΎΠ»Π΅Π΅ ΠΌΠΎΡ‰Π½Ρ‹ΠΌ. Π―Π·Ρ‹ΠΊΠΈ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Swift, C #, JavaScript ΠΈ SQL, ΠΈΠΌΠ΅ΡŽΡ‚ свои ΡΠΈΠ»ΡŒΠ½Ρ‹Π΅ ΠΈ слабыС стороны.

Β 

РассмотритС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ обучСния языкам ΠΎΠ±ΠΎΠΈΡ… ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ

НСдавно Ρ‡ΠΈΡ‚Π°Π» Ρ‚Π΅ΠΌΡƒ Π½Π° Ρ„ΠΎΡ€ΡƒΠΌΠ΅ ΠΏΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ ΠΈ наткнулся Π½Π° интСрСсноС ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅: ΠΈΠ·ΡƒΡ‡ΠΈΡ‚Π΅ сразу ΠΎΠ±Π° уровня. Π’Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Π±ΠΎΠ»Π΅Π΅ Π³Π»ΡƒΠ±ΠΎΠΊΠΎΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ² абстракций, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Π΅Π»Π°ΡŽΡ‚ язык Π±ΠΎΠ»Π΅Π΅ высокого уровня Π±ΠΎΠ»Π΅Π΅ эффСктивным.

ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ Π΄Π²ΡƒΡ… языков ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ нСпросто, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°ΡΡ‚ΡΠ½ΡƒΡ‚ΡŒ ΠΈΡ… ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅. И Π²Ρ‹Π±ΠΎΡ€ Π΄Π²ΡƒΡ… языков, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΠΎΡ…ΠΎΠΆΠΈ, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌ.

ΠžΠΏΡΡ‚ΡŒ ΠΆΠ΅, ΠΌΡ‹ вСрнСмся ΠΊ Ρ‚ΠΎΠΌΡƒ, ΠΎ Ρ‡Π΅ΠΌ я Π³ΠΎΠ²ΠΎΡ€ΠΈΠ» Ρ€Π°Π½ΡŒΡˆΠ΅: Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ язык, основанный Π½Π° Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ. ΠŸΡ€ΠΎΠ²Π΅Π΄ΠΈΡ‚Π΅ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ исслСдованиС, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ языки люди ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Π² своСй области. Π—Π°Ρ‚Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ эту ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ язык высокого ΠΈ Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня, ΠΈ Π½Π°Ρ‡Π½ΠΈΡ‚Π΅ ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ ΠΈΡ….

Π’Ρ‹ скоро ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈ, ΠΈ Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Π³ΠΎΡ€Π°Π·Π΄ΠΎ Π±ΠΎΠ»Π΅Π΅ Π³Π»ΡƒΠ±ΠΎΠΊΠΎΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅.

Β 

Π‘ΠΎΡΡ€Π΅Π΄ΠΎΡ‚ΠΎΡ‡ΡŒΡ‚Π΅ΡΡŒ Π½Π° Ρ†Π΅Π»ΠΈ, Π° Π½Π΅ Π½Π° срСдствС

БущСствуСт мноТСство ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠ΅Π², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для Π²Ρ‹Π±ΠΎΡ€Π° языка программирования. Одним ΠΈΠ· ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠ΅Π² являСтся высокий ΠΈ Π½ΠΈΠ·ΠΊΠΈΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ. Но ΠΏΠΎΡ‡Ρ‚ΠΈ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ случаС ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, — это Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π·Π°ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ.

Π’Π°ΡˆΠ΅ΠΌΡƒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρƒ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π΅Π½ язык Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня. Или это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΎΠ»Π΅Π΅ эффСктивно Π½Π° высоком ΡƒΡ€ΠΎΠ²Π½Π΅. Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ сами Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ инструмСнт для Ρ€Π°Π±ΠΎΡ‚Ρ‹. Π‘ΠΎΡΡ€Π΅Π΄ΠΎΡ‚ΠΎΡ‡ΡŒΡ‚Π΅ΡΡŒ Π½Π° своСй Ρ†Π΅Π»ΠΈ, ΠΈ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· Π²Ρ‹Π±ΠΈΡ€Π°ΠΉΡ‚Π΅ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ язык.

Β 

Π£ вас Π΅ΡΡ‚ΡŒ ΠΎΠΏΡ‹Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с языками высокого ΠΈ Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня? Π’Ρ‹ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°Π΅Ρ‚Π΅ ΠΎΠ΄Π½ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌ? ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚Π΅ΡΡŒ своими мыслями Π² коммСнтариях Π½ΠΈΠΆΠ΅!

Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅

Β 

Β 

Β 

Β 

Π―Π·Ρ‹ΠΊΠΈ программирования Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня: Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹Π΅ языки

Π―Π·Ρ‹ΠΊΠΈ программирования Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня ΠΈΠ»ΠΈ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹Π΅ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎ появились ΠΏΠ΅Ρ€Π²Ρ‹ΠΌΠΈ ΠΈ Π² ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ стали базисом для развития всСй ИВ индустрии. Они Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Π² своих ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ… ΠΎΠ±Ρ€Π°Ρ‰Π°ΡŽΡ‚ΡΡ фактичСски Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΊ ΠΆΠ΅Π»Π΅Π·Ρƒ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°, Π΅Π³ΠΎ микропроцСссору. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ процСссор способСн Π²ΠΎΡΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ понятных Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΅ΠΌΡƒ ΠΊΠΎΠΌΠ°Π½Π΄, поэтому ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ нСмногочислСнных устройств Π² Ρ‚ΠΎ Π΄Π°Π»Π΅ΠΊΠΎΠ΅ врСмя создавались свои языки. Π˜Π·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Ρ‚Π°ΠΊΠΈΠ΅ языки ΠΈΠΌΠ΅Π»ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ ΠΊΠΎΠΌΠ°Π½Π΄, ΠΈ Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ высокоуровнСвых Π½Π΅ ΠΈΠΌΠ΅Π»ΠΈ Ρ‚Π°ΠΊΠΎΠ³ΠΎ большого количСства абстрактных классов, Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·Π½ΠΎΠ³ΠΎ синтаксиса.

ВсС ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ языки программирования ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ дСлят Π½Π° Π΄Π²Π΅ большиС Π³Ρ€ΡƒΠΏΠΏΡ‹: Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹Π΅ ΠΈ высокоуровнСвыС. БСйчас Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… языков относятся ΠΊΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ, Π½ΠΎ Ρ‚Π°ΠΊ Π±Ρ‹Π»ΠΎ Π½Π΅ всСгда. Если ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ развития программирования ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π±Π»ΠΈΠΆΠ΅ ΠΊ Π΅Π΅ истокам, Ρ‚ΠΎ Ρ‚Π°ΠΌ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½Π° Π±Ρ‹Π»Π° прямо ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΠΎΠΉ.

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

НСкоторыС прСдставитСли Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹Ρ… языков

Π˜Π·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ языком программирования Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня считаСтся Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄. Он ΠΈΠΌΠ΅Π» Π²ΠΈΠ΄ Π½Π°Π±ΠΎΡ€Π° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π»ΠΈΡΡŒ Π½Π° процСссор Π² Π²ΠΈΠ΄Π΅ Π½ΡƒΠ»Π΅ΠΉ ΠΈ Π΅Π΄ΠΈΠ½ΠΈΡ†. Π—Π° Π½ΡƒΠ»ΡŒ ΠΎΡ‚Π²Π΅Ρ‡Π°Π»ΠΎ отсутствиС элСктричСского сигнала Π½Π° устройствС, Π° Π·Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ – ΠΏΠΎΠ΄Π°Ρ‡Π° Π½Π° Π½Π΅Π³ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΈΠΌΠΏΡƒΠ»ΡŒΡΠ°. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Π΅Ρ€Π΅Π΄Π° сигналов заставляла процСссор Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ поставлСнныС ΠΏΠ΅Ρ€Π΅Π΄ Π½ΠΈΠΌ Π·Π°Π΄Π°Ρ‡ΠΈ.

ΠŸΠ΅Ρ€Π²Ρ‹Π΅ Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠΎΠ΄Ρ‹ Π±Ρ‹Π»ΠΈ способны Π·Π°ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π­Π’Πœ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ элСмСнтарныС простыС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, ΠΊΡƒΠ΄Π° относятся арифмСтичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° ΠΌΠ΅ΠΆΠ΄Ρƒ рСгистрами ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, сравнСниС Π΄Π²ΡƒΡ… ΠΈΠ»ΠΈ большС Ρ€Π°Π·Π½Ρ‹Ρ… ΠΊΠΎΠ΄ΠΎΠ² ΠΈ Ρ‚ΠΎΠΌΡƒ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ дСйствия. ПозТС ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Π΅ языки Π½Π°ΡƒΡ‡ΠΈΠ»ΠΈΡΡŒ Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ слоТныС Π·Π°Π΄Π°Ρ‡ΠΈ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ состоят ΠΈΠ· Π½Π°Π±ΠΎΡ€Π° элСмСнтарных ΠΊΠΎΠΌΠ°Π½Π΄. Π’ зависимости ΠΎΡ‚ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ процСссора ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Ρ€Π°Π·Π½ΠΎΠ΅ количСство ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈ с Ρ€Π°Π·Π½ΠΎΠΉ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Π΅ ΠΊΠΎΠ΄Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… прСдставитСлях ΠΎΠ΄Π½ΠΎΠ³ΠΎ сСмСйства процСссоров, ΠΈΡ… Π½Π°Ρ‡Π°Π»ΠΈ Ρ€Π°Π·Π±ΠΈΠ²Π°Ρ‚ΡŒ Π½Π° ΠΌΠΈΠΊΡ€ΠΎΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.  Бписок языков машинного ΠΊΠΎΠ΄Π° вряд Π»ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ, вСдь Π½Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ процСссор ΠΈ Π­Π’Πœ своСго Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ создавался свой язык.

АссСмблСр

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ послС ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Ρ… ΠΊΠΎΠ΄ΠΎΠ² появились Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ языки ассСмблСра. Π˜Ρ… главная ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π½Π°Π±ΠΎΡ€ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄ здСсь ΡƒΠΆΠ΅ сущСствСнно Π±ΠΎΠ»Π΅Π΅ ΡˆΠΈΡ€ΠΎΠΊΠΈΠΉ ΠΈ ΠΎΠ½ Π½Π΅ обязан строго ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌ Π΄Π°Π½Π½ΠΎΠΉ Π­Π’Πœ. Благодаря этому ΠΎΡ‚ΠΊΡ€Ρ‹Π»ΠΈΡΡŒ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π½ΠΎΠ²Ρ‹Π΅ возмоТности. Π“Π»Π°Π²Π½Ρ‹ΠΌΠΈ прСимущСствами ассСмблСра ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚:

  • Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ создания Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, Ρ‡Ρ‚ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ быстродСйствиС ΠΌΠ°ΡˆΠΈΠ½Ρ‹;
  • Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти Ρ‡Π°ΡΡ‚ΡŒ выполнСния Π·Π°Π΄Π°Ρ‡ΠΈ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π΅ ΠΏΠΎ ТСланию;
  • ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ больший Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π», ΠΏΡ€ΠΈ этом ΠΈΡ… Ρ€Π΅ΡΡƒΡ€ΡΠΎΠ΅ΠΌΠΊΠΎΡΡ‚ΡŒ стала сущСствСнно Π½ΠΈΠΆΠ΅.

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

Forth

НизкоуровнСвый язык, появившийся ΠΏΡ€ΠΈΠ±Π»ΠΈΠ·ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π² 70-Ρ…. ИмСл свои сущСствСнныС прСимущСства, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ сдСлали Π΅Π³ΠΎ довольно популярным Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… ΠΊΡ€ΡƒΠ³Π°Ρ… спСциалистов. ΠœΠ°ΡˆΠΈΠ½Π½Ρ‹Π΅ языки программирования ΠΊ этому Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΡƒΠΆΠ΅ Π½Π°Ρ‡Π°Π»ΠΈ ΡƒΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π² ΠΏΡ€ΠΎΡˆΠ»ΠΎΠ΅, поэтому Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» Π€ΠΎΡ€Ρ‚ ΠΌΠ½ΠΎΠ³ΠΈΠΌ ΠΏΡ€ΠΈΡˆΠ΅Π»ΡΡ ΠΏΠΎ вкусу. Π‘ Π΅Π³ΠΎ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ программисты, Π·Π½Π°ΡŽΡ‰ΠΈΠ΅ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ процСссора, ΠΌΠΎΠ³Π»ΠΈ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ устройству ядро Π·Π° считанныС Π΄Π½ΠΈ. Π‘Π»ΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, какая ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΠ° программирования здСсь поддСрТиваСтся. ΠŸΡ€ΠΈ использовании языка ΠΎΠΏΡ‹Ρ‚Π½Ρ‹ΠΌ программистом здСсь ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ самыС ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ Π·Π°Π΄ΡƒΠΌΠΊΠΈ.

Π‘

Один ΠΈΠ· самых извСстных ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… языков программирования, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π°Ρ‡Π°Π» своС сущСствованиС Π² 70-Ρ… ΠΈ Π½Π΅ сходит с Π°Ρ€Π΅Π½Ρ‹ Π΄ΠΎ сих ΠΏΠΎΡ€. Он ΠΏΠΎ своСй структурС оказался довольно Π±Π»ΠΈΠ·ΠΎΠΊ ΠΊ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΌ языкам ΠΈ ассСмблСру, благодаря Ρ‡Π΅ΠΌΡƒ Π½Π°Ρ‡Π°Π» Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для создания ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм, Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ², систСмного ПО. Часто Π‘ΠΈ ΠΏΡ€ΠΈΡ‡ΠΈΡΠ»ΡΡŽΡ‚ ΠΊ высокоуровнСвым языкам, Π½ΠΎ здСсь всС Π½Π΅ Ρ‚Π°ΠΊ ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎ, вСдь ΠΎΠ½ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ совпадаСт с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹Ρ… языков, поэтому Π²ΠΏΠΎΠ»Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ занСсСн ΠΈ Π² эту ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΡŽ. Вопрос ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊΠΎΠΉ язык программирования относится ΠΊ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹ΠΌ, Π½Π΅ насколько простой и здСсь Π½ΡƒΠΆΠ½ΠΎ ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ скорСС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» ΠΈ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ языка, Π½Π΅ΠΆΠ΅Π»ΠΈ Π΅Π³ΠΎ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ опрСдСлСния.

Если ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ языком программирования Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня являСтся Ρ‚ΠΎΡ‚ язык, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ нСпосрСдствСнно ΠΊ Π½Π°Π±ΠΎΡ€Ρƒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… процСссором ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ устройствами ΠΊΠΎΠΌΠ°Π½Π΄, Ρ‚ΠΎ Π‘ΠΈ Π²ΠΏΠΎΠ»Π½Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΏΠΎΠ΄ это ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅.

Π’ Ρ†Π΅Π»ΠΎΠΌ, история языков программирования Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня довольно объСмна, Π½ΠΎ ΠΈΠ·Π²Π΅ΡΡ‚Π½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ прСдставитСли этого класса. ВсС Π΄Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ язык Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° создавался ΠΏΠΎΠ΄ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Β«ΠΆΠ΅Π»Π΅Π·ΠΊΠΈΒ», поэтому ΠΏΡ€ΠΎΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ всС Ρ‚Π°ΠΊΠΈΠ΅ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΈ ΠΎΡ‡Π΅Π½ΡŒ ΠΈ ΠΎΡ‡Π΅Π½ΡŒ слоТно.

НизкоуровнСвыС языки программирования

ΠŸΠΎΠ½ΡΡ‚ΠΈΠ΅ ΠΎ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹Ρ… языках программирования

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

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

Π“ΠΎΡ‚ΠΎΠ²Ρ‹Π΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π° Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΡƒΡŽ Ρ‚Π΅ΠΌΡƒ

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ 1

НизкоуровнСвыС языки программирования (ЯП) ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой Ρ„ΠΎΡ€ΠΌΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Π΅ синтаксисы, ΠΏΡ€ΠΈΠ·Π²Π°Π½Π½Ρ‹Π΅ ΠΎΠ±Π»Π΅Π³Ρ‡ΠΈΡ‚ΡŒ Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Ρ… ΠΊΠΎΠ΄ΠΎΠ², примСняСмых для управлСния ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹ΠΌΠΈ процСссорами.

Π₯арактСристики ΠΈ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹Ρ… языков

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

Высокий ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ абстракции, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° высокоуровнСвых языках, Π½Π΅ Π·Π°Π΄ΡƒΠΌΡ‹Π²Π°ΡΡΡŒ ΠΎΠ± Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°, достигаСтся Π·Π° счСт Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Ρ… расходов: скрытых ΠΎΡ‚ программиста ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ ΠΈ «ΠΎΠ±Π²ΡΠ·ΠΎΠΊ», ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‰ΠΈΡ… Π½Π΅ Π·Π°Π΄ΡƒΠΌΡ‹Π²Π°Ρ‚ΡŒΡΡ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΎ Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠΈ памяти ΠΏΠΎΠ΄ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ Π΅Π΅ Π² доступноС пространство послС использования.

НизкоуровнСвыС языки, Π½Π°ΠΏΡ€ΠΎΡ‚ΠΈΠ², ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ ΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²Π΅Π½Π½ΠΎΡΡ‚ΡŒ Π·Π° всС Π²Π½ΡƒΡ‚Ρ€ΠΈΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹Π΅ рСсурсы (врСмя Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ процСссора, ΠΎΠ±ΡŠΠ΅ΠΌΡ‹ выдСляСмой памяти ΠΈ Ρ‚.ΠΏ.) программист Π±Π΅Ρ€Π΅Ρ‚ Π½Π° сСбя. По этой ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ языки Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня относятся ΠΊ «Π½Π΅Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½Ρ‹ΠΌ»: ΠΏΡ€ΠΈ написании с ΠΈΡ… ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π±ΠΎΠ»Π΅Π΅-ΠΌΠ΅Π½Π΅Π΅ ΠΎΠ±ΡˆΠΈΡ€Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, Π² ΠΊΠΎΠ΄Π΅ появляСтся большС ошибок, Ρ‡Π΅ΠΌ ΠΏΡ€ΠΈ написании Π½Π° языках высокого уровня. НизкоуровнСвоС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ примСняСтся Π² основном для создания ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½ΠΎΠ³ΠΎ ПО, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для программирования систСм Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ (ΠΊΠΎΠ³Π΄Π° нСдопустимы Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ Π² Ρ€Π°Π±ΠΎΡ‚Π΅), встраиваСмых систСм (ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ²), Π° Ρ‚Π°ΠΊΠΆΠ΅ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ², ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… внСшними устройствами:

  • ΠΏΡ€ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΌΠΈ,
  • сканСрами,
  • ΠΊΠ°ΠΌΠ΅Ρ€Π°ΠΌΠΈ ΠΈ Ρ‚.ΠΏ.

Рисунок 1. ΠŸΡ€ΠΎΡˆΠΈΠ²ΠΊΠ° ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ Π½Π° ассСмблСрС. Автор24 β€” ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚-Π±ΠΈΡ€ΠΆΠ° студСнчСских Ρ€Π°Π±ΠΎΡ‚

Π―Π·Ρ‹ΠΊ ассСмблСра

Π—Π° понятиСм «Π°ΡΡΠ΅ΠΌΠ±Π»Π΅Ρ€» кроСтся Π½Π΅ язык программирования с Ρ‡Π΅Ρ‚ΠΊΠΎ Ρ„ΠΎΡ€ΠΌΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ синтаксисом, Π° скорСС ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ создания синтаксисов для управлСния процСссорами Ρ€Π°Π·Π½Ρ‹Ρ… Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€. ΠŸΡ€ΠΎΡ†Π΅ΡΡΠΎΡ€Ρ‹, выпускаСмыС соврСмСнной ΠΏΡ€ΠΎΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ, ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°ΠΌΠΈ, Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ Π½Π°Π±ΠΎΡ€Π°ΠΌΠΈ ΠΊΠΎΠΌΠ°Π½Π΄, поэтому ΠΈ языки ассСмблСра для Π½ΠΈΡ… Ρ€Π°Π·Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ. Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, для ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ процСссора ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ΠΎ нСсколько Π²ΠΈΠ΄ΠΎΠ² языка ассСмблСра (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСмах). Однако ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ ассСмблСры Π½Π° основС ΠΎΠ΄Π½ΠΈΡ… ΠΈ Ρ‚Π΅Ρ… ΠΆΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ²: Π³Ρ€ΠΎΠΌΠΎΠ·Π΄ΠΊΠΈΠ΅ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Π΅ ΠΊΠΎΠ΄Ρ‹ Π·Π°ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ Π±ΠΎΠ»Π΅Π΅ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΌΠΈ для запоминания синтаксичСскими конструкциями, ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΌΠΈ для запоминания благодаря Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°ΡŽΡ‚ слова ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ языка. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ большая Ρ‡Π°ΡΡ‚ΡŒ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΈ разрабатываСтся Π² БША ΠΈ Π•Π²Ρ€ΠΎΠΏΠ΅, слова Π² ассСмблСрах ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ английскиС. НапримСр, ΠΊΠΎΠΌΠ°Π½Π΄Π° ADD ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ слоТСниС рСгистров процСссора ΠΈ соотвСтствуСт английскому Π³Π»Π°Π³ΠΎΠ»Ρƒ to add — ΡΠΊΠ»Π°Π΄Ρ‹Π²Π°Ρ‚ΡŒ.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° ассСмблСрС сводится ΠΊ занСсСнию Π² рСгистры ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· памяти (ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния процСссора относятся ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Π΅ ΠΊ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρƒ устройства), Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π½Π°Π΄ Π½ΠΈΠΌΠΈ ΠΈ записи Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ. Π—Π° рСгистрами процСссора Π·Π°ΠΊΡ€Π΅ΠΏΠ»Π΅Π½Ρ‹ Π±ΡƒΠΊΠ²Π΅Π½Π½Ρ‹Π΅ обозначСния, Π½ΠΎΠΌΠ΅Π½ΠΊΠ»Π°Ρ‚ΡƒΡ€Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… зависит ΠΎΡ‚ Ρ‚ΠΈΠΏΠ° процСссора (Intel x86, ARM ΠΈ Π΄Ρ€).

Рисунок 2. РСгистры процСссора. Автор24 β€” ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚-Π±ΠΈΡ€ΠΆΠ° студСнчСских Ρ€Π°Π±ΠΎΡ‚

ΠžΡΠΎΠ±Ρ‹ΠΉ рСгистр-ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄ (EIP) ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ выполнСния ΠΊΠΎΠΌΠ°Π½Π΄. Π•Π³ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ нСдоступно программисту. Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ рСгистром-ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ производятся ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ условных ΠΈ бСзусловных ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΎΠ², Ρ†ΠΈΠΊΠ»ΠΎΠ², Π²Ρ‹Π·ΠΎΠ²Π° ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° ΠΈΠ· Π½ΠΈΡ….

НСсмотря Π½Π° слоТный синтаксис, Π½Π° ассСмблСрС ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ довольно слоТныС прилоТСния, Π² Ρ‚ΠΎΠΌ числС прилоТСния с графичСским интСрфСйсом. Для облСгчСния Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ макросы, внСшниС ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΡ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, Π° Ρ‚Π°ΠΊΠΆΠ΅ возмоТности ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы, прСдоставляСмыС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ Π² Π·Π°Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅ (API).

Рисунок 3. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π° ассСмблСрС. Автор24 β€” ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚-Π±ΠΈΡ€ΠΆΠ° студСнчСских Ρ€Π°Π±ΠΎΡ‚

Π—Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅ 1

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

Π§Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ Π½ΠΈΠ·ΠΊΠΎ- срСднС- ΠΈ высокоуровнСвыС языки программирования

ΠŸΠ΅Ρ€Π΅Π²ΠΎΠ΄ ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠšΠ»Π΅ΠΎΡ„Π°ΡΠ° ΠœΡƒΠ»ΠΎΠ½Π³ΠΎ Β«What Are Low, Middle, And High Level Programming Languages?Β».

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

К высокоуровнСвым относят языки программирования, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ созданы с расчСтом Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΈΡ… Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ люди. Они нСзависимы: программистам Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ, Π½Π° ΠΊΠ°ΠΊΠΎΠΌ ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠΈ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Ρ‚Π°ΠΊΠΈΡ… языков – C++ ΠΈ Python.

Π‘Ρ€Π΅Π΄Π½Π΅ΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹Π΅ языки слуТат ΠΊΠ°ΠΊ Π±Ρ‹ ΡΠ²ΡΠ·ΡƒΡŽΡ‰ΠΈΠΌ Π·Π²Π΅Π½ΠΎΠΌ ΠΌΠ΅ΠΆΠ΄Ρƒ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠΉ ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΉ Ρ‡Π°ΡΡ‚ΡŒΡŽ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°. Они Π΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ абстракции.

НизкоуровнСвыС языки, Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, созданы для удовлСтворСния Π½ΡƒΠΆΠ΄ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ ΠΈ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‚ трСбования Β«ΠΆΠ΅Π»Π΅Π·Π°Β».

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрим Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ отличия ΠΌΠ΅ΠΆΠ΄Ρƒ Π²Ρ‹ΡˆΠ΅ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌΠΈ Π²ΠΈΠ΄Π°ΠΌΠΈ языков программирования.

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

Π§Ρ‚ΠΎ касаСтся скорости, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, написанныС Π½Π° Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹Ρ… языках, ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π±ΠΎΠ»Π΅Π΅ быстрыми, Ρ‡Π΅ΠΌ написанныС Π½Π° срСднС- ΠΈΠ»ΠΈ высокоуровнСвых языках. ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π° этого Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ эти ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π΅ Π½ΡƒΠΆΠ΄Π°ΡŽΡ‚ΡΡ Π² ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ ΠΈΠ»ΠΈ компиляции. Они Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ нСпосрСдствСнно с рСгистрами ΠΈ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, написанныС Π½Π° высокоуровнСвых языках, ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹Π΅. Главая ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° этого Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΏΠΈΡˆΡƒΡ‚ΡΡ Π½Π° «чСловСчСском» языкС. ΠšΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρƒ приходится ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ…, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ. ВсС эти процСссы Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ врСмя.

Π‘ΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ срСднСуровнСвых языков Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Π•Π΅ Π½Π΅ назовСшь Π½ΠΈ слишком высокой, Π½ΠΈ слишком Π½ΠΈΠ·ΠΊΠΎΠΉ.

2. ВрСбования ΠΊ памяти

Π­Ρ‚ΠΎ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Π³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ΡŒ Ρ‚Ρ€ΠΈ Π²ΠΈΠ΄Π° языков программирования. НизкоуровнСвыС языки ΠΎΡ‡Π΅Π½ΡŒ эффСктивны Π² этом ΠΏΠ»Π°Π½Π΅, ΠΎΠ½ΠΈ ΠΏΠΎΡ‚Ρ€Π΅Π±Π»ΡΡŽΡ‚ ΠΌΠ°Π»ΠΎ памяти. Π­Ρ‚ΠΎ ΠΈΡ… ΠΎΡ‡Π΅Π½ΡŒ ΠΎΡ‚Π»ΠΈΡ‡Π°Π΅Ρ‚ ΠΎΡ‚ высокоуровнСвых языков, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΡ‡Π΅Π½ΡŒ Ρ‘ΠΌΠΊΠΈΠΌΠΈ Π² этом ΠΏΠ»Π°Π½Π΅. А Π²ΠΎΡ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° срСднСуровнСвых языках ΡƒΠΆΠ΅ Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ памяти.

3. Π›Π΅Π³ΠΊΠΎΡΡ‚ΡŒ использования

НизкоуровнСвыС языки друТСствСнны ΠΊ машинам, Π½ΠΎ нСдруТСствСнны ΠΊ программистам. Π§Π΅Π»ΠΎΠ²Π΅ΠΊΡƒ довольно слоТно ΠΈΠΌΠ΅Ρ‚ΡŒ Π΄Π΅Π»ΠΎ с Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ ΠΈ ΠΌΠ½Π΅ΠΌΠΎΠ½ΠΈΠΊΠΎΠΉ. Π’ΠΎ, Ρ‡Ρ‚ΠΎ каТдая инструкция создаСтся для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°, Π΄Π΅Π»Π°Π΅Ρ‚ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹Π΅ языки Π±ΠΎΠ»Π΅Π΅ тСхничСскими. ΠšΠΎΡ€ΠΎΡ‡Π΅ говоря, ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΡ… слоТно.

ВысокоуровнСвыС языки, Π½Π°ΠΏΡ€ΠΎΡ‚ΠΈΠ², друТСствСнны ΠΊ людям. Они состоят ΠΈΠ· Ρ„Ρ€Π°Π· Π½Π° английском языкС, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΈ Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ. Π­Ρ‚ΠΎ поясняСт, ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΈΠΌΠ΅Π½Π½ΠΎ языки высокого уровня ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ популярными.

4. ΠŸΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΡŒ

Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΡŒ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ язык Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°Ρ…. НизкоуровнСвыС языки ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΌΠ΅Π½Π΅Π΅ ΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΈΡ… инструкции Β«ΠΌΠ°ΡˆΠΈΠ½ΠΎΠ·Π°Π²ΠΈΡΠΈΠΌΡ‹Β». Π’ΠΎ Π΅ΡΡ‚ΡŒ, каТдая инструкция написана для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹. Код, написанный для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹, Π½Π΅ запустится Π½Π° Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ с Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΎΠΉ.

ВысокоуровнСвыС языки Π½Π΅ зависят ΠΎΡ‚ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠΉ части. Один ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Π΅Π· ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… ΠΌΠ°ΡˆΠΈΠ½Π°Ρ… (ΠΈ Π΄Π°ΠΆΠ΅ Π½Π° ΠΌΠ°ΡˆΠΈΠ½Π°Ρ… с Ρ€Π°Π·Π½ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΎΠΉ). Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ высокоуровнСвыС языки ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌΠΈ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ пСрСнСсти ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡƒΡŽ Π½Π° Ρ‚Π°ΠΊΠΎΠΌ языкС, ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ срСды Π² Π΄Ρ€ΡƒΠ³ΡƒΡŽ – ΠΈ ΠΎΠ½Π° всС Ρ€Π°Π²Π½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ.

5. Абстракция

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

РасхоТдСниС ΠΌΠ΅ΠΆΠ΄Ρƒ срСднСуровнСвыми языками ΠΈ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠΉ Ρ‡Π°ΡΡ‚ΡŒΡŽ довольно сущСствСнноС. Оно большС, Ρ‡Π΅ΠΌ Ρƒ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹Ρ… языков, Π½ΠΎ мСньшС, Ρ‡Π΅ΠΌ Ρƒ высокоуровнСвых.

Π›ΠΎΠ³ΠΈΡ‡Π½ΠΎ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ высокоуровнСвыС языки ΠΈΠΌΠ΅ΡŽΡ‚ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ абстракции. Π­Ρ‚ΠΎ ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π½Π° самом Π²Π΅Ρ€Ρ…Π½Π΅ΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°, Π³Π΄Π΅ взаимодСйствиС с Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠΉ Ρ‡Π°ΡΡ‚ΡŒΡŽ минимальноС.

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, Π½ΠΈΠ·ΠΊΠΎ-, срСднС- ΠΈ высокоуровнСвыС языки Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Π²ΠΈΠ΄ языков слуТит для ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Ρ†Π΅Π»Π΅ΠΉ, Π° ΠΏΠΎΡ‚ΠΎΠΌΡƒ, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΆΠ΅, Π½ΠΈ ΠΎΠ΄ΠΈΠ½ Π½Π΅ являСтся Π»ΡƒΡ‡ΡˆΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ.

И всё ΠΆΠ΅ C β€” Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹ΠΉ язык / Π‘Π»ΠΎΠ³ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Badoo / Π₯Π°Π±Ρ€

Π—Π° ΠΏΡ€ΠΎΡˆΠ΅Π΄ΡˆΠΈΠ΅ с ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° появлСния языка C дСсятилСтия Π±Ρ‹Π»ΠΎ создано мноТСство ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΠ½Π΅ΠΉΡˆΠΈΡ… языков программирования. КакиС-Ρ‚ΠΎ ΠΈΠ· Π½ΠΈΡ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π΄ΠΎ сих ΠΏΠΎΡ€, Π΄Ρ€ΡƒΠ³ΠΈΠ΅ β€” повлияли Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ поколСния языков, ΠΏΠΎΠΏΡƒΠ»ΡΡ€Π½ΠΎΡΡ‚ΡŒ Ρ‚Ρ€Π΅Ρ‚ΡŒΠΈΡ… Ρ‚ΠΈΡ…ΠΎ сошла Π½Π° Π½Π΅Ρ‚. ΠœΠ΅ΠΆΠ΄Ρƒ Ρ‚Π΅ΠΌ Π°Ρ€Ρ…Π°ΠΈΡ‡Π½Ρ‹ΠΉ, ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΡ€Π΅Ρ‡ΠΈΠ²Ρ‹ΠΉ, ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹ΠΉ, сдСланный Π² Ρ…ΡƒΠ΄ΡˆΠΈΡ… традициях своСго поколСния языков C (ΠΈ Π΅Π³ΠΎ наслСдники) ΠΆΠΈΠ²Π΅Π΅ всСх ΠΆΠΈΠ²Ρ‹Ρ….

ΠšΡ€ΠΈΡ‚ΠΈΠΊΠ° C β€” классичСский для нашСй индустрии эпистолярный ΠΆΠ°Π½Ρ€. Она Π·Π²ΡƒΡ‡ΠΈΡ‚ Ρ‚ΠΎ Π³Ρ€ΠΎΠΌΡ‡Π΅, Ρ‚ΠΎ Ρ‚ΠΈΡˆΠ΅, Π½ΠΎ Π² послСднСС врСмя Π±ΡƒΠΊΠ²Π°Π»ΡŒΠ½ΠΎ ΠΎΠ³Π»ΡƒΡˆΠ°Π΅Ρ‚. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ β€” ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ ΡΡ‚Π°Ρ‚ΡŒΠΈ Дэвида Чизнэлла Β«C β€” Π½Π΅ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹ΠΉ язык», ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π² нашСм Π±Π»ΠΎΠ³Π΅ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ врСмя Π½Π°Π·Π°Π΄. ΠŸΡ€ΠΎ C ΠΌΠΎΠΆΠ½ΠΎ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ Ρ€Π°Π·Π½ΠΎΠ΅, Π² Π΄ΠΈΠ·Π°ΠΉΠ½Π΅ языка Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ нСприятных ошибок, Π½ΠΎ ΠΎΡ‚ΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ C Π² «низкоуровнСвости» β€” это ΡƒΠΆΠ΅ слишком!

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

Π’ΠΎΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΊΡ€ΠΈΡ‚ΠΈΠΊΠΎΠ² Π‘, пСрСчислСнныС Π² Ρ‚ΠΎΠΌ числС ΠΈ Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅ Дэвида Чизнэлла:

  1. Абстрактная машина языка C слишком ΠΏΠΎΡ…ΠΎΠΆΠ° Π½Π° ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΡƒΡŽ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ PDP-11, которая Π΄Π°Π²Π½ΠΎ ΡƒΠΆΠ΅ Π½Π΅ соотвСтствуСт устройству популярных соврСмСнных процСссоров.
  2. НСсоотвСтствиС абстрактной ΠΌΠ°ΡˆΠΈΠ½Ρ‹ C устройству Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… машин услоТняСт Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… компиляторов языка.
  3. НСполнота ΠΈ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ стандарта языка Π²Π΅Π΄ΡƒΡ‚ ΠΊ разночтСниям Π² рСализациях стандарта.
  4. Π”ΠΎΠΌΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ C-ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… языков Π½Π΅ позволяСт ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ процСссоров.

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

ΠžΠ±Ρ‰Π΅ΠΏΡ€ΠΈΠ·Π½Π°Π½Π½ΠΎΠ³ΠΎ опрСдСлСния языка Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня Π½Π΅ сущСствуСт. Но ΠΏΠ΅Ρ€Π΅Π΄ обсуТдСниСм спорных ΠΌΠΎΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ…ΠΎΡ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ исходныС трСбования ΠΊ ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Ρƒ спора.

Никто Π½Π΅ станСт ΡΠΏΠΎΡ€ΠΈΡ‚ΡŒ с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ язык ассСмблСра находится Π½Π° самом Π½ΠΈΠ·ΠΊΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅. Но Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ ΠΎΠ½ ΡƒΠ½ΠΈΠΊΠ°Π»Π΅Π½, поэтому ΠΊΠΎΠ΄ Π½Π° Ρ‚Π°ΠΊΠΎΠΌ языкС Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ пСрСносимым. Π”Π°ΠΆΠ΅ Π½Π° ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ совмСстимой ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π·Π°Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ Π½ΠΎΠ²Ρ‹Π΅ инструкции.

ΠžΡ‚ΡΡŽΠ΄Π° слСдуСт ΠΏΠ΅Ρ€Π²ΠΎΠ΅ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊ языку Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня: ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ ΠΎΠ±Ρ‰ΠΈΠ΅ для популярных ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ Ρ‡Π΅Ρ€Ρ‚Ρ‹. ΠŸΡ€ΠΎΡ‰Π΅ говоря, компилятор Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌ. ΠŸΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΡŒ компилятора ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ компиляторов языка для Π½ΠΎΠ²Ρ‹Ρ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ, Π° ΠΌΠ½ΠΎΠ³ΠΎΠΎΠ±Ρ€Π°Π·ΠΈΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… компиляторами ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ избавляСт Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΎΡ‚ нСобходимости ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π½ΠΎΠ²ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹.

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

Поиск баланса ΠΌΠ΅ΠΆΠ΄Ρƒ этими двумя трСбованиями β€” Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΎΠ±Ρ‰ΠΈΡ… для ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ аспСктов ΠΈ доступ ΠΊ ΠΏΠΎ возмоТности Π±ΠΎΠ»ΡŒΡˆΠ΅ΠΌΡƒ числу Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ β€” Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Π°Ρ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° слоТности Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ языка Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня.

Π—Π°ΠΌΠ΅Ρ‚ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ для Ρ‚Π°ΠΊΠΎΠ³ΠΎ языка Π½Π΅ Ρ‚Π°ΠΊ Π²Π°ΠΆΠ½Ρ‹ высокоуровнСвыС абстракции, β€” для Π½Π΅Π³ΠΎ Π²Π°ΠΆΠ½Π΅Π΅ ΡΠ»ΡƒΠΆΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚ΠΎΠΌ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΎΠΉ, компилятором ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠΌ. А Ссли Π΅ΡΡ‚ΡŒ ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚, Ρ‚ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Π² нСзависимом ΠΎΡ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ стандартС языкС.

НашС ΠΏΠ΅Ρ€Π²ΠΎΠ΅ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ β€” ΠΎΠ±Ρ‰ΠΈΠ΅ для Ρ†Π΅Π»Π΅Π²Ρ‹Ρ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ Ρ‡Π΅Ρ€Ρ‚Ρ‹ β€” выраТаСтся Π² абстрактной машинС языка, поэтому с Π½Π΅Ρ‘ ΠΌΡ‹ ΠΈ Π½Π°Ρ‡Π½Ρ‘ΠΌ обсуТдСниС C.

ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ появился язык C, β€” PDP-11. Π’ Π΅Ρ‘ основС Π»Π΅ΠΆΠΈΡ‚ традиционная Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° Ρ„ΠΎΠ½ НСймана, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½Ρ‹ΠΌ процСссором, Π° ΠΏΠ°ΠΌΡΡ‚ΡŒ прСдставляСт собой ΠΏΠ»ΠΎΡΠΊΡƒΡŽ Π»Π΅Π½Ρ‚Ρƒ, Π³Π΄Π΅ хранятся ΠΈ Π΄Π°Π½Π½Ρ‹Π΅, ΠΈ сами ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Вакая Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° Π»Π΅Π³ΠΊΠΎ рСализуСтся Π² ΠΆΠ΅Π»Π΅Π·Π΅, ΠΈ со Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ всС ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρ‹ ΠΎΠ±Ρ‰Π΅Π³ΠΎ назначСния стали ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠΌΠ΅Π½Π½ΠΎ Π΅Ρ‘.

Π‘ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΡƒΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²ΠΎΠ²Π°Π½ΠΈΡ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ Ρ„ΠΎΠ½ НСймана Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Ρ‹ Π½Π° устранСниС Π΅Ρ‘ Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ ΡƒΠ·ΠΊΠΎΠ³ΠΎ мСста β€” Π·Π°Π΄Π΅Ρ€ΠΆΠ΅ΠΊ ΠΏΡ€ΠΈ ΠΎΠ±ΠΌΠ΅Π½Π΅ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ процСссором ΠΈ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ (Π°Π½Π³Π». von Neuman bottleneck). Π Π°Π·Π½ΠΈΡ†Π° Π² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ памяти ΠΈ Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ процСссора ΠΏΡ€ΠΈΠ²Π΅Π»Π° ΠΊ появлСнию ΠΊΠ΅ΡˆΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… подсистСм процСссоров (ΠΎΠ΄Π½ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹Ρ… ΠΈ ΠΏΠΎΠ·ΠΆΠ΅ β€” ΠΌΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹Ρ…).

Но Π΄Π°ΠΆΠ΅ кСшСй Π² наши Π΄Π½ΠΈ ΡƒΠΆΠ΅ нСдостаточно. Π‘ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ процСссоры стали супСрскалярными (Π°Π½Π³Π». superscalar). Π—Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΏΡ€ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠΈ инструкциями Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· памяти частично ΠΊΠΎΠΌΠΏΠ΅Π½ΡΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π²Π½Π΅ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½Ρ‹ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ (Π°Π½Π³Π». instruction-level parallelism) инструкций Π²ΠΊΡƒΠΏΠ΅ с прСдсказатСлСм Π²Π΅Ρ‚Π²Π»Π΅Π½ΠΈΠΉ (Π°Π½Π³Π». branch predictor).

ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ абстрактная машина C (ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π΄Ρ€ΡƒΠ³ΠΈΡ… языков) ΠΈΠΌΠΈΡ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ Π½Π΅ ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ PDP-11, сколько Π»ΡŽΠ±Ρ‹Ρ… ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠ², устроСнных ΠΏΠΎ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡƒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ Ρ„ΠΎΠ½ НСймана. К Π½Π΅ΠΌΡƒ относятся Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹, построСнныС Π²ΠΎΠΊΡ€ΡƒΠ³ процСссоров с СдинствСнным ядром: Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠ½Ρ‹Π΅ ΠΈ сСрвСрныС x86, ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Π΅ ARM, сходящиС со сцСны Sun/Oracle SPARC ΠΈ IBM POWER.

Π‘ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ Π² ΠΎΠ΄ΠΈΠ½ процСссор стали ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ нСсколько Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ядСр, Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Ρ‡Π΅Π³ΠΎ появилась Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ³Π΅Ρ€Π΅Π½Ρ‚Π½ΠΎΡΡ‚ΡŒ кСшСй ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ядра ΠΈ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΈΡΡŒ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρ‹ ΠΌΠ΅ΠΆΡŠΡΠ΄Π΅Ρ€Π½ΠΎΠ³ΠΎ взаимодСйствия. АрхитСктура Ρ„ΠΎΠ½ НСймана, Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π±Ρ‹Π»Π° ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½Π° Π½Π° нСсколько ядСр.

Π˜Π·Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ абстрактной ΠΌΠ°ΡˆΠΈΠ½Ρ‹ Π‘ Π±Ρ‹Π» ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ, Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ отраТая Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Ρ‡Π΅Ρ€Π΅Π· ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² исполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. ПоявлСниС Π² стандартС ΠΌΠΎΠ΄Π΅Π»ΠΈ памяти Ρ€Π°ΡΡˆΠΈΡ€ΠΈΠ»ΠΎ возмоТности абстрактной ΠΌΠ°ΡˆΠΈΠ½Ρ‹ Π΄ΠΎ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΉ.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ абстрактная машина C Π΄Π°Π²Π½ΠΎ Π½Π΅ соотвСтствуСт устройству соврСмСнных процСссоров, касаСтся Π½Π΅ ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ языка, сколько ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΡ… Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ Ρ„ΠΎΠ½ НСймана, Π² Ρ‚ΠΎΠΌ числС ΠΈ Π² ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΌ исполнСнии.

Но ΠΊΠ°ΠΊ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊ Ρ…ΠΎΡ‡Ρƒ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅: ΠΌΠΎΠΆΠ½ΠΎ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ фоннСймановский ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ устарСл, ΠΌΠΎΠΆΠ½ΠΎ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π°ΠΊΡ‚ΡƒΠ°Π»Π΅Π½, Π½ΠΎ это Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ отмСняСт Ρ‚ΠΎΠ³ΠΎ Ρ„Π°ΠΊΡ‚Π°, Ρ‡Ρ‚ΠΎ популярныС сСгодня Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ ΠΎΠ±Ρ‰Π΅Π³ΠΎ назначСния ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹Π΅ ΠΎΡ‚ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹.

Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΈ пСрСносимоС Π²ΠΎΠΏΠ»ΠΎΡ‰Π΅Π½ΠΈΠ΅ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ Ρ„ΠΎΠ½ НСймана β€” абстрактная машина C β€” ΡƒΠ΄ΠΎΠ±Π½ΠΎ рСализуСтся Π½Π° всСх основных ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ… ΠΈ поэтому ΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ своСй ΠΏΠΎΠΏΡƒΠ»ΡΡ€Π½ΠΎΡΡ‚ΡŒΡŽ ΠΊΠ°ΠΊ ΠΏΠΎΡ€Ρ‚Π°Ρ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ ассСмблСра Π²ΠΏΠΎΠ»Π½Π΅ заслуТСнно.

НашС Π²Ρ‚ΠΎΡ€ΠΎΠ΅ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊ языку Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня β€” доступ ΠΊ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹ΠΌ дСталям Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· популярной ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ. Π’ случаС C это нСпосрСдствСнная Ρ€Π°Π±ΠΎΡ‚Π° с ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ Π² Π½Π΅ΠΉ ΠΊΠ°ΠΊ с массивом Π±Π°ΠΉΡ‚ΠΎΠ², Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с адрСсами Π±Π°ΠΉΡ‚ΠΎΠ² ΠΈ развитая Π°Ρ€ΠΈΡ„ΠΌΠ΅Ρ‚ΠΈΠΊΠ° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ.

ΠšΡ€ΠΈΡ‚ΠΈΠΊΠΈ C ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π² стандартС языка даётся слишком ΠΌΠ½ΠΎΠ³ΠΎ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΠΉ ΠΊΠ°ΡΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, располоТСния ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠΎΠ»Π΅ΠΉ Π² структурах ΠΈ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡΡ…. ВмСстС с указатСлями ΠΈ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹ΠΌΠΈ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ°ΠΌΠΈ Ρ†ΠΈΠΊΠ»ΠΎΠ² это услоТняСт Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€Π°.

Π”Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, Π±ΠΎΠ»Π΅Π΅ Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ» Π±Ρ‹ компилятору ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ выравнивания Π΄Π°Π½Π½Ρ‹Ρ… Π² памяти ΠΈΠ»ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ порядка ΠΏΠΎΠ»Π΅ΠΉ Π² структурах; Π° высокоуровнСвыС Ρ†ΠΈΠΊΠ»Ρ‹ Π΄Π°ΡŽΡ‚ свободу, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡƒΡŽ ΠΏΡ€ΠΈ Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ.

ΠŸΠΎΠ·ΠΈΡ†ΠΈΡ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² C Π² Π΄Π°Π½Π½ΠΎΠΌ случаС Ρ‚Π°ΠΊΠΎΠ²Π°: Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹ΠΉ язык Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅, достаточно Π½ΠΈΠ·ΠΊΠΎΠΌ для ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ программистом Π·Π°Π΄Π°Ρ‡ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ. Π’ Ρ€Π°ΠΌΠΊΠ°Ρ… C Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ компилятором, Π²Ρ‹Π±Ρ€Π°Π², ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, инструкции SIMD ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ размСстив Π΄Π°Π½Π½Ρ‹Π΅ Π² памяти.

Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, нашС Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ доступа ΠΊ дСталям Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ вступаСт Π² ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ с поТСланиями Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… компиляторов ΠΈΠΌΠ΅Π½Π½ΠΎ Π² силу наличия Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹Ρ… инструмСнтов.

Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½ΠΎ, Ρ‡Ρ‚ΠΎ Чизнэлл Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Β«C β€” Π½Π΅ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹ΠΉ язык» ΠΏΠ°Ρ€Π°Π΄ΠΎΠΊΡΠ°Π»ΡŒΠ½ΠΎ ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ C β€” слишком Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹ΠΉ, указывая Π½Π° отсутствиС Π² Π½Ρ‘ΠΌ высокоуровнСвых инструмСнтов. Но ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°ΠΌ Π±Ρ‹Π²Π°ΡŽΡ‚ Π½ΡƒΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Π½Π½ΠΎ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹Π΅ инструмСнты, ΠΈΠ½Π°Ρ‡Π΅ язык Π½Π΅ получится ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΎΠ½ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡ‚ΡŒ Π²Ρ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΈΠ· Π½Π°ΡˆΠΈΡ… Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ.

ΠžΡ‚Π²Π»Π΅ΠΊΠ°ΡΡΡŒ ΠΎΡ‚ описания ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈΠΌΠ΅Π½Π½ΠΎ C, Ρ…ΠΎΡ‡Ρƒ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π² настоящий ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π² ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ компиляторы высокоуровнСвых языков (Ρ‚Π΅Ρ… ΠΆΠ΅ C# ΠΈ Java) Π²Π»ΠΎΠΆΠ΅Π½ΠΎ Π½Π΅ мСньшС усилий, Ρ‡Π΅ΠΌ Π² GCC ΠΈΠ»ΠΈ Clang. Π£ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… языков Ρ‚ΠΎΠΆΠ΅ Ρ…Π²Π°Ρ‚Π°Π΅Ρ‚ эффСктивных компиляторов: MLTon, OCaml ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅. Но Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ OCaml ΠΏΠΎΠΊΠ° ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΡ…Π²Π°ΡΡ‚Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ Π² Π»ΡƒΡ‡ΡˆΠ΅ΠΌ случаС Π² ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Ρƒ скорости ΠΊΠΎΠ΄Π° Π½Π° C…

Чизнэлл ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ Π² своСй ΡΡ‚Π°Ρ‚ΡŒΠ΅ ссылку Π½Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ опроса, ΠΏΡ€ΠΎΠ²Π΅Π΄Ρ‘Π½Π½ΠΎΠ³ΠΎ Π² 2015 Π³ΠΎΠ΄Ρƒ: ΠΌΠ½ΠΎΠ³ΠΈΠ΅ программисты допускали ошибки Π² Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ Π·Π°Π΄Π°Ρ‡ Π½Π° ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ стандартов C.

Полагаю, Ρ‡Ρ‚ΠΎ ΠΊΡ‚ΠΎ-Ρ‚ΠΎ ΠΈΠ· Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΈΠΌΠ΅Π» Π΄Π΅Π»ΠΎ со стандартом C. Π£ мСня вСрсия C99 Π΅ΡΡ‚ΡŒ Π² Π±ΡƒΠΌΠ°ΠΆΠ½ΠΎΠΌ Π²ΠΈΠ΄Π΅, страниц эдак Π½Π° 900. Π­Ρ‚ΠΎ Π½Π΅ лаконичная спСцификация Scheme ΠΎΠ±ΡŠΡ‘ΠΌΠΎΠΌ мСньшС 100 страниц ΠΈ Π½Π΅ Π²Ρ‹Π»ΠΈΠ·Π°Π½Π½Ρ‹ΠΉ Standard ML, состоящий ΠΈΠ· 300. Π£Π΄ΠΎΠ²ΠΎΠ»ΡŒΡΡ‚Π²ΠΈΠ΅ ΠΎΡ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ со стандартом C Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π½ΠΈΠΊΡ‚ΠΎ: Π½ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ компиляторов, Π½ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°, Π½ΠΈ программисты.

Но Π½Π°Π΄ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ стандарт C разрабатывался постфактум, ΡƒΠΆΠ΅ послС появлСния мноТСства Β«ΠΏΠΎΡ‡Ρ‚ΠΈ-Π΅Π»Π΅-Ρ‚ΠΎΠ»ΡŒΠΊΠΎ мСстами» совмСстимых Π΄ΠΈΠ°Π»Π΅ΠΊΡ‚ΠΎΠ². Авторы ANSI C ΠΏΡ€ΠΎΠ΄Π΅Π»Π°Π»ΠΈ ΠΎΠ³Ρ€ΠΎΠΌΠ½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ, ΠΎΠ±ΠΎΠ±Ρ‰ΠΈΠ² ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ ΠΏΡ€ΠΈΠΊΡ€Ρ‹Π² бСсчислСнными «костылями» Π½Π΅ΠΎΡ€Ρ‚ΠΎΠ³ΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π² Π΄ΠΈΠ·Π°ΠΉΠ½Π΅ языка.

ΠœΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ странным, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ Π²ΠΎΠΎΠ±Ρ‰Π΅ ΠΊΡ‚ΠΎ-Ρ‚ΠΎ взялся Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ. Но C Π±Ρ‹Π» Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ мноТСством компиляторов. Π― Π½Π΅ Π±ΡƒΠ΄Ρƒ ΠΏΠ΅Ρ€Π΅ΡΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Ρ‡ΡƒΠΆΠΈΠ΅ Π±Π°ΠΉΠΊΠΈ ΠΎ Π·ΠΎΠΎΠΏΠ°Ρ€ΠΊΠ΅ ΠΌΠΈΡ€Π° UNIX ΠΊΠΎΠ½Ρ†Π° 80-Ρ…, Ρ‚Π΅ΠΌ Π±ΠΎΠ»Π΅Π΅ Ρ‡Ρ‚ΠΎ сам Π² Ρ‚ΠΎ врСмя считал Π½Π΅ слишком ΡƒΠ²Π΅Ρ€Π΅Π½Π½ΠΎ ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄ΠΎ пяти. Но, ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, стандарт Π±Ρ‹Π» всСм Π² индустрии Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½ΡƒΠΆΠ΅Π½.

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

На самом Π΄Π΅Π»Π΅ соврСмСнный стандарт C Π½Π΅ Ρ‚Π°ΠΊ ΡƒΠΆ ΠΈ ΠΏΠ»ΠΎΡ…. Π‘ΠΎΠ»Π΅Π΅-ΠΌΠ΅Π½Π΅Π΅ ΠΎΠΏΡ‹Ρ‚Π½Ρ‹ΠΉ программист способСн Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π΅ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ компилятор C Π² Ρ€Π°Π·ΡƒΠΌΠ½Ρ‹Π΅ сроки, Ρ‡Ρ‚ΠΎ подтвСрТдаСтся сущСствованиСм мноТСства ΠΏΠΎΠ»ΡƒΠ»ΡŽΠ±ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΡ… Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ (Ρ‚Π΅Ρ… ΠΆΠ΅ TCC, LCC ΠΈ 8cc).

НаличиС общСпринятого стандарта ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ C удовлСтворяСт послСднСму ΠΈΠ· Π½Π°ΡˆΠΈΡ… Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ ΠΊ языку Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня: этот язык строится ΠΎΡ‚ спСцификации, Π° Π½Π΅ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ.

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

Π”Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, сущСствуСт мноТСство Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ² Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎΠΌΡƒ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρƒ с ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ исполнСниСм ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ: ΠΌΠΎΠ΄Π΅Π»ΠΈ SIMD Π² стилС GPU, ΠΌΠΎΠ΄Π΅Π»ΠΈ Π² стилС абстрактной ΠΌΠ°ΡˆΠΈΠ½Ρ‹ Erlang ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅. Но ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· этих ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠ² ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΡƒΡŽ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈ использовании Π² Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½ΠΎΠΌ процСссорС.

GPU, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ½ΠΎΠΆΠ°ΡŽΡ‚ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ Π² ΠΈΠ³Ρ€Π°Ρ… ΠΈ машинном ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠΈ, Π½ΠΎ ΠΈΡ… слоТно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для трассировки Π»ΡƒΡ‡Π΅ΠΉ. Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, эта модСль ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для спСциализированных ускоритСлСй, Π½ΠΎ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ для процСссоров ΠΎΠ±Ρ‰Π΅Π³ΠΎ назначСния.

Erlang прСкрасно Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² кластСрС, Π½ΠΎ ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΡƒΡŽ quick sort ΠΈΠ»ΠΈ Π±Ρ‹ΡΡ‚Ρ€ΡƒΡŽ Ρ…Π΅Ρˆ-Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π½Π° Π½Ρ‘ΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ. МодСль нСзависимых Π°ΠΊΡ‚ΠΎΡ€ΠΎΠ² Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° Π±ΠΎΠ»Π΅Π΅ высоком ΡƒΡ€ΠΎΠ²Π½Π΅, Π² большом кластСрС, Π³Π΄Π΅ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΡƒΠ·Π΅Π» β€” всё Ρ‚Π° ΠΆΠ΅ Π²Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ машина с Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹ΠΌ процСссором.

ΠœΠ΅ΠΆΠ΄Ρƒ Ρ‚Π΅ΠΌ, соврСмСнныС x86-совмСстимыС процСссоры Π΄Π°Π²Π½ΠΎ ΡƒΠΆΠ΅ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ Π² сСбя Π½Π°Π±ΠΎΡ€Ρ‹ Π²Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹Ρ… инструкций, схоТиС с GPU ΠΏΠΎ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ°ΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹, Π½ΠΎ ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‰ΠΈΠ΅ ΠΎΠ±Ρ‰ΡƒΡŽ схСму процСссора Π² стилС Ρ„ΠΎΠ½ НСймана Π² Ρ†Π΅Π»ΠΎΠΌ. НС сомнСваюсь, Ρ‡Ρ‚ΠΎ Π»ΡŽΠ±Ρ‹Π΅ достаточно ΠΎΠ±Ρ‰ΠΈΠ΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹ ΠΊ вычислСниям Π±ΡƒΠ΄ΡƒΡ‚ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ Π² популярныС процСссоры.

Π•ΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π²Ρ‚ΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π½ΠΎΠ΅ ΠΌΠ½Π΅Π½ΠΈΠ΅: Π±ΡƒΠ΄ΡƒΡ‰Π΅Π΅ Π·Π° спСциализированными ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌΠΈ ускоритСлями. Под Ρ‚Π°ΠΊΠΈΠ΅ Π½Π΅ΠΎΡ€Π΄ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ ΠΆΠ΅Π»Π΅Π·ΠΊΠΈ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΠΌΠ΅Π΅Ρ‚ смысл Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ языки с особой сСмантикой. Но ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ ΠΎΠ±Ρ‰Π΅Π³ΠΎ назначСния Π±Ρ‹Π» ΠΈ остаётся ΠΏΠΎΡ…ΠΎΠΆΠΈΠΌ Π½Π° Ρ‚Ρƒ ΡΠ°ΠΌΡƒΡŽ PDP-11, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Ρ‚Π°ΠΊ Ρ…ΠΎΡ€ΠΎΡˆΠΎ подходят C-ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ ΠΈΠΌΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ языки.

Π’ ΡΡ‚Π°Ρ‚ΡŒΠ΅ Чизнэлла Π΅ΡΡ‚ΡŒ Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΡ€Π΅Ρ‡ΠΈΠ΅. Он ΠΏΠΈΡˆΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ для обСспСчСния скорости ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° C процСссоры ΠΈΠΌΠΈΡ‚ΠΈΡ€ΡƒΡŽΡ‚ Π°Π±ΡΡ‚Ρ€Π°ΠΊΡ‚Π½ΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ C (ΠΈ Π΄Π°Π²Π½ΠΎ Π·Π°Π±Ρ‹Ρ‚ΡƒΡŽ PDP-11), послС Ρ‡Π΅Π³ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹. Но я Π½Π΅ понимаю, ΠΏΠΎΡ‡Π΅ΠΌΡƒ это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Β«C β€” Π½Π΅ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹ΠΉ язык».

Π’ΠΎΠΎΠ±Ρ‰Π΅ ΠΆΠ΅ Ρ€Π΅Ρ‡ΡŒ ΠΈΠ΄Ρ‘Ρ‚ Π½Π΅ ΠΎ нСдостатках C ΠΊΠ°ΠΊ языка, Π° ΠΎ ΠΊΡ€ΠΈΡ‚ΠΈΠΊΠ΅ распространённых Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ Π² стилС Ρ„ΠΎΠ½ НСймана ΠΈ Π²Ρ‹Ρ‚Π΅ΠΊΠ°ΡŽΡ‰Π΅ΠΉ ΠΈΠ· Π½ΠΈΡ… ΠΌΠΎΠ΄Π΅Π»ΠΈ программирования. Но ΠΏΠΎΠΊΠ° Π½Π΅ ΠΏΠΎΡ…ΠΎΠΆΠ΅, Ρ‡Ρ‚ΠΎ индустрия Π³ΠΎΡ‚ΠΎΠ²Π° ΠΎΡ‚ΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π½ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ (ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅, Π½Π΅ Π² процСссорах ΠΎΠ±Ρ‰Π΅Π³ΠΎ назначСния).

НСсмотря Π½Π° Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ мноТСства спСциализированных процСссоров Π²Ρ€ΠΎΠ΄Π΅ GPU ΠΈ TPU, Π² настоящий ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° Ρ„ΠΎΠ½ НСймана ΠΏΡ€Π°Π²ΠΈΡ‚ Π±Π°Π» ΠΈ индустрии Π½ΡƒΠΆΠ΅Π½ язык, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΏΠΎΠΏΡƒΠ»ΡΡ€Π½Π΅ΠΉΡˆΠ΅ΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π° ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π±ΠΎΠ»Π΅Π΅ Π½ΠΈΠ·ΠΊΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅. Достаточно простой, ΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π½Π° дСсятки ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ ΠΈ стандартизированный язык программирования β€” это C (ΠΈ Π΅Π³ΠΎ блиТайшиС родствСнники).

ΠŸΡ€ΠΈ всём ΠΏΡ€ΠΈ этом Ρƒ C Ρ…Π²Π°Ρ‚Π°Π΅Ρ‚ нСдостатков: архаичная Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Π·Π°ΠΏΡƒΡ‚Π°Π½Π½Ρ‹ΠΉ ΠΈ ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΡ€Π΅Ρ‡ΠΈΠ²Ρ‹ΠΉ стандарт, Π³Ρ€ΡƒΠ±Ρ‹Π΅ ошибки Π² Π΄ΠΈΠ·Π°ΠΉΠ½Π΅. Но, судя ΠΏΠΎ всСму, ΠΊΠΎΠ΅-Ρ‡Ρ‚ΠΎ создатСли языка всё ΠΆΠ΅ сдСлали ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ.

Π’Π°ΠΊ ΠΈΠ»ΠΈ ΠΈΠ½Π°Ρ‡Π΅, Π½Π°ΠΌ ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ Π½ΡƒΠΆΠ΅Π½ язык Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня, ΠΏΡ€ΠΈΡ‡Ρ‘ΠΌ построСнный ΠΈΠΌΠ΅Π½Π½ΠΎ для популярных фоннСймановских ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠ². И пускай C устарСл, Π½ΠΎ, Π²ΠΈΠ΄ΠΈΠΌΠΎ, Π»ΡŽΠ±ΠΎΠΌΡƒ Π΅Π³ΠΎ ΠΏΡ€Π΅Π΅ΠΌΠ½ΠΈΠΊΡƒ всё Ρ€Π°Π²Π½ΠΎ придётся ΠΎΡ‚Ρ‚Π°Π»ΠΊΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ Ρ‚Π΅Ρ… ΠΆΠ΅ самых ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ².

Π―Π·Ρ‹ΠΊ программирования Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня — это… Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π―Π·Ρ‹ΠΊ программирования Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня?

ο»Ώ

Π―Π·Ρ‹ΠΊ программирования Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня

НизкоуровнСвый язык программирования (язык программирования Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня) β€” язык программирования, Π±Π»ΠΈΠ·ΠΊΠΈΠΉ ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ нСпосрСдствСнно Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Ρ… ΠΊΠΎΠ΄Π°Ρ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Java, Microsoft .NET) процСссора. Для обозначСния ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ примСняСтся мнСмоничСскоС ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π­Ρ‚ΠΎ позволяСт Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π½Π΅ Π² Π²ΠΈΠ΄Π΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Ρ… Π½ΡƒΠ»Π΅ΠΉ ΠΈ Π΅Π΄ΠΈΠ½ΠΈΡ†, Π° Π² Π²ΠΈΠ΄Π΅ осмыслСнных сокращСний слов чСловСчСского языка (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ английских).

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

Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ особСнности ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ сСмСйства процСссоров. ΠžΠ±Ρ‰Π΅ΠΈΠ·Π²Π΅ΡΡ‚Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π³ΠΎ языка β€” язык ассСмблСра, хотя ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Π΅Π΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ ΠΎ Π³Ρ€ΡƒΠΏΠΏΠ΅ языков ассСмблСра. Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ! Для ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ процСссора сущСствуСт нСсколько Π²ΠΈΠ΄ΠΎΠ² языка ассСмблСра! Они ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‚ Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ…, Π½ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ Π½Π°Π±ΠΎΡ€ΠΎΠΌ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ (Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ² ΠΈ макросов).

Π’Π°ΠΊΠΆΠ΅ ΠΊ языкам Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня условно ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΡ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ MSIL, примСняСмый Π² ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ Microsoft .NET, Π€ΠΎΡ€Ρ‚, .

Π‘ΠΌ.Ρ‚Π°ΠΊΠΆΠ΅

Бсылки

Wikimedia Foundation.
2010.

  • Π―Π·Ρ‹ΠΊ ΠΏΠΎΠ΄ΠΎΠ½ΠΊΠΎΠ²
  • Π―Π·Ρ‹ΠΊ программирования свСрхвысокого уровня

Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ «Π―Π·Ρ‹ΠΊ программирования Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня» Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… словарях:

  • Π―Π·Ρ‹ΠΊ программирования высокого уровня β€” ВысокоуровнСвый язык программирования язык программирования, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΉ для быстроты ΠΈ удобства использования программистом. Основная Ρ‡Π΅Ρ€Ρ‚Π° высокоуровнСвых языков это абстракция, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ смысловых конструкций, ΠΊΡ€Π°Ρ‚ΠΊΠΎ ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΡ… Ρ‚Π°ΠΊΠΈΠ΅ … Β  ВикипСдия

  • Π―Π·Ρ‹ΠΊ программирования ΠœΠΎΠ΄ΡƒΠ»Π° β€” алгоритмичСский язык, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹ΠΉ для составлСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΡ… Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. Π’ языкС ΠœΠΎΠ΄ΡƒΠ»Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ: понятия модуля ΠΈ процСсса; срСдства программирования Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π° языкС ΠœΠΎΠ΄ΡƒΠ»Π° формируСтся ΠΈΠ· нСзависимых… … Β  Ѐинансовый ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ

  • Π―Π—Π«Πš ΠŸΠ ΠžΠ“Π ΠΠœΠœΠ˜Π ΠžΠ’ΠΠΠ˜Π― β€” это ΡΠΎΠ²ΠΎΠΊΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ Π½Π°Π±ΠΎΡ€Π° символов (Π°Π»Ρ„Π°Π²ΠΈΡ‚Π°) систСмы, ΠΏΡ€Π°Π²ΠΈΠ» образования (синтаксис) ΠΈ истолкования конструкции ΠΈΠ· символов (сСмантика) для задания Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² с использованиСм символов СстСствСнного языка. Π’ самом ΠΎΠ±Ρ‰Π΅ΠΌ Π²ΠΈΠ΄Π΅ Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ язык… … Β  Π‘ΠΎΠ»ΡŒΡˆΠ°Ρ политСхничСская энциклопСдия

  • Π―Π—Π«Πš ΠŸΠ ΠžΠ“Π ΠΠœΠœΠ˜Π ΠžΠ’ΠΠΠ˜Π― β€” (programming language) Π―Π·Ρ‹ΠΊ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ для Π²Ρ‹Π΄Π°Ρ‡ΠΈ задания (ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹) (program) ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρƒ (computer). БущСствуСт Π΄Π²Π° основных Π²ΠΈΠ΄Π° языков программирования: языки Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня (low level languages) ΠΈ языки высокого уровня (high level… … Β  Π‘Π»ΠΎΠ²Π°Ρ€ΡŒ бизнСс-Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ²

  • Π―Π·Ρ‹ΠΊ программирования Π‘ΠΈ β€” Π‘ΠΈ Π‘Π΅ΠΌΠ°Π½Ρ‚ΠΈΠΊΠ°: ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½Ρ‹ΠΉ Π’ΠΈΠΏ исполнСния: ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ Появился Π²: 1969 73 Π³. Автор(Ρ‹): КСн Вомпсон, ДСнис Π ΠΈΡ‚Ρ‡ΠΈ Випизация Π΄Π°Π½Π½Ρ‹Ρ…: статичСская ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ … Β  ВикипСдия

  • Π―Π·Ρ‹ΠΊ программирования C β€” Π‘ΠΈ Π‘Π΅ΠΌΠ°Π½Ρ‚ΠΈΠΊΠ°: ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½Ρ‹ΠΉ Π’ΠΈΠΏ исполнСния: ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ Появился Π²: 1969 73 Π³. Автор(Ρ‹): КСн Вомпсон, ДСнис Π ΠΈΡ‚Ρ‡ΠΈ Випизация Π΄Π°Π½Π½Ρ‹Ρ…: статичСская ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ … Β  ВикипСдия

  • Π―Π·Ρ‹ΠΊ программирования β€” Π―Π·Ρ‹ΠΊ программирования  Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Π°Ρ знаковая систСма, прСдназначСнная для записи ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. Π―Π·Ρ‹ΠΊ программирования опрСдСляСт Π½Π°Π±ΠΎΡ€ лСксичСских, синтаксичСских ΠΈ сСмантичСских ΠΏΡ€Π°Π²ΠΈΠ», Π·Π°Π΄Π°ΡŽΡ‰ΠΈΡ… внСшний Π²ΠΈΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ дСйствия,… … Β  ВикипСдия

  • Π―Π—Π«Πš ΠŸΠ ΠžΠ“Π ΠΠœΠœΠ˜Π ΠžΠ’ΠΠΠ˜Π― β€” Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ язык для описания Π΄Π°Π½Π½Ρ‹Ρ… (ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ) ΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° (ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹) ΠΈΡ… ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π½Π° Π­Π’Πœ. ΠžΡΠ½ΠΎΠ²Ρƒ Π―. ΠΏ. ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ алгоритмичСскиС языки. ΠŸΠ΅Ρ€Π²Ρ‹ΠΌΠΈ Π―. ΠΏ. Π±Ρ‹Π»ΠΈ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Π΅ языки, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ собой систСмы ΠΊΠΎΠΌΠ°Π½Π΄ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ Π­Π’Πœ,… … Β  Π‘ΠΎΠ»ΡŒΡˆΠΎΠΉ энциклопСдичСский политСхничСский ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ

  • НизкоуровнСвый язык программирования β€” (язык программирования Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня) язык программирования, Π±Π»ΠΈΠ·ΠΊΠΈΠΉ ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ нСпосрСдствСнно Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Ρ… ΠΊΠΎΠ΄Π°Ρ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Java, Microsoft .NET) процСссора. Для обозначСния ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ … Β  ВикипСдия

  • Cyclone (язык программирования) β€” Π£ этого Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π° ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ значСния, см. Cyclone. Cyclone Π‘Π΅ΠΌΠ°Π½Ρ‚ΠΈΠΊΠ°: ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½Ρ‹ΠΉ … Β  ВикипСдия

Π‘ β€” Π½Π΅ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹ΠΉ язык / Π‘Π»ΠΎΠ³ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Badoo / Π₯Π°Π±Ρ€

Π’Π°Ρˆ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ Π½Π΅ являСтся быстрой вСрсиСй PDP-11

ΠŸΡ€ΠΈΠ²Π΅Ρ‚, Π₯Π°Π±Ρ€!

МСня Π·ΠΎΠ²ΡƒΡ‚ Антон Π”ΠΎΠ²Π³Π°Π»ΡŒ, я Π‘ (ΠΈ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ) Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π² Badoo.

МнС попалась Π½Π° Π³Π»Π°Π·Π° ΡΡ‚Π°Ρ‚ΡŒΡ Дэвида Чизнэлла, исслСдоватСля ΠšΠ΅ΠΌΠ±Ρ€ΠΈΠ΄ΠΆΡΠΊΠΎΠ³ΠΎ унивСрситСта, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠ½ оспариваСт общСпринятоС суТдСниС ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π‘ — язык Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня, ΠΈ Π΅Π³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΌΠ½Π΅ показались достаточно интСрСсными.

Π’ свСтС Π½Π΅Π΄Π°Π²Π½ΠΎ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹Ρ… уязвимостСй Meltdown ΠΈ Spectre стоит ΠΏΠΎΡ‚Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ врСмя Π½Π° выяснСниС ΠΏΡ€ΠΈΡ‡ΠΈΠ½ ΠΈΡ… появлСния. ОбС эти уязвимости эксплуатировали спСкулятивноС Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ инструкций процСссорами ΠΈ позволяли Π°Ρ‚Π°ΠΊΡƒΡŽΡ‰Π΅ΠΌΡƒ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ ΠΏΠΎ сторонним ΠΊΠ°Π½Π°Π»Π°ΠΌ. Π’Ρ‹Π·Π²Π°Π²ΡˆΠΈΠ΅ уязвимости особСнности процСссоров наряду с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ Π±Ρ‹Π»ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ программисты Π½Π° C ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π»ΠΈ Π²Π΅Ρ€ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΡƒΡŽΡ‚ Π½Π° языкС Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня, хотя это Π½Π΅ Ρ‚Π°ΠΊ ΡƒΠΆΠ΅ дСсятки Π»Π΅Ρ‚.

ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΠΈ процСссоров Π½Π΅ ΠΎΠ΄ΠΈΠ½ΠΎΠΊΠΈ Π² этом. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ компиляторов C/C++ Ρ‚ΠΎΠΆΠ΅ внСсли свою Π»Π΅ΠΏΡ‚Ρƒ.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ язык Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня?

АмСриканский ΡƒΡ‡Ρ‘Π½Ρ‹ΠΉ Π² области ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹Ρ… Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ ΠΈ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Π»Π°ΡƒΡ€Π΅Π°Ρ‚ ΠΏΡ€Π΅ΠΌΠΈΠΈ Π’ΡŒΡŽΡ€ΠΈΠ½Π³Π° Алан ΠŸΠ΅Ρ€Π»ΠΈΡ Π΄Π°Π» Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅:

Β«Π―Π·Ρ‹ΠΊ программирования являСтся Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹ΠΌ, Ссли написанныС Π½Π° Π½Ρ‘ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ внимания ΠΊ нСсущСствСнному».

Π₯отя это ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ относится ΠΊ Π‘, ΠΎΠ½ΠΎ Π½Π΅ Π΄Π°Ρ‘Ρ‚ понимания Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ люди ΠΆΠ΅Π»Π°ΡŽΡ‚ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ Π² языкС Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня. Π Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ свойства Π·Π°ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ людСй ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ язык Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹ΠΌ. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅ Π½Π΅ΠΊΡƒΡŽ ΡˆΠΊΠ°Π»Ρƒ языков программирования с ассСмблСром Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠΎΠ½Ρ†Π΅ ΠΈ интСрфСйсом ΠΊ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρƒ Enterprise β€” Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΌ. НизкоуровнСвыС языки Β«Π±Π»ΠΈΠΆΠ΅ ΠΊ ΠΆΠ΅Π»Π΅Π·ΡƒΒ», Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ высокоуровнСвыС Π±Π»ΠΈΠΆΠ΅ ΠΊ Ρ‚ΠΎΠΌΡƒ, ΠΊΠ°ΠΊ Π΄ΡƒΠΌΠ°ΡŽΡ‚ люди.

Π§Ρ‚ΠΎΠ±Ρ‹ Π±Ρ‹Ρ‚ΡŒ Β«Π±Π»ΠΈΠΆΠ΅ ΠΊ ΠΆΠ΅Π»Π΅Π·ΡƒΒ», язык Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ абстракции, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ абстракциям Ρ†Π΅Π»Π΅Π²ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹. Π›Π΅Π³ΠΊΠΎ Π΄ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π‘ Π±Ρ‹Π» Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹ΠΌ языком Π² PDP-11. ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, плоскоС адрСсноС пространство, Π΄Π°ΠΆΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΏΡ€Π΅- ΠΈ постинкрСмСнта ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ лоТились Π½Π° Ρ€Π΅ΠΆΠΈΠΌΡ‹ адрСсации PDP-11.

БыстрыС эмуляторы PDP-11

ΠšΠ»ΡŽΡ‡Π΅Π²Π°Ρ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° появлСния уязвимостСй Spectre ΠΈ Meltdown Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ создатСли процСссоров Π½Π΅ просто Π΄Π΅Π»Π°Π»ΠΈ быстрыС процСссоры, Π° Π΄Π΅Π»Π°Π»ΠΈ быстрыС процСссоры с интСрфСйсом PDP-11. Π­Ρ‚ΠΎ Π²Π°ΠΆΠ½ΠΎ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ позволяСт программистам Π½Π° Π‘ ΠΈ дальшС Π²Π΅Ρ€ΠΈΡ‚ΡŒ Π² Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΈΡ… язык Π±Π»ΠΈΠ·ΠΎΠΊ ΠΊ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠΉ части.

Код Π‘ прСдоставляСт Π² основном ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ абстрактный Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ (Π΄ΠΎ C11 β€” ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ, Ссли ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ нСстандартныС Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ). Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ° β€” это Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, опСрация, которая довольно Π΄ΠΎΡ€ΠΎΠ³Π°. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ процСссоры, ТСлая ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΊΠΎΠ΄ C, ΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‚ΡΡ Π½Π° ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΊΠΎΠΌΠ°Π½Π΄ (instruction-level parallelism, ILP). Они Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ сосСдниС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ нСзависимыС ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ услоТняСт процСссоры ΠΈ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΡŽ потрСблСния энСргии, Π½ΠΎ позволяСт программистам ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΠΎ большСй части ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ этому графичСскиС процСссоры (GPU) Π΄ΠΎΡΡ‚ΠΈΠ³Π°ΡŽΡ‚ высокой ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΏΡƒΡ‚Ρ‘ΠΌ: ΠΎΠ½ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ написания ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ.

Высокий ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΊΠΎΠΌΠ°Π½Π΄ являСтся прямой ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ появлСния Spectre ΠΈ Meltdown. Π‘ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ процСссор Intel выполняСт Π΄ΠΎ 180 инструкций ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ (Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ абстрактной ΠΌΠ°ΡˆΠΈΠ½Ρ‹ C, которая ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ прСдыдущая инструкция выполнится ΠΏΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ начнётся Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ). Випичная эвристика ΠΊΠΎΠ΄Π° Π½Π° Π‘ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΎΠ΄Π½ΠΎ Π²Π΅Ρ‚Π²Π»Π΅Π½ΠΈΠ΅ Π² срСднСм Π½Π° ΠΊΠ°ΠΆΠ΄Ρ‹Π΅ сСмь инструкций. Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ инструкций ΠΏΠΎΠ»Π½Ρ‹ΠΌ, Ρ‚ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠ³Π°Π΄Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ 25 Π²Π΅Ρ‚Π²Π΅ΠΉ. Π­Ρ‚ΠΎ, Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, добавляСт слоТности β€” Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΡƒΠ³Π°Π΄Π°Π½Π½ΡƒΡŽ Π²Π΅Ρ‚Π²ΡŒ процСссор сначала просчитаСт, Π° ΠΏΠΎΡ‚ΠΎΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ расчётов выбросит, Ρ‡Ρ‚ΠΎ Π½Π΅Π³Π°Ρ‚ΠΈΠ²Π½ΠΎ влияСт Π½Π° энСргопотрСблСниС. Π­Ρ‚ΠΈ Π²Ρ‹Π±Ρ€ΠΎΡˆΠ΅Π½Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ Π²ΠΈΠ΄ΠΈΠΌΡ‹Π΅ косвСнныС Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹, Ρ‡Ρ‚ΠΎ ΠΈ Π±Ρ‹Π»ΠΎ использовано Π² Π°Ρ‚Π°ΠΊΠ°Ρ… Spectre ΠΈ Meltdown.

ΠŸΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ рСгистров потрСбляСт ΠΌΠ½ΠΎΠ³ΠΎ энСргии ΠΈ ΠΏΠ»ΠΎΡ‰Π°Π΄ΠΈ кристалла Π² соврСмСнных процСссорах. Π•Π³ΠΎ нСльзя ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ энСргии, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Π΅Π³ΠΎ Π½Π΅ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΌ Π² эпоху Β«Ρ‚Ρ‘ΠΌΠ½ΠΎΠ³ΠΎ крСмния», ΠΊΠΎΠ³Π΄Π° транзисторы стоят ΠΌΠ°Π»ΠΎ, Π½ΠΎ задСйствованныС транзисторы ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ†Π΅Π½Π½Ρ‹ΠΌ рСсурсом. Π­Ρ‚ΠΎ устройство отсутствуСт Π² GPU, Π³Π΄Π΅ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌ достигаСтся ΠΏΡƒΡ‚Ρ‘ΠΌ использования ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² вмСсто ΠΏΠΎΠΏΡ‹Ρ‚ΠΎΠΊ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ выполнСния ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. Если инструкции Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ зависимостСй, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ, Ρ‚ΠΎ ΠΈ Π² ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠΈ рСгистров Π½Π΅Ρ‚ нСобходимости.

Рассмотрим Π΅Ρ‰Ρ‘ ΠΎΠ΄Π½Ρƒ Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ Π΄ΠΈΠ·Π°ΠΉΠ½Π° Π‘: ΠΏΠ»ΠΎΡΠΊΡƒΡŽ ΠΏΠ°ΠΌΡΡ‚ΡŒ. Π•Ρ‘ Π½Π΅ сущСствуСт ΡƒΠΆΠ΅ ΠΏΠ°Ρ€Ρƒ дСсятилСтий. Π‘ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ процСссор Π·Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚Ρ€ΠΈ уровня ΠΊΠ΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρƒ рСгистрами ΠΈ основной ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ врСмя Π½Π° ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ послСднСй.

КСш скрыт ΠΎΡ‚ программиста ΠΈ ΠΏΠΎΡ‚ΠΎΠΌΡƒ нСдоступСн ΠΈΠ· C. Π­Ρ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ΅ использованиС кСша β€” это ΠΎΠ΄ΠΈΠ½ ΠΈΠ· способов ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° Π½Π° соврСмСнном процСссорС, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΎΠ½ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ скрыт ΠΎΡ‚ абстрактной ΠΌΠ°ΡˆΠΈΠ½Ρ‹ ΠΈ программисты Π²Ρ‹Π½ΡƒΠΆΠ΄Π΅Π½Ρ‹ ΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒΡΡ Π½Π° Π·Π½Π°Π½ΠΈΠ΅ Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ кСша (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‡Ρ‚ΠΎ Π΄Π²Π° Π²Ρ‹Ρ€ΠΎΠ²Π½Π΅Π½Π½Ρ‹Ρ… 64-Π±ΠΈΡ‚Π½Ρ‹Ρ… значСния ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Π² ΠΎΠ΄Π½ΠΎΠΉ строкС кСша) для написания эффСктивного ΠΊΠΎΠ΄Π°.

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ Π‘

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

К соТалСнию, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ простой трансляции нСльзя ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ быстрый ΠΊΠΎΠ΄ ΠΈΠ· Π‘.

АрхитСкторы процСссоров ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Ρ‹Π²Π°ΡŽΡ‚ гСроичСскиС усилия для создания Ρ‡ΠΈΠΏΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΊΠΎΠ΄ Π½Π° Π‘ быстро. Но ΡƒΡ€ΠΎΠ²Π½ΠΈ быстродСйствия, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΆΠΈΠ΄Π°ΡŽΡ‚ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ программисты, Π΄ΠΎΡΡ‚ΠΈΠ³Π°ΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ нСвСроятно слоТных ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΉ, выполняСмых компилятором.

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ Clang (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ части LLVM) β€” это ΠΎΠΊΠΎΠ»ΠΎ 2 ΠΌΠ»Π½ строк ΠΊΠΎΠ΄Π°. Для Π°Π½Π°Π»ΠΈΠ·Π° ΠΈ трансформации ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ для ускорСния Π‘, Π½ΡƒΠΆΠ½Ρ‹ ΠΎΠΊΠΎΠ»ΠΎ 200 000 строк ΠΊΠΎΠ΄Π° (Π±Π΅Π· ΡƒΡ‡Ρ‘Ρ‚Π° ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² ΠΈ пустых строк).

НапримСр, для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ большого количСства Π΄Π°Π½Π½Ρ‹Ρ… Π² C Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ. Для ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ выполнСния этого Ρ†ΠΈΠΊΠ»Π° Π½Π° соврСмСнном процСссорС компилятор Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ Ρ†ΠΈΠΊΠ»Π° Π½Π΅ зависят Π΄Ρ€ΡƒΠ³ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³Π°. ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово restrict ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΌΠΎΡ‡ΡŒ Π² этом случаС β€” ΠΎΠ½ΠΎ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ записи Π² ΠΎΠ΄ΠΈΠ½ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΌΠ΅ΡˆΠ°Ρ‚ΡŒ Ρ‡Ρ‚Π΅Π½ΠΈΡŽ ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ указатСля. Π­Ρ‚Π° информация Π² C Π³ΠΎΡ€Π°Π·Π΄ΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Π°, Ρ‡Π΅ΠΌ Π² Ρ‚Π°ΠΊΠΎΠΌ языкС, ΠΊΠ°ΠΊ Fortran, Ρ‡Ρ‚ΠΎ являСтся основной ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ C Π½Π΅ сумСл Π²Ρ‹Ρ‚Π΅ΡΠ½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΈΠ· сфСры Π²Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… вычислСний.

ПослС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ компилятор ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ», Ρ‡Ρ‚ΠΎ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ нСзависимы Π΄Ρ€ΡƒΠ³ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³Π°, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ шаг β€” ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ пропускная ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ соврСмСнных процСссоров Π² Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅β€”Π²ΠΎΡΠ΅ΠΌΡŒ Ρ€Π°Π· Π²Ρ‹ΡˆΠ΅ для Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, Ρ‡Π΅ΠΌ для скалярного. Π―Π·Ρ‹ΠΊ Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня для Ρ‚Π°ΠΊΠΈΡ… процСссоров ΠΈΠΌΠ΅Π» Π±Ρ‹ собствСнныС Π²Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ‹. Π’ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠΌ прСдставлСнии LLVM ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΊΠ°ΠΊ Ρ€Π°Π· Ρ‚Π°ΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ всСгда ΠΏΡ€ΠΎΡ‰Π΅ Ρ€Π°Π·Π±ΠΈΡ‚ΡŒ большиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с Π²Π΅ΠΊΡ‚ΠΎΡ€Π°ΠΌΠΈ Π½Π° нСсколько ΠΌΠ°Π»Π΅Π½ΡŒΠΊΠΈΡ…, Ρ‡Π΅ΠΌ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ бОльшиС Π²Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ.

На этом этапС ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€Π°ΠΌ приходится Π±ΠΎΡ€ΠΎΡ‚ΡŒΡΡ с ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ памяти C. Π‘ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ структуры с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌ прСфиксом ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ взаимозамСняСмо, ΠΈ прСдоставляСт доступ ΠΊ ΡΠΌΠ΅Ρ‰Π΅Π½ΠΈΡŽ ΠΏΠΎΠ»Π΅ΠΉ структур Π² языкС. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ компилятор Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΎΡ‡Π΅Ρ€Ρ‘Π΄Π½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ»Π΅ΠΉ Π² структурС ΠΈΠ»ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π²Ρ‹Ρ€Π°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ для ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, трансформировав структуру ΠΈΠ· массивов Π² массив структур ΠΈΠ»ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚). Π­Ρ‚ΠΎ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π΅ являСтся ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ Π² языках Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня, Π³Π΄Π΅ Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ контроля Π½Π°Π΄ располоТСниСм ΠΏΠΎΠ»Π΅ΠΉ Π² структурС, Π½ΠΎ это Π΄Π΅Π»Π°Π΅Ρ‚ слоТнСС Π·Π°Π΄Π°Ρ‡Ρƒ ускорСния C.

C Ρ‚Π°ΠΊΠΆΠ΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ выравнивания Π² ΠΊΠΎΠ½Ρ†Π΅ структуры, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ отсутствиС выравнивания Π² массивах. Π’Ρ‹Ρ€Π°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ β€” довольно слоТная Ρ‡Π°ΡΡ‚ΡŒ спСцификации C, которая ΠΏΠ»ΠΎΡ…ΠΎ взаимодСйствуСт с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ частями языка. НапримСр, Ρƒ вас Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ Π΄Π²Π΅ структуры, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ сравнСния Π±Π΅Π· ΡƒΡ‡Ρ‘Ρ‚Π° Ρ‚ΠΈΠΏΠΎΠ² (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ memcmp()), поэтому копия структуры Ρ‚ΠΎΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Ρ€ΠΎΠ²Π½Π΅Π½Π°. Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ выравнивания Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ врСмя.

Рассмотрим Π΄Π²Π΅ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ компилятор C: SROA (scalar replacement of aggregates, скалярная Π·Π°ΠΌΠ΅Π½Π° Π°Π³Ρ€Π΅Π³Π°Ρ‚ΠΎΠ²) ΠΈ Ρ€Π°Π·ΠΌΡ‹ΠΊΠ°Π½ΠΈΠ΅ Ρ†ΠΈΠΊΠ»Π°.

SROA пытаСтся Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ структуры ΠΈ массивы фиксированного Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π½Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅. Π­Ρ‚ΠΎ позволяСт компилятору ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ доступ ΠΊ Π½ΠΈΠΌ нСзависимо Π΄Ρ€ΡƒΠ³ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³Π° ΠΈ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ, Ссли ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ Π΅Ρ‘ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ. Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях косвСнным эффСктом этой ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ являСтся ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ выравнивания.

Вторая оптимизация, Ρ€Π°Π·ΠΌΡ‹ΠΊΠ°Π½ΠΈΠ΅ Ρ†ΠΈΠΊΠ»Π°, ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ Ρ†ΠΈΠΊΠ» с условиСм Π² условиС с Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ Ρ†ΠΈΠΊΠ»Π°ΠΌΠΈ Π² ΠΎΠ±Π΅ΠΈΡ… вСтвях. Π­Ρ‚ΠΎ мСняСт порядок выполнСния Π² противовСс ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΡŽ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ программист Π·Π½Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π½Π° языкС Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня. И Π΅Ρ‰Ρ‘ это создаёт ΡΠ΅Ρ€ΡŒΡ‘Π·Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ Π² C ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈ Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅.

Π’ Π‘ нСинициализированная пСрСмСнная ΠΈΠΌΠ΅Π΅Ρ‚ Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹ΠΌ ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ. Π­Ρ‚ΠΎ Π²Π°ΠΆΠ½ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ позволяСт Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π»Π΅Π½ΠΈΠ²ΡƒΡŽ ΠΏΠ΅Ρ€Π΅Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ (lazy recycling) страниц памяти. НапримСр, Π²ΠΎ FreeBSD рСализация malloc() сообщаСт систСмС, Ρ‡Ρ‚ΠΎ страницы Π±ΠΎΠ»Π΅Π΅ Π½Π΅ задСйствованы, Π° систСма ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΏΠ΅Ρ€Π²ΡƒΡŽ запись Π² страницу ΠΊΠ°ΠΊ Π΄ΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ это Π½Π΅ Ρ‚Π°ΠΊ. ΠžΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ памяти ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ староС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Ρ‚ΠΎΠ³Π΄Π° опСрационная систСма ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ страницу памяти, послС Ρ‡Π΅Π³ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π΅Ρ‘ Π½Π° Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½ΡƒΡŽ нулями страницу ΠΏΡ€ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ записи Π² Π΄Ρ€ΡƒΠ³ΠΎΠ΅ мСсто страницы. Π’Ρ‚ΠΎΡ€ΠΎΠ΅ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ мСсту страницы ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ Π½ΡƒΠ»Π΅Π²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

Если Π² условии ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Ρ‚ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ‚ΠΎΠΆΠ΅ Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½ β€” ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΡ‚ΠΈ Ρ‡Ρ‚ΠΎ ΡƒΠ³ΠΎΠ΄Π½ΠΎ. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΏΠΎ Ρ€Π°Π·ΠΌΡ‹ΠΊΠ°Π½ΠΈΡŽ Ρ†ΠΈΠΊΠ»Π°, Π³Π΄Π΅ Ρ†ΠΈΠΊΠ» выполняСтся ноль Ρ€Π°Π·. Π’ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»Π΅ вСсь Ρ†ΠΈΠΊΠ» являСтся ΠΌΡ‘Ρ€Ρ‚Π²Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ. Π’ Ρ€Π°Π·ΠΎΠΌΠΊΠ½ΡƒΡ‚ΠΎΠΉ вСрсии Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π΅ΡΡ‚ΡŒ условиС с ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, которая ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π°.

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΌΡ‘Ρ€Ρ‚Π²Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ Π² Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅. Π­Ρ‚ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½Π° ΠΈΠ· ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈ Π±ΠΎΠ»Π΅Π΅ Ρ‚Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΌ исслСдовании сСмантики C ΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π½Π΅Π½Π°Π΄Ρ‘ΠΆΠ½Ρ‹ΠΌΠΈ.

Π’ ΠΈΡ‚ΠΎΠ³Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ Π½Π° C Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ быстро, Π½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π°Ρ‚Ρ€Π°Ρ‚ΠΈΠ² тысячи Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠΎ-Π»Π΅Ρ‚ Π½Π° созданиС достаточно ΡƒΠΌΠ½ΠΎΠ³ΠΎ компилятора. Но ΠΈ это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ условии Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΡ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΡ€Π°Π²ΠΈΠ» языка. Π‘ΠΎΠ·Π΄Π°Ρ‚Π΅Π»ΠΈ компиляторов ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ программистам Π½Π° C ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΏΠΈΡˆΡƒΡ‚ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Β«Π±Π»ΠΈΠ·ΠΎΠΊ ΠΊ ΠΆΠ΅Π»Π΅Π·ΡƒΒ», Π½ΠΎ ΠΈΠΌ приходится Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Π΅Π΄Ρ‘Ρ‚ сСбя ΠΏΠΎ-Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ программисты ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π»ΠΈ Π²Π΅Ρ€ΠΈΡ‚ΡŒ Π² Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΏΠΈΡˆΡƒΡ‚ Π½Π° быстром языкС.

Понимая C

Одним ΠΈΠ· Π±Π°Π·ΠΎΠ²Ρ‹Ρ… Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² языка Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ программисты ΠΌΠΎΠ³ΡƒΡ‚ Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊ абстрактная машина языка пСрСносится Π½Π° Ρ„ΠΈΠ·ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ. Π­Ρ‚ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎ Π±Ρ‹Π»ΠΎ Ρ‚Π°ΠΊ Π½Π° PDP-11, Π³Π΄Π΅ выраТСния Π½Π° C Ρ‚Ρ€Π°Π½ΡΠ»ΠΈΡ€ΠΎΠ²Π°Π»ΠΈΡΡŒ Π² ΠΎΠ΄Π½Ρƒ ΠΈΠ»ΠΈ Π΄Π²Π΅ инструкции. Аналогично компилятор ΠΊΠ»Π°Π» ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π² слоты стСка ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Ρ‹Π²Π°Π» простыС Ρ‚ΠΈΠΏΡ‹ Π² понятныС для PDP-11.

Π‘ Ρ‚Π΅Ρ… ΠΏΠΎΡ€ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ C стали Π³ΠΎΡ€Π°Π·Π΄ΠΎ слоТнСС β€” для поддСрТания иллюзии Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ C Π»Π΅Π³ΠΊΠΎ пСрСносится Π½Π° Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΡƒΡŽ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡƒ ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ быстро. Π’ 2015 Π³ΠΎΠ΄Ρƒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ опроса срСди программистов Π½Π° C, Π°Π²Ρ‚ΠΎΡ€ΠΎΠ² компиляторов ΠΈ Ρ‡Π»Π΅Π½ΠΎΠ² ΠΊΠΎΠΌΠΈΡ‚Π΅Ρ‚Π° ΠΏΠΎ стандартизации ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΈ, Ρ‡Ρ‚ΠΎ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ΠΌ C. НапримСр, этот язык позволяСт Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π²Ρ‹Ρ€Π°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ Π² структуры (Π½ΠΎ Π½Π΅ Π² массивы), Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ всС поля ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Π²Ρ‹Ρ€ΠΎΠ²Π½Π΅Π½Ρ‹ для Ρ†Π΅Π»Π΅Π²ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹. Если Π²Ρ‹ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ эту структуру нулями ΠΈ ΠΏΠΎΡ‚ΠΎΠΌ ΡƒΠΊΠ°ΠΆΠ΅Ρ‚Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ полям, Π±ΡƒΠ΄ΡƒΡ‚ Π»ΠΈ Π² Π±ΠΈΡ‚Π°Ρ… выравнивания Π½ΡƒΠ»ΠΈ? Богласно Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌ опроса, 36% Π±Ρ‹Π»ΠΈ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹, Ρ‡Ρ‚ΠΎ Π±ΡƒΠ΄ΡƒΡ‚, Π° 29% ΠΎΠΏΡ€ΠΎΡˆΠ΅Π½Π½Ρ‹Ρ… Π½Π΅ Π·Π½Π°Π»ΠΈ ΠΎΡ‚Π²Π΅Ρ‚Π°. Π’ зависимости ΠΎΡ‚ компилятора ΠΈ уровня ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€Π°Π²Π΄ΠΎΠΉ (ΠΈΠ»ΠΈ Π½Π΅Ρ‚).

Π­Ρ‚ΠΎ довольно Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ программисты ΠΈΠ»ΠΈ Π΄Π°ΡŽΡ‚ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚, ΠΈΠ»ΠΈ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΡ‚Π²Π΅Ρ‚ΠΈΡ‚ΡŒ вовсС.

Если Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ, сСмантика C становится Π΅Ρ‰Ρ‘ Π±ΠΎΠ»Π΅Π΅ Π·Π°ΠΏΡƒΡ‚Π°Π½Π½ΠΎΠΉ. МодСль BCPL Π±Ρ‹Π»Π° довольно проста: всС значСния ΡΠ²Π»ΡΡŽΡ‚ΡΡ словами. КаТдоС слово β€” это ΠΈΠ»ΠΈ Π΄Π°Π½Π½Ρ‹Π΅, ΠΈΠ»ΠΈ адрСс Π² памяти. ΠŸΠ°ΠΌΡΡ‚ΡŒ β€” это плоский массив ячССк с индСксациСй ΠΏΠΎ адрСсу.

МодСль Π‘ позволяСт Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ для Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ сСгмСнтированныС Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹, Π³Π΄Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΡΡ‚ΠΎΡΡ‚ΡŒ ΠΈΠ· ID сСгмСнта ΠΈ смСщСния, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ со сборщиком мусора. БпСцификация C ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ Ρ€Π°Π·Ρ€Π΅ΡˆΡ‘Π½Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с указатСлями, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с Ρ‚Π°ΠΊΠΈΠΌΠΈ систСмами. ΠžΡ‚Π²Π΅Ρ‚ Π½Π° Defect Report 260 содСрТит ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅ происхоТдСния указатСля:

Β«Π Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ Π·Π° происхоТдСниСм Π½Π°Π±ΠΎΡ€Π° Π±ΠΈΡ‚ΠΎΠ² ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ с содСрТащими Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ½Π°Ρ‡Π΅, Ρ‡Π΅ΠΌ с Ρ‚Π΅ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ содСрТат ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠ΅. Они ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ с указатСлями ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ Π² зависимости ΠΎΡ‚ ΠΈΡ… происхоТдСния, Π΄Π°ΠΆΠ΅ Ссли ΠΎΠ½ΠΈ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния ΠΈΡ… Π±ΠΈΡ‚ΠΎΠ²ΠΎΠ³ΠΎ значСния».

К соТалСнию, слово «происхоТдСниС» отсутствуСт Π² спСцификации C11, поэтому компиляторы сами Ρ€Π΅ΡˆΠ°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚. GCC ΠΈ Clang, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ Π² Ρ‚ΠΎΠΌ, сохраняСт Π»ΠΈ своё происхоТдСниС ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ Π² Ρ†Π΅Π»ΠΎΠ΅ ΠΈ Π½Π°Π·Π°Π΄. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π΄Π²Π° указатСля Π½Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ malloc() ΠΏΡ€ΠΈ сравнСнии всСгда Π΄Π°ΡŽΡ‚ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, Π΄Π°ΠΆΠ΅ Ссли ΠΎΠ½ΠΈ ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ адрСс.

Π­Ρ‚ΠΈ нСдопонимания Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ сугубо акадСмичСскими. НапримСр, ΡƒΠΆΠ΅ наблюдались уязвимости, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ стали Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ пСрСполнСния Π·Π½Π°ΠΊΠΎΠ²ΠΎΠ³ΠΎ Ρ†Π΅Π»ΠΎΠ³ΠΎ (Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² C) ΠΈΠ»ΠΈ разымСнования указатСля Π΄ΠΎ Π΅Π³ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π½Π° NULL, ΠΏΡ€ΠΈΡ‚ΠΎΠΌ Ρ‡Ρ‚ΠΎ компилятору Π±Ρ‹Π»ΠΎ ΡƒΠΊΠ°Π·Π°Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ NULL.

ΠŸΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ слоТно ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ ΠΎΡ‚ программиста ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ понимания Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π° C транслируСтся Π½Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ.

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ процСссор Π½Π΅ для C

ΠŸΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌΡ‹Π΅ исправлСния для Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΎΡ‚ Spectre ΠΈ Meltdown Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ ΡΠ΅Ρ€ΡŒΡ‘Π·Π½ΠΎΠ΅ ΡƒΡ…ΡƒΠ΄ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, сводя Π½Π° Π½Π΅Ρ‚ всС достиТСния ΠΌΠΈΠΊΡ€ΠΎΠ°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ Π·Π° послСднСС дСсятилСтиС. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΏΠΎΡ€Π° ΠΏΠ΅Ρ€Π΅ΡΡ‚Π°Ρ‚ΡŒ Π΄ΡƒΠΌΠ°Ρ‚ΡŒ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ Π½Π° C быстрСС, ΠΈ вмСсто этого Π·Π°Π΄ΡƒΠΌΠ°Ρ‚ΡŒΡΡ ΠΎ Π½ΠΎΠ²Ρ‹Ρ… модСлях программирования Π½Π° процСссорах, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ созданы для скорости.

Π•ΡΡ‚ΡŒ мноТСство ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ Π±Ρ‹Π»ΠΈ сфокусированы Π½Π° Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅ C ΠΈ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠΆΠ½ΠΎ Ρ‡Π΅Ρ€ΠΏΠ°Ρ‚ΡŒ Π²Π΄ΠΎΡ…Π½ΠΎΠ²Π΅Π½ΠΈΠ΅. НапримСр, Ρ‚Π°ΠΊΠΈΠ΅ ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π½Π° ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ процСссоры, ΠΊΠ°ΠΊ Sun/Oracle UltraSPARC Tx, Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ кСша, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ занятыми свои ΠΈΡΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ устройства. Π˜ΡΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ процСссоры Ρ€Π°ΡΡˆΠΈΡ€ΠΈΠ»ΠΈ этот ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ‚ Π΄ΠΎ ΠΎΡ‡Π΅Π½ΡŒ большого количСства Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎ-ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ². ΠšΠ»ΡŽΡ‡Π΅Π²Π°Ρ идСя состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ с достаточным количСством ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² процСссор ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ‚Π΅ ΠΏΠΎΡ‚ΠΎΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΆΠΈΠ΄Π°ΡŽΡ‚ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈ Π½Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΈΡΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ устройства инструкциями ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ². ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° ΠΆΠ΅ состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° C ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ°Π»ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ².

ARM’s SVE (Scalar Vector Extensions, скалярныС Π²Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹Π΅ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ) β€” Π΅Ρ‰Ρ‘ ΠΎΠ΄Π½Π° аналогичная Ρ€Π°Π±ΠΎΡ‚Π° ΠΈΠ· Π‘Π΅Ρ€ΠΊΠ»ΠΈ, которая ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ Π²Π·Π³Π»ΡΠ½ΡƒΡ‚ΡŒ Π½Π° ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½Π½Ρ‹ΠΉ интСрфСйс ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ ΠΈ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹ΠΌ обСспСчСниСм. ΠžΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ Π±Π»ΠΎΠΊΠΈ Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с Π²Π΅ΠΊΡ‚ΠΎΡ€Π°ΠΌΠΈ фиксированного Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΈ ΠΎΠΆΠΈΠ΄Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ компилятор Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΊ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡƒ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ этому интСрфСйс SVE ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ программисту ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ° ΠΈ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ аппаратная Ρ‡Π°ΡΡ‚ΡŒ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π΅Π³ΠΎ ΠΊ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΌΡΡ Π² Π½Π°Π»ΠΈΡ‡ΠΈΠΈ ΠΈΡΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ устройствам. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ это Π² C слоТно, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π°Π²Ρ‚ΠΎΠ²Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠ·Π°Ρ‚ΠΎΡ€ Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ€Π°ΡΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌ Π½Π° основании Ρ†ΠΈΠΊΠ»ΠΎΠ² Π² ΠΊΠΎΠ΄Π΅.

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

НСизмСняСмыС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ кСши Π΅Ρ‰Ρ‘ большС, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ дСшСвлС. Π’ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ Maxwell ΠΎΡ‚ Sun Labs Π±Ρ‹Π»ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‡Π΅Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π² кСшС ΠΈ Π½Π΅Π΄Π°Π²Π½ΠΎ созданныС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Β β€” ΠΏΠΎΡ‡Ρ‚ΠΈ всСгда ΠΎΠ΄Π½ΠΈ ΠΈ Ρ‚Π΅ ΠΆΠ΅. Если ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΡƒΠΌΠΈΡ€Π°ΡŽΡ‚ Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΈΡ… ΠΈΡΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ ΠΈΠ· кСша, Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ ΠΈΡ… Π² ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΈ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ‚ΡŒ ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ энСргии. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ Maxwell ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΠ» сборщик мусора, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π°Π±ΠΎΡ‚Π°Π» Π² кСшС ΠΈ позволял быстро ΠΏΠ΅Ρ€Π΅Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΠ°ΠΌΡΡ‚ΡŒ. Π‘ нСизмСняСмыми ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ Π² ΠΊΡƒΡ‡Π΅ ΠΈ измСняСмым стСком сборщик мусора становится ΠΎΡ‡Π΅Π½ΡŒ простым ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΌ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π»Π΅Π³ΠΊΠΎ рСализуСтся Π² Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠΉ части ΠΈ позволяСт эффСктивно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ нСбольшой кСш.

ΠŸΡ€ΠΎΡ†Π΅ΡΡΠΎΡ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ создан ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ для скорости, Π° Π½Π΅ для компромисса ΠΌΠ΅ΠΆΠ΄Ρƒ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ C, вСроятно, Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ большоС количСство ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ², ΠΈΠΌΠ΅Ρ‚ΡŒ большиС Π±Π»ΠΎΠΊΠΈ Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ модСль памяти. Π’Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΊΠΎΠ΄ Π½Π° C Π½Π° Ρ‚Π°ΠΊΠΎΠΌ процСссорС Π±ΡƒΠ΄Π΅Ρ‚ слоТно, поэтому, учитывая ΠΎΠ±ΡŠΡ‘ΠΌ старого ΠΊΠΎΠ΄Π° Π½Π° C Π² ΠΌΠΈΡ€Π΅, ΠΎΠ½ вряд Π»ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ коммСрчСский успСх.

Π’ сфСрС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния Π΅ΡΡ‚ΡŒ ΠΌΠΈΡ„ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ β€” это слоТно. Алан Кэй Π±Ρ‹Π» Π±Ρ‹ ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠ΄ΠΈΠ²Π»Ρ‘Π½, ΡƒΡΠ»Ρ‹ΡˆΠ°Π² это: ΠΎΠ½ Π½Π°ΡƒΡ‡ΠΈΠ» Π΄Π΅Ρ‚Π΅ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ модСль Π°ΠΊΡ‚ΠΎΡ€ΠΎΠ², с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠ½ΠΈ писали ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ 200 ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ². Π­Ρ‚ΠΎ нСизвСстно ΠΈ программистам Π½Π° Erlang, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ часто ΠΏΠΈΡˆΡƒΡ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ с тысячами ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ². Π‘ΠΎΠ»Π΅Π΅ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ слоТно Π½Π° языкС с абстрактной машиной, ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΉ C. И Ссли ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΏΡ€Π΅ΠΎΠ±Π»Π°Π΄Π°Π½ΠΈΠ΅ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ обСспСчСния (ΠΎΡ‚ многоядСрных процСссоров Π΄ΠΎ многоядСрных GPU), Ρ‚ΠΎ это просто Π΅Ρ‰Ρ‘ ΠΎΠ΄ΠΈΠ½ способ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ C Π½Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для соврСмСнного Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ обСспСчСния.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ язык Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня?



ΠœΡ‹ ΡƒΠΆΠ΅ ΠΈΠ·ΡƒΡ‡ΠΈΠ»ΠΈ особСнности Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ³ΠΎ языка программирования c ΠΈ Π΅Π³ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π’ этом ΡƒΡ€ΠΎΠΊΠ΅ ΠΌΡ‹ ΡƒΠ·Π½Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ язык Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ язык Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня Π² ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹Ρ… Π½Π°ΡƒΠΊΠ°Ρ…?

  1. Машинно-понятный язык.
  2. АссСмблСр — ΠΎΠ±Ρ‰ΠΈΠΉ язык высокого уровня
  3. Зависит ΠΎΡ‚ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ машинного ΠΊΠΎΠ΄Π°
  4. Быстро Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, Π½ΠΎ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ ΠΏΠΈΡˆΠ΅Ρ‚ ΠΈ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ язык машинного уровня?

  1. ΠœΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ — это СдинствСнный язык, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ микропроцСссор ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Π±Π΅Π· ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ прСобразования.
  2. Π’ настоящСС врСмя программисты Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΏΠΈΡˆΡƒΡ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ нСпосрСдствСнно Π² машинном ΠΊΠΎΠ΄Π΅, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ это Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ внимания ΠΊ многочислСнным дСталям, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ язык высокого уровня ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ автоматичСски.
  3. Low Level Language Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ запоминания ΠΈΠ»ΠΈ поиска числовых ΠΊΠΎΠ΄ΠΎΠ² для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ инструкции.
  4. По этой ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ языки программирования Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ поколСния ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ΠΎΠ΄ΠΈΠ½ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ абстракции ΠΏΠΎΠ²Π΅Ρ€Ρ… машинного ΠΊΠΎΠ΄Π°.

РСкомСндуСмая ΡΡ‚Π°Ρ‚ΡŒΡ: Код языка ассСмблСра Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ C

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

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² 32-Π±ΠΈΡ‚Π½ΠΎΠΌ машинном ΠΊΠΎΠ΄Π΅ x86 для вычислСния n-Π³ΠΎ числа Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ

.

 8B542408 83FA0077 06B80000 0000C383
FA027706 B8010000 00C353BB 01000000
B9010000 008D0419 83FA0376 078BD98B
C84AEBF1 5BC3 

Π―Π·Ρ‹ΠΊΠΈ высокого ΠΈ срСднСго уровня Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… аспСктах ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΎΡ‚ языков Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня.

ΠšΡ€Π°Ρ‚ΠΊΠΎΠ΅ ΠΈΠ·Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ языков Π½ΠΈΠΆΠ½Π΅Π³ΠΎ уровня

НизкоуровнСвыС языки машинно понятны, слоТны для написания, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ большС усилий для кодирования ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ.



.

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ языка Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня

Π―Π·Ρ‹ΠΊ Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня — это Ρ‚ΠΈΠΏ языка программирования, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит Π±Π°Π·ΠΎΠ²Ρ‹Π΅ инструкции, распознаваСмыС ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠΌ. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ языков высокого уровня, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния, ΠΊΠΎΠ΄ Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня часто являСтся Π·Π°Π³Π°Π΄ΠΎΡ‡Π½Ρ‹ΠΌ ΠΈ Π½Π΅Ρ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΌ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠΎΠΌ. Двумя распространСнными Ρ‚ΠΈΠΏΠ°ΠΌΠΈ языков программирования Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня ΡΠ²Π»ΡΡŽΡ‚ΡΡ язык ассСмблСра ΠΈ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ язык.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ сцСнарии написаны Π½Π° языках высокого уровня, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ C #, Swift ΠΈ PHP. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ исходный ΠΊΠΎΠ΄ Π½Π° языкС высокого уровня с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ срСды Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ программирования ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ простого тСкстового Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π°.Однако ΠΊΠΎΠ΄ Π½Π΅ распознаСтся Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ЦП. ВмСсто этого ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ скомпилирован Π½Π° языкС Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня.

АссСмблСр Π½Π° шаг Π±Π»ΠΈΠΆΠ΅ ΠΊ языку высокого уровня, Ρ‡Π΅ΠΌ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ язык. Он Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, ΠΊΠ°ΠΊ MOV (ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅), ADD (Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ) ΠΈ SUB (Π²Ρ‹Ρ‡ΠΈΡ‚Π°Π½ΠΈΠ΅). Π­Ρ‚ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² рСгистры памяти ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ вычислСний. Π―Π·Ρ‹ΠΊ ассСмблСра ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ язык с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ассСмблСра.

ΠœΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ язык ΠΈΠ»ΠΈ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ — это самый Π½ΠΈΠ·ΠΊΠΈΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹Ρ… языков.Он содСрТит Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, часто Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΏΡƒΡ‚Π΅ΠΌ компиляции исходного ΠΊΠΎΠ΄Π° высокого уровня для ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ процСссора. Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Ρƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° Π½Π΅Π³ΠΎ. Волько программисты, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Π΅ компиляторы ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ систСмы, Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ язык.

ОбновлСно: 14 фСвраля 2019 Π³.

TechTerms — ΠšΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹ΠΉ ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ тСхничСских Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ²

Π­Ρ‚Π° страница содСрТит тСхничСскоС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ языка Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня. Он ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚ Π² ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠΉ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΠΈ, Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ язык Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня, ΠΈ являСтся ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ² Π² словарС TechTerms.

ВсС опрСдСлСния Π½Π° Π²Π΅Π±-сайтС TechTerms составлСны Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π±Ρ‹Ρ‚ΡŒ тСхничСски Ρ‚ΠΎΡ‡Π½Ρ‹ΠΌΠΈ, Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ простыми для понимания. Если Π²Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ это ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ³ΠΎ языка ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΡΠ»Π°Ρ‚ΡŒΡΡ Π½Π° Π½Π΅Π³ΠΎ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ Π²Ρ‹ΡˆΠ΅ ссылки для цитирования. Если Π²Ρ‹ считаСтС, Ρ‡Ρ‚ΠΎ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ слСдуСт ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ TechTerms, Π½Π°ΠΏΠΈΡˆΠΈΡ‚Π΅ Π² TechTerms!

.

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

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