QR code

The Fall of JavaScript

  • Translated by to

Π’ 1995 Π³ΠΎΠ΄Ρƒ Π‘Ρ€Π΅Π½Π΄Π°Π½ Айк Π±Ρ‹Π» нанят ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ Netscape ΠΈ попросили ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ язык для ΠΈΡ… Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π° HTML. Π‘Π»ΡƒΡ…ΠΈ говорят, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π» Mocha Π·Π° 10 Π΄Π½Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ·ΠΆΠ΅ Π±Ρ‹Π» ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ Π² LiveScript, Π° Π·Π°Ρ‚Π΅ΠΌ Π² JavaScript. ΠŸΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π»ΠΎΡΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΡ…ΠΎΠΆ Π½Π° Scheme, язык с синтаксисом LISP. Однако, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ³ΠΎΠ΄ΠΈΡ‚ΡŒ Ρ†Π΅Π»Π΅Π²ΠΎΠΉ Π°ΡƒΠ΄ΠΈΡ‚ΠΎΡ€ΠΈΠΈ ΠΊΠΎΠ΄Π΅Ρ€ΠΎΠ² Π½Π° C++/Java, ΠΎΠ½ Π±Ρ‹Π» сдСлан синтаксичСски ΠΏΠΎΡ…ΠΎΠΆΠΈΠΌ Π½Π° Java. Π’ 2008 Π³ΠΎΠ΄Ρƒ Π‘Ρ€Π΅Π½Π΄Π°Π½ ΡΠΎΠ²Π΅Ρ€ΡˆΠΈΠ» Ρ‚Ρ€Π°Π³ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΎΡˆΠΈΠ±ΠΊΡƒ: ΠΎΠ½ ΠΏΠΎΠΆΠ΅Ρ€Ρ‚Π²ΠΎΠ²Π°Π» $1,000 Π² ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ калифорнийского Π·Π°ΠΊΠΎΠ½Π° ΠΏΡ€ΠΎΡ‚ΠΈΠ² ΠΎΠ΄Π½ΠΎΠΏΠΎΠ»Ρ‹Ρ… Π±Ρ€Π°ΠΊΠΎΠ² Proposition 8. Π’ 2014 Π³ΠΎΠ΄Ρƒ ΠΎΠ½ стал CEO Mozilla, ΠΈ ΠΏΡƒΠ±Π»ΠΈΠΊΠ° вспомнила Π΅Π³ΠΎ ТСст ΠΏΡ€ΠΎΡ‚ΠΈΠ² разнообразия. Π•ΠΌΡƒ ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ ΡƒΠΉΡ‚ΠΈ со своСго поста ΠΈ ΠΎΡΠ½ΠΎΠ²Π°Ρ‚ΡŒ Brave Software, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° Brave Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°. Π“Π΄Π΅-Ρ‚ΠΎ Π² это врСмя ΠΎΠ½ΠΈ Π½Π°Ρ‡Π°Π»ΠΈ ΡƒΠ±ΠΈΠ²Π°Ρ‚ΡŒ JavaScript. Однако Π΄ΠΎ сих ΠΏΠΎΡ€ это происходит довольно ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ, благодаря послСдним обновлСниям ECMAScript ΠΈ TypeScript.

Π’ JavaScript, созданном 30 Π»Π΅Ρ‚ Π½Π°Π·Π°Π΄, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π±Ρ‹Π»ΠΈ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹ΠΌΠΈ ассоциативными массивами свойств. К свойству ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΊΡ€Π΅ΠΏΠΈΡ‚ΡŒ ΠΊΠ°ΠΊ Π΄Π°Π½Π½Ρ‹Π΅, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, Ρ‚Π°ΠΊ ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΠΌ, Ρ‡Ρ‚ΠΎ сказал Π‘Ρ€Π΅Π½Π΄Π°Π½ ΠΎ JS Π² 2008 Π³ΠΎΠ΄Ρƒ:

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ класса ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΊΠ°ΠΊ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, присваиваСмоС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ. И Ρ‚ΠΎΠ³Π΄Π° ΠΎΠ½ Π·Π°ΠΊΠ»ΡŽΡ‡ΠΈΠ» (ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, это C, Π° Π½Π΅ C++):

Self, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ½ нСсколько Ρ€Π°Π· ссылаСтся, являСтся языком программирования, основанным Π½Π° ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠ°Ρ…, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΌ Дэвидом Π£Π½Π³Π°Ρ€ΠΎΠΌ ΠΈ Рэндаллом Π‘ΠΌΠΈΡ‚ΠΎΠΌ Π² Xerox PARC, Π·Π°Ρ‚Π΅ΠΌ Π² Бтэнфордском унивСрситСтС, Π° Π·Π°Ρ‚Π΅ΠΌ Π² Sun Microsystems. Π’ Self Π½Π΅Ρ‚ классов, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Java ΠΈΠ»ΠΈ C++. ВмСсто этого Ρƒ Π½Π΅Π³ΠΎ Π΅ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹. Для создания Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π² Self ΠΌΡ‹ создаСм копию ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, извСстного ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅ΠΌ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· Π΅Π³ΠΎ слотов (Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ²).

Π’ Self ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ Ρ‚ΠΈΠΏΠΎΠ²: всС Π²Ρ‹Π·ΠΎΠ²Ρ‹ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡŽΡ‚ΡΡ Π²ΠΎ врСмя выполнСния. НапримСр, ΠΌΡ‹ просим ΠΊΠ½ΠΈΠ³Ρƒ ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Ρ‚ΡŒ сСбя:

rename - это ΠΌΠ΅Ρ‚ΠΎΠ΄ book, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ с ΠΎΠ΄Π½ΠΈΠΌ строковым Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ. ΠšΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π·Π½Π°Π΅Ρ‚ ΠΎ book Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°, ΠΏΠΎΠΊΠ° Π½Π΅ ΠΏΡ€ΠΈΠ΄Π΅Ρ‚ врСмя Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ rename. ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‚Π°ΠΊΠΎΠ΅ duck typing ΠΈΠΌΠ΅Π΅Ρ‚ свои нСдостатки Π² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Π²Ρ‹Π·ΠΎΠ² rename ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ поиску Π² Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ book. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ этого, C++, Π³Π΄Π΅ Ρ‚ΠΈΠΏΡ‹ извСстны Π½Π° этапС компиляции, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ rename():

Π’ΠΈΠΏΡ‹ (классы Π² C++ ΠΈ интСрфСйсы Π² Java) ΠΈ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ Ρ‚ΠΈΠΏΠΎΠ² ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ β€” для компилятора. Для нас, людСй, ΠΎΠ½ΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠ±Ρ€Π΅ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ. Они Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ ΠΎΡ‚ нас выполнСния Ρ€Π°Π±ΠΎΡ‚Ρ‹ компилятора. Нам приходится Π·Π°Π³Ρ€ΡΠ·Π½ΡΡ‚ΡŒ наш ΠΊΠΎΠ΄ сообщСниями Π²Ρ€ΠΎΠ΄Π΅: β€œΠ­Ρ‚ΠΎΡ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ b ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏ Book, поТалуйста, Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅.” ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ достаточно ΡƒΠΌΠ½Ρ‹ΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ это Π±Π΅Π· Π½Π°ΡˆΠΈΡ… Π½Π°ΠΌΠ΅ΠΊΠΎΠ².

Π₯отя это ΠΈ спорная Ρ‚Π΅ΠΌΠ°. НСкоторыС ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ Ρ‚ΠΈΠΏΠΎΠ² ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ программистам Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄ ΠΈ Π΄Π΅Π»Π°Ρ‚ΡŒ мСньшС ошибок. Π― Ρ‚ΠΎΠΆΠ΅ Π·Π° мСньшСС количСство ошибок, Π½ΠΎ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Π΅Π» Π±Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ компилятор ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠ» Ρ‚ΠΈΠΏΡ‹, Π±Π΅Π· ΠΌΠΎΠΈΡ… Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΉ. Если я Π²Ρ‹Π·Ρ‹Π²Π°ΡŽ b.rename() ΠΈ b извСстно ΠΊΠ°ΠΊ машина, Π° Π½Π΅ ΠΊΠ½ΠΈΠ³Π°, я оТидаю, Ρ‡Ρ‚ΠΎ компилятор ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ разбСрСтся Π² этом ΠΈ откаТСтся ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ.

Π’ любом случаС, JavaScript Π±Ρ‹Π» создан ΠΊΠ°ΠΊ язык с динамичСской Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ Π½Π° основС ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠΎΠ² с минималистичным синтаксисом, Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°ΡŽΡ‰ΠΈΠΌ Java. Π­Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΎ прСкрасно Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° индустрия Π½Π΅ Ρ€Π΅ΡˆΠΈΠ»Π° β€œΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒβ€ Π΅Π³ΠΎ.

Π’ 2008 Π³ΠΎΠ΄Ρƒ Mozilla ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΠ»ΠΈ ECMAScript 4, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²ΠΊΠ»ΡŽΡ‡Π°Π» классы, ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Microsoft заняла ΠΊΡ€Π°ΠΉΠ½ΡŽΡŽ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ, ΠΎΡ‚ΠΊΠ°Π·Π°Π²ΡˆΠΈΡΡŒ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π»ΡŽΠ±ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ ES4. ΠšΡ€ΠΈΡ Уилсон, Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΠΎΡ€ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Internet Explorer Π² Microsoft, ΠΊΡ€ΠΈΡ‚ΠΈΠΊΠΎΠ²Π°Π» ES4 Π·Π° ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΡƒ Π²Π½Π΅Π΄Ρ€ΠΈΡ‚ΡŒ слишком ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. Π‘Ρ€Π΅Π½Π΄Π°Π½ Айк ΠΎΠ±Π²ΠΈΠ½ΠΈΠ» Уилсона Π² распространСнии Π»ΠΎΠΆΠ½Ρ‹Ρ… свСдСний ΠΈ ΠΈΠ³Ρ€Π΅ Π² политичСскиС ΠΈΠ³Ρ€Ρ‹. ES4 Π±Ρ‹Π» ΠΏΠΎΠΊΠΈΠ½ΡƒΡ‚, ΠΈ классы Π±Ρ‹Π»ΠΈ ΠΎΡ‚Π±Ρ€ΠΎΡˆΠ΅Π½Ρ‹.

Π—Π°Ρ‚Π΅ΠΌ, Π² 2012 Π³ΠΎΠ΄Ρƒ, Microsoft создала TypeScript, JavaScript с аннотациями Ρ‚ΠΈΠΏΠΎΠ² ΠΈ классами. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ классов Π½Π΅ Π±Ρ‹Π»ΠΎ Π² стандартС, Microsoft создала свой собствСнный.

НаконСц, Π² 2015 Π³ΠΎΠ΄Ρƒ, ECMAScript 6 Π΄ΠΎΠ±Π°Π²ΠΈΠ» классы (срСди Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ) Π² ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ JavaScript. МногиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ES4, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ классы, Π±Ρ‹Π»ΠΈ Π²ΠΎΠ·Ρ€ΠΎΠΆΠ΄Π΅Π½Ρ‹ Π² β€œΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½ΠΎ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠΉβ€ Ρ„ΠΎΡ€ΠΌΠ΅. Π‘ΠΊΠΎΠΏΠ»Π΅Π½ΠΈΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Java/C++ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Ρ…ΠΎΡ‚Π΅Π»ΠΎ.

Π”Π°Π²Π°ΠΉΡ‚Π΅ ΡƒΡΠ»Ρ‹ΡˆΠΈΠΌ, Ρ‡Ρ‚ΠΎ Дуглас ΠšΡ€ΠΎΠΊΡ„ΠΎΡ€Π΄, ΠΎΠ΄ΠΈΠ½ ΠΈΠ· пропагандистов JS, сказал Π² 2014 Π³ΠΎΠ΄Ρƒ:

К соТалСнию, это ΡƒΠΆΠ΅ Π½Π΅ Ρ‚Π°ΠΊ. ΠŸΠΎΡ…ΠΎΠΆΠ΅, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ послСдних вСрсий JS вСрят Π² Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠ΅. Или ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ, ΠΎΠ½ΠΈ большС Π½Π΅ хотят Π΄Π΅Π»Π°Ρ‚ΡŒ Π²ΠΊΠ»Π°Π΄ Π² чСловСчСство. ΠœΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ, ΠΈΠΌ просто хочСтся ΠΏΠΎΡ€Π°Π΄ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΠΏΡƒ.

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

Java со своими классами, наслСдованиСм Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ статичСскими ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ прСдставляСт собой ООП для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ². Π­Ρ‚ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ для Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ, ΠΏΠΎ мнСнию Дугласа ΠšΡ€ΠΎΠΊΡ„ΠΎΡ€Π΄Π°, Π½Π΅ Π·Π½Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅. JavaScript, с Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, являСтся Ρ‡Π»Π΅Π½ΠΎΠΌ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΡ‡Π½Ρ‹Ρ… языков ОО, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Smalltalk ΠΈ Self. БмСшиваниС вкусов Java Π² JavaScript Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΡ€Ρ‚ΠΈΡ‚ вкус послСднСго.

Грустно Π²ΠΈΠ΄Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊ ΠΊΠΎΠ³Π΄Π°-Ρ‚ΠΎ прямая ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-цСнтричная ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΠ° языка ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΠ»Π°ΡΡŒ Π² ΠΌΠ½ΠΎΠ³ΠΎΠΎΠ±Ρ€Π°Π·ΠΈΠ΅ нСподходящих ΠΈ Π½Π΅ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.

P.S. JavaScript ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ язык, Ссли Π²Ρ‹ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ классы ΠΈ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ Ρ‚ΠΈΠΏΠΎΠ². Когда я ΠΏΠΈΡˆΡƒ Π½Π° JavaScript, я Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ ΠΈΡ…. ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ ΠΊΠΎΠ΄ Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ yegor256/jo. Он ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ мою ΠΊΠ½ΠΈΠ³Ρƒ Junior Objects. Π― Π³ΠΎΡ€ΠΆΡƒΡΡŒ этим ΠΊΠΎΠ΄ΠΎΠΌ.

Translated by ChatGPT gpt-3.5-turbo/42 on 2025-12-28 at 12:46

sixnines availability badge  GitHub stars