Чому JavaScript став найпопулярнішою мовою серед новачків в IT
Усі статті, обговорення, новини про Front-end — в одному місці. Підписуйтеся на телеграм-канал!
Привіт. Мене звати Володимир Вишко. Я Solution Architect в компанії GlobalLogic. Маю понад 10 років досвіду в ІТ. За цей час встиг побути у різних ролях: розробник Java Backend, Js Frontend, Node.js Backend, Scrum Master, Lead, Cloud Architect. Є тренером різних курсів, включаючи «Algorithms and data structures» і «Distributed systems design».
Я починав свою кар’єру як Java backend dev, і на одному з проєктів мені виділили частину функціоналу, яку треба було реалізувати на frontend. Так я перейшов на frontend розробку. Я розповім, чому кодувати на JavaScript зручно, чому ця мова така популярна серед айтівців, як початківців, так і сеньйорів, та які в ній плюси і мінуси.
Коротко про популярність мови
JavaScript сьогодні — найпопулярніша мова для тих, хто займається написанням коду. Навіть серед розробників-дебютантів в IT сфері — JavaScript є фаворитом. Кількість вакансій в Україні для інженерів, які програмують цією мовою перевищує 1500. Чому так сталось та чому більшість обирає саме її? Розберемось предметніше.
По-перше, JS — це простий старт, на відміну від інших мов програмування. Щоб написати свою першу програму вам потрібен лише текстовий редактор та веббраузер. Не потрібно проходити курс лекцій в Оксфорді по функціональному програмуванню та прийомам ООП. Звичайно, це лише верхівка айсберга, знання ООП й ФП знадобиться, але ці прийоми будуть з’являтися природно у вашому арсеналі з досвідом.
По-друге, «Write once, run anywhere». Цей слоган, придуманий компанією Sun для своєї мови програмування Java, гідну реалізацію отримав лише в JavaScript. JavaScript — це про свободу запускати однаковий код на різних операційних системах, браузерах, платформах й архітектурах. Наприклад, ви можете розробити вебдодаток, який буде однаково працювати в браузері під Debian Linux, на мобільному телефоні Apple або десктопному додатку Windows. JavaScript не ідеальний інструмент, але він надає альтернативні шляхи розвитку. Як у Нео з «Матриці» у вас буде вибір, але цього разу не між двома таблетками, а цілим пакунком різноколірного драже.
Головною перевагою JavaScript є її доступність та зрозумілість. Перш за все, це налаштування вашого середовища розробки. Для того, щоб почати писати код на «С» в Ubuntu, вам потрібно встановити компілятор gcc, який тягне за собою купу залежностей, з якими не завжди все так просто, як хотілось би.
Наприклад, через несумісність версій чи застарілі версії пакетів у вашому репозиторії вам доведеться шерстити askubuntu в пошуках розв’язання вашої проблеми. З JavaScript все просто — Edge/Safari/Firefox йдуть в комплекті з ОС. Відкрийте термінал, почніть з «console.log(‘Hello world’)» — ваша перша програма готова.
Виглядає дуже просто, чи не так? Але JavaScript дозволяє писати й складні речі, адже поєднує у собі більшість популярних парадигм. Деякі люди стверджують, що JavaScript для анімацій з кнопками на сайті — це давно не так. Прикладом є робота Google Sheets. Програма завантажується за секунди й поєднує у собі функції Excel, особливості реактивного та асинхронного програмування.
Оскільки, усім потрібен сайт, то починають зазвичай з frontend. Але можливості розвитку на frontend практично необмежені. Складність frontend додатків деяких компаній вже перевищує складність програмування backend. Там вже потрібні frontend архітектори й висококваліфіковані інженери, які вміють писати ефективний код.
Якщо ж віддавати перевагу «абстракції», то є свобода почати писати backend на Node.js. Він все більше набирає популярність, усі великі компанії зі списку FAANG використовують Node.js для різних частин своєї екосистеми. Менш популярними, але не менш цікавими є напрямки написання десктопних додатків, нативних мобільних додатків з використанням React Native і програмування мікроконтролерів та IoT.
Чи може знання JavaScript замінити знання інших мов? JavaScript сама собою може бути досить різноманітною. Більшість JavaScript розробників вже пишуть код на TypeScript (статично типізована версія JS, що дозволяє знаходити деякі помилки на етапі компіляції). Іншою стороною JS може бути babel, що дозволяє використовувати конструкції, які ще офіційно не реалізовані браузерами чи рантаймом.
І треба розуміти, що JS не працює ізольовано від інших речей. Якщо ви back-end розробник, то SQL — це майже основа, яку потрібно знати тим, хто працює з реляційними БД, а якщо ви займаєте нішу на фронті, то там є препроцесори CSS зі своїм синтаксисом. Вибравши мобільний напрям, обмежитись JS/ReactNative теж не вийде, ви обов’язково зіткнетесь з Java/Kotlin/Swift/etc.
Тож висновок такий — знання інших мов програмування для розробника буде величезним плюсом на проєктах та збільшить цінність спеціаліста. Попри те, що JS — універсальний інструмент, вона одночасно як кільце з «Володаря перснів». One ring to rule them all — дійсно, спершу може здатись, що інші мови не потрібні, бо все можна написати на JS.
Але та сама універсальність-гнучкість є одночасно і плюсом, і мінусом JS. Ви пишете код, як подобається, але це працює до того часу, поки підтримувати такий код не стане занадто складно. Тоді й приходить час «переписати усе на реакті». Вивчення інших мов програмування збільшує кругозір і покращує стиль спеціаліста на JS.
Вивчення Java дає чудове відчуття принципів ООП, книги по чистому коду Java Боба Мартіна і Мартіна Фаулера покращать стиль і в JS також. Haskell дозволить відчути аспекти функціонального програмування і ви зможете використати ці знання в JS. З кожної мови можна почерпнути трохи знань, які покращать ваш JS. Не зупиняйтесь на одній мові, але і не беріться за все й одразу.
«Інь і ян»
В інтернеті є багато мемів про ніби то нелогічність JS. Щось на кшталт «2» + «2» = «22», а «2» — «2» = 0. Це дивно, тому що якщо зрозуміти механізм й пріоритет конвертації типів — усе стає дуже логічно. І якщо змінити ці базові правила і зробити «очевидніше», то це, як ефект метелика, зламає інші юзкейси JS і зробить його незручним для серіалізації, конвертації, валідації тощо.
В китайській філософії є концепція «Інь і ян», яка показує тісний зв’язок протилежних по своїй суті речей. JS має декілька характеристик, які є одночасно і плюсами, і мінусами, як подивитись:
- простий старт, але багато поганого коду серед новачків;
- висока популярність, але і висока різноманітність підходів і думок до написання коду;
- гнучкість і поєднання концепцій і парадигм, але overengineering на деяких проєктах;
- швидкий прогрес і створення нових фреймворків, але втома від змін.
Конфуцій писав про рівновагу і гармонію. У нашому випадку досягнення гармонії можливе за умови розуміння базових абстрактних речей, таких як: алгоритми та структури даних, принципи SOLID, KISS, YAGNI, GRASP, патерни ООП тощо.
Почесні друге й третє місця
Новачки також обирають Python і PHP. По принципу JS, ці мови дозволяють швидко почати писати back-end для вебдодатка, а інтернет повен інформації на цю тему.
Python та PHP мають простий механізм деплойменту, запуску й тестування. Python — ідеальний варіант для другої мови програмування, оскільки є універсальною мовою й застосовується усюди: починаючи від вебдодатків, закінчуючи штучним інтелектом та розпізнаванням зображень.
Чого чекати далі
Рано чи пізно знайдеться мова, що зможе замінити JS, але це навіть і добре. Для тих, хто встиг вляпатись у всі слабкі місця JS, нова мова, що виправить усі ці проблеми природно увійде в наше життя, легко засвоїться і покращить код. Головне розуміти, що знання, які ми отримуємо в JS, нікуди не зникнуть, а дозволять нам простіше осягати нові технології в майбутньому. Це природний процес.
23 коментарі
Додати коментар Підписатись на коментаріВідписатись від коментарів