Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π˜ΡΠΊΡƒΡΡΡ‚Π²ΠΎ программирования для UnixΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 67

Автор Π­Ρ€ΠΈΠΊ Π Π΅ΠΉΠΌΠΎΠ½Π΄

Π’ΠΎΡ‚ Ρ„Π°ΠΊΡ‚, Ρ‡Ρ‚ΠΎ Emacs построСн Π²ΠΎΠΊΡ€ΡƒΠ³ ΠΌΠΎΡ‰Π½ΠΎΠ³ΠΎ языка для описания Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… дСйствий ΠΈΠ»ΠΈ клиСнтской части для Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΎΠ½, ΠΊΡ€ΠΎΠΌΠ΅ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ рСдактирования, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ для ΠΌΠ½ΠΎΠ³ΠΈΡ… Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ†Π΅Π»Π΅ΠΉ. ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ€Π°Π·Π²ΠΈΡ‚ΠΎΠΉ, спСциализированной Π»ΠΎΠ³ΠΈΠΊΠΈ Emacs для повсСднСвной Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ (компиляции, ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ, контроля вСрсий) рассматриваСтся Π² Π³Π»Π°Π²Π΅ 15. "Π Π΅ΠΆΠΈΠΌΡ‹" Emacs ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, Ρ‚.Π΅. ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, написанныС Π½Π° Emacs Lisp, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΡΠΏΠΎΡΠ°Π±Π»ΠΈΠ²Π°ΡŽΡ‚ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ спСцифичСской Π·Π°Π΄Π°Ρ‡ΠΈ, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ (Π½ΠΎ Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ) связанной с Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ спСциализированныС Ρ€Π΅ΠΆΠΈΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°ΡΠΏΠΎΠ·Π½Π°ΡŽΡ‚ синтаксис большого числа языков программирования ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ SGML, XML ΠΈ HTML. Однако ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Emacs-Ρ€Π΅ΠΆΠΈΠΌΡ‹ для ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ ΠΈ получСния элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹ (Π² Ρ‚Π°ΠΊΠΈΡ… Ρ€Π΅ΠΆΠΈΠΌΠ°Ρ… Π² качСствС ΠΏΠΎΠ΄Ρ‡ΠΈΠ½Π΅Π½Π½Ρ‹Ρ… процСссов ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΏΠΎΡ‡Ρ‚ΠΎΠ²Ρ‹Π΅ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ Unix) ΠΈΠ»ΠΈ новостСй Usenet. Emacs ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ»ΡƒΠΆΠΈΡ‚ΡŒ Π² качСствС Web-Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π° ΠΈΠ»ΠΈ клиСнтской части для Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ общСния. БущСствуСт Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚ для составлСния расписаний, собствСнная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°-ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€ для Emacs ΠΈ Π΄Π°ΠΆΠ΅ вСсьма ΡˆΠΈΡ€ΠΎΠΊΠΈΠΉ Π²Ρ‹Π±ΠΎΡ€ ΠΈΠ³Ρ€, написанных ΠΊΠ°ΠΊ Ρ€Π΅ΠΆΠΈΠΌΡ‹ Emacs Lisp.

8.2.12 Π£Ρ‡Π΅Π±Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€: JavaScript

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

JavaScript β€” ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ язык, ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΏΠΎΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΠΉ ΠΏΠΎΠ΄ опрСдСлСния языка Π’ΡŒΡŽΡ€ΠΈΠ½Π³Π°, с Ρ†Π΅Π»Ρ‹ΠΌΠΈ, Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ числами, Π±ΡƒΠ»Π΅Π²Ρ‹ΠΌΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ, строками ΠΈ лСгковСсными, основанными Π½Π° словарях, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ сходство с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ языка Python. ЗначСния Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹, Π½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ любой Ρ‚ΠΈΠΏ. ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ² осущСствляСтся автоматичСски Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… срСдах. БинтаксичСски JavaScript ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ языку Java с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ влияниСм со стороны Perl ΠΈ содСрТит Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Perl-ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΌΠΈ рСгулярными выраТСниями.

НСсмотря Π½Π° всС ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ особСнности, клиСнтская вСрсия JavaScript Π½Π΅ являСтся ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΌ языком. Π•Π³ΠΎ возмоТности ТСстко ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Ρ‹ Π² цСлях прСдотвращСния Π°Ρ‚Π°ΠΊ Π½Π° Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Ρ‹ Ρ‡Π΅Ρ€Π΅Π· Web-страницы, содСрТащиС JavaScript-ΠΊΠΎΠ΄. Π―Π·Ρ‹ΠΊ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π²Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΈΠ»ΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅Ρ‚ Web-страницы, Π½ΠΎ нСпосрСдствСнно Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ содСрТимоС дисковых Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ собствСнныС сСтСвыС соСдинСния.

Π‘ Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π΄Π°Π½Π½Ρ‹ΠΉ язык стал Π±ΠΎΠ»Π΅Π΅ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΈ ΠΌΠ΅Π½Π΅Π΅ связанным со своСй клиСнтской срСдой. Π­Ρ‚ΠΎ Π·Π°ΠΊΠΎΠ½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ΅ Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ любого ΡƒΠ΄Π°Ρ‡Π½ΠΎΠ³ΠΎ спСциализированного языка. ΠšΠ»ΠΈΠ΅Π½Ρ‚ΡΠΊΠΈΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ JavaScript Π² настоящСС врСмя взаимодСйствуСт со своим ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΏΡƒΡ‚Π΅ΠΌ чтСния ΠΈ записи Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² ΠΎΠ΄ΠΈΠ½ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ называСтся Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π½ΠΎΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠΉ модСлью Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π° (Document Object Model, DOM). Π”Π°Π½Π½Ρ‹ΠΉ язык Π΄ΠΎ сих ΠΏΠΎΡ€ ΠΈΠΌΠ΅Π΅Ρ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠ΅ API-интСрфСйсы для связи с Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Ρ‡Π΅Ρ€Π΅Π· DOM, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΎΠ½ΠΈ Π½Π΅ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹, ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Π² стандартС для JavaScript Π•Π‘ΠœΠ-262 ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒΡΡ Π² Π±ΡƒΠ΄ΡƒΡ‰ΠΈΡ… вСрсиях.

Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹ΠΌ справочником ΠΏΠΎ JavaScript являСтся ΠΊΠ½ΠΈΠ³Π° "JavaScript: The Definitive Guide" [20]. Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ доступСн Π² Web[90]. Π―Π·Ρ‹ΠΊ JavaScript прСдставляСт собой интСрСсный ΠΏΡ€ΠΈΠΌΠ΅Ρ€ для изучСния ΠΏΠΎ Π΄Π²ΡƒΠΌ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ. Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, ΠΎΠ½ максимально Π±Π»ΠΈΠ·ΠΎΠΊ ΠΊ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΠΌΡƒ языку, фактичСски Π½Π΅ являясь Ρ‚Π°ΠΊΠΎΠ²Ρ‹ΠΌ. Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, связь ΠΌΠ΅ΠΆΠ΄Ρƒ клиСнтским JavaScript ΠΈ срСдой Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π° Ρ‡Π΅Ρ€Π΅Π· СдинствСнный DOM-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ…ΠΎΡ€ΠΎΡˆΠΎ спроСктирована ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡΠ»ΡƒΠΆΠΈΡ‚ΡŒ модСлью для Π΄Ρ€ΡƒΠ³ΠΈΡ… ситуаций встраивания.

8.3. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΈΠ½ΠΈ-языков

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

НСкоторыС родствСнныС ΠΈΠ΄Π΅ΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π² описании ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ проСктирования "Alternate Hard And Soft Layers" <http://www.c2.com/cgi/wiki?Alternate-HardAndSoftLayers> ΠΈ "Scripted Components" <http://www.doc.ic.ac.uk/~np2/patterns/scripting/scripting.html>.

Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½ΠΎΠ΅ ΠΎΠ±ΠΎΠ·Ρ€Π΅Π½ΠΈΠ΅ стилСй ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠΈΠ½ΠΈ-языков ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΎ Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅ "Notable Design Patterns for Domain-Specific Languages" [77].

8.3.1. ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ уровня слоТности

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

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

ΠœΠ°ΠΊΡ€ΠΎΠ²ΠΈΡ€ΡƒΡΡ‹ Microsoft Word ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚, ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈ-язык ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Π°Ρ‚ΡŒ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ опасной Π±Ρ€Π΅ΡˆΡŒΡŽ Π² бСзопасности систСмы, простои ΠΈ ΠΏΠΎΡ‚Π΅Ρ€ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΎΡ‚ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π΅ΠΆΠ΅Π³ΠΎΠ΄Π½ΠΎ обходятся Π² ΠΌΠΈΠ»Π»ΠΈΠ°Ρ€Π΄Ρ‹ Π΄ΠΎΠ»Π»Π°Ρ€ΠΎΠ². ПолСзно ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ нСсмотря Π½Π° сущСствованиС Π² ΠΌΠΈΡ€Π΅ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ 20 ΠΌΠ»Π½. ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ[91] Unix, Π² Unix-срСдС Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π±Ρ‹Π»ΠΎ Π²ΡΠΏΡ‹ΡˆΠ΅ΠΊ макровирусов, Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π½Ρ‹Ρ… для Windows. БущСствуСт мноТСство ΠΏΡ€ΠΈΡ‡ΠΈΠ½ этому, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΠ°Π»ΡŒΠ½ΠΎ Π»ΡƒΡ‡ΡˆΡƒΡŽ с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния бСзопасности ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ Unix; Π½ΠΎ ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ являСтся Ρ‚ΠΎΡ‚ Ρ„Π°ΠΊΡ‚, Ρ‡Ρ‚ΠΎ ΠΏΠΎΡ‡Ρ‚ΠΎΠ²Ρ‹Π΅ Π°Π³Π΅Π½Ρ‚Ρ‹ Π² Unix ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π½Π΅ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ исполняСмоС содСрТимоС Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ…, просматриваСмых ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ[92].

Если сущСствуСт какая-Π»ΠΈΠ±ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ прилоТСния ΠΌΠΎΠ³ΡƒΡ‚ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈΠ· Π½Π΅Π±Π»Π°Π³ΠΎΠ½Π°Π΄Π΅ΠΆΠ½Ρ‹Ρ… источников, рискованныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠΈΠ½ΠΈ-языка прилоТСния ΠΌΠΎΠ³ΡƒΡ‚ Π² ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠΎΠ½Ρ†ΠΎΠ² привСсти ΠΊ нСобходимости Π΅Π³ΠΎ подавлСния. Π―Π·Ρ‹ΠΊΠΈ, ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ Java ΠΈ JavaScript, явно ΠΈΠ·ΠΎΠ»ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² "пСсочницС", Ρ‚.Π΅. ΠΎΠ½ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹ΠΉ доступ ΠΊ своСму ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΡŽ. Π­Ρ‚ΠΎ сдСлано Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ ΠΈΡ… ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ, Π½ΠΎ ΠΈ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²ΠΎΡΠΏΡ€Π΅ΠΏΡΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ дСструктивным опСрациям со стороны ΠΎΡˆΠΈΠ±ΠΎΡ‡Π½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Π·Π»ΠΎΠ½Π°ΠΌΠ΅Ρ€Π΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.

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

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

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