Чому JavaScript став найпопулярнішою мовою серед новачків в IT

Привіт. Мене звати Володимир Вишко. Я 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, нікуди не зникнуть, а дозволять нам простіше осягати нові технології в майбутньому. Це природний процес.

Сподобалась стаття? Натискай «Подобається» внизу. Це допоможе автору виграти подарунок у програмі #ПишуНаDOU

👍ПодобаєтьсяСподобалось12
До обраногоВ обраному2
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Кажемо JS, маємо на увазі TS ;)

Пишу на JS/TS. Буду сперечатися про простоту ) Так, дуже просто написати хелоу ворлд, тут без питань. Але питання починаються з конвертацій типів. Чому рядок + рядок то конкатенація рядків, а рядок — намбер — це математична операція. Чому [] == [] це false. Чому typeof ’string’; це string але ’string’ instanceof String; це false і так далі. Дуже багато прикладів коду JS, з якого ржуть девелопери, що пишуть на інших мовах. Насправді, то все досить прості речі, якщо розібратися, як працює мова. Але саме це не то, з чого починають вивчення JS (чомусь). І саме через це натикаються на незрозумілі речі і більшість просто ігнорить проблему, переписуючи код так, щоб він почав працювати, не розбираючись з причиною. І це велика проблема незрозумілості в JS

Все так легко і просто. Не розумію, чому на проектах не так.

Тому що на вкладці вакансії багато років лідує frontend, ваш кеп.

Довільний коментар змінено!

JavaScript офигенный язык, но для новичков плохо подходит, т.к. позволяет слишком много и не бьет по рукам. Для новичков лучше всего Java.

Головною перевагою JavaScript є її доступність та зрозумілість.

У той самий час, 80 процентів фронтенд розробників не можуть пояснити, що таке «замикання»

Все набагато простіше — у браузерах немає альтернативи, тому і юзають криве подєліє під назвою жс. Наслідком цього також є популярність ноди, бо з одного боку — маємо багато формошльопів, які шарять жс, а з іншого — гуглу довелося добре запаритися над оптимізацією V8, щоб монструозні жс фреймворки не лагали, тому цей двіжок справді швидкий. Плюс сама мова створювалася як засіб для створення рекламних попапів з пропозиціями збільшити певний девайс, і ніхто не очікував, що на ній з часом почнуть писати великі аплікухи. Звідси й ідіотська слабка типізація.

В принципі, якщо юзати TS замість vanilla JS, то цілком можна писати на ньому (так, я не вважаю TS самостійною мовою, це всього лиш обгортка над JS), але це не відміняє того факту, що JS — одна з найжахливіших мов в плані дизайну, і вся його екосистема — це набір костилів (достатньо згадати костиль-бабель, який конвертує TS чи новий JS код в старі версії жс, замість компіляції в байт-код, як це робиться в нормальних мовах).

Назви будь-яку іншу практичну мову програмування, і тобі тут викладуть такий же список костилів)

По-перше, JS — це простий старт, на відміну від інших мов програмування.

Простий старт — це і C#, і Python і PHP, та майже будь-яка інша сучасна мова програмування.

По-друге, «Write once, run anywhere».

Але це не точно.

Головною перевагою JavaScript є її доступність та зрозумілість.

Тут написано, що JavaScript — це найбільш незрозуміла і нелогічна мова програмування, але автор трохи помилився і вийшло речення вище.

В інтернеті є багато мемів про ніби то нелогічність JS. Щось на кшталт «2» + «2» = «22», а «2» — «2» = 0. Це дивно, тому що якщо зрозуміти механізм й пріоритет конвертації типів — усе стає дуже логічно. І якщо змінити ці базові правила і зробити «очевидніше», то це, як ефект метелика, зламає інші юзкейси JS і зробить його незручним для серіалізації, конвертації, валідації тощо.

"Не достигнув желаемого, сделай вид что желал достигнутого" :)

Ну а что может быть лучше для автоматизации шаурмятницы чем JavaScript ? :^)

Все просто : работа есть вот и учат

Підписатись на коментарі