Новачкам — нічого крім JavaScript? Оце вже ні.

Ken Mazaika, оригінал
Всі ми чули цю несамовиту рекламу: JavaScript – це майбутнє! Це перше, на чому повинен знатися розробник, якщо він хоче, щоб завтра на його роботу був попит! Лише подивіться на цей гарний графік про відсоток пошукових запитів у Google чи на зростання спільноти!
Жодна ідея не стає більш цінною лише через те, що вона модна. Думка, що JavaScript є “єдиною мовою, щоб керувати усіма” (як той перстень) й що вивчати інші МП — це марно гаяти час, являє собою не більш аніж міф і може серйозно нашкодити тим, хто нині вчиться програмувати.

JavaScript справді знаходить практичне застосування у ряді сценаріїв, однак вона не повинна бути єдиною у вашому арсеналі. Й багато програмістів підтвердять, що програмісти-поліглоти користуються великим попитом.
Програміст-поліглот — це той, який може програмувати на кількох мовах. Програмісти, що знають кілька МП, зазвичай обирають МП, оптимальну для даної роботи, замість виконувати роботу засобами єдиної вивченої МП. Коли вони зустрічаються з задачами, які складно розв’язати засобами їхньої поточної МП, то обирають іншу і навчаються застосовувати її. Жоден програміст не скаже, що застосування належного інструменту для роботи — погана ідея.
Для одних сценаріїв належним інструментом є Ruby, для інших — C чи C++, а в багатьох випадках таким інструментом є JavaScript. Насправді у вивченні мов програмування немає нічого надскладного. Що більш складно — так це засвоїти програмерський спосіб мислення: навчитися розкладати задачі у послідовності кроків, які може виконати комп’ютер.
Перша обрана вами МП буде найскладнішою до опанування. Наступні підуть легше, адже в більшості МП використовуються одні й ті самі поняття. Скажімо, майже всі МП підтримують функції, умовні оператори, змінні та багато інших понять. Відрізнятися можуть певні позначення і символи, однак ідеї й поняття залишаються ті самі.
Тому надзвичайно часто компанії винаймають програмістів із нульовим досвідом програмування на тій мові, яка використовується у проектах компанії. Це означає, що на потенційному ринку праці до послуг програмістів-поліглотів — усі вакансії, незалежно від МП чи фреймворку. Програмісти, які не бажають вчити нічого поза своєю МП, змушені обмежуватися значно вужчим сегментом ринку праці.
Тож вивчайте, пробуйте та практикуйте кілька різних МП. Зед Шоу, відомий програмер у проектах з відкритим сирцевим кодом і досвідчений викладач програмування, заохочує усіх і кожного працювати щонайменше з чотирма МП. Слідування стереотипові “вчитиму лише одну, не пробуючи щось інше” напевне виявиться провальним.
Немає ГІРШОЇ першої мови програмування для початківця, ніж JavaScript.
JavaScript — чудова мова, і в певний момент на шляху вашого становлення як програміста її варто вивчити. Однак у якості першої вона придатна десь так само, як решето придатне для носіння води. Вона дуже химерна, й за словами Дагласа Крокфорда — а він один з найвидатніших програмістів на JavaScript у світі — містить як найкращі ідеї, що будь-коли входили до мов програмування, так і найгірші. Порівняно з іншими МП її легко зрозуміти неправильно, й це ускладнює навчання, коли вивчати її ДО інших мов.
Усі МП містять розмаїття механізмів для аналізу й розв’язання складних задач. Кожна мова має свої сильні і слабкі місця, що робить її найбільш придатною для розв’язання певних типів задач. Загалом, коли ви вивчите усі елементи МП й опануєте кожну дрібницю, до ваших послуг буде великий набір інструментів і можливість створити елегантний розв’язок. При роботі з більшістю МП — що краще ви знаєте мову, то кращий писатимете код.
Та на жаль, багато елементів мови JavaScript загалом не рекомендуються до застосування. Даглас Крокфорд називає такі ідіоми й вирази слабкими сторонами. Це елементи мови, які більшість програмістів JavaScript зазвичай розуміє неправильно, тому бажано уникати їхнього застосування — причому це стосується навіть досвідчених розробників, які розуміються на нюансах мови. Адже тим, хто читатиме код, буде неясно, чому обраний той чи інший елемент — через високу досвідченість програміста або ж через нерозуміння ним наслідків застосування цього елементу в коді. Початкових знань JavaScript недостатньо, щоб оцінити, чи написана дана програма в найоптимальніший спосіб, свідомо обраний висококласним програмістом, чи навпаки — містить значні приховані недоліки.
Через це вправно навчитися програмувати на JavaScript є надзвичайно складно. Хороший програміст, що одночасно знає іншу МП, подолає труднощі краще, оскільки вже бачить застосування елементів у рамках великої картини.
[…]
Незважаючи на усі недоліки мови JavaScript, Даглас Крокфорд стверджує, що вона придатна для написання хороших програм. Можна беззаперечно стверджувати, що JavaScript ОДНОЗНАЧНО НЕ Є мовою майбутнього. Швидше, він є артефактом минулого, що наразі знайшов застосування у найнесподіваніших випадках. Однак, незважаючи на всі свої обмеження, химери та недоліки, він має чимало вдалих рис.
ECMA (організація, що займається стандартизацією JavaScript) оголосила нову версію JavaScript, яка й складатиме його майбутнє. Ця версія називається ECMAScript 6, скорочено ES6 (чи ECMAScript 2015). Вона увібрала увесь 20-річний досвід застосування старої версії, зі збереженням сильних сторін мови та відкиданням слабких. Через це ES6 — блискуча МП. У ній забезпечено можливість писати програми, не стикаючись з недоліками традиційного JavaScript, та запускати їх навіть там, де підтримується лише стара версія.
Справді дивно, чому декого дратує думка про необхідність вивчення кількох мов програмування. JavaScript вивчати варто! Однак поряд із ним однозначно варто вивчати й інші МП, а беручи до уваги особливості JavaScript — простіше опанувати його у якості другої мови, ніж першої.
Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s